summaryrefslogtreecommitdiff
path: root/src/roulette.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/roulette.c')
-rw-r--r--src/roulette.c509
1 files changed, 27 insertions, 482 deletions
diff --git a/src/roulette.c b/src/roulette.c
index 85b1c053b..fe6c6dc8e 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -133,7 +133,7 @@ struct StructgUnknown_083F8D90
};
#if DEBUG
-u8 gUnknown_Debug_03005FB8;
+void *gUnknown_Debug_03005FB8;
#endif
#define static
@@ -304,6 +304,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83FA434;
extern void (*gFieldCallback)(void);
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_SE3;
extern const u16 gUnknown_083FA60E[0x2][0x2];
extern const struct SpriteTemplate gSpriteTemplate_83FA50C;
extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[];
@@ -403,309 +404,15 @@ void sub_8115238(void)
RtcCalcLocalTime();
}
-#if DEBUG
-__attribute__((naked))
-void sub_8115384(void)
-{
- asm("\
- push {r4, lr}\n\
- add sp, sp, #0xfffffffc\n\
- ldr r1, ._35 @ gUnknown_Debug_03005FB8\n\
- ldr r0, ._35 + 4 @ 0x2019000\n\
- str r0, [r1]\n\
- ldr r1, ._35 + 8 @ gMain\n\
- ldr r2, ._35 + 12 @ 0x43c\n\
- add r0, r1, r2\n\
- ldrb r0, [r0]\n\
- add r2, r1, #0\n\
- cmp r0, #0x7\n\
- bls ._33 @cond_branch\n\
- b ._64\n\
-._33:\n\
- lsl r0, r0, #0x2\n\
- ldr r1, ._35 + 16 @ \n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
-._36:\n\
- .align 2, 0\n\
-._35:\n\
- .word gUnknown_Debug_03005FB8\n\
- .word 0x2019000\n\
- .word gMain\n\
- .word 0x43c\n\
- .word ._37\n\
-._37:\n\
- .word ._38\n\
- .word ._39\n\
- .word ._40\n\
- .word ._41\n\
- .word ._42\n\
- .word ._43\n\
- .word ._44\n\
- .word ._45\n\
-._38:\n\
- mov r0, #0x0\n\
- bl SetVBlankCallback\n\
- bl ScanlineEffect_Stop\n\
- bl ClearVideoCallbacks\n\
- bl sub_80F9368\n\
- ldr r1, ._47 @ 0x400000c\n\
- ldr r3, ._47 + 4 @ 0x4686\n\
- add r0, r3, #0\n\
- strh r0, [r1]\n\
- sub r1, r1, #0x2\n\
- ldr r2, ._47 + 8 @ 0x4401\n\
- add r0, r2, #0\n\
- strh r0, [r1]\n\
- add r1, r1, #0x46\n\
- mov r3, #0x90\n\
- lsl r3, r3, #0x6\n\
- add r0, r3, #0\n\
- strh r0, [r1]\n\
- add r1, r1, #0x2\n\
- ldr r2, ._47 + 12 @ 0x60a\n\
- add r0, r2, #0\n\
- strh r0, [r1]\n\
- ldr r0, ._47 + 16 @ gUnknown_08E8096C\n\
- mov r1, #0xc0\n\
- lsl r1, r1, #0x13\n\
- bl LZ77UnCompVram\n\
- ldr r0, ._47 + 20 @ gRouletteWheelTiles\n\
- ldr r1, ._47 + 24 @ 0x6004000\n\
- bl LZ77UnCompVram\n\
- ldr r1, ._47 + 28 @ gMain\n\
- ldr r3, ._47 + 32 @ 0x43c\n\
- add r1, r1, r3\n\
- b ._61\n\
-._48:\n\
- .align 2, 0\n\
-._47:\n\
- .word 0x400000c\n\
- .word 0x4686\n\
- .word 0x4401\n\
- .word 0x60a\n\
- .word gUnknown_08E8096C\n\
- .word gRouletteWheelTiles\n\
- .word 0x6004000\n\
- .word gMain\n\
- .word 0x43c\n\
-._39:\n\
- bl ResetPaletteFade\n\
- bl ResetSpriteData\n\
- bl ResetTasks\n\
- ldr r1, ._50 @ gMain\n\
- ldr r0, ._50 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._61\n\
-._51:\n\
- .align 2, 0\n\
-._50:\n\
- .word gMain\n\
- .word 0x43c\n\
-._40:\n\
- ldr r0, ._53 @ gWindowTemplate_81E6C3C\n\
- bl Text_LoadWindowTemplate\n\
- ldr r0, ._53 + 4 @ gWindowTemplate_81E6CE4\n\
- bl InitMenuWindow\n\
- ldr r0, ._53 + 8 @ gUnknown_083F86BC\n\
- mov r2, #0xe0\n\
- lsl r2, r2, #0x1\n\
- mov r1, #0x0\n\
- bl LoadPalette\n\
- ldr r1, ._53 + 12 @ gMain\n\
- ldr r2, ._53 + 16 @ 0x43c\n\
- add r1, r1, r2\n\
- b ._61\n\
-._54:\n\
- .align 2, 0\n\
-._53:\n\
- .word gWindowTemplate_81E6C3C\n\
- .word gWindowTemplate_81E6CE4\n\
- .word gUnknown_083F86BC\n\
- .word gMain\n\
- .word 0x43c\n\
-._41:\n\
- bl sub_8115238\n\
- bl ClearBGTilemapBuffers\n\
- ldr r0, ._56 @ gUnknown_083F88BC\n\
- ldr r1, ._56 + 4 @ 0x2018800\n\
- bl LZ77UnCompWram\n\
- ldr r0, ._56 + 8 @ gUnknown_083F8A60\n\
- ldr r1, ._56 + 12 @ 0x6003000\n\
- bl LZ77UnCompVram\n\
- ldr r1, ._56 + 16 @ gMain\n\
- ldr r3, ._56 + 20 @ 0x43c\n\
- add r1, r1, r3\n\
- b ._61\n\
-._57:\n\
- .align 2, 0\n\
-._56:\n\
- .word gUnknown_083F88BC\n\
- .word 0x2018800\n\
- .word gUnknown_083F8A60\n\
- .word 0x6003000\n\
- .word gMain\n\
- .word 0x43c\n\
-._42:\n\
- mov r0, #0x0\n\
- bl sub_8117838\n\
- bl sub_811857C\n\
- bl sub_81184D8\n\
- bl sub_8117F2C\n\
- bl sub_8117900\n\
- bl sub_8117BBC\n\
- bl sub_8117DF4\n\
- ldr r1, ._59 @ gMain\n\
- ldr r0, ._59 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._61\n\
-._60:\n\
- .align 2, 0\n\
-._59:\n\
- .word gMain\n\
- .word 0x43c\n\
-._43:\n\
- bl AnimateSprites\n\
- bl BuildOamBuffer\n\
- ldr r0, ._62 @ gSaveBlock1\n\
- ldr r1, ._62 + 4 @ 0x494\n\
- add r0, r0, r1\n\
- ldrh r0, [r0]\n\
- bl sub_81180F4\n\
- mov r0, #0x6\n\
- bl sub_81182F8\n\
- mov r0, #0x0\n\
- bl sub_811829C\n\
- mov r0, #0x0\n\
- bl sub_8117158\n\
- mov r0, #0x0\n\
- mov r1, #0xe\n\
- mov r2, #0x1d\n\
- mov r3, #0x13\n\
- bl Menu_DrawStdWindowFrame\n\
- ldr r0, ._62 + 8 @ gUnknown_081C4157\n\
- mov r1, #0x1\n\
- mov r2, #0xf\n\
- bl Menu_PrintText\n\
- ldr r1, ._62 + 12 @ gSpriteCoordOffsetX\n\
- mov r2, #0x3c\n\
- neg r2, r2\n\
- add r0, r2, #0\n\
- strh r0, [r1]\n\
- ldr r1, ._62 + 16 @ gSpriteCoordOffsetY\n\
- mov r0, #0x0\n\
- strh r0, [r1]\n\
- ldr r1, ._62 + 20 @ gMain\n\
- ldr r3, ._62 + 24 @ 0x43c\n\
- add r1, r1, r3\n\
- b ._61\n\
-._63:\n\
- .align 2, 0\n\
-._62:\n\
- .word gSaveBlock1\n\
- .word 0x494\n\
- .word gUnknown_081C4157\n\
- .word gSpriteCoordOffsetX\n\
- .word gSpriteCoordOffsetY\n\
- .word gMain\n\
- .word 0x43c\n\
-._44:\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0x13\n\
- ldr r3, ._65 @ 0x1741\n\
- add r0, r3, #0\n\
- strh r0, [r1]\n\
- ldr r0, ._65 + 4 @ 0x43c\n\
- add r1, r2, r0\n\
-._61:\n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- b ._64\n\
-._66:\n\
- .align 2, 0\n\
-._65:\n\
- .word 0x1741\n\
- .word 0x43c\n\
-._45:\n\
- ldr r3, ._67 @ 0x4000208\n\
- ldrh r2, [r3]\n\
- mov r0, #0x0\n\
- strh r0, [r3]\n\
- ldr r4, ._67 + 4 @ 0x4000200\n\
- ldrh r0, [r4]\n\
- mov r1, #0x1\n\
- orr r0, r0, r1\n\
- strh r0, [r4]\n\
- strh r2, [r3]\n\
- ldr r2, ._67 + 8 @ 0x4000004\n\
- ldrh r0, [r2]\n\
- mov r1, #0x8\n\
- orr r0, r0, r1\n\
- strh r0, [r2]\n\
- ldr r0, ._67 + 12 @ sub_8115124\n\
- bl SetVBlankCallback\n\
- mov r0, #0x1\n\
- str r0, [sp]\n\
- mov r0, #0xff\n\
- mov r1, #0x0\n\
- mov r2, #0x10\n\
- mov r3, #0x0\n\
- bl BeginHardwarePaletteFade\n\
- ldr r0, ._67 + 16 @ sub_81156BC\n\
- mov r1, #0x0\n\
- bl CreateTask\n\
- ldr r4, ._67 + 20 @ 0x2019000\n\
- add r1, r4, #0\n\
- add r1, r1, #0xa4\n\
- strb r0, [r1]\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- ldr r2, ._67 + 24 @ gTasks\n\
- lsl r1, r0, #0x2\n\
- add r1, r1, r0\n\
- lsl r1, r1, #0x3\n\
- add r1, r1, r2\n\
- mov r0, #0x6\n\
- strh r0, [r1, #0x14]\n\
- ldr r0, ._67 + 28 @ gSaveBlock1\n\
- ldr r2, ._67 + 32 @ 0x494\n\
- add r0, r0, r2\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, #0x22]\n\
- ldr r0, ._67 + 36 @ sub_8115634\n\
- mov r1, #0x1\n\
- bl CreateTask\n\
- add r4, r4, #0xa5\n\
- strb r0, [r4]\n\
- ldr r0, ._67 + 40 @ sub_81150FC\n\
- bl SetMainCallback2\n\
-._64:\n\
- add sp, sp, #0x4\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
-._68:\n\
- .align 2, 0\n\
-._67:\n\
- .word 0x4000208\n\
- .word 0x4000200\n\
- .word 0x4000004\n\
- .word sub_8115124+1\n\
- .word sub_81156BC+1\n\
- .word 0x2019000\n\
- .word gTasks\n\
- .word gSaveBlock1\n\
- .word 0x494\n\
- .word sub_8115634+1\n\
- .word sub_81150FC+1");
-}
-#else
void sub_8115384(void)
{
u32 temp_IME;
u8 taskid;
+
+#if DEBUG
+ gUnknown_Debug_03005FB8 = eRoulette;
+#endif
+
switch (gMain.state)
{
case 0x0:
@@ -783,125 +490,13 @@ void sub_8115384(void)
break;
}
}
-#endif
-#if DEBUG
-__attribute__((naked))
-void sub_8115634(u8 unused)
-{
- asm("\
- push {r4, r5, r6, lr}\n\
- ldr r0, ._75 @ 0x2019000\n\
- add r3, r0, #0\n\
- add r3, r3, #0x21\n\
- ldrb r1, [r3]\n\
- add r2, r1, #1\n\
- strb r2, [r3]\n\
- add r2, r0, #0\n\
- add r2, r2, #0x23\n\
- lsl r1, r1, #0x18\n\
- lsr r1, r1, #0x18\n\
- add r6, r0, #0\n\
- ldrb r2, [r2]\n\
- cmp r1, r2\n\
- bne ._70 @cond_branch\n\
- mov r0, #0x0\n\
- strb r0, [r3]\n\
- add r2, r6, #0\n\
- add r2, r2, #0x22\n\
- ldrb r1, [r2]\n\
- ldrh r0, [r6, #0x24]\n\
- sub r0, r0, r1\n\
- strh r0, [r6, #0x24]\n\
- lsl r0, r0, #0x10\n\
- cmp r0, #0\n\
- bge ._70 @cond_branch\n\
- ldrb r1, [r2]\n\
- mov r2, #0xb4\n\
- lsl r2, r2, #0x1\n\
- add r0, r2, #0\n\
- sub r0, r0, r1\n\
- strh r0, [r6, #0x24]\n\
-._70:\n\
- add r4, r6, #0\n\
- ldrh r0, [r4, #0x24]\n\
- bl Sin2\n\
- lsl r0, r0, #0x10\n\
- lsr r5, r0, #0x10\n\
- ldrh r0, [r4, #0x24]\n\
- bl Cos2\n\
- lsl r0, r0, #0x10\n\
- lsr r1, r0, #0x10\n\
- lsl r0, r5, #0x10\n\
- asr r0, r0, #0x10\n\
- cmp r0, #0\n\
- bge ._71 @cond_branch\n\
- add r0, r0, #0xf\n\
-._71:\n\
- lsl r0, r0, #0xc\n\
- lsr r5, r0, #0x10\n\
- lsl r0, r1, #0x10\n\
- asr r0, r0, #0x10\n\
- cmp r0, #0\n\
- bge ._72 @cond_branch\n\
- add r0, r0, #0xf\n\
-._72:\n\
- asr r0, r0, #0x4\n\
- strh r0, [r6, #0x32]\n\
- strh r0, [r6, #0x2c]\n\
- strh r5, [r6, #0x2e]\n\
- lsl r0, r5, #0x10\n\
- asr r0, r0, #0x10\n\
- neg r0, r0\n\
- strh r0, [r6, #0x30]\n\
- ldr r0, ._75 + 4 @ unk_203955C\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._74 @cond_branch\n\
- ldr r0, ._75 + 8 @ gMain\n\
- ldrh r1, [r0, #0x2e]\n\
- mov r0, #0x8\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._74 @cond_branch\n\
- ldr r2, ._75 + 12 @ gTasks\n\
- add r0, r6, #0\n\
- add r0, r0, #0xa4\n\
- ldrb r1, [r0]\n\
- lsl r0, r1, #0x2\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x3\n\
- add r0, r0, r2\n\
- ldr r1, ._75 + 16 @ sub_81157AC\n\
- str r1, [r0]\n\
- ldr r0, ._75 + 20 @ gMPlay_SE1\n\
- bl m4aMPlayStop\n\
- ldr r0, ._75 + 24 @ gMPlay_SE2\n\
- bl m4aMPlayStop\n\
- ldr r0, ._75 + 28 @ gMPlay_SE3\n\
- bl m4aMPlayStop\n\
-._74:\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._76:\n\
- .align 2, 0\n\
-._75:\n\
- .word 0x2019000\n\
- .word unk_203955C\n\
- .word gMain\n\
- .word gTasks\n\
- .word sub_81157AC+1\n\
- .word gMPlay_SE1\n\
- .word gMPlay_SE2\n\
- .word gMPlay_SE3");
-}
-#else
void sub_8115634(u8 unused)
{
s16 sin;
s16 cos;
s32 cos32;
+
if (eRoulette->var21++ == eRoulette->var23)
{
eRoulette->var21 = 0x0;
@@ -916,8 +511,16 @@ void sub_8115634(u8 unused)
eRoulette->var2C.a = cos32;
eRoulette->var2C.b = sin;
eRoulette->var2C.c = -sin;
-}
+#if DEBUG
+ if (unk_203955C[0] != 0 && (gMain.newKeys & 8))
+ {
+ gTasks[eRoulette->varA4].func = sub_81157AC;
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ m4aMPlayStop(&gMPlay_SE3);
+ }
#endif
+}
void sub_81156BC(u8 taskid)
{
@@ -984,6 +587,7 @@ void sub_81157D0(u8 r0)
temp1 = ((r0 - 1) / 5 * 3 + 0x7);
sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 0x3, 0x3);
+ break;
}
}
@@ -1008,6 +612,7 @@ void sub_811597C(u8 taskid)
void sub_81159BC(u8 taskid)
{
s16 i;
+
if (eRoulette->var08 & 0x20)
{
for (i = 0xB; (i < 0xE); i++)
@@ -1598,73 +1203,11 @@ void sub_8116AB0(u8 taskid)
gTasks[taskid].func = &sub_8116B40;
}
-#if DEBUG
-__attribute__((naked))
-void sub_8116B40(u8 taskid) // end roulette ?
-{
- asm("\
- push {r4, r5, r6, lr}\n\
- lsl r0, r0, #0x18\n\
- lsr r6, r0, #0x18\n\
- bl UpdatePaletteFade\n\
- lsl r0, r0, #0x18\n\
- lsr r5, r0, #0x18\n\
- cmp r5, #0\n\
- bne ._380 @cond_branch\n\
- mov r0, #0x0\n\
- bl SetVBlankCallback\n\
- ldr r0, ._381 @ 0x2019000\n\
- mov r2, #0xbe\n\
- lsl r2, r2, #0x1\n\
- mov r1, #0x0\n\
- bl memset\n\
- ldr r1, ._381 + 4 @ gSpriteCoordOffsetX\n\
- ldr r0, ._381 + 8 @ gSpriteCoordOffsetY\n\
- mov r4, #0x0\n\
- strh r5, [r0]\n\
- strh r5, [r1]\n\
- bl sub_80F9368\n\
- bl FreeAllSpritePalettes\n\
- bl ResetPaletteFade\n\
- bl ResetSpriteData\n\
- bl ClearBGTilemapBuffers\n\
- ldr r0, ._381 + 12 @ 0x4000050\n\
- strh r5, [r0]\n\
- add r0, r0, #0x2\n\
- strh r5, [r0]\n\
- add r0, r0, #0x2\n\
- strh r5, [r0]\n\
- ldr r1, ._381 + 16 @ gFieldCallback\n\
- ldr r0, ._381 + 20 @ sub_8080990\n\
- str r0, [r1]\n\
- ldr r0, ._381 + 24 @ c2_exit_to_overworld_2_switch\n\
- bl SetMainCallback2\n\
- add r0, r6, #0\n\
- bl DestroyTask\n\
- ldr r0, ._381 + 28 @ unk_203955C\n\
- strb r4, [r0]\n\
-._380:\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._382:\n\
- .align 2, 0\n\
-._381:\n\
- .word 0x2019000\n\
- .word gSpriteCoordOffsetX\n\
- .word gSpriteCoordOffsetY\n\
- .word 0x4000050\n\
- .word gFieldCallback\n\
- .word sub_8080990+1\n\
- .word c2_exit_to_overworld_2_switch+1\n\
- .word unk_203955C");
-}
-#else
-void sub_8116B40(u8 taskid) // end roulette ?
+void sub_8116B40(u8 taskId) // end roulette ?
{
if (UpdatePaletteFade() == 0)
{
- SetVBlankCallback(0x0);
+ SetVBlankCallback(NULL);
memset(eRoulette, 0x0, 0x17C);
gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0;
sub_80F9368();
@@ -1677,10 +1220,12 @@ void sub_8116B40(u8 taskid) // end roulette ?
REG_BLDY = 0x0;
gFieldCallback = &sub_8080990;
SetMainCallback2(&c2_exit_to_overworld_2_switch);
- DestroyTask(taskid);
+ DestroyTask(taskId);
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
}
}
-#endif
void sub_8116BC0(u8 taskid)
{
@@ -2412,8 +1957,8 @@ void PlayRoulette(void)
unk_2039560 = 0;
if (unk_203955C[0] != 0)
{
- taskid = CreateTask(debug_sub_812CFE8, 0);
- return;
+ CreateTask(debug_sub_812CFE8, 0);
+ return;
}
#endif
taskid = CreateTask(Task_Roulette_0, 0);