More SpStage progress

This commit is contained in:
JaceCear committed 2025-11-15 00:25:13 +01:00
1 parent f452b36a60
commit 2c93264197
2 files changed
+83 -217

No files matched your search

-211
View File
@@ -8,217 +8,6 @@
.if 0
.endif
thumb_func_start sub_802D158
sub_802D158: @ 0x0802D158
push {r4, r5, lr}
sub sp, #4
ldr r0, _0802D188 @ =Task_SpStageInitializeSomethingAndStartMusic
movs r5, #0x80
lsls r5, r5, #5
movs r4, #0
str r4, [sp]
movs r1, #0
adds r2, r5, #0
movs r3, #0
bl TaskCreate
ldr r0, _0802D18C @ =sub_802D680
str r4, [sp]
movs r1, #0
adds r2, r5, #0
movs r3, #0
bl TaskCreate
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0802D188: .4byte Task_SpStageInitializeSomethingAndStartMusic
_0802D18C: .4byte sub_802D680
thumb_func_start sub_802D190
sub_802D190: @ 0x0802D190
push {r4, r5, lr}
sub sp, #4
ldr r0, _0802D1D0 @ =gSelectedCharacter
movs r4, #0
ldrsb r4, [r0, r4]
lsls r4, r4, #0x10
lsrs r5, r4, #0x10
asrs r4, r4, #0x10
adds r0, r4, #0
bl sub_8029E0C
adds r0, r4, #0
bl sub_8029EA8
ldr r0, _0802D1D4 @ =Task_802A560
movs r2, #0x88
lsls r2, r2, #5
movs r1, #0
str r1, [sp]
movs r1, #1
movs r3, #0
bl TaskCreate
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r0, r0, r1
strb r5, [r0]
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0802D1D0: .4byte gSelectedCharacter
_0802D1D4: .4byte Task_802A560
thumb_func_start sub_802D1D8
sub_802D1D8: @ 0x0802D1D8
push {r4, lr}
sub sp, #4
ldr r0, _0802D208 @ =sub_802B3E4
movs r2, #0xa0
lsls r2, r2, #5
movs r4, #0
str r4, [sp]
movs r1, #8
movs r3, #0
bl TaskCreate
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r0, r0, r1
movs r1, #0
strh r4, [r0, #2]
strh r4, [r0, #4]
strb r1, [r0, #6]
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D208: .4byte sub_802B3E4
thumb_func_start Task_SpStageInitializeSomethingAndStartMusic
Task_SpStageInitializeSomethingAndStartMusic: @ 0x0802D20C
push {lr}
ldr r1, _0802D22C @ =gUnknown_030055E0
movs r2, #0
strb r2, [r1]
movs r0, #0xf0
strh r0, [r1, #2]
strh r2, [r1, #4]
ldr r0, _0802D230 @ =gCurTask
ldr r1, [r0]
ldr r0, _0802D234 @ =Task_802D238
str r0, [r1, #8]
movs r0, #0x2a @ MUS_SPECIAL_STAGE
bl m4aSongNumStart
pop {r0}
bx r0
.align 2, 0
_0802D22C: .4byte gUnknown_030055E0
_0802D230: .4byte gCurTask
_0802D234: .4byte Task_802D238
thumb_func_start Task_802D238
Task_802D238: @ 0x0802D238
push {lr}
ldr r2, _0802D264 @ =gUnknown_03005690
ldr r1, _0802D268 @ =gUnknown_030055E0
ldrh r0, [r1, #2]
subs r0, #1
strh r0, [r1, #2]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0802D260
ldr r0, _0802D26C @ =gCurTask
ldr r1, [r0]
ldr r0, _0802D270 @ =Task_80299B0
str r0, [r1, #8]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0xfe
ands r0, r1
strb r0, [r2]
bl sub_802D560
_0802D260:
pop {r0}
bx r0
.align 2, 0
_0802D264: .4byte gUnknown_03005690
_0802D268: .4byte gUnknown_030055E0
_0802D26C: .4byte gCurTask
_0802D270: .4byte Task_80299B0
thumb_func_start sub_802D274
sub_802D274: @ 0x0802D274
ldr r1, _0802D298 @ =gUnknown_030055E0
ldrh r0, [r1, #2]
subs r0, #1
strh r0, [r1, #2]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0802D294
ldr r2, _0802D29C @ =gStageFlags
ldrh r0, [r2]
movs r1, #0x20
orrs r0, r1
strh r0, [r2]
ldr r0, _0802D2A0 @ =gCurTask
ldr r1, [r0]
ldr r0, _0802D2A4 @ =Task_8029AC4
str r0, [r1, #8]
_0802D294:
bx lr
.align 2, 0
_0802D298: .4byte gUnknown_030055E0
_0802D29C: .4byte gStageFlags
_0802D2A0: .4byte gCurTask
_0802D2A4: .4byte Task_8029AC4
thumb_func_start sub_802D2A8
sub_802D2A8: @ 0x0802D2A8
ldr r0, _0802D2B8 @ =gDispCnt
ldrh r1, [r0]
movs r3, #0xf0
lsls r3, r3, #5
adds r2, r3, #0
orrs r1, r2
strh r1, [r0]
bx lr
.align 2, 0
_0802D2B8: .4byte gDispCnt
thumb_func_start Task_802D2BC
Task_802D2BC: @ 0x0802D2BC
push {lr}
ldr r3, _0802D2E0 @ =gUnknown_03005780
ldr r1, _0802D2E4 @ =gBldRegs
movs r2, #0
movs r0, #0
strh r0, [r1]
strh r0, [r1, #4]
strb r2, [r3, #0x12]
movs r0, #8
strb r0, [r3, #0x13]
bl sub_8029CDC
ldr r0, _0802D2E8 @ =gCurTask
ldr r1, [r0]
ldr r0, _0802D2EC @ =sub_8029CDC
str r0, [r1, #8]
pop {r0}
bx r0
.align 2, 0
_0802D2E0: .4byte gUnknown_03005780
_0802D2E4: .4byte gBldRegs
_0802D2E8: .4byte gCurTask
_0802D2EC: .4byte sub_8029CDC
.align 2 , 0
thumb_func_start nullsub_802D2F0
nullsub_802D2F0:
bx lr
.align 2 , 0
thumb_func_start sub_802D2F4
sub_802D2F4: @ 0x0802D2F4
adds r3, r0, #0
+83 -6
View File
@@ -83,6 +83,7 @@ typedef struct Strc_3005780 {
s16 unkE;
s16 unk10;
s8 unk12;
s8 unk13;
} Strc_3005780;
typedef struct SpStage74 {
@@ -146,8 +147,8 @@ void Task_80299B0(void);
void sub_8029A50(void);
void Task_8029AC4(void);
void sub_8029B74(void);
void sub_8029E0C(s16 arg0);
void sub_8029EA8(s32 unused);
void sub_8029E0C(s16 characterId);
void sub_8029EA8(s16 unusedCharacterId);
bool32 sub_8029F30(Strc_03005690 *param0);
bool32 sub_8029FA4(Strc_03005690 *param0);
void sub_802A068(Strc_03005690 *strc5690);
@@ -205,6 +206,9 @@ void TaskDestructor_802D578(struct Task *t);
void sub_802D560(void);
u8 sub_802D58C(s16 param0);
void SpStage_PlayRingSoundeffect(void); // 0x0802D5EC
void Task_SpStageInitializeSomethingAndStartMusic(void);
void Task_802D238(void);
void sub_802D680(void);
void sub_802D6FC(SpStage74 *strc74, Sprite *s);
void sub_802BE0C(Sprite *s, SpriteTransform *tf);
@@ -515,9 +519,9 @@ void sub_8029CDC(void)
DrawBackground(bg5800);
}
void sub_8029E0C(s16 arg0)
void sub_8029E0C(s16 characterId)
{
gUnknown_03005690.unk4C = arg0; // NOTE: arg0 downcast to u8!
gUnknown_03005690.unk4C = characterId; // NOTE: u8 cast!
gUnknown_03005690.unk0 = 0;
gUnknown_03005690.unk4 = 0;
gUnknown_03005690.unk8 = 0;
@@ -547,7 +551,7 @@ void sub_8029E0C(s16 arg0)
gUnknown_03005690.unk32 = 0;
}
void sub_8029EA8(s32 unused)
void sub_8029EA8(s16 unusedCharacterId)
{
Strc_03005690 *strc5690 = &gUnknown_03005690;
Sprite *s = &gUnknown_030055F0.s;
@@ -1500,7 +1504,7 @@ void sub_802B214(void)
tf->y = s->y;
}
void sub_802B3E4()
void Task_802B3E4()
{
SpStage8 *strc8 = TASK_DATA(gCurTask);
Strc_03005690 *strc5690 = &gUnknown_03005690;
@@ -2441,6 +2445,79 @@ NONMATCH("asm/non_matching/game/special_stage/UpdateObjectsAndRender.inc", void
}
END_NONMATCH
void sub_802D158(void)
{
TaskCreate(Task_SpStageInitializeSomethingAndStartMusic, 0, 0x1000, 0, NULL);
TaskCreate(sub_802D680, 0, 0x1000, 0, NULL);
}
void sub_802D190(void)
{
u8 *character;
u16 charId = gSelectedCharacter;
sub_8029E0C(charId);
sub_8029EA8(charId);
character = TASK_DATA(TaskCreate(Task_802A560, sizeof(u8), 0x1100, 0, NULL));
*character = charId;
}
void sub_802D1D8(void)
{
struct Task *t = TaskCreate(Task_802B3E4, sizeof(SpStage8), 0x1400, 0, NULL);
SpStage8 *strc8 = TASK_DATA(t);
strc8->unk2 = 0;
strc8->unk4 = 0;
strc8->unk6 = 0;
}
void Task_SpStageInitializeSomethingAndStartMusic(void)
{
gUnknown_030055E0.unk0 = 0;
gUnknown_030055E0.unk2 = 240;
gUnknown_030055E0.qBlend = Q(0);
gCurTask->main = Task_802D238;
m4aSongNumStart(MUS_SPECIAL_STAGE);
}
void Task_802D238(void)
{
Strc_03005690 *strc5690 = &gUnknown_03005690;
if (--gUnknown_030055E0.unk2 <= 0) {
gCurTask->main = Task_80299B0;
strc5690->unk29 &= ~0x1;
sub_802D560();
}
}
void sub_802D274(void)
{
if (--gUnknown_030055E0.unk2 <= 0) {
gStageFlags |= 0x20;
gCurTask->main = Task_8029AC4;
}
}
void sub_802D2A8(void) { gDispCnt |= DISPCNT_OBJ_ON | ((~DISPCNT_BG0_ON) & DISPCNT_BG_ALL_ON); }
void Task_802D2BC(void)
{
Strc_3005780 *strc5780 = &gUnknown_03005780;
gBldRegs.bldCnt = 0;
gBldRegs.bldY = 0;
strc5780->unk12 = 0;
strc5780->unk13 = 8;
sub_8029CDC();
gCurTask->main = sub_8029CDC;
}
void nullsub_802D2F0(void) { }
#if 0
// Matches!
void sub_802D6FC(SpStage74 *strc74, Sprite *s) {