collect_rings: match multiplayer_teleport

This commit is contained in:
Oliver Bell committed 2025-06-01 13:16:56 +01:00
1 parent e5d20fef84
commit f77ec0f443
12 files changed
+59 -595

No files matched your search

+2 -1
View File
@@ -370,7 +370,8 @@
"french_horn.h": "c",
"pipe_sequence.h": "c",
"terrain_collision.h": "c",
"indicators.h": "c"
"indicators.h": "c",
"multiplayer_teleport.h": "c"
},
"asm-code-lens.donated": true,
"editor.formatOnSave": true,
+6 -1
View File
@@ -491,7 +491,12 @@
#define SA2_ANIM_VARIANT_GAME_OVER_NUE 3
#define SA2_ANIM_VARIANT_GAME_OVER_TIME 4
#define SA2_ANIM_NOTIFICATION_RING_BONUS 735
#ifndef COLLECT_RINGS_ROM
#define SA2_ANIM_NOTIFICATION_RING_BONUS 735
#else
#define SA2_ANIM_NOTIFICATION_RING_BONUS 112
#endif
#define SA2_ANIM_CHAR_SELECT_CHARACTER 736
#define SA2_ANIM_VARIANT_CHAR_SELECT_CHARACTER_STATIC 0
#define SA2_ANIM_VARIANT_CHAR_SELECT_CHARACTER_SELECTED 1
+11 -5
View File
@@ -344,11 +344,17 @@
#define MUS_MESSAGE_2 408
#define MUS_GOT_ALL_CHAOS_EMERALDS 410
#define MUS_FANFARE 411
#define MUS_VS_EXIT 412
#define MUS_VS_SUCCESS 413
#define MUS_VS_MISS 414
#define MUS_MESSAGE 415
#ifndef COLLECT_RINGS_ROM
#define MUS_FANFARE 411
#else
#define MUS_FANFARE 4
#endif
#define MUS_VS_EXIT 412
#define MUS_VS_SUCCESS 413
#define MUS_VS_MISS 414
#define MUS_MESSAGE 415
/* 416 - 503: Dummies */
@@ -0,0 +1,9 @@
#ifndef GUARD_INTERACTABLE_MULTIPLAYER_TELEPORT
#define GUARD_INTERACTABLE_MULTIPLAYER_TELEPORT
#include "global.h"
#include "game/entity.h"
void CreateEntity_MultiplayerTeleport(MapEntity *, u16, u16, u8);
#endif // GUARD_INTERACTABLE_MULTIPLAYER_TELEPORT
@@ -1,9 +0,0 @@
#ifndef GUARD_INTERACTABLE_NOTIFICATION_RING_BONUS_H
#define GUARD_INTERACTABLE_NOTIFICATION_RING_BONUS_H
#include "global.h"
#include "game/entity.h"
void CreateEntity_MultiplayerTeleport(MapEntity *, u16, u16, u8);
#endif // GUARD_INTERACTABLE_NOTIFICATION_RING_BONUS_H
+1 -1
View File
@@ -306,7 +306,7 @@ SECTIONS
src/game/interactables_2/egg_utopia/flying_handle.o(.text);
src/game/interactables_2/egg_utopia/speeding_platform.o(.text);
src/game/interactables_2/egg_utopia/gravity_toggle.o(.text);
src/game/interactables_2/notification_ring_bonus.o(.text);
src/game/interactables_2/multiplayer_teleport.o(.text);
src/game/interactables_2/sky_canyon_init.o(.text);
src/game/interactables_2/105.o(.text);
src/game/interactables_2/note_particle.o(.text);
+2 -1
View File
@@ -117,7 +117,8 @@ SA2_C_FILES := \
sa2/game/sa1_sa2_shared/interactables/spring.c \
sa2/game/sa1_sa2_shared/interactables/ramp.c \
sa2/game/interactables_1/spikes.c \
sa2/game/sa1_sa2_shared/interactables/grind_rail.c
sa2/game/sa1_sa2_shared/interactables/grind_rail.c \
sa2/game/interactables_2/multiplayer_teleport.c
SA2_C_ASM_FILES := \
sa2/lib/m4a/m4a0.s \
+4 -561
View File
@@ -4,563 +4,6 @@
.syntax unified
.arm
thumb_func_start CreateEntity_MultiplayerTeleport
CreateEntity_MultiplayerTeleport: @ 0x0200B7CC
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
sub sp, #4
mov r8, r0
adds r4, r1, #0
adds r6, r2, #0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
lsls r6, r6, #0x10
lsrs r6, r6, #0x10
ldr r0, _0200B858 @ =sub_0200BB44
ldr r2, _0200B85C @ =0x00002010
movs r5, #0
str r5, [sp]
movs r1, #0x24
movs r3, #0
bl TaskCreate
ldrh r2, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r2, r2, r0
str r5, [r2, #0x14]
strh r5, [r2, #0x18]
strh r5, [r2, #0x1a]
str r5, [r2, #0x1c]
mov r1, r8
ldrb r0, [r1]
lsls r0, r0, #3
lsls r4, r4, #8
adds r0, r0, r4
str r0, [r2]
ldrb r0, [r1, #1]
lsls r0, r0, #3
lsls r6, r6, #8
adds r0, r0, r6
str r0, [r2, #4]
movs r4, #3
ldrsb r4, [r1, r4]
lsls r4, r4, #3
strh r4, [r2, #8]
movs r3, #4
ldrsb r3, [r1, r3]
lsls r3, r3, #3
strh r3, [r2, #0xa]
ldrb r1, [r1, #5]
lsls r1, r1, #3
adds r1, r4, r1
strh r1, [r2, #0xc]
mov r5, r8
ldrb r0, [r5, #6]
lsls r0, r0, #3
adds r0, r3, r0
strh r0, [r2, #0xe]
subs r1, r1, r4
strh r1, [r2, #0x10]
subs r0, r0, r3
strh r0, [r2, #0x12]
movs r1, #2
rsbs r1, r1, #0
adds r0, r1, #0
strb r0, [r5]
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0200B858: .4byte sub_0200BB44
_0200B85C: .4byte 0x00002010
thumb_func_start sub_0200B860
sub_0200B860: @ 0x0200B860
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r1, #8
ldrsh r0, [r5, r1]
ldr r2, [r5]
adds r0, r2, r0
lsls r0, r0, #8
ldr r1, [r5, #0x20]
cmp r1, r0
bge _0200B964
ldr r0, _0200B8B8 @ =gPlayer
movs r3, #0xc
ldrsh r1, [r5, r3]
adds r1, r2, r1
lsls r1, r1, #8
ldr r0, [r0, #8]
cmp r0, r1
ble _0200B964
ldr r0, [r5, #0x1c]
cmp r0, #0
beq _0200B94C
ldrh r0, [r5, #0x18]
adds r2, r0, #1
strh r2, [r5, #0x18]
movs r0, #0x1a
ldrsh r1, [r5, r0]
lsls r0, r2, #0x10
asrs r0, r0, #0x10
cmp r1, r0
bge _0200B956
strh r2, [r5, #0x1a]
ldr r0, _0200B8BC @ =gUnknown_030053A4
ldr r0, [r0]
ldr r1, [r5, #0x14]
subs r0, r0, r1
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
movs r0, #0xe1
lsls r0, r0, #3
cmp r7, r0
bls _0200B8C0
movs r1, #5
b _0200B8CC
.align 2, 0
_0200B8B8: .4byte gPlayer
_0200B8BC: .4byte gUnknown_030053A4
_0200B8C0:
movs r0, #0x96
lsls r0, r0, #3
movs r1, #0xf
cmp r7, r0
bls _0200B8CC
movs r1, #0xa
_0200B8CC:
ldr r2, _0200B934 @ =gRingCount
ldrh r6, [r2]
adds r0, r1, r6
strh r0, [r2]
ldr r0, _0200B938 @ =gCurrentLevel
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x1d
beq _0200B90A
ldrh r0, [r2]
movs r1, #0x64
bl Div
adds r4, r0, #0
adds r0, r6, #0
movs r1, #0x64
bl Div
cmp r4, r0
beq _0200B90A
ldr r0, _0200B93C @ =gGameMode
ldrb r0, [r0]
cmp r0, #0
bne _0200B90A
ldr r1, _0200B940 @ =gNumLives
ldrb r0, [r1]
cmp r0, #0xfe
bhi _0200B90A
adds r0, #1
strb r0, [r1]
_0200B90A:
ldr r0, _0200B93C @ =gGameMode
ldrb r0, [r0]
cmp r0, #5
bne _0200B91E
ldr r1, _0200B934 @ =gRingCount
ldrh r0, [r1]
cmp r0, #0xff
bls _0200B91E
movs r0, #0xff
strh r0, [r1]
_0200B91E:
movs r0, #4
bl m4aSongNumStart
bl sub_0200BAB8
ldr r0, _0200B944 @ =gUnknown_030053A4
ldr r0, [r0]
str r0, [r5, #0x14]
ldr r0, _0200B948 @ =gUnknown_03005B6C
str r7, [r0]
b _0200B956
.align 2, 0
_0200B934: .4byte gRingCount
_0200B938: .4byte gCurrentLevel
_0200B93C: .4byte gGameMode
_0200B940: .4byte gNumLives
_0200B944: .4byte gUnknown_030053A4
_0200B948: .4byte gUnknown_03005B6C
_0200B94C:
movs r0, #1
str r0, [r5, #0x1c]
ldr r0, _0200B95C @ =gUnknown_030053A4
ldr r0, [r0]
str r0, [r5, #0x14]
_0200B956:
ldr r0, _0200B960 @ =gPlayer
ldr r0, [r0, #8]
b _0200B992
.align 2, 0
_0200B95C: .4byte gUnknown_030053A4
_0200B960: .4byte gPlayer
_0200B964:
movs r1, #0xc
ldrsh r0, [r5, r1]
ldr r2, [r5]
adds r0, r2, r0
lsls r0, r0, #8
ldr r1, [r5, #0x20]
cmp r1, r0
ble _0200B994
ldr r3, _0200B9A4 @ =gPlayer
movs r1, #8
ldrsh r0, [r5, r1]
adds r0, r2, r0
lsls r0, r0, #8
ldr r1, [r3, #8]
cmp r1, r0
bge _0200B994
ldr r0, [r5, #0x1c]
cmp r0, #0
beq _0200B990
ldrh r0, [r5, #0x18]
subs r0, #1
strh r0, [r5, #0x18]
_0200B990:
ldr r0, [r3, #8]
_0200B992:
str r0, [r5, #0x20]
_0200B994:
ldr r0, _0200B9A8 @ =gCurTask
ldr r1, [r0]
ldr r0, _0200B9AC @ =sub_0200BB44
str r0, [r1, #8]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0200B9A4: .4byte gPlayer
_0200B9A8: .4byte gCurTask
_0200B9AC: .4byte sub_0200BB44
thumb_func_start sub_0200B9B0
sub_0200B9B0: @ 0x0200B9B0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r2, [r5]
ldr r1, _0200BA14 @ =gCamera
ldr r3, [r1]
subs r2, r2, r3
ldr r0, [r5, #4]
ldr r4, [r1, #4]
subs r0, r0, r4
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
ldr r0, _0200BA18 @ =gPlayer
ldr r1, [r0, #8]
asrs r1, r1, #8
subs r1, r1, r3
ldr r0, [r0, #0xc]
asrs r0, r0, #8
subs r0, r0, r4
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
lsls r2, r2, #0x10
asrs r2, r2, #0x10
movs r4, #8
ldrsh r0, [r5, r4]
adds r0, r2, r0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
cmp r0, r1
bgt _0200BA1C
movs r4, #0xc
ldrsh r0, [r5, r4]
adds r0, r2, r0
cmp r1, r0
bgt _0200BA1C
lsls r0, r6, #0x10
asrs r2, r0, #0x10
movs r1, #0xa
ldrsh r0, [r5, r1]
adds r0, r2, r0
lsls r1, r3, #0x10
asrs r1, r1, #0x10
cmp r0, r1
bgt _0200BA1C
movs r3, #0xe
ldrsh r0, [r5, r3]
adds r0, r2, r0
cmp r1, r0
bgt _0200BA1C
movs r0, #1
b _0200BA1E
.align 2, 0
_0200BA14: .4byte gCamera
_0200BA18: .4byte gPlayer
_0200BA1C:
movs r0, #0
_0200BA1E:
pop {r4, r5, r6}
pop {r1}
bx r1
thumb_func_start sub_0200BA24
sub_0200BA24: @ 0x0200BA24
push {r4, lr}
ldr r0, [r0, #0x1c]
cmp r0, #0
beq _0200BAA6
ldr r0, _0200BA4C @ =gPlayer
ldr r2, [r0, #8]
ldr r1, _0200BA50 @ =0x0000EFFF
adds r3, r0, #0
cmp r2, r1
bgt _0200BA58
ldr r1, [r3, #0xc]
ldr r0, _0200BA54 @ =0x00011FFF
cmp r1, r0
bgt _0200BA58
movs r2, #0xb4
lsls r2, r2, #0xb
movs r4, #0xd8
lsls r4, r4, #0xa
b _0200BA70
.align 2, 0
_0200BA4C: .4byte gPlayer
_0200BA50: .4byte 0x0000EFFF
_0200BA54: .4byte 0x00011FFF
_0200BA58:
ldr r1, [r3, #8]
movs r0, #0xd2
lsls r0, r0, #0xb
cmp r1, r0
ble _0200BAA6
ldr r1, [r3, #0xc]
movs r0, #0xd8
lsls r0, r0, #0xa
cmp r1, r0
ble _0200BAA6
ldr r2, _0200BAAC @ =0xFFFA6000
ldr r4, _0200BAB0 @ =0xFFFCA000
_0200BA70:
ldr r0, [r3, #8]
adds r0, r0, r2
str r0, [r3, #8]
ldr r0, [r3, #0xc]
adds r0, r0, r4
str r0, [r3, #0xc]
asrs r2, r2, #8
asrs r4, r4, #8
ldr r1, _0200BAB4 @ =gCamera
ldr r0, [r1]
adds r0, r0, r2
str r0, [r1]
ldr r0, [r1, #0x20]
adds r0, r0, r2
str r0, [r1, #0x20]
ldr r0, [r1, #0x10]
adds r0, r0, r2
str r0, [r1, #0x10]
ldr r0, [r1, #4]
adds r0, r0, r4
str r0, [r1, #4]
ldr r0, [r1, #0x24]
adds r0, r0, r4
str r0, [r1, #0x24]
ldr r0, [r1, #0x14]
adds r0, r0, r4
str r0, [r1, #0x14]
_0200BAA6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0200BAAC: .4byte 0xFFFA6000
_0200BAB0: .4byte 0xFFFCA000
_0200BAB4: .4byte gCamera
thumb_func_start sub_0200BAB8
sub_0200BAB8: @ 0x0200BAB8
push {r4, r5, r6, lr}
sub sp, #4
ldr r0, _0200BB28 @ =sub_0200BBA0
ldr r2, _0200BB2C @ =0x00002010
ldr r1, _0200BB30 @ =sub_0200BBE0
str r1, [sp]
movs r1, #0x34
movs r3, #0
bl TaskCreate
ldrh r5, [r0, #6]
movs r4, #0xc0
lsls r4, r4, #0x12
adds r4, r5, r4
movs r6, #0
movs r1, #0
movs r0, #0x78
strh r0, [r4, #0x30]
movs r0, #0x40
strh r0, [r4, #0x1a]
strh r1, [r4, #8]
strh r1, [r4, #0x14]
strh r1, [r4, #0x1c]
ldr r0, _0200BB34 @ =gUnknown_03000021
adds r1, r5, r0
movs r0, #0xff
strb r0, [r1]
ldr r0, _0200BB38 @ =gUnknown_03000022
adds r1, r5, r0
movs r0, #0x10
strb r0, [r1]
ldr r1, _0200BB3C @ =gUnknown_03000025
adds r0, r5, r1
strb r6, [r0]
movs r0, #1
rsbs r0, r0, #0
str r0, [r4, #0x28]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r4, #0x10]
movs r0, #0x1a
bl VramMalloc
str r0, [r4, #4]
movs r0, #0x70
strh r0, [r4, #0xa]
ldr r0, _0200BB40 @ =gUnknown_03000020
adds r5, r5, r0
strb r6, [r5]
adds r0, r4, #0
bl UpdateSpriteAnimation
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0200BB28: .4byte sub_0200BBA0
_0200BB2C: .4byte 0x00002010
_0200BB30: .4byte sub_0200BBE0
_0200BB34: .4byte gUnknown_03000021
_0200BB38: .4byte gUnknown_03000022
_0200BB3C: .4byte gUnknown_03000025
_0200BB40: .4byte gUnknown_03000020
thumb_func_start sub_0200BB44
sub_0200BB44: @ 0x0200BB44
push {r4, r5, lr}
ldr r0, _0200BB74 @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r4, r1, r0
ldr r5, _0200BB78 @ =gPlayer
ldr r0, [r5, #0x20]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0200BB62
ldrh r0, [r4, #0x1a]
strh r0, [r4, #0x18]
_0200BB62:
adds r0, r4, #0
bl sub_0200B9B0
cmp r0, #0
beq _0200BB7C
adds r0, r4, #0
bl sub_0200BB8C
b _0200BB80
.align 2, 0
_0200BB74: .4byte gCurTask
_0200BB78: .4byte gPlayer
_0200BB7C:
ldr r0, [r5, #8]
str r0, [r4, #0x20]
_0200BB80:
adds r0, r4, #0
bl sub_0200BA24
pop {r4, r5}
pop {r0}
bx r0
thumb_func_start sub_0200BB8C
sub_0200BB8C: @ 0x0200BB8C
ldr r0, _0200BB98 @ =gCurTask
ldr r1, [r0]
ldr r0, _0200BB9C @ =sub_0200BBF4
str r0, [r1, #8]
bx lr
.align 2, 0
_0200BB98: .4byte gCurTask
_0200BB9C: .4byte sub_0200BBF4
thumb_func_start sub_0200BBA0
sub_0200BBA0: @ 0x0200BBA0
push {lr}
ldr r0, _0200BBC4 @ =gCurTask
ldr r3, [r0]
ldrh r1, [r3, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r2, r1, r0
ldrh r0, [r2, #0x30]
subs r0, #1
strh r0, [r2, #0x30]
lsls r0, r0, #0x10
ldr r1, _0200BBC8 @ =0xFFFF0000
cmp r0, r1
bne _0200BBCC
adds r0, r3, #0
bl TaskDestroy
b _0200BBDA
.align 2, 0
_0200BBC4: .4byte gCurTask
_0200BBC8: .4byte 0xFFFF0000
_0200BBCC:
movs r0, #0x78
strh r0, [r2, #0x16]
movs r0, #0x30
strh r0, [r2, #0x18]
adds r0, r2, #0
bl DisplaySprite
_0200BBDA:
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_0200BBE0
sub_0200BBE0: @ 0x0200BBE0
push {lr}
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r0, r0, r1
ldr r0, [r0, #4]
bl VramFree
pop {r0}
bx r0
thumb_func_start sub_0200BBF4
sub_0200BBF4: @ 0x0200BBF4
push {r4, lr}
ldr r0, _0200BC18 @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r4, r1, r0
adds r0, r4, #0
bl sub_0200B9B0
cmp r0, #0
bne _0200BC12
adds r0, r4, #0
bl sub_0200B860
_0200BC12:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0200BC18: .4byte gCurTask
thumb_func_start CreateDustCloud
CreateDustCloud: @ 0x0200BC1C
@@ -14668,7 +14111,7 @@ _02012656:
ands r0, r2
cmp r0, #0
bne _0201268E
ldr r0, _020126A4 @ =gUnknown_030053A4
ldr r0, _020126A4 @ =gCheckpointTime
ldr r1, [r0]
add r1, ip
str r1, [r0]
@@ -14696,7 +14139,7 @@ _02012694: .4byte gMultiplayerConnections
_02012698: .4byte gUnknown_030053E0
_0201269C: .4byte gUnknown_03005400
_020126A0: .4byte gStageFlags
_020126A4: .4byte gUnknown_030053A4
_020126A4: .4byte gCheckpointTime
_020126A8: .4byte gCourseTime
thumb_func_start sub_020126AC
@@ -14772,7 +14215,7 @@ _02012724:
ldr r0, _0201277C @ =gFrameCount
ldr r0, [r0]
str r0, [r1]
ldr r0, _02012780 @ =gUnknown_030053A4
ldr r0, _02012780 @ =gCheckpointTime
str r3, [r0]
ldr r1, _02012784 @ =gCourseTime
ldr r0, _02012788 @ =0x00002A30
@@ -14793,7 +14236,7 @@ _02012770: .4byte gStageFlags
_02012774: .4byte 0x0000FF7F
_02012778: .4byte gUnknown_03005418
_0201277C: .4byte gFrameCount
_02012780: .4byte gUnknown_030053A4
_02012780: .4byte gCheckpointTime
_02012784: .4byte gCourseTime
_02012788: .4byte 0x00002A30
@@ -41,6 +41,7 @@ SECTIONS {
build/collect_rings/src/sa2/game/sa1_sa2_shared/interactables/ramp.o(.text);
build/collect_rings/src/sa2/game/interactables_1/spikes.o(.text);
build/collect_rings/src/sa2/game/sa1_sa2_shared/interactables/grind_rail.o(.text);
build/collect_rings/src/sa2/game/interactables_2/multiplayer_teleport.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);
+1 -1
View File
@@ -51,7 +51,7 @@ build/collect_rings/src/sa2/sio32_multi_load.o(COMMON);
build/collect_rings/src/sa2/core.o(.data);
. = 0x000053A0; gUnknown_030053E0 = .;
. = 0x000053A4; gUnknown_030053A4 = .;
. = 0x000053A4; gCheckpointTime = .;
. = 0x000053A8; gMultiplayerCharRings = .;
. = 0x000053AC; gMultiplayerLanguage = .;
. = 0x000053B0; gRingCount = .;
@@ -5,6 +5,7 @@
#include "game/stage/camera.h"
#include "game/multiboot/collect_rings/time_display.h"
#include "game/interactables_2/multiplayer_teleport.h"
#include "game/entity.h"
#include "sprite.h"
#include "task.h"
@@ -35,13 +36,13 @@ typedef struct {
/* 0x32 */ u8 filler32[2];
} Sprite_Notif_RingBonus; /* size: 0x34 */
extern void sub_80803FC(Sprite_MultiplayerTeleport *);
extern bool32 sub_808055C(Sprite_MultiplayerTeleport *);
extern void sub_80805D0(Sprite_MultiplayerTeleport *);
extern void CreateSprite_Notif_RingBonus(void);
static void sub_80803FC(Sprite_MultiplayerTeleport *);
static bool32 sub_808055C(Sprite_MultiplayerTeleport *);
static void sub_80805D0(Sprite_MultiplayerTeleport *);
static void CreateSprite_Notif_RingBonus(void);
void Task_80806F4(void);
void sub_808073C(Sprite_MultiplayerTeleport UNUSED *s);
static void Task_80806F4(void);
static void sub_808073C(Sprite_MultiplayerTeleport UNUSED *s);
static void Task_8080750(void);
static void TaskDestructor_8080790(struct Task *t);
static void Task_80807A4(void);
@@ -70,7 +71,7 @@ void CreateEntity_MultiplayerTeleport(MapEntity *me, u16 spriteRegionX, u16 spri
SET_MAP_ENTITY_INITIALIZED(me);
}
void sub_80803FC(Sprite_MultiplayerTeleport *sprite)
static void sub_80803FC(Sprite_MultiplayerTeleport *sprite)
{
if ((sprite->someX < Q(sprite->posX + sprite->unk8)) && (gPlayer.qWorldX > Q(sprite->posX + sprite->unkC))) {
if (sprite->unk1C != 0) {
@@ -100,10 +101,16 @@ void sub_80803FC(Sprite_MultiplayerTeleport *sprite)
if (!IS_EXTRA_STAGE(gCurrentLevel) && (Div(gRingCount, 100) != Div(prevRingCount, 100))
&& (gGameMode == GAME_MODE_SINGLE_PLAYER)) {
#ifndef COLLECT_RINGS_ROM
u32 lives = gNumLives + 1;
LIVES_BOUND_CHECK_B(lives);
gMusicManagerState.unk3 = 0x10;
#else
if (gNumLives < 255) {
gNumLives++;
}
#endif
}
if (gGameMode == GAME_MODE_MULTI_PLAYER_COLLECT_RINGS) {
@@ -134,7 +141,7 @@ void sub_80803FC(Sprite_MultiplayerTeleport *sprite)
gCurTask->main = Task_80806F4;
}
bool32 sub_808055C(Sprite_MultiplayerTeleport *sprite)
static bool32 sub_808055C(Sprite_MultiplayerTeleport *sprite)
{
s16 spriteX, spriteY;
s16 playerX, playerY;
@@ -152,7 +159,7 @@ bool32 sub_808055C(Sprite_MultiplayerTeleport *sprite)
}
}
void sub_80805D0(Sprite_MultiplayerTeleport *sprite)
static void sub_80805D0(Sprite_MultiplayerTeleport *sprite)
{
if (sprite->unk1C != 0) {
s32 xValue, yValue;
@@ -182,7 +189,7 @@ void sub_80805D0(Sprite_MultiplayerTeleport *sprite)
}
}
void CreateSprite_Notif_RingBonus(void)
static void CreateSprite_Notif_RingBonus(void)
{
struct Task *t = TaskCreate(Task_8080750, sizeof(Sprite_Notif_RingBonus), 0x2010, 0, TaskDestructor_8080790);
Sprite_Notif_RingBonus *notif = TASK_DATA(t);
@@ -198,7 +205,7 @@ void CreateSprite_Notif_RingBonus(void)
UpdateSpriteAnimation(s);
}
void Task_80806F4(void)
static void Task_80806F4(void)
{
Sprite_MultiplayerTeleport *sprite = TASK_DATA(gCurTask);
if (gPlayer.moveState & MOVESTATE_DEAD) {
@@ -212,9 +219,9 @@ void Task_80806F4(void)
sub_80805D0(sprite);
}
void sub_808073C(Sprite_MultiplayerTeleport UNUSED *s) { gCurTask->main = Task_80807A4; }
static void sub_808073C(Sprite_MultiplayerTeleport UNUSED *s) { gCurTask->main = Task_80807A4; }
void Task_8080750(void)
static void Task_8080750(void)
{
Sprite_Notif_RingBonus *sprite = TASK_DATA(gCurTask);
if (--sprite->framesVisible == (u16)-1) {
@@ -237,4 +244,4 @@ static void Task_80807A4(void)
Sprite_MultiplayerTeleport *sprite = TASK_DATA(gCurTask);
if (sub_808055C(sprite) == 0)
sub_80803FC(sprite);
}
}
+1 -1
View File
@@ -81,7 +81,7 @@
#include "game/interactables_2/note_particle.h"
#include "game/interactables_2/105.h"
#include "game/interactables_2/special_ring.h"
#include "game/interactables_2/notification_ring_bonus.h"
#include "game/interactables_2/multiplayer_teleport.h"
#include "game/interactables_2/sky_canyon_init.h"
#include "game/mystery_item_box.h"