mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 18:02:16 +00:00
collect_rings: match finish
This commit is contained in:
1 parent
d06f1a56db
commit
e443e7f215
13 files changed
+69
-313
No files matched your search
Vendored
+2
-1
@@ -369,7 +369,8 @@
|
||||
"ceiling_slope.h": "c",
|
||||
"french_horn.h": "c",
|
||||
"pipe_sequence.h": "c",
|
||||
"terrain_collision.h": "c"
|
||||
"terrain_collision.h": "c",
|
||||
"indicators.h": "c"
|
||||
},
|
||||
"asm-code-lens.donated": true,
|
||||
"editor.formatOnSave": true,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void sub_8019CCC(u8 sioId, u8 count);
|
||||
void sub_8019F08(void);
|
||||
void CreateMultiplayerFinishResult(u8 sioId, u8 count);
|
||||
void CreateMultiplayerFinishHandler(void);
|
||||
|
||||
#endif // GUARD_MULTIPLAYER_FINISH_H
|
||||
@@ -35,4 +35,8 @@ void sub_8018818(void);
|
||||
|
||||
extern bool8 gShouldSpawnMPAttack2Effect;
|
||||
|
||||
#if COLLECT_RINGS_ROM
|
||||
extern const u16 gUnknown_02015B18[];
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -111,7 +111,8 @@ SA2_C_FILES := \
|
||||
sa2/game/sa1_sa2_shared/rings_manager.c \
|
||||
sa2/game/multiboot/collect_rings/time_display.c \
|
||||
sa2/game/multiplayer/indicators.c \
|
||||
sa2/game/multiplayer/mp_player.c
|
||||
sa2/game/multiplayer/mp_player.c \
|
||||
sa2/game/multiplayer/finish.c
|
||||
|
||||
SA2_C_ASM_FILES := \
|
||||
sa2/lib/m4a/m4a0.s \
|
||||
|
||||
@@ -4,274 +4,11 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start sub_0200A058
|
||||
sub_0200A058: @ 0x0200A058
|
||||
push {r4, r5, r6, lr}
|
||||
movs r2, #0
|
||||
ldr r6, _0200A0C4 @ =gCurTask
|
||||
ldr r0, [r6]
|
||||
ldrh r1, [r0, #6]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x12
|
||||
adds r5, r1, r0
|
||||
ldr r0, _0200A0C8 @ =gGameMode
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #5
|
||||
beq _0200A072
|
||||
movs r2, #0xf0
|
||||
_0200A072:
|
||||
ldr r0, _0200A0CC @ =gRoomEventQueueWritePos
|
||||
ldr r1, _0200A0D0 @ =gRoomEventQueueSendPos
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bne _0200A0BE
|
||||
ldrh r0, [r5]
|
||||
adds r1, r0, #1
|
||||
strh r1, [r5]
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, r2
|
||||
bls _0200A0BE
|
||||
ldr r1, _0200A0D4 @ =gBldRegs
|
||||
movs r4, #0
|
||||
movs r0, #0xbf
|
||||
strh r0, [r1]
|
||||
strh r4, [r1, #4]
|
||||
ldr r0, _0200A0D8 @ =0x0201F270
|
||||
movs r1, #4
|
||||
bl m4aMPlayFadeOut
|
||||
ldr r0, _0200A0DC @ =0x0201F2B0
|
||||
movs r1, #4
|
||||
bl m4aMPlayFadeOut
|
||||
ldr r0, _0200A0E0 @ =0x0201F2F0
|
||||
movs r1, #4
|
||||
bl m4aMPlayFadeOut
|
||||
ldr r0, _0200A0E4 @ =0x0201F340
|
||||
movs r1, #4
|
||||
bl m4aMPlayFadeOut
|
||||
strh r4, [r5]
|
||||
ldr r1, [r6]
|
||||
ldr r0, _0200A0E8 @ =sub_0200A0EC
|
||||
str r0, [r1, #8]
|
||||
_0200A0BE:
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0200A0C4: .4byte gCurTask
|
||||
_0200A0C8: .4byte gGameMode
|
||||
_0200A0CC: .4byte gRoomEventQueueWritePos
|
||||
_0200A0D0: .4byte gRoomEventQueueSendPos
|
||||
_0200A0D4: .4byte gBldRegs
|
||||
_0200A0D8: .4byte 0x0201F270
|
||||
_0200A0DC: .4byte 0x0201F2B0
|
||||
_0200A0E0: .4byte 0x0201F2F0
|
||||
_0200A0E4: .4byte 0x0201F340
|
||||
_0200A0E8: .4byte sub_0200A0EC
|
||||
|
||||
thumb_func_start sub_0200A0EC
|
||||
sub_0200A0EC: @ 0x0200A0EC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
sub sp, #8
|
||||
ldr r0, _0200A1D8 @ =gCurTask
|
||||
ldr r0, [r0]
|
||||
ldrh r1, [r0, #6]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x12
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
adds r0, #0x40
|
||||
strh r0, [r1]
|
||||
ldr r2, _0200A1DC @ =gBldRegs
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x18
|
||||
strh r0, [r2, #4]
|
||||
ldrh r1, [r1]
|
||||
ldr r0, _0200A1E0 @ =0x00000FFF
|
||||
cmp r1, r0
|
||||
bhi _0200A11A
|
||||
b _0200A256
|
||||
_0200A11A:
|
||||
movs r0, #0xbf
|
||||
strh r0, [r2]
|
||||
movs r0, #0
|
||||
strh r0, [r2, #4]
|
||||
ldr r0, _0200A1E4 @ =gGameMode
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #5
|
||||
beq _0200A12C
|
||||
b _0200A232
|
||||
_0200A12C:
|
||||
ldr r1, _0200A1E8 @ =gUnknown_02015B20
|
||||
mov r0, sp
|
||||
movs r2, #4
|
||||
bl memcpy
|
||||
add r4, sp, #4
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
movs r2, #4
|
||||
bl memset
|
||||
bl m4aMPlayAllStop
|
||||
ldr r0, _0200A1EC @ =gMultiplayerCharRings
|
||||
ldr r0, [r0]
|
||||
str r0, [sp, #4]
|
||||
movs r7, #0
|
||||
mov sb, r4
|
||||
movs r0, #3
|
||||
mov ip, r0
|
||||
_0200A154:
|
||||
movs r4, #0
|
||||
cmp r4, ip
|
||||
bhs _0200A19C
|
||||
mov r6, sb
|
||||
mov r8, ip
|
||||
_0200A15E:
|
||||
adds r3, r6, r4
|
||||
adds r5, r4, #1
|
||||
adds r2, r6, r5
|
||||
ldrb r0, [r3]
|
||||
ldrb r1, [r2]
|
||||
cmp r0, r1
|
||||
bhs _0200A196
|
||||
eors r1, r0
|
||||
strb r1, [r3]
|
||||
ldrb r0, [r2]
|
||||
eors r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r3]
|
||||
eors r0, r1
|
||||
strb r0, [r3]
|
||||
mov r1, sp
|
||||
adds r3, r1, r4
|
||||
adds r2, r1, r5
|
||||
ldrb r1, [r3]
|
||||
ldrb r0, [r2]
|
||||
eors r1, r0
|
||||
strb r1, [r3]
|
||||
ldrb r0, [r2]
|
||||
eors r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r3]
|
||||
eors r0, r1
|
||||
strb r0, [r3]
|
||||
_0200A196:
|
||||
adds r4, r5, #0
|
||||
cmp r4, r8
|
||||
blo _0200A15E
|
||||
_0200A19C:
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
add ip, r0
|
||||
adds r7, #1
|
||||
cmp r7, #3
|
||||
bls _0200A154
|
||||
movs r7, #0
|
||||
mov r4, sb
|
||||
ldr r6, _0200A1F0 @ =gUnknown_030054B4
|
||||
ldr r5, _0200A1F4 @ =gMultiplayerCharacters
|
||||
mov r3, sp
|
||||
mov r2, sp
|
||||
ldr r1, _0200A1F8 @ =gMPRingCollectWins
|
||||
mov r8, r1
|
||||
_0200A1B8:
|
||||
cmp r7, #0
|
||||
beq _0200A1FC
|
||||
adds r0, r4, r7
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r4]
|
||||
cmp r0, r1
|
||||
beq _0200A204
|
||||
ldrb r0, [r2]
|
||||
adds r0, r0, r6
|
||||
strb r7, [r0]
|
||||
ldrb r0, [r2]
|
||||
adds r0, r0, r5
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
b _0200A22A
|
||||
.align 2, 0
|
||||
_0200A1D8: .4byte gCurTask
|
||||
_0200A1DC: .4byte gBldRegs
|
||||
_0200A1E0: .4byte 0x00000FFF
|
||||
_0200A1E4: .4byte gGameMode
|
||||
_0200A1E8: .4byte gUnknown_02015B20
|
||||
_0200A1EC: .4byte gMultiplayerCharRings
|
||||
_0200A1F0: .4byte gUnknown_030054B4
|
||||
_0200A1F4: .4byte gMultiplayerCharacters
|
||||
_0200A1F8: .4byte gMPRingCollectWins
|
||||
_0200A1FC:
|
||||
ldrb r1, [r4, #1]
|
||||
ldrb r0, [r4]
|
||||
cmp r0, r1
|
||||
bne _0200A214
|
||||
_0200A204:
|
||||
ldrb r0, [r2]
|
||||
adds r0, r0, r6
|
||||
strb r7, [r0]
|
||||
ldrb r0, [r2]
|
||||
adds r0, r0, r5
|
||||
movs r1, #2
|
||||
strb r1, [r0]
|
||||
b _0200A22A
|
||||
_0200A214:
|
||||
ldrb r0, [r3]
|
||||
adds r0, r0, r6
|
||||
strb r7, [r0]
|
||||
ldrb r1, [r3]
|
||||
add r1, r8
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3]
|
||||
adds r0, r0, r5
|
||||
strb r7, [r0]
|
||||
_0200A22A:
|
||||
adds r2, #1
|
||||
adds r7, #1
|
||||
cmp r7, #3
|
||||
bls _0200A1B8
|
||||
_0200A232:
|
||||
ldr r1, _0200A264 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0200A268 @ =gBackgroundsCopyQueueCursor
|
||||
ldr r0, _0200A26C @ =gBackgroundsCopyQueueIndex
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r1, _0200A270 @ =gUnknown_03005390
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldr r1, _0200A274 @ =gVramGraphicsCopyCursor
|
||||
ldr r0, _0200A278 @ =gVramGraphicsCopyQueueIndex
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
movs r0, #1
|
||||
bl CreateMultiplayerSinglePakResultsScreen
|
||||
_0200A256:
|
||||
add sp, #8
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0200A264: .4byte 0x0000FFFF
|
||||
_0200A268: .4byte gBackgroundsCopyQueueCursor
|
||||
_0200A26C: .4byte gBackgroundsCopyQueueIndex
|
||||
_0200A270: .4byte gUnknown_03005390
|
||||
_0200A274: .4byte gVramGraphicsCopyCursor
|
||||
_0200A278: .4byte gVramGraphicsCopyQueueIndex
|
||||
|
||||
thumb_func_start sub_0200A27C
|
||||
sub_0200A27C: @ 0x0200A27C
|
||||
thumb_func_start CreateMultiplayerFinishHandler
|
||||
CreateMultiplayerFinishHandler: @ 0x0200A27C
|
||||
push {r4, lr}
|
||||
sub sp, #4
|
||||
ldr r0, _0200A2A4 @ =sub_0200A058
|
||||
ldr r0, _0200A2A4 @ =Task_801A04C
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #6
|
||||
movs r4, #0
|
||||
@@ -289,7 +26,7 @@ sub_0200A27C: @ 0x0200A27C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0200A2A4: .4byte sub_0200A058
|
||||
_0200A2A4: .4byte Task_801A04C
|
||||
|
||||
thumb_func_start sub_0200A2A8
|
||||
sub_0200A2A8: @ 0x0200A2A8
|
||||
@@ -17760,7 +17497,7 @@ _02012656:
|
||||
movs r0, #1
|
||||
orrs r0, r2
|
||||
strh r0, [r4]
|
||||
bl sub_0200A27C
|
||||
bl CreateMultiplayerFinishHandler
|
||||
_0201268E:
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
.section .rodata
|
||||
|
||||
.global gUnknown_02015B18
|
||||
gUnknown_02015B18:
|
||||
.incbin "data/rom_data.bin", 0x00015A58, 0x8
|
||||
|
||||
.global gUnknown_02015B20
|
||||
gUnknown_02015B20:
|
||||
.incbin "data/rom_data.bin", 0x00015A60, 0x4
|
||||
|
||||
.global gUnknown_02015B24
|
||||
gUnknown_02015B24:
|
||||
.incbin "data/rom_data.bin", 0x00015A64, 0x14
|
||||
|
||||
@@ -35,6 +35,7 @@ SECTIONS {
|
||||
build/collect_rings/src/sa2/game/multiboot/collect_rings/time_display.o(.text);
|
||||
build/collect_rings/src/sa2/game/multiplayer/indicators.o(.text);
|
||||
build/collect_rings/src/sa2/game/multiplayer/mp_player.o(.text);
|
||||
build/collect_rings/src/sa2/game/multiplayer/finish.o(.text);
|
||||
build/collect_rings/asm/code.o(.text);
|
||||
build/collect_rings/src/sa2/lib/m4a/m4a0.o(.text);
|
||||
build/collect_rings/src/sa2/lib/m4a/m4a.o(.text);
|
||||
@@ -62,6 +63,8 @@ SECTIONS {
|
||||
build/collect_rings/src/sa2/game/sa1_sa2_shared/entities_manager.o(.rodata);
|
||||
build/collect_rings/src/sa2/game/mystery_item_box.o(.rodata);
|
||||
build/collect_rings/src/sa2/game/multiboot/collect_rings/time_display.o(.rodata);
|
||||
build/collect_rings/src/sa2/game/multiplayer/mp_player.o(.rodata);
|
||||
build/collect_rings/src/sa2/game/multiplayer/finish.o(.rodata);
|
||||
build/collect_rings/data/data.o(.rodata);
|
||||
build/collect_rings/src/sa2/lib/m4a/m4a_tables.o(.rodata);
|
||||
build/collect_rings/data/sound_data.o(.rodata);
|
||||
|
||||
@@ -198,7 +198,7 @@ static void StageGoalToggle_HandleMultiplayerFinish(void)
|
||||
}
|
||||
}
|
||||
|
||||
sub_8019CCC(SIO_MULTI_CNT->id, count);
|
||||
CreateMultiplayerFinishResult(SIO_MULTI_CNT->id, count);
|
||||
player->unk5C |= 1;
|
||||
|
||||
if (count == 0) {
|
||||
@@ -241,9 +241,9 @@ static UNUSED void StageGoalToggle_ForceMultiplayerFinish(void)
|
||||
if (gUnknown_030054B4[j] == -1) {
|
||||
if ((gMultiplayerConnections & (0x10 << (j))) >> ((j + 4))
|
||||
== (gMultiplayerConnections & (0x10 << (SIO_MULTI_CNT->id))) >> (SIO_MULTI_CNT->id + 4)) {
|
||||
sub_8019CCC(j, thing);
|
||||
CreateMultiplayerFinishResult(j, thing);
|
||||
} else {
|
||||
sub_8019CCC(j, thing ^ 1);
|
||||
CreateMultiplayerFinishResult(j, thing ^ 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -287,7 +287,7 @@ static void StageGoalToggle_PlayerReachedGoal(void)
|
||||
}
|
||||
}
|
||||
|
||||
sub_8019F08();
|
||||
CreateMultiplayerFinishHandler();
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
#include "multi_boot.h"
|
||||
#include "sio32_multi_load.h"
|
||||
|
||||
#if COLLECT_RINGS_ROM
|
||||
#include "game/multiplayer/mp_player.h"
|
||||
#endif
|
||||
|
||||
#include "data/collect_rings.h"
|
||||
|
||||
#include "constants/animations.h"
|
||||
@@ -64,10 +68,6 @@ void sub_8082BF8(struct MultiplayerSinglePakResultsScreen *);
|
||||
|
||||
void sub_8082CEC(Sprite *s, void *vramAddr, u16 animId, u8 variant, s16 x, s16 y, u16 oamFlags, u8 unk25, u32 unk10);
|
||||
|
||||
#if COLLECT_RINGS_ROM
|
||||
extern const u16 gUnknown_02015B18[];
|
||||
#endif
|
||||
|
||||
// TODO: Maybe rename because this is also called before the 1st round?
|
||||
void CreateMultiplayerSinglePakResultsScreen(u32 a)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,12 @@
|
||||
|
||||
#include "game/multiplayer/finish.h"
|
||||
#include "game/multiplayer/mp_player.h"
|
||||
#include "game/multiplayer/results.h"
|
||||
#include "game/multiplayer/multiplayer_event_mgr.h"
|
||||
|
||||
#include "game/multiboot/collect_rings/results.h"
|
||||
|
||||
#include "lib/m4a/m4a.h"
|
||||
|
||||
#include "constants/animations.h"
|
||||
#include "constants/text.h"
|
||||
@@ -19,9 +25,19 @@ typedef struct {
|
||||
u8 unk31;
|
||||
} MpFinish1; /* size: 0x34 */
|
||||
|
||||
typedef struct {
|
||||
u16 unk0;
|
||||
} Finish2; /* size: 4 */
|
||||
|
||||
void Task_801A04C(void);
|
||||
void Task_TransitionToResultsScreen(void);
|
||||
|
||||
void Task_8019E70(void);
|
||||
void TaskDestructor_8019EF4(struct Task *);
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
|
||||
// TODO: split finish result
|
||||
const TileInfo gUnknown_080D5768[2][7] = { {
|
||||
// Japanese
|
||||
{ 0, SA2_ANIM_MP_RESULT_JP, SA2_ANIM_MP_RESULT_WIN },
|
||||
@@ -57,7 +73,7 @@ const TileInfo gUnknown_080D5768[2][7] = { {
|
||||
(source + (_id)); \
|
||||
})
|
||||
|
||||
void sub_8019CCC(u8 sioId, u8 count)
|
||||
void CreateMultiplayerFinishResult(u8 sioId, u8 count)
|
||||
{
|
||||
u32 i = 0;
|
||||
|
||||
@@ -136,19 +152,7 @@ void TaskDestructor_8019EF4(struct Task *t)
|
||||
VramFree(s->graphics.dest);
|
||||
}
|
||||
|
||||
#include "game/multiboot/collect_rings/results.h"
|
||||
#include "game/multiplayer/results.h"
|
||||
#include "game/multiplayer/multiplayer_event_mgr.h"
|
||||
#include "lib/m4a/m4a.h"
|
||||
|
||||
typedef struct {
|
||||
u16 unk0;
|
||||
} Finish2; /* size: 4 */
|
||||
|
||||
void Task_801A04C(void);
|
||||
void Task_TransitionToResultsScreen(void);
|
||||
|
||||
void sub_8019F08(void)
|
||||
void CreateMultiplayerFinishHandler(void)
|
||||
{
|
||||
u32 i;
|
||||
u32 r2;
|
||||
@@ -205,10 +209,11 @@ void sub_8019F08(void)
|
||||
mpt = gMultiplayerPlayerTasks[i];
|
||||
mpp = TASK_DATA(mpt);
|
||||
mpp->unk5C |= 1;
|
||||
sub_8019CCC(i, r6);
|
||||
CreateMultiplayerFinishResult(i, r6);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void Task_801A04C(void)
|
||||
{
|
||||
@@ -325,6 +330,7 @@ void Task_TransitionToResultsScreen(void)
|
||||
}
|
||||
// _0801A232
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
{
|
||||
s16 pid;
|
||||
s32 foeResult;
|
||||
@@ -356,6 +362,7 @@ void Task_TransitionToResultsScreen(void)
|
||||
RecordOwnMultiplayerResult(ownResult);
|
||||
WriteSaveGame();
|
||||
}
|
||||
#endif
|
||||
#ifndef NON_MATCHING
|
||||
_0801A2DA:
|
||||
#endif
|
||||
@@ -367,11 +374,16 @@ void Task_TransitionToResultsScreen(void)
|
||||
PAUSE_GRAPHICS_QUEUE();
|
||||
}
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
if (gGameMode != GAME_MODE_MULTI_PLAYER_COLLECT_RINGS) {
|
||||
DmaFill32(3, 0, &gMultiSioSend, sizeof(struct MultiSioData_0_0));
|
||||
CreateMultiplayerResultsScreen(1);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
DmaFill32(3, 0, &gMultiSioSend, sizeof(struct MultiSioData_0_0));
|
||||
#endif
|
||||
CreateMultiplayerSinglePakResultsScreen(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,12 @@ void sub_8017670(void);
|
||||
void sub_8017C28(void);
|
||||
void LaunchPlayer(s16);
|
||||
|
||||
#if COLLECT_RINGS_ROM
|
||||
// Can't be sure this was defined here, but it works as it
|
||||
// may have something to do with the characters
|
||||
const u16 gUnknown_02015B18[] = { 0x55, 0x59, 0x5D, 0x61 };
|
||||
#endif
|
||||
|
||||
void CreateMultiplayerPlayer(u8 id)
|
||||
{
|
||||
u16 *p;
|
||||
|
||||
@@ -212,7 +212,7 @@ void ReceiveRoomEvent_ReachedStageGoal(union MultiSioData *recv, u8 i)
|
||||
}
|
||||
|
||||
if (gUnknown_030054B4[i] == -1) {
|
||||
sub_8019CCC(i, count2);
|
||||
CreateMultiplayerFinishResult(i, count2);
|
||||
} else {
|
||||
somebool = 1;
|
||||
}
|
||||
@@ -221,7 +221,7 @@ void ReceiveRoomEvent_ReachedStageGoal(union MultiSioData *recv, u8 i)
|
||||
for (j = 0; j < 4 && gMultiplayerPlayerTasks[j] != NULL; j++) {
|
||||
if (j != i && gUnknown_030054B4[j] == -1
|
||||
&& (gMultiplayerConnections & (0x10 << (j))) >> ((j + 4)) == (gMultiplayerConnections & (0x10 << (i))) >> (i + 4)) {
|
||||
sub_8019CCC(j, count2);
|
||||
CreateMultiplayerFinishResult(j, count2);
|
||||
if (j == SIO_MULTI_CNT->id) {
|
||||
Player_TransitionCancelFlyingAndBoost(&gPlayer);
|
||||
gPlayer.moveState &= ~MOVESTATE_STOOD_ON_OBJ;
|
||||
@@ -265,11 +265,11 @@ void ReceiveRoomEvent_ReachedStageGoal(union MultiSioData *recv, u8 i)
|
||||
mpp2 = TASK_DATA(gMultiplayerPlayerTasks[j]);
|
||||
if (gUnknown_030054B4[j] == -1) {
|
||||
if (gGameMode == GAME_MODE_TEAM_PLAY) {
|
||||
sub_8019CCC(j, 1);
|
||||
CreateMultiplayerFinishResult(j, 1);
|
||||
} else {
|
||||
u32 temp;
|
||||
RoomEvent *roomEvent;
|
||||
sub_8019CCC(j, count - 1);
|
||||
CreateMultiplayerFinishResult(j, count - 1);
|
||||
mpp2->unk5C |= 1;
|
||||
gPlayer.moveState |= MOVESTATE_IGNORE_INPUT;
|
||||
gPlayer.heldInput = 0;
|
||||
@@ -284,7 +284,7 @@ void ReceiveRoomEvent_ReachedStageGoal(union MultiSioData *recv, u8 i)
|
||||
}
|
||||
|
||||
if (!somebool) {
|
||||
sub_8019F08();
|
||||
CreateMultiplayerFinishHandler();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,9 +429,9 @@ void Task_GameStage(void)
|
||||
} else {
|
||||
gStageFlags |= STAGE_FLAG__ACT_START;
|
||||
#if (GAME == GAME_SA1)
|
||||
sa2__sub_8019F08();
|
||||
sa2__CreateMultiplayerFinishHandler();
|
||||
#elif (GAME == GAME_SA2)
|
||||
sub_8019F08();
|
||||
CreateMultiplayerFinishHandler();
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
@@ -465,9 +465,9 @@ void Task_GameStage(void)
|
||||
} else {
|
||||
gStageFlags |= STAGE_FLAG__ACT_START;
|
||||
#if (GAME == GAME_SA1)
|
||||
sa2__sub_8019F08();
|
||||
sa2__CreateMultiplayerFinishHandler();
|
||||
#elif (GAME == GAME_SA2)
|
||||
sub_8019F08();
|
||||
CreateMultiplayerFinishHandler();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user