summaryrefslogtreecommitdiff
path: root/src/roulette.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/roulette.c')
-rw-r--r--src/roulette.c2687
1 files changed, 670 insertions, 2017 deletions
diff --git a/src/roulette.c b/src/roulette.c
index 41e8ef77f..5e7517d79 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "random.h"
#include "ewram.h"
#include "field_fadetransition.h"
#include "constants/game_stat.h"
@@ -131,6 +132,12 @@ struct StructgUnknown_083F8D90
u32 var04;
};
+#if DEBUG
+void *gUnknown_Debug_03005FB8;
+#endif
+
+#define static
+
static void sub_81150FC(void);
static void sub_8115124(void);
static void sub_8115238(void);
@@ -297,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[];
@@ -308,7 +316,10 @@ extern const u16 gUnknown_083FA632[];
extern const s8 gUnknown_083FA64A[0x2];
extern const s8 gUnknown_083FA64C[0x8][0x2];
-
+#if DEBUG
+EWRAM_DATA u8 unk_203955C[4] = { 0 };
+EWRAM_DATA u8 unk_2039560 = 0;
+#endif
void sub_81150FC(void)
@@ -348,22 +359,20 @@ void sub_8115124(void)
REG_BG0CNT = 0x1F08;
DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340);
eRoulette->var28 = 0x0;
- break;
case 0x0:
+ break;
}
}
-#ifdef NONMATCHING
void sub_8115238(void)
{
u8 i;
u32 temp;
- struct PlttData t;
- struct PlttData *unfaded;
- struct PlttData *faded;
struct StructgUnknown_083F8DF4 *s0;
- struct PlttData arr[0x3]; // the third is never used ?
- memcpy(&arr, &gUnknown_083F8EC4, 0x6);
+ u16 arr[0x3]; // the third is never used ?
+
+ memcpy(arr, &gUnknown_083F8EC4, 0x6);
+ // u16 arr[] = {RGB(24, 4, 10), RGB(10, 19, 6), RGB(24, 4, 10)};
memset(eRoulette, 0x0, 0x17C);
eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1);
if (gSpecialVar_0x8004 & 0x80)
@@ -371,25 +380,12 @@ void sub_8115238(void)
s0 = &gUnknown_083F8DF4[0];
eRoulette->var22 = s0[eRoulette->var04_0].var03;
eRoulette->var23 = s0[eRoulette->var04_0].var04;
- temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2];
- eRoulette->var19 = temp;
+ eRoulette->var19 = temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2];
eRoulette->var1A_4 = 0x1;
if (temp == 0x1)
- {
- unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
- faded = (struct PlttData *)&gPlttBufferFaded[0];
- t = arr[0];
- }
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[0];
else
- {
- unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
- faded = (struct PlttData *)&gPlttBufferFaded[0];
- t = arr[1];
- }
- faded[0x51] = t;
- faded[0x0] = faded[0x51];
- unfaded[0x51] = t;
- unfaded[0x0] = t;
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[1];
sub_8124918((&eRoulette->varB8));
for (i = 0; i < 0xD; i++)
sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]);
@@ -397,183 +393,26 @@ void sub_8115238(void)
{
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
{
- case SPECIES_TAILLOW:
- eRoulette->var02 |= 0x2;
- break;
case SPECIES_SHROOMISH:
- eRoulette->var02 |= 0x1;
- break;
+ eRoulette->var02 |= 0x1;
+ break;
+ case SPECIES_TAILLOW:
+ eRoulette->var02 |= 0x2;
+ break;
}
}
RtcCalcLocalTime();
}
-#else
-__attribute__((naked))
-void sub_8115238(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x8\n\
- ldr r1, _081152C0 @ =gUnknown_083F8EC4\n\
- mov r0, sp\n\
- movs r2, 0x6\n\
- bl memcpy\n\
- ldr r5, _081152C4 @ =0x02019000\n\
- movs r2, 0xBE\n\
- lsls r2, 1\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl memset\n\
- ldr r0, _081152C8 @ =gSpecialVar_0x8004\n\
- ldrh r2, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r2\n\
- ldrb r1, [r5, 0x4]\n\
- movs r3, 0x4\n\
- negs r3, r3\n\
- ands r3, r1\n\
- orrs r3, r0\n\
- strb r3, [r5, 0x4]\n\
- movs r0, 0x80\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08115276\n\
- movs r0, 0x80\n\
- orrs r3, r0\n\
- strb r3, [r5, 0x4]\n\
- _08115276:\n\
- ldr r3, _081152CC @ =gUnknown_083F8DF4\n\
- ldrb r2, [r5, 0x4]\n\
- lsls r1, r2, 30\n\
- lsrs r0, r1, 25\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x3]\n\
- adds r4, r5, 0\n\
- adds r4, 0x22\n\
- strb r0, [r4]\n\
- lsrs r0, r1, 25\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x4]\n\
- adds r3, r5, 0\n\
- adds r3, 0x23\n\
- strb r0, [r3]\n\
- ldr r0, _081152D0 @ =gUnknown_083F8DF0\n\
- lsrs r1, 30\n\
- lsls r2, 24\n\
- lsrs r2, 31\n\
- lsls r2, 1\n\
- adds r1, r2\n\
- adds r1, r0\n\
- ldrb r2, [r1]\n\
- strb r2, [r5, 0x19]\n\
- ldrb r1, [r5, 0x1A]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- movs r1, 0x10\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1A]\n\
- cmp r2, 0x1\n\
- bne _081152DC\n\
- ldr r4, _081152D4 @ =gPlttBufferUnfaded\n\
- ldr r3, _081152D8 @ =gPlttBufferFaded\n\
- mov r0, sp\n\
- ldrh r2, [r0]\n\
- b _081152E4\n\
- .align 2, 0\n\
- _081152C0: .4byte gUnknown_083F8EC4\n\
- _081152C4: .4byte 0x02019000\n\
- _081152C8: .4byte gSpecialVar_0x8004\n\
- _081152CC: .4byte gUnknown_083F8DF4\n\
- _081152D0: .4byte gUnknown_083F8DF0\n\
- _081152D4: .4byte gPlttBufferUnfaded\n\
- _081152D8: .4byte gPlttBufferFaded\n\
- _081152DC:\n\
- ldr r4, _08115348 @ =gPlttBufferUnfaded\n\
- ldr r3, _0811534C @ =gPlttBufferFaded\n\
- mov r0, sp\n\
- ldrh r2, [r0, 0x2]\n\
- _081152E4:\n\
- adds r0, r3, 0\n\
- adds r0, 0xA2\n\
- strh r2, [r0]\n\
- ldr r1, _08115350 @ =0x0000ffff\n\
- adds r0, r1, 0\n\
- ands r0, r2\n\
- strh r0, [r3]\n\
- ands r0, r1\n\
- adds r2, r4, 0\n\
- adds r2, 0xA2\n\
- strh r0, [r2]\n\
- ands r0, r1\n\
- strh r0, [r4]\n\
- ldr r0, _08115354 @ =0x020190b8\n\
- bl sub_8124918\n\
- movs r4, 0\n\
- ldr r5, _08115358 @ =gUnknown_083F8E34\n\
- _08115308:\n\
- lsls r2, r4, 3\n\
- adds r2, r5\n\
- ldr r0, _08115354 @ =0x020190b8\n\
- adds r1, r4, 0\n\
- bl sub_812492C\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0xC\n\
- bls _08115308\n\
- movs r4, 0\n\
- ldr r5, _0811535C @ =0x02019000\n\
- _08115322:\n\
- movs r0, 0x64\n\
- muls r0, r4\n\
- ldr r1, _08115360 @ =gPlayerParty\n\
- adds r0, r1\n\
- movs r1, 0x41\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- movs r0, 0x98\n\
- lsls r0, 1\n\
- cmp r1, r0\n\
- beq _08115364\n\
- adds r0, 0x2\n\
- cmp r1, r0\n\
- bne _0811536C\n\
- ldrb r0, [r5, 0x2]\n\
- movs r1, 0x1\n\
- b _08115368\n\
- .align 2, 0\n\
- _08115348: .4byte gPlttBufferUnfaded\n\
- _0811534C: .4byte gPlttBufferFaded\n\
- _08115350: .4byte 0x0000ffff\n\
- _08115354: .4byte 0x020190b8\n\
- _08115358: .4byte gUnknown_083F8E34\n\
- _0811535C: .4byte 0x02019000\n\
- _08115360: .4byte gPlayerParty\n\
- _08115364:\n\
- ldrb r0, [r5, 0x2]\n\
- movs r1, 0x2\n\
- _08115368:\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x2]\n\
- _0811536C:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x5\n\
- bls _08115322\n\
- bl RtcCalcLocalTime\n\
- add sp, 0x8\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
void sub_8115384(void)
{
u32 temp_IME;
u8 taskid;
+
+#if DEBUG
+ gUnknown_Debug_03005FB8 = eRoulette;
+#endif
+
switch (gMain.state)
{
case 0x0:
@@ -657,6 +496,7 @@ void sub_8115634(u8 unused)
s16 sin;
s16 cos;
s32 cos32;
+
if (eRoulette->var21++ == eRoulette->var23)
{
eRoulette->var21 = 0x0;
@@ -671,6 +511,15 @@ 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)
@@ -738,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;
}
}
@@ -762,7 +612,8 @@ void sub_811597C(u8 taskid)
void sub_81159BC(u8 taskid)
{
s16 i;
- if(eRoulette->var08 & 0x20)
+
+ if (eRoulette->var08 & 0x20)
{
for (i = 0xB; (i < 0xE); i++)
if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
@@ -790,6 +641,7 @@ u8 sub_8115A94(s16 *r0, u8 r1)
s8 arr[0x4];
s8 t;
memcpy(&arr, gUnknown_083F8ECA, 0x4);
+ // char arr[] = {-5, 5, -1, 1};
t = (u8)*r0;
switch (r1)
{
@@ -834,9 +686,9 @@ void sub_8115B58(u8 r0)
gTasks[r0].data[0x1] = z;
PlaySE(SE_SELECT);
sub_8124D3C((&eRoulette->varB8), 0xFFFF);
- (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xF].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xE].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xD].var00_7 = 0x0;
sub_8116EF8(gTasks[r0].data[0x4]);
for (i = 0; i < 0x4; i++)
{
@@ -1032,24 +884,23 @@ u8 sub_8115F58(u16 r0, u16 r1)
}
}
-#ifdef NONMATCHING
void sub_8116100(u8 taskid)
{
u8 randf;
s8 randfinal;
s8 r5;
- u16 g;
+ u16 g = 0;
u16 rand;
u16 randmod;
u16 angles[0x4]; // angles in 90 degree steps
- u8 zero = 0x0;
memcpy(angles, &gUnknown_083F8ECE, 0x8);
+ // u16 angles[] = {0, 180, 90, 270};
rand = Random();
randmod = rand % 0x64;
eRoulette->var7C = gTasks[taskid].data[0x6];
- eRoulette->var7F = zero;
- eRoulette->var7E = zero;
- eRoulette->var7D = zero;
+ eRoulette->var7F = g;
+ eRoulette->var7E = g;
+ eRoulette->var7D = g;
randf = sub_8115F58(gTasks[taskid].data[0x8], rand);
randfinal = (rand % randf) - (randf / 2);
if (gLocalTime.hours < 0xD)
@@ -1060,263 +911,22 @@ void sub_8116100(u8 taskid)
r5 *= 2;
else
r5 = (1 - r5) * 2;
- g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A;
- eRoulette->var80 = (g + randfinal);
+ eRoulette->var80 = g = gUnknown_083F8DF4[eRoulette->var04_0].var1A + randfinal;
//
- g = ((float)(u16)(g + randfinal)) / 5.0f;
+ g = S16TOPOSFLOAT(g) / 5.0f;
eRoulette->var82 = g * 3;
eRoulette->var84 = g;
eRoulette->var86 = g;
//
- eRoulette->var88 = (float)(angles[(rand & 0x1) + r5]);
- eRoulette->var8C = (float)((&gUnknown_083F8DF4[eRoulette->var04_0])->var18);
- eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / (float)(u16)(g * 3);
+ eRoulette->var88 = S16TOPOSFLOAT(angles[(rand & 0x1) + r5]);
+ eRoulette->var8C = S16TOPOSFLOAT(gUnknown_083F8DF4[eRoulette->var04_0].var18);
+ eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / S16TOPOSFLOAT(g * 3);
eRoulette->var94 = 68.0f;
eRoulette->var9C = 0.0f;
- eRoulette->var98 = -(8.0f / (float)(u16)(g * 3));
+ eRoulette->var98 = -(8.0f / S16TOPOSFLOAT(g * 3));
eRoulette->varA0 = 36.0f;
- gTasks[taskid].func = &sub_8116308;
-}
-#else
-__attribute__((naked))
-void sub_8116100(u8 taskid)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r10\n\
-mov r6, r9\n\
-mov r5, r8\n\
-push {r5-r7}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r9, r0\n\
-movs r4, 0\n\
-ldr r1, _08116188 @ =gUnknown_083F8ECE\n\
-mov r0, sp\n\
-movs r2, 0x8\n\
-bl memcpy\n\
-bl Random\n\
-lsls r0, 16\n\
-lsrs r7, r0, 16\n\
-adds r0, r7, 0\n\
-movs r1, 0x64\n\
-bl __umodsi3\n\
-lsls r0, 16\n\
-lsrs r6, r0, 16\n\
-ldr r3, _0811618C @ =0x02019000\n\
-ldr r1, _08116190 @ =gTasks\n\
-mov r2, r9\n\
-lsls r0, r2, 2\n\
-add r0, r9\n\
-lsls r0, 3\n\
-adds r0, r1\n\
-ldrh r2, [r0, 0x14]\n\
-adds r1, r3, 0\n\
-adds r1, 0x7C\n\
-strb r2, [r1]\n\
-adds r1, 0x3\n\
-strb r4, [r1]\n\
-subs r1, 0x1\n\
-strb r4, [r1]\n\
-subs r1, 0x1\n\
-strb r4, [r1]\n\
-ldrh r0, [r0, 0x18]\n\
-adds r1, r7, 0\n\
-bl sub_8115F58\n\
-adds r4, r0, 0\n\
-lsls r4, 24\n\
-lsrs r1, r4, 24\n\
-adds r0, r7, 0\n\
-bl __modsi3\n\
-lsrs r4, 25\n\
-subs r0, r4\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08116194 @ =gLocalTime\n\
-ldrb r0, [r0, 0x2]\n\
-lsls r0, 24\n\
-asrs r0, 24\n\
-movs r5, 0x1\n\
-cmp r0, 0xC\n\
-bgt _08116180\n\
-movs r5, 0\n\
-_08116180:\n\
-cmp r6, 0x4F\n\
-bhi _08116198\n\
-lsls r0, r5, 25\n\
-b _081161A2\n\
-.align 2, 0\n\
-_08116188: .4byte gUnknown_083F8ECE\n\
-_0811618C: .4byte 0x02019000\n\
-_08116190: .4byte gTasks\n\
-_08116194: .4byte gLocalTime\n\
-_08116198:\n\
-lsls r1, r5, 24\n\
-asrs r1, 24\n\
-movs r0, 0x1\n\
-subs r0, r1\n\
-lsls r0, 25\n\
-_081161A2:\n\
-lsrs r5, r0, 24\n\
-ldr r6, _081162D8 @ =0x02019000\n\
-ldrb r0, [r6, 0x4]\n\
-lsls r0, 30\n\
-mov r10, r0\n\
-lsrs r0, 25\n\
-ldr r1, _081162DC @ =gUnknown_083F8DF4\n\
-adds r0, r1\n\
-lsls r4, 24\n\
-asrs r4, 24\n\
-ldrh r0, [r0, 0x1A]\n\
-adds r4, r0\n\
-adds r0, r6, 0\n\
-adds r0, 0x80\n\
-strh r4, [r0]\n\
-lsls r4, 16\n\
-asrs r4, 16\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-cmp r4, 0\n\
-bge _081161D4\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-_081161D4:\n\
-ldr r1, _081162E4 @ =0x40a00000\n\
-bl __divsf3\n\
-bl __fixunssfsi\n\
-lsls r0, 16\n\
-lsrs r4, r0, 16\n\
-lsls r0, r4, 1\n\
-adds r0, r4\n\
-mov r8, r0\n\
-adds r0, r6, 0\n\
-adds r0, 0x82\n\
-mov r2, r8\n\
-strh r2, [r0]\n\
-adds r0, 0x2\n\
-strh r4, [r0]\n\
-adds r0, 0x2\n\
-strh r4, [r0]\n\
-movs r0, 0x1\n\
-ands r0, r7\n\
-lsls r1, r5, 24\n\
-asrs r1, 24\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-add r0, sp\n\
-movs r1, 0\n\
-ldrsh r4, [r0, r1]\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-cmp r4, 0\n\
-bge _0811621A\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-_0811621A:\n\
-ldr r2, _081162E8 @ =0x02019088\n\
-str r0, [r2]\n\
-adds r7, r6, 0\n\
-adds r7, 0x8C\n\
-mov r1, r10\n\
-lsrs r0, r1, 25\n\
-ldr r2, _081162DC @ =gUnknown_083F8DF4\n\
-adds r0, r2\n\
-movs r1, 0x18\n\
-ldrsh r4, [r0, r1]\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r5, r0, 0\n\
-cmp r4, 0\n\
-bge _08116242\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r5, r0, 0\n\
-_08116242:\n\
-str r5, [r7]\n\
-adds r7, r6, 0\n\
-adds r7, 0x90\n\
-ldr r1, _081162EC @ =0x3f000000\n\
-adds r0, r5, 0\n\
-bl __mulsf3\n\
-adds r1, r5, 0\n\
-bl __subsf3\n\
-adds r5, r0, 0\n\
-mov r2, r8\n\
-lsls r0, r2, 16\n\
-asrs r4, r0, 16\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r2, r0, 0\n\
-cmp r4, 0\n\
-bge _08116272\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r2, r0, 0\n\
-_08116272:\n\
-adds r0, r5, 0\n\
-adds r1, r2, 0\n\
-bl __divsf3\n\
-str r0, [r7]\n\
-adds r1, r6, 0\n\
-adds r1, 0x94\n\
-ldr r0, _081162F0 @ =0x42880000\n\
-str r0, [r1]\n\
-adds r1, 0x8\n\
-ldr r0, _081162F4 @ =0x00000000\n\
-str r0, [r1]\n\
-adds r5, r6, 0\n\
-adds r5, 0x98\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r2, r0, 0\n\
-cmp r4, 0\n\
-bge _081162A2\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r2, r0, 0\n\
-_081162A2:\n\
-ldr r0, _081162F8 @ =0x41000000\n\
-adds r1, r2, 0\n\
-bl __divsf3\n\
-bl __negsf2\n\
-str r0, [r5]\n\
-adds r1, r6, 0\n\
-adds r1, 0xA0\n\
-ldr r0, _081162FC @ =0x42100000\n\
-str r0, [r1]\n\
-ldr r1, _08116300 @ =gTasks\n\
-mov r2, r9\n\
-lsls r0, r2, 2\n\
-add r0, r9\n\
-lsls r0, 3\n\
-adds r0, r1\n\
-ldr r1, _08116304 @ =sub_8116308\n\
-str r1, [r0]\n\
-add sp, 0x8\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_081162D8: .4byte 0x02019000\n\
-_081162DC: .4byte gUnknown_083F8DF4\n\
-_081162E0: .4byte 0x47800000\n\
-_081162E4: .4byte 0x40a00000\n\
-_081162E8: .4byte 0x02019088\n\
-_081162EC: .4byte 0x3f000000\n\
-_081162F0: .4byte 0x42880000\n\
-_081162F4: .4byte 0x00000000\n\
-_081162F8: .4byte 0x41000000\n\
-_081162FC: .4byte 0x42100000\n\
-_08116300: .4byte gTasks\n\
-_08116304: .4byte sub_8116308\n\
-.syntax divided\n");
+ gTasks[taskid].func = sub_8116308;
}
-#endif
void sub_8116308(u8 taskid)
{
@@ -1324,7 +934,7 @@ void sub_8116308(u8 taskid)
eRoulette->var03_7 = 1;
index = eRoulette->var3C[eRoulette->var7C];
eRoulette->var38 = &gSprites[index];
- (&gSprites[index])->callback = &sub_81191F4;
+ eRoulette->var38->callback = sub_81191F4;
gTasks[taskid].data[0x6]++;
gTasks[taskid].data[0x8]++;
sub_81182F8(0x6 - gTasks[taskid].data[0x6]);
@@ -1375,9 +985,9 @@ void sub_8116474(u8 taskid)
{
if (gTasks[taskid].data[0x1]-- > 0x0)
{
- if(gTasks[taskid].data[0x1] > 0x2)
+ if (gTasks[taskid].data[0x1] > 0x2)
gSpriteCoordOffsetX -= 0x2;
- if((eRoulette->var26 -= 0x4) == 0x68)
+ if ((eRoulette->var26 -= 0x4) == 0x68)
gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC;
}
else
@@ -1395,7 +1005,7 @@ void sub_8116514(u8 taskid)
{
if (gTasks[taskid].data[0x1]-- > 0x1)
{
- switch(gTasks[taskid].data[0x1] % 0x10)
+ switch (gTasks[taskid].data[0x1] % 0x10)
{
case 0x8:
sub_8117AA8(0x0, 0xFF);
@@ -1415,14 +1025,14 @@ void sub_8116514(u8 taskid)
void sub_811659C(u8 taskid)
{
- switch(gTasks[taskid].data[0x5])
+ switch (gTasks[taskid].data[0x5])
{
case 0x1:
case 0x2:
if (IsFanfareTaskInactive())
{
u32 wins = GetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS);
- if(wins < ++gTasks[taskid].data[0xB])
+ if (wins < ++gTasks[taskid].data[0xB])
SetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS, gTasks[taskid].data[0xB]);
sub_8116C34(taskid, &sub_811677C, 0xFFFF, 0x3);
}
@@ -1439,7 +1049,7 @@ void sub_811659C(u8 taskid)
void sub_8116638(u8 taskid)
{
- switch(gTasks[taskid].data[0x5])
+ switch (gTasks[taskid].data[0x5])
{
case 0x1:
case 0x2:
@@ -1469,7 +1079,7 @@ void sub_8116638(u8 taskid)
void sub_81166E8(u8 taskid)
{
s32 r0 = gTasks[taskid].data[0x7];
- switch(r0)
+ switch (r0)
{
case 0x0:
gTasks[taskid].data[0xD]++;
@@ -1510,9 +1120,9 @@ void sub_811677C(u8 taskid)
void sub_81167F4(u8 taskid)
{
sub_8124D3C((&eRoulette->varB8), 0xFFFF);
- (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xF].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xE].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xD].var00_7 = 0x0;
gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE;
gTasks[taskid].func = &sub_8116880;
}
@@ -1593,11 +1203,11 @@ void sub_8116AB0(u8 taskid)
gTasks[taskid].func = &sub_8116B40;
}
-void sub_8116B40(u8 taskid) // end oulette ?
+void sub_8116B40(u8 taskId) // end roulette ?
{
if (UpdatePaletteFade() == 0)
{
- SetVBlankCallback(0x0);
+ SetVBlankCallback(NULL);
memset(eRoulette, 0x0, 0x17C);
gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0;
sub_80F9368();
@@ -1610,13 +1220,16 @@ void sub_8116B40(u8 taskid) // end oulette ?
REG_BLDY = 0x0;
gFieldCallback = &sub_8080990;
SetMainCallback2(&c2_exit_to_overworld_2_switch);
- DestroyTask(taskid);
+ DestroyTask(taskId);
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
}
}
void sub_8116BC0(u8 taskid)
{
- if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
+ if (eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
{
gTasks[taskid].func = eRoulette->varAC;
if (eRoulette->varAA > 0)
@@ -1632,7 +1245,7 @@ void sub_8116BC0(u8 taskid)
void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3)
{
eRoulette->varB4 = gTasks[taskid].func;
- if(r1 == NULL)
+ if (r1 == NULL)
r1 = eRoulette->varB4;
eRoulette->varAC = r1;
eRoulette->varA8 = r2;
@@ -1676,6 +1289,8 @@ u8 sub_8116D54(u8 taskid, u8 r1)
u32 t1[0x3];
memcpy(t0, gUnknown_083F8ED8, 0x10);
memcpy(t1, gUnknown_083F8EE8, 0xC);
+ // u32 t0[] = {67650, 135300, 270600, 541200};
+ // u32 t1[] = {0x3e0, 0x7c00, 0xf8000};
if (r1 > 0xB)
{
return 0x0;
@@ -1710,7 +1325,7 @@ u8 sub_8116E5C(u8 r0, u8 r1)
u8 t = r0;
if (--r0 < 0x13)
{
- switch(r1)
+ switch (r1)
{
case 0x0:
return 0x3;
@@ -1733,17 +1348,14 @@ u8 sub_8116E5C(u8 r0, u8 r1)
return 0x0;
}
-#ifdef NONMATCHING // stack variable switched with a register variable
void sub_8116EF8(u8 r0)
{
- u32 var0 = 0x0;
- struct UnkStruct1 var1[0x3];
- u32 var2;
+ u16 var0 = 0x0;
+ u8 var2;
u16 var3;
- u32 var4;
u8 i;
- switch(r0)
+ switch (r0)
{
case 0x5:
case 0xA:
@@ -1751,387 +1363,78 @@ void sub_8116EF8(u8 r0)
for (i = (r0 + 0x1); i < (r0 + 0x5); i++)
if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08))
var0 |= gUnknown_083F8C00[i].var10;
- var0 &= 0xDFFF;
- sub_8124CE8(&eRoulette->varB8, var0);
+ sub_8124CE8(&eRoulette->varB8, var0 &= 0xDFFF);
break;
default:
- memcpy(var1, gUnknown_083F8E9C, 0x18);
- if ((u8)(r0 - 0x1) < 0x4)
- var2 = 0x3;
+ {
+ struct UnkStruct1 var1[0x3];
+ memcpy(var1, gUnknown_083F8E9C, sizeof var1);
+ if (r0 > 0 && r0 < 5)
+ var2 = 3;
else
- var2 = 0x1;
- var3 = ((r0 / 0x5) - 0x1);
- switch((u8)r0 % 0x5)
+ var2 = 1;
+ var3 = r0 / 5 - 1;
+ switch (r0 % 5)
{
- case 0x1:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10;
- break;
- case 0x2:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10;
- break;
- case 0x3:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10;
- break;
- case 0x4:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10;
- break;
+ case 0x1:
+ var3 = gSprites[eRoulette->var3C[7 + 0]].oam.paletteNum * 0x10;
+ break;
+ case 0x2:
+ var3 = gSprites[eRoulette->var3C[7 + 1]].oam.paletteNum * 0x10;
+ break;
+ case 0x3:
+ var3 = gSprites[eRoulette->var3C[7 + 2]].oam.paletteNum * 0x10;
+ break;
+ case 0x4:
+ var3 = gSprites[eRoulette->var3C[7 + 3]].oam.paletteNum * 0x10;
+ break;
}
- if (var2 == 0x1)
+ if (var2 == 1)
{
if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
{
- var4 = (r0 / 0x5);
- var1[var4 - 0x1].var02 += var3;
- sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]);
- sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ var1[r0 / 5 - 1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, 13, &var1[r0 / 5 - 1]);
}
+ else
+ return;
}
else
{
- for (i = 0; i < 0x3; i++)
+ for (i = 0; i < 3; i++)
{
- u8 var4 = i * 0x5 + r0 + 0x5;
+ u8 var4 = i * 5 + r0 + 5;
if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08))
{
- u8 var5 = (var4 / 0x5);
- var1[var5 - 0x1].var02 += var3;
- sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]);
- if (var2 == 0x3)
+ var1[var4 / 5 - 1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, i + 13, &var1[var4 / 5 - 1]);
+ if (var2 == 3)
var0 = gUnknown_083F8C00[var4].var10;
var2--;
}
}
- if (var2 != 0x2)
- var0 = 0x0;
- sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ if (var2 != 2)
+ var0 = 0;
}
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ break;
+ }
}
}
-#else
-__attribute__((naked))
-void sub_8116EF8(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r10\n\
-mov r6, r9\n\
-mov r5, r8\n\
-push {r5-r7}\n\
-sub sp, 0x20\n\
-lsls r0, 24\n\
-lsrs r6, r0, 24\n\
-movs r0, 0\n\
-str r0, [sp, 0x18]\n\
-cmp r6, 0xA\n\
-beq _08116F1E\n\
-cmp r6, 0xA\n\
-bgt _08116F1A\n\
-cmp r6, 0x5\n\
-beq _08116F1E\n\
-b _08116F7C\n\
-_08116F1A:\n\
-cmp r6, 0xF\n\
-bne _08116F7C\n\
-_08116F1E:\n\
-adds r0, r6, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-adds r0, r6, 0x5\n\
-ldr r7, _08116F70 @ =0x020190b8\n\
-cmp r4, r0\n\
-bge _08116F5E\n\
-adds r1, r7, 0\n\
-subs r1, 0xB8\n\
-ldr r3, _08116F74 @ =gUnknown_083F8C00\n\
-ldr r5, [r1, 0x8]\n\
-adds r6, r3, 0\n\
-adds r6, 0x8\n\
-adds r2, r0, 0\n\
-_08116F3A:\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r1, r0, 2\n\
-adds r0, r1, r6\n\
-ldr r0, [r0]\n\
-ands r0, r5\n\
-cmp r0, 0\n\
-bne _08116F54\n\
-adds r0, r1, r3\n\
-ldrh r0, [r0, 0x10]\n\
-ldr r1, [sp, 0x18]\n\
-orrs r1, r0\n\
-str r1, [sp, 0x18]\n\
-_08116F54:\n\
-adds r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-cmp r4, r2\n\
-blt _08116F3A\n\
-_08116F5E:\n\
-ldr r0, _08116F78 @ =0x0000dfff\n\
-ldr r2, [sp, 0x18]\n\
-ands r2, r0\n\
-str r2, [sp, 0x18]\n\
-adds r0, r7, 0\n\
-adds r1, r2, 0\n\
-bl sub_8124CE8\n\
-b _0811713C\n\
-.align 2, 0\n\
-_08116F70: .4byte 0x020190b8\n\
-_08116F74: .4byte gUnknown_083F8C00\n\
-_08116F78: .4byte 0x0000dfff\n\
-_08116F7C:\n\
-mov r0, sp\n\
-ldr r1, _08116FC8 @ =gUnknown_083F8E9C\n\
-ldm r1!, {r2-r4}\n\
-stm r0!, {r2-r4}\n\
-ldm r1!, {r2-r4}\n\
-stm r0!, {r2-r4}\n\
-subs r0, r6, 0x1\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-movs r3, 0x1\n\
-mov r10, r3\n\
-cmp r0, 0x3\n\
-bhi _08116F9A\n\
-movs r4, 0x3\n\
-mov r10, r4\n\
-_08116F9A:\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 8\n\
-ldr r1, _08116FCC @ =0xffff0000\n\
-adds r0, r1\n\
-lsrs r7, r0, 16\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __umodsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-cmp r0, 0x2\n\
-beq _08116FF8\n\
-cmp r0, 0x2\n\
-bgt _08116FD4\n\
-cmp r0, 0x1\n\
-beq _08116FE4\n\
-ldr r4, _08116FD0 @ =0x02019000\n\
-b _0811703A\n\
-.align 2, 0\n\
-_08116FC8: .4byte gUnknown_083F8E9C\n\
-_08116FCC: .4byte 0xffff0000\n\
-_08116FD0: .4byte 0x02019000\n\
-_08116FD4:\n\
-cmp r0, 0x3\n\
-beq _0811700C\n\
-cmp r0, 0x4\n\
-beq _08117020\n\
-ldr r4, _08116FE0 @ =0x02019000\n\
-b _0811703A\n\
-.align 2, 0\n\
-_08116FE0: .4byte 0x02019000\n\
-_08116FE4:\n\
-ldr r3, _08116FF0 @ =gSprites\n\
-ldr r2, _08116FF4 @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x43\n\
-b _08117028\n\
-.align 2, 0\n\
-_08116FF0: .4byte gSprites\n\
-_08116FF4: .4byte 0x02019000\n\
-_08116FF8:\n\
-ldr r3, _08117004 @ =gSprites\n\
-ldr r2, _08117008 @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x44\n\
-b _08117028\n\
-.align 2, 0\n\
-_08117004: .4byte gSprites\n\
-_08117008: .4byte 0x02019000\n\
-_0811700C:\n\
-ldr r3, _08117018 @ =gSprites\n\
-ldr r2, _0811701C @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x45\n\
-b _08117028\n\
-.align 2, 0\n\
-_08117018: .4byte gSprites\n\
-_0811701C: .4byte 0x02019000\n\
-_08117020:\n\
-ldr r3, _08117088 @ =gSprites\n\
-ldr r2, _0811708C @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x46\n\
-_08117028:\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 4\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-adds r0, r3\n\
-ldrb r0, [r0, 0x5]\n\
-lsrs r0, 4\n\
-lsls r7, r0, 4\n\
-adds r4, r2, 0\n\
-_0811703A:\n\
-mov r2, r10\n\
-cmp r2, 0x1\n\
-bne _08117094\n\
-ldr r1, _08117090 @ =gUnknown_083F8C00\n\
-lsls r2, r6, 2\n\
-adds r0, r2, r6\n\
-lsls r0, 2\n\
-adds r1, 0x8\n\
-adds r0, r1\n\
-ldr r1, [r4, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-str r2, [sp, 0x1C]\n\
-cmp r1, 0\n\
-bne _0811713C\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-subs r1, r0, 0x1\n\
-lsls r1, 3\n\
-mov r3, sp\n\
-adds r2, r3, r1\n\
-ldrh r1, [r2, 0x2]\n\
-adds r1, r7, r1\n\
-strh r1, [r2, 0x2]\n\
-adds r1, r4, 0\n\
-adds r1, 0xB8\n\
-lsls r0, 3\n\
-subs r0, 0x8\n\
-adds r2, r3, r0\n\
-adds r0, r1, 0\n\
-movs r1, 0xD\n\
-bl sub_812492C\n\
-b _08117122\n\
-.align 2, 0\n\
-_08117088: .4byte gSprites\n\
-_0811708C: .4byte 0x02019000\n\
-_08117090: .4byte gUnknown_083F8C00\n\
-_08117094:\n\
-movs r4, 0\n\
-lsls r0, r6, 2\n\
-str r0, [sp, 0x1C]\n\
-ldr r1, _0811714C @ =0x02019000\n\
-mov r8, r1\n\
-ldr r2, _08117150 @ =gUnknown_083F8C00\n\
-mov r9, r2\n\
-_081170A2:\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-adds r0, r6, r0\n\
-adds r0, 0x5\n\
-lsls r0, 24\n\
-lsrs r2, r0, 24\n\
-lsls r0, r2, 2\n\
-adds r0, r2\n\
-lsls r5, r0, 2\n\
-mov r0, r9\n\
-adds r0, 0x8\n\
-adds r0, r5, r0\n\
-mov r3, r8\n\
-ldr r1, [r3, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _0811710E\n\
-adds r0, r2, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-subs r1, r0, 0x1\n\
-lsls r1, 3\n\
-mov r3, sp\n\
-adds r2, r3, r1\n\
-ldrh r1, [r2, 0x2]\n\
-adds r1, r7, r1\n\
-strh r1, [r2, 0x2]\n\
-adds r1, r4, 0\n\
-adds r1, 0xD\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-lsls r0, 3\n\
-subs r0, 0x8\n\
-adds r2, r3, r0\n\
-mov r0, r8\n\
-adds r0, 0xB8\n\
-bl sub_812492C\n\
-mov r0, r10\n\
-cmp r0, 0x3\n\
-bne _08117104\n\
-mov r1, r9\n\
-adds r0, r5, r1\n\
-ldrh r0, [r0, 0x10]\n\
-str r0, [sp, 0x18]\n\
-_08117104:\n\
-mov r0, r10\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r10, r0\n\
-_0811710E:\n\
-adds r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-cmp r4, 0x2\n\
-bls _081170A2\n\
-mov r2, r10\n\
-cmp r2, 0x2\n\
-beq _08117122\n\
-movs r3, 0\n\
-str r3, [sp, 0x18]\n\
-_08117122:\n\
-ldr r0, _08117154 @ =0x020190b8\n\
-ldr r2, _08117150 @ =gUnknown_083F8C00\n\
-ldr r4, [sp, 0x1C]\n\
-adds r1, r4, r6\n\
-lsls r1, 2\n\
-adds r1, r2\n\
-ldrh r1, [r1, 0x10]\n\
-ldr r2, [sp, 0x18]\n\
-orrs r2, r1\n\
-str r2, [sp, 0x18]\n\
-adds r1, r2, 0\n\
-bl sub_8124CE8\n\
-_0811713C:\n\
-add sp, 0x20\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_0811714C: .4byte 0x02019000\n\
-_08117150: .4byte gUnknown_083F8C00\n\
-_08117154: .4byte 0x020190b8\n\
-.syntax divided\n");
-}
-#endif
-
-#ifdef NONMATCHING //not enough stack usage
void sub_8117158(u8 r0)
{
- u8 i;
- u8 l;
+ vu8 i;
+ vu8 z;
+ vu16 var1;
+ vu16 var2;
+ vu8 var0;
u8 v[0x5];
- u8 z;
- u8 var0;
- u8 var1;
- u16 var2;
+ u8 l;
eRoulette->var2A = 0x1;
sub_8117AA8(0x0, 0x0);
- sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD);
- switch(r0)
+ sub_8124E2C(gBGTilemapBuffers[1], (u16 *)ewram18800, 0xE, 0x7, 0x10, 0xD);
+ switch (r0)
{
case 0x0:
return;
@@ -2153,421 +1456,44 @@ void sub_8117158(u8 r0)
}
for (i = 0x0; i < l; i++)
{
- //_0811727C
var0 = gUnknown_083F8C00[v[i]].var06;
var1 = gUnknown_083F8C00[v[i]].var03;
for (z = 0; z < 0x3; z++)
{
var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 0x20;
- gBGTilemapBuffers[2][var2 + var1 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0];
- gBGTilemapBuffers[2][var2 + var1 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1];
- gBGTilemapBuffers[2][var2 + var1 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2];
+ gBGTilemapBuffers[1][var1 + var2 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0];
+ gBGTilemapBuffers[1][var1 + var2 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1];
+ gBGTilemapBuffers[1][var1 + var2 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2];
}
- //_08117350
}
}
-#else
-__attribute__((naked))
-void sub_8117158(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r10\n\
-mov r6, r9\n\
-mov r5, r8\n\
-push {r5-r7}\n\
-sub sp, 0x24\n\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-ldr r4, _0811719C @ =0x02019000\n\
-movs r0, 0x1\n\
-strh r0, [r4, 0x2A]\n\
-movs r0, 0\n\
-movs r1, 0\n\
-bl sub_8117AA8\n\
-ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800\n\
-ldr r1, _081171A4 @ =0xfffff800\n\
-adds r4, r1\n\
-movs r1, 0x10\n\
-str r1, [sp]\n\
-movs r1, 0xD\n\
-str r1, [sp, 0x4]\n\
-adds r1, r4, 0\n\
-movs r2, 0xE\n\
-movs r3, 0x7\n\
-bl sub_8124E2C\n\
-cmp r5, 0xF\n\
-bhi _08117250\n\
-lsls r0, r5, 2\n\
-ldr r1, _081171A8 @ =_081171AC\n\
-adds r0, r1\n\
-ldr r0, [r0]\n\
-mov pc, r0\n\
-.align 2, 0\n\
-_0811719C: .4byte 0x02019000\n\
-_081171A0: .4byte gBGTilemapBuffers + 0x800\n\
-_081171A4: .4byte 0xfffff800\n\
-_081171A8: .4byte _081171AC\n\
-.align 2, 0\n\
-_081171AC:\n\
-.4byte _08117360\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _08117220\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117220\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117220\n\
-_081171EC:\n\
-movs r0, 0x4\n\
-str r0, [sp, 0x18]\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-cmp r0, 0x3\n\
-bhi _08117258\n\
-add r4, sp, 0x10\n\
-adds r3, r1, 0\n\
-_08117202:\n\
-ldrb r2, [r3]\n\
-adds r2, r4\n\
-ldrb r1, [r3]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-adds r0, r5, r0\n\
-strb r0, [r2]\n\
-ldrb r0, [r3]\n\
-adds r0, 0x1\n\
-strb r0, [r3]\n\
-ldrb r0, [r3]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _08117202\n\
-b _08117258\n\
-_08117220:\n\
-movs r0, 0x5\n\
-str r0, [sp, 0x18]\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-cmp r0, 0x4\n\
-bhi _08117258\n\
-add r3, sp, 0x10\n\
-adds r2, r1, 0\n\
-_08117236:\n\
-ldrb r1, [r2]\n\
-adds r1, r3\n\
-ldrb r0, [r2]\n\
-adds r0, r5, r0\n\
-strb r0, [r1]\n\
-ldrb r0, [r2]\n\
-adds r0, 0x1\n\
-strb r0, [r2]\n\
-ldrb r0, [r2]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _08117236\n\
-b _08117258\n\
-_08117250:\n\
-movs r0, 0x1\n\
-str r0, [sp, 0x18]\n\
-add r0, sp, 0x10\n\
-strb r5, [r0]\n\
-_08117258:\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcs _08117360\n\
-mov r0, sp\n\
-adds r0, 0xE\n\
-str r0, [sp, 0x1C]\n\
-add r1, sp, 0x10\n\
-mov r9, r1\n\
-add r0, sp, 0x8\n\
-mov r12, r0\n\
-mov r1, sp\n\
-adds r1, 0xA\n\
-str r1, [sp, 0x20]\n\
-_0811727C:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-ldr r1, _08117370 @ =gUnknown_083F8C00\n\
-adds r0, r1\n\
-ldrb r0, [r0, 0x6]\n\
-ldr r1, [sp, 0x1C]\n\
-strb r0, [r1]\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-ldr r1, _08117370 @ =gUnknown_083F8C00\n\
-adds r0, r1\n\
-ldrb r0, [r0, 0x3]\n\
-ldr r1, [sp, 0x20]\n\
-strh r0, [r1]\n\
-mov r4, sp\n\
-adds r4, 0x9\n\
-movs r0, 0\n\
-strb r0, [r4]\n\
-ldrb r0, [r4]\n\
-cmp r0, 0x2\n\
-bhi _08117350\n\
-add r5, sp, 0xC\n\
-ldr r7, [sp, 0x20]\n\
-ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800\n\
-mov r8, r0\n\
-ldr r6, [sp, 0x1C]\n\
-ldr r1, _08117378 @ =0x020189a0\n\
-mov r10, r1\n\
-_081172C8:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r0, [r0]\n\
-lsls r1, r0, 2\n\
-adds r1, r0\n\
-lsls r1, 2\n\
-ldr r0, _08117370 @ =gUnknown_083F8C00\n\
-adds r1, r0\n\
-adds r3, r4, 0\n\
-ldrb r0, [r4]\n\
-ldrb r1, [r1, 0x4]\n\
-adds r0, r1\n\
-lsls r0, 5\n\
-strh r0, [r5]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-add r0, r10\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-adds r2, 0x1\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-mov r1, r10\n\
-adds r1, 0x2\n\
-adds r0, r1\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-adds r2, 0x2\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-ldr r1, _0811737C @ =0x020189a4\n\
-adds r0, r1\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrb r0, [r4]\n\
-adds r0, 0x1\n\
-strb r0, [r4]\n\
-ldrb r0, [r3]\n\
-cmp r0, 0x2\n\
-bls _081172C8\n\
-_08117350:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-strb r0, [r1]\n\
-ldrb r0, [r1]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _0811727C\n\
-_08117360:\n\
-add sp, 0x24\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08117370: .4byte gUnknown_083F8C00\n\
-_08117374: .4byte gBGTilemapBuffers + 0x800\n\
-_08117378: .4byte 0x020189a0\n\
-_0811737C: .4byte 0x020189a4\n\
-.syntax divided\n");
-}
-#endif
-#ifdef NONMATCHING
u8 sub_8117380(u8 r0)
{
- u8 var0[0x5];
- u8 t;
- u8 z;
- memcpy(var0, gUnknown_083F8EF4, 0x5);
- if (r0 > 0x13)
- r0 = 0x0;
+ u8 var0[5];
+ memcpy(var0, gUnknown_083F8EF4, 5);
+ // u8 var0[] = {0, 3, 4, 6, 12};
+ if (r0 > 19)
+ r0 = 0;
switch (gUnknown_083F8C00[r0].var01_0)
{
- case 0x3:
- z = r0 / 0x5 - 0x1;
- if (eRoulette->var16[z] > 0x3)
- return 0x0;
- return var0[eRoulette->var16[z] + 0x1];
- case 0x4:
- t = r0 - 0x1;
- if (eRoulette->var12[t] > 0x2)
+ case 3:
+ r0 = r0 / 5 - 1;
+ if (eRoulette->var16[r0] > 3)
return 0x0;
- return var0[eRoulette->var12[t] + 0x2];
- case 0xC:
+ return var0[eRoulette->var16[r0] + 1];
+ case 4:
+ r0--;
+ if (eRoulette->var12[r0] > 2)
+ return 0;
+ return var0[eRoulette->var12[r0] + 2];
+ case 12:
if (eRoulette->var08 & gUnknown_083F8C00[r0].var08)
- return 0x0;
- return var0[0x4];
- default:
+ return 0;
+ return var0[4];
}
- return 0x0;
+ return 0;
}
-#else
-__attribute__((naked))
-u8 sub_8117380(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4,lr}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r1, _081173B8 @ =gUnknown_083F8EF4\n\
-mov r0, sp\n\
-movs r2, 0x5\n\
-bl memcpy\n\
-cmp r4, 0x13\n\
-bls _08117398\n\
-movs r4, 0\n\
-_08117398:\n\
-ldr r3, _081173BC @ =gUnknown_083F8C00\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r2, r0, 2\n\
-adds r0, r2, r3\n\
-ldrb r0, [r0, 0x1]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-cmp r0, 0x4\n\
-beq _081173EC\n\
-cmp r0, 0x4\n\
-bgt _081173C0\n\
-cmp r0, 0x3\n\
-beq _081173C6\n\
-b _08117428\n\
-.align 2, 0\n\
-_081173B8: .4byte gUnknown_083F8EF4\n\
-_081173BC: .4byte gUnknown_083F8C00\n\
-_081173C0:\n\
-cmp r0, 0xC\n\
-beq _0811740C\n\
-b _08117428\n\
-_081173C6:\n\
-adds r0, r4, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _081173E8 @ =0x02019000\n\
-adds r0, 0x16\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x3\n\
-bhi _08117428\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-b _08117402\n\
-.align 2, 0\n\
-_081173E8: .4byte 0x02019000\n\
-_081173EC:\n\
-subs r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08117408 @ =0x02019000\n\
-adds r0, 0x12\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x2\n\
-bhi _08117428\n\
-ldrb r0, [r1]\n\
-adds r0, 0x2\n\
-_08117402:\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-b _0811742A\n\
-.align 2, 0\n\
-_08117408: .4byte 0x02019000\n\
-_0811740C:\n\
-ldr r1, _08117424 @ =0x02019000\n\
-adds r0, r3, 0\n\
-adds r0, 0x8\n\
-adds r0, r2, r0\n\
-ldr r1, [r1, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _08117428\n\
-mov r0, sp\n\
-ldrb r0, [r0, 0x4]\n\
-b _0811742A\n\
-.align 2, 0\n\
-_08117424: .4byte 0x02019000\n\
-_08117428:\n\
-movs r0, 0\n\
-_0811742A:\n\
-add sp, 0x8\n\
-pop {r4}\n\
-pop {r1}\n\
-bx r1\n\
-.syntax divided\n");
-}
-#endif
void sub_8117434(void)
{
@@ -2629,6 +1555,9 @@ void sub_811755C(u8 taskid)
void sub_81175C0(u8 taskid)
{
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
Menu_EraseScreen();
ScriptContext2_Disable();
DestroyTask(taskid);
@@ -2691,11 +1620,98 @@ void Task_Roulette_0(u8 taskid)
}
}
+#if DEBUG
+
+void debug_sub_812CDE4(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].data[13]++;
+ if (gTasks[taskId].data[13] == 10000)
+ gTasks[taskId].data[13] = 0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[13]--;
+ if (gTasks[taskId].data[13] == -1)
+ gTasks[taskId].data[13] = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 0x100)
+ {
+ gTasks[taskId].data[13] += 10;
+ if (gTasks[taskId].data[13] > 9999)
+ gTasks[taskId].data[13] -= 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 0x200)
+ {
+ gTasks[taskId].data[13] -= 10;
+ if (gTasks[taskId].data[13] < 0)
+ gTasks[taskId].data[13] += 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 8)
+ {
+ gSaveBlock1.coins = gTasks[taskId].data[13];
+ gTasks[taskId].func = Task_Roulette_0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ unk_2039560 = 0;
+ }
+ else if (gMain.newKeys & 4)
+ {
+ gSaveBlock1.coins = gTasks[taskId].data[13];
+ gTasks[taskId].func = Task_Roulette_0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ unk_2039560 = 1;
+ }
+}
+
+extern const u8 gUnknown_Debug_0842510D[];
+
+void debug_sub_812CFE8(u8 taskId)
+{
+ gTasks[taskId].data[13] = gSaveBlock1.coins;
+ if (Random() & 1)
+ gSpecialVar_0x8004 |= 0x80;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ Menu_DrawStdWindowFrame(0, 0, 9, 3);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ Menu_DrawStdWindowFrame(0, 14, 29, 19);
+ Menu_PrintText(gUnknown_Debug_0842510D, 1, 15);
+ gTasks[taskId].func = debug_sub_812CDE4;
+}
+
+#endif
+
void PlayRoulette(void)
{
u8 taskid;
+
ScriptContext2_Enable();
- taskid = CreateTask(&Task_Roulette_0, 0x0);
+#if DEBUG
+ unk_2039560 = 0;
+ if (unk_203955C[0] != 0)
+ {
+ CreateTask(debug_sub_812CFE8, 0);
+ return;
+ }
+#endif
+ taskid = CreateTask(Task_Roulette_0, 0);
gTasks[taskid].data[0xD] = gSaveBlock1.coins;
}
@@ -2783,7 +1799,7 @@ void unref_sub_8117A74(void) //destroy all sprites at 0x1D
void sub_8117AA8(u8 r0, u8 r1)
{
u8 i;
- switch(r0)
+ switch (r0)
{
case 0x1:
for (i = 0x0; i < 0x13; i++)
@@ -2799,7 +1815,7 @@ void sub_8117AA8(u8 r0, u8 r1)
else
gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
}
- for ( ; i < 0x13; i++)
+ for (; i < 0x13; i++)
gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
break;
}
@@ -2812,7 +1828,7 @@ void sub_8117BBC(void)
{
eRoulette->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA);
gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
- gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1;
+ gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1;
gSprites[eRoulette->var3C[0x31 + i]].callback = &sub_81184CC;
gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1;
StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8);
@@ -2883,111 +1899,25 @@ void sub_8117DF4(void)
}
}
-#ifdef NONMATCHING
void sub_8117E98(struct Sprite *sprite)
{
- struct OamMatrix *m;
- u8 p;
- u16 angle;
- s16 cos, sin, z;
- u32 cos32;
- angle = eRoulette->var24 + sprite->data[0x0];
- z = angle;
- if (z > 359)
- angle = z - 360;
+ s16 cos;
+ s16 sin;
+ u32 matrixNum;
+ s16 angle = eRoulette->var24 + sprite->data[0];
+ if (angle >= 360)
+ angle -= 360;
sin = Sin2(angle);
cos = Cos2(angle);
- sprite->pos2.x = sin * sprite->data[0x1] >> 0xC;
- sprite->pos2.y = -cos * sprite->data[0x1] >> 0xC;
- p = sprite->oam.matrixNum;
- sin = sin / 0x10;
- m = &gOamMatrices[p];
- cos32 = cos / 0x10;
-
- m->d = cos32;
- m->a = cos32;
- m->b = sin;
- m->c = -sin;
-}
-#else
-__attribute__((naked))
-void sub_8117E98(struct Sprite *r0)
-{
-asm(".syntax unified\n\
-push {r4-r6,lr}\n\
-adds r6, r0, 0\n\
-ldr r0, _08117F1C @ =0x02019000\n\
-ldrh r1, [r6, 0x2E]\n\
-ldrh r0, [r0, 0x24]\n\
-adds r1, r0\n\
-lsls r1, 16\n\
-lsrs r4, r1, 16\n\
-asrs r1, 16\n\
-ldr r0, _08117F20 @ =0x00000167\n\
-cmp r1, r0\n\
-ble _08117EB8\n\
-ldr r2, _08117F24 @ =0xfffffe98\n\
-adds r0, r1, r2\n\
-lsls r0, 16\n\
-lsrs r4, r0, 16\n\
-_08117EB8:\n\
-adds r0, r4, 0\n\
-bl Sin2\n\
-lsls r0, 16\n\
-lsrs r5, r0, 16\n\
-adds r0, r4, 0\n\
-bl Cos2\n\
-lsls r2, r5, 16\n\
-asrs r2, 16\n\
-movs r3, 0x30\n\
-ldrsh r1, [r6, r3]\n\
-muls r1, r2\n\
-asrs r1, 12\n\
-strh r1, [r6, 0x24]\n\
-lsls r0, 16\n\
-asrs r4, r0, 16\n\
-negs r1, r4\n\
-movs r3, 0x30\n\
-ldrsh r0, [r6, r3]\n\
-muls r0, r1\n\
-asrs r0, 12\n\
-strh r0, [r6, 0x26]\n\
-ldrb r0, [r6, 0x3]\n\
-lsls r0, 26\n\
-lsrs r3, r0, 27\n\
-cmp r2, 0\n\
-bge _08117EF2\n\
-adds r2, 0xF\n\
-_08117EF2:\n\
-lsls r0, r2, 12\n\
-lsrs r5, r0, 16\n\
-ldr r1, _08117F28 @ =gOamMatrices\n\
-lsls r0, r3, 3\n\
-adds r1, r0, r1\n\
-adds r0, r4, 0\n\
-cmp r0, 0\n\
-bge _08117F04\n\
-adds r0, 0xF\n\
-_08117F04:\n\
-asrs r0, 4\n\
-strh r0, [r1, 0x6]\n\
-strh r0, [r1]\n\
-strh r5, [r1, 0x2]\n\
-lsls r0, r5, 16\n\
-asrs r0, 16\n\
-negs r0, r0\n\
-strh r0, [r1, 0x4]\n\
-pop {r4-r6}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08117F1C: .4byte 0x02019000\n\
-_08117F20: .4byte 0x00000167\n\
-_08117F24: .4byte 0xfffffe98\n\
-_08117F28: .4byte gOamMatrices\n\
-.syntax divided\n");
+ sprite->pos2.x = sin * sprite->data[1] >> 0xC;
+ sprite->pos2.y = -cos * sprite->data[1] >> 0xC;
+ matrixNum = sprite->oam.matrixNum;
+ sin /= 16;
+ gOamMatrices[matrixNum].d = cos /= 16;
+ gOamMatrices[matrixNum].a = cos;
+ gOamMatrices[matrixNum].b = sin;
+ gOamMatrices[matrixNum].c = -sin;
}
-#endif
void sub_8117F2C(void)
{
@@ -3045,132 +1975,32 @@ void sub_81180F4(u16 r0)
}
}
-#ifdef NONMATCHING
u8 sub_81181E8(u8 r0)
{
- u8 t[0x5];
- memcpy(&t, &gUnknown_083FA608, 0x5);
- if (r0 > 0x13)
- r0 = 0x0;
- switch(gUnknown_083F8C00[r0].var01_0)
+ u8 t[5];
+ memcpy(t, gUnknown_083FA608, sizeof t);
+ // u8 t = {0, 1, 2, 3, 4};
+ if (r0 >= 20)
+ r0 = 0;
+ switch (gUnknown_083F8C00[r0].var01_0)
{
case 0x3:
- r0 = r0 / 0x5 - 0x1;
- if ((u32)eRoulette->var16[r0] < 0x4)
- return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads
+ r0 = r0 / 5 - 1;
+ if (eRoulette->var16[r0] < 4)
+ return t[((vu8 *)eRoulette->var16)[r0] + 1]; // couldn't recreate redundant loads
break;
case 0x4:
- r0 = r0 - 0x1;
- if (eRoulette->var12[r0] < 0x3)
- return t[0x2 + eRoulette->var12[r0]];
+ r0--;
+ if (eRoulette->var12[r0] < 3)
+ return t[((vu8 *)eRoulette->var12)[r0] + 2];
break;
case 0xC:
if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
- return t[0x4];
+ return t[4];
break;
}
- return 0x0;
+ return 0;
}
-#else
-__attribute__((naked))
-u8 sub_81181E8(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4,lr}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r1, _08118220 @ =gUnknown_083FA608\n\
-mov r0, sp\n\
-movs r2, 0x5\n\
-bl memcpy\n\
-cmp r4, 0x13\n\
-bls _08118200\n\
-movs r4, 0\n\
-_08118200:\n\
-ldr r3, _08118224 @ =gUnknown_083F8C00\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r2, r0, 2\n\
-adds r0, r2, r3\n\
-ldrb r0, [r0, 0x1]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-cmp r0, 0x4\n\
-beq _08118254\n\
-cmp r0, 0x4\n\
-bgt _08118228\n\
-cmp r0, 0x3\n\
-beq _0811822E\n\
-b _08118290\n\
-.align 2, 0\n\
-_08118220: .4byte gUnknown_083FA608\n\
-_08118224: .4byte gUnknown_083F8C00\n\
-_08118228:\n\
-cmp r0, 0xC\n\
-beq _08118274\n\
-b _08118290\n\
-_0811822E:\n\
-adds r0, r4, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08118250 @ =0x02019000\n\
-adds r0, 0x16\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x3\n\
-bhi _08118290\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-b _0811826A\n\
-.align 2, 0\n\
-_08118250: .4byte 0x02019000\n\
-_08118254:\n\
-subs r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08118270 @ =0x02019000\n\
-adds r0, 0x12\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x2\n\
-bhi _08118290\n\
-ldrb r0, [r1]\n\
-adds r0, 0x2\n\
-_0811826A:\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-b _08118292\n\
-.align 2, 0\n\
-_08118270: .4byte 0x02019000\n\
-_08118274:\n\
-ldr r1, _0811828C @ =0x02019000\n\
-adds r0, r3, 0\n\
-adds r0, 0x8\n\
-adds r0, r2, r0\n\
-ldr r1, [r1, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _08118290\n\
-mov r0, sp\n\
-ldrb r0, [r0, 0x4]\n\
-b _08118292\n\
-.align 2, 0\n\
-_0811828C: .4byte 0x02019000\n\
-_08118290:\n\
-movs r0, 0\n\
-_08118292:\n\
-add sp, 0x8\n\
-pop {r4}\n\
-pop {r1}\n\
-bx r1\n\
-.syntax divided\n");
-}
-#endif
void sub_811829C(u8 r0)
{
@@ -3187,7 +2017,7 @@ void sub_81182F8(u8 r0)
u8 t = 0x0;
if (eRoulette->var19 == 0x1)
t = 0x2;
- switch(r0)
+ switch (r0)
{
case 0x6:
for (i = 0x0; i < 0x3; i++)
@@ -3427,7 +2257,7 @@ void sub_81189A8(struct Sprite *sprite)
float f0, f1, f2;
struct StructgUnknown_083F8DF4 *p;
sub_8118724(sprite);
- switch(sprite->data[0x3])
+ switch (sprite->data[0x3])
{
case 0:
if (sprite->data[0x0] != 0x1)
@@ -3493,7 +2323,7 @@ void sub_8118BD8(struct Sprite *sprite)
if (sprite->data[0x2]++ < 45)
{
sprite->pos2.y--;
- if(sprite->data[0x2] == 45)
+ if (sprite->data[0x2] == 45)
{
if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
sprite->pos2.y++;
@@ -3527,7 +2357,7 @@ void sub_8118BD8(struct Sprite *sprite)
void sub_8118CAC(struct Sprite *sprite)
{
sub_8118724(sprite);
- switch(sprite->data[0x3])
+ switch (sprite->data[0x3])
{
case 90:
if (sprite->data[0x0] != 0x1)
@@ -3549,7 +2379,7 @@ void sub_8118CAC(struct Sprite *sprite)
void sub_8118CEC(struct Sprite *sprite)
{
sub_8118724(sprite);
- switch(eRoulette->var03_0)
+ switch (eRoulette->var03_0)
{
default:
case 0x0:
@@ -3591,7 +2421,33 @@ void sub_8118D2C(struct Sprite *sprite)
}
}
-#ifdef NONMATCHING
+#if DEBUG
+
+void debug_sub_812E698(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ sprite->data[2] = 0;
+ sub_81186B8(sprite);
+ m4aSongNumStart(0x38);
+ if (Random() & 1)
+ {
+ eRoulette->var8C = 0;
+ eRoulette->var7F = (eRoulette->var7E + 1) % 12;
+ }
+ else
+ {
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2;
+ eRoulette->var7F = eRoulette->var7E;
+ }
+ sprite->data[0] = 1;
+ sprite->data[2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
+ eRoulette->var98 = 0.085;
+ sprite->callback = sub_8118D2C;
+ sprite->data[1] = 5;
+}
+
+#endif
+
void sub_8118DE4(struct Sprite *sprite)
{
sub_8118724(sprite);
@@ -3607,13 +2463,13 @@ void sub_8118DE4(struct Sprite *sprite)
sub_811866C(sprite);
sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15;
sprite->callback = &sub_8118834;
- m4aSongNumStartOrChange(0x47);
+ m4aSongNumStartOrChange(SE_HASHI);
}
else
{
u8 t;
u32 z;
- m4aSongNumStart(0x38);
+ m4aSongNumStart(SE_KON);
if ((z = (Random() & 0x1)))
{
u32 o;
@@ -3631,21 +2487,21 @@ void sub_8118DE4(struct Sprite *sprite)
if (gUnknown_083F8D90[t].var04 & eRoulette->var08)
{
sprite->data[0x0] = 0x1;
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
}
else
{
sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08;
if (eRoulette->var04_0)
{
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var01;
}
else
{
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
if (z)
{
- eRoulette->var8C = 1.5f;
+ eRoulette->var8C = 0.5f;
}
else
{
@@ -3654,217 +2510,10 @@ void sub_8118DE4(struct Sprite *sprite)
}
}
eRoulette->var98 = 0.085f;
- sprite->callback = &sub_8118D2C;
+ sprite->callback = sub_8118D2C;
sprite->data[0x1] = 0x5;
}
}
-#else
-__attribute__((naked))
-void sub_8118DE4(struct Sprite *sprite)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r9\n\
-mov r6, r8\n\
-push {r6,r7}\n\
-adds r7, r0, 0\n\
-bl sub_8118724\n\
-movs r0, 0\n\
-strh r0, [r7, 0x32]\n\
-adds r0, r7, 0\n\
-bl sub_81186B8\n\
-ldr r1, _08118E70 @ =gUnknown_083F8D90\n\
-ldr r6, _08118E74 @ =gSharedMem + 0x19000\n\
-movs r0, 0x7E\n\
-adds r0, r6\n\
-mov r8, r0\n\
-ldrb r0, [r0]\n\
-lsls r0, 3\n\
-adds r1, 0x4\n\
-adds r0, r1\n\
-ldr r0, [r0]\n\
-ldr r1, [r6, 0x8]\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-bne _08118E7C\n\
-adds r1, r6, 0\n\
-adds r1, 0x7D\n\
-movs r0, 0xFF\n\
-strb r0, [r1]\n\
-ldrb r1, [r6, 0x3]\n\
-movs r0, 0x7F\n\
-ands r0, r1\n\
-strb r0, [r6, 0x3]\n\
-adds r0, r7, 0\n\
-adds r0, 0x2B\n\
-ldrb r1, [r0]\n\
-adds r1, 0x3\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-adds r0, r7, 0\n\
-bl StartSpriteAnim\n\
-adds r0, r7, 0\n\
-bl sub_81186B8\n\
-movs r0, 0x1E\n\
-strh r0, [r7, 0x36]\n\
-adds r0, r7, 0\n\
-bl sub_811866C\n\
-movs r1, 0x3A\n\
-ldrsh r0, [r7, r1]\n\
-movs r1, 0x1E\n\
-bl __divsi3\n\
-lsls r0, 16\n\
-asrs r0, 16\n\
-lsls r1, r0, 4\n\
-subs r1, r0\n\
-lsls r1, 1\n\
-adds r1, 0xF\n\
-strh r1, [r7, 0x3A]\n\
-ldr r0, _08118E78 @ =sub_8118834\n\
-str r0, [r7, 0x1C]\n\
-movs r0, 0x47\n\
-bl m4aSongNumStartOrChange\n\
-b _08118F74\n\
-.align 2, 0\n\
-_08118E70: .4byte gUnknown_083F8D90\n\
-_08118E74: .4byte gSharedMem + 0x19000\n\
-_08118E78: .4byte sub_8118834\n\
-_08118E7C:\n\
-movs r0, 0x38\n\
-bl m4aSongNumStart\n\
-bl Random\n\
-movs r2, 0x1\n\
-mov r9, r2\n\
-mov r1, r9\n\
-ands r1, r0\n\
-mov r9, r1\n\
-cmp r1, 0\n\
-beq _08118EC0\n\
-adds r1, r6, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118EB8 @ =0x00000000\n\
-str r0, [r1]\n\
-mov r2, r8\n\
-ldrb r0, [r2]\n\
-adds r0, 0x1\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r1, r0, 24\n\
-lsrs r2, r1, 24\n\
-adds r1, r6, 0\n\
-adds r1, 0x7F\n\
-strb r0, [r1]\n\
-ldr r5, _08118EBC @ =gUnknown_083F8DF4\n\
-b _08118EF4\n\
-.align 2, 0\n\
-_08118EB8: .4byte 0x00000000\n\
-_08118EBC: .4byte gUnknown_083F8DF4\n\
-_08118EC0:\n\
-adds r4, r6, 0\n\
-adds r4, 0x8C\n\
-ldr r5, _08118F1C @ =gUnknown_083F8DF4\n\
-ldrb r0, [r6, 0x4]\n\
-lsls r0, 30\n\
-lsrs r0, 25\n\
-adds r1, r5, 0\n\
-adds r1, 0x1C\n\
-adds r0, r1\n\
-ldr r1, [r0]\n\
-adds r0, r1, 0\n\
-bl __addsf3\n\
-str r0, [r4]\n\
-mov r0, r8\n\
-ldrb r4, [r0]\n\
-adds r0, r4, 0\n\
-adds r0, 0xB\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r2, r0, 24\n\
-adds r0, r6, 0\n\
-adds r0, 0x7F\n\
-strb r4, [r0]\n\
-_08118EF4:\n\
-ldr r0, _08118F20 @ =gUnknown_083F8D90\n\
-lsls r1, r2, 3\n\
-adds r0, 0x4\n\
-adds r1, r0\n\
-ldr r2, _08118F24 @ =gSharedMem + 0x19000\n\
-ldr r1, [r1]\n\
-ldr r0, [r2, 0x8]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-beq _08118F28\n\
-movs r0, 0x1\n\
-strh r0, [r7, 0x2E]\n\
-ldrb r0, [r2, 0x4]\n\
-lsls r0, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x2]\n\
-strh r0, [r7, 0x32]\n\
-b _08118F64\n\
-.align 2, 0\n\
-_08118F1C: .4byte gUnknown_083F8DF4\n\
-_08118F20: .4byte gUnknown_083F8D90\n\
-_08118F24: .4byte gSharedMem + 0x19000\n\
-_08118F28:\n\
-strh r1, [r7, 0x2E]\n\
-ldrb r1, [r2, 0x4]\n\
-movs r0, 0x3\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08118F40\n\
-lsls r0, r1, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x1]\n\
-strh r0, [r7, 0x32]\n\
-b _08118F64\n\
-_08118F40:\n\
-lsls r0, r1, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x2]\n\
-strh r0, [r7, 0x32]\n\
-mov r1, r9\n\
-cmp r1, 0\n\
-beq _08118F5C\n\
-adds r1, r2, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118F58 @ =0x3f000000\n\
-b _08118F62\n\
-.align 2, 0\n\
-_08118F58: .4byte 0x3f000000\n\
-_08118F5C:\n\
-adds r1, r2, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118F80 @ =0xbfc00000\n\
-_08118F62:\n\
-str r0, [r1]\n\
-_08118F64:\n\
-adds r1, r2, 0\n\
-adds r1, 0x98\n\
-ldr r0, _08118F84 @ =0x3dae147b\n\
-str r0, [r1]\n\
-ldr r0, _08118F88 @ =sub_8118D2C\n\
-str r0, [r7, 0x1C]\n\
-movs r0, 0x5\n\
-strh r0, [r7, 0x30]\n\
-_08118F74:\n\
-pop {r3,r4}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08118F80: .4byte 0xbfc00000\n\
-_08118F84: .4byte 0x3dae147b\n\
-_08118F88: .4byte sub_8118D2C\n\
-.syntax divided\n");
-}
-#endif
void sub_8118F8C(struct Sprite *sprite)
{
@@ -3872,15 +2521,20 @@ void sub_8118F8C(struct Sprite *sprite)
if (!(eRoulette->var8C > 0.5f))
{
sub_81186B8(sprite);
- if (sub_81186E8(sprite) == 0x0)
+ if (!sub_81186E8(sprite))
{
struct StructgUnknown_083F8DF4 *p;
eRoulette->var90 = 0.0f;
p = &gUnknown_083F8DF4[0];
eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03)
- / ((float)(s16)((&p[eRoulette->var04_0])->var04 + 0x1));
+ / ((float)(s16)(p[eRoulette->var04_0].var04 + 0x1));
sprite->data[0x1] = 0x4;
- sprite->callback = &sub_8118DE4;
+#if DEBUG
+ if (unk_2039560 != 0)
+ sprite->callback = debug_sub_812E698;
+ else
+#endif
+ sprite->callback = sub_8118DE4;
}
else
{
@@ -3960,8 +2614,8 @@ void sub_8119224(struct Sprite *sprite)
gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38];
gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x39];
gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t;
- gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * (&gUnknown_083F8DF4[eRoulette->var04_0])->var01) +
- ((&gUnknown_083F8DF4[eRoulette->var04_0])->var02 + 0xFFFF);
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * gUnknown_083F8DF4[eRoulette->var04_0].var01) +
+ (gUnknown_083F8DF4[eRoulette->var04_0].var02 + 0xFFFF);
}
gSprites[eRoulette->var3C[0x38]].coordOffsetEnabled = TRUE;
eRoulette->var38 = sprite;
@@ -3995,57 +2649,58 @@ void sub_81193D4(struct Sprite *sprite)
#ifdef NONMATCHING
void sub_811952C(struct Sprite *sprite)
{
+ u8 i;
u8 z;
- register u8 h asm("r10") = 0x0;
- u8 j = 0x5;
- u32 p = 0x0;
u16 o;
- u8 i;
- u8 s[0xA] = (u8[]){0,0,0,0,0,0,0,0,0,0};
- u16 t = Random();
- eRoulette->var7D = 0x1;
+ u8 h = 0; // r10 (sp+0xc)
+ u8 j = 5; // r9 (r9)
+ u8 p = 0; // sp+0xc (sp+0x10)
+ u8 s[10] = {}; // sp+0 (sp+0)
+ u16 t = Random(); // sp+0x10 (r10)
+
+ eRoulette->var7D = 1;
eRoulette->var03_5 = TRUE;
eRoulette->var03_6 = FALSE;
eRoulette->var7E = 0xFF;
- eRoulette->var88 = sprite->data[0x3];
+ eRoulette->var88 = sprite->data[3];
eRoulette->var98 = 0.0f;
- eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C;
o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15;
- for (i = 0x0; i < 0x4; i++)
+ for (i = 0; i < 4; i++)
{
- if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90))
+ if (o < sprite->data[3] && sprite->data[3] <= o + 90)
{
- sprite->data[0x0] = i * 0x2;
- eRoulette->var03_0 = 0x1 & i;
+ sprite->data[0] = i << 1;
+ eRoulette->var03_0 = i & 1;
break;
}
- if (i == 0x3)
+ if (i == 3)
{
- sprite->data[0x0] = 0x1;
- eRoulette->var03_0 = 0x1;
+ sprite->data[0] = 1;
+ eRoulette->var03_0 = 1;
break;
}
o += 90;
}
if (eRoulette->var03_0)
{
- if (sprite->data[0x0])
+ if (sprite->data[0])
{
- PlayCry1(0x130, -0x3F);
+ PlayCry1(SPECIES_TAILLOW, -0x3F);
}
else
{
- PlayCry1(0x130, 0x3F);
+ PlayCry1(SPECIES_TAILLOW, 0x3F);
}
}
else
{
- PlayCry1(0x132, -0x3F);
+ PlayCry1(SPECIES_SHROOMISH, -0x3F);
}
- i = 0x2;
- z = (eRoulette->var7F + 0x2) % 0xC;
- if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1)
- j += 0x6;
+ i = 2;
+ z = (eRoulette->var7F + 2) % 12;
+ if (eRoulette->var03_0 == 1 && eRoulette->var04_0 == 1)
+ j += 6;
else
j += i;
for (; i < j; i++)
@@ -4058,343 +2713,340 @@ void sub_811952C(struct Sprite *sprite)
p = i;
}
}
- z = (z + 0x1) % 0xC;
+ z = (z + 1) % 0xC;
}
- if ((eRoulette->var03_0 + 0x1) & eRoulette->var02)
+ if ((eRoulette->var03_0 + 1) & eRoulette->var02)
{
- if (p && (t & 0xFF) <= 0xBF)
+ if (p && (t & 0xFF) < 0xc0)
{
- sprite->data[0x7] = p;
+ sprite->data[7] = p;
}
else
{
- sprite->data[0x7] = s[t % h];
+ sprite->data[7] = s[t % h];
}
}
else
{
- sprite->data[0x7] = s[t % h];
+ sprite->data[7] = s[t % h];
}
- sprite->callback = &sub_8118CEC;
+ sprite->callback = sub_8118CEC;
}
#else
__attribute__((naked))
void sub_811952C(struct Sprite *sprite)
{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r10\n\
-mov r6, r9\n\
-mov r5, r8\n\
-push {r5-r7}\n\
-sub sp, 0x14\n\
-mov r8, r0\n\
-movs r0, 0\n\
-mov r10, r0\n\
-movs r1, 0x5\n\
-mov r9, r1\n\
-movs r2, 0\n\
-str r2, [sp, 0xC]\n\
-mov r0, sp\n\
-movs r1, 0\n\
-movs r2, 0xA\n\
-bl memset\n\
-bl Random\n\
-lsls r0, 16\n\
-lsrs r0, 16\n\
-str r0, [sp, 0x10]\n\
-ldr r7, _08119610 @ =gSharedMem + 0x19000\n\
-adds r0, r7, 0\n\
-adds r0, 0x7D\n\
-movs r6, 0x1\n\
-strb r6, [r0]\n\
-ldrb r4, [r7, 0x3]\n\
-movs r0, 0x20\n\
-orrs r4, r0\n\
-movs r0, 0x41\n\
-negs r0, r0\n\
-ands r4, r0\n\
-strb r4, [r7, 0x3]\n\
-adds r1, r7, 0\n\
-adds r1, 0x7E\n\
-movs r0, 0xFF\n\
-strb r0, [r1]\n\
-adds r5, r7, 0\n\
-adds r5, 0x88\n\
-mov r3, r8\n\
-movs r1, 0x34\n\
-ldrsh r0, [r3, r1]\n\
-bl __floatsisf\n\
-str r0, [r5]\n\
-adds r1, r7, 0\n\
-adds r1, 0x98\n\
-ldr r0, _08119614 @ =0x00000000\n\
-str r0, [r1]\n\
-adds r3, r7, 0\n\
-adds r3, 0x8C\n\
-ldr r2, _08119618 @ =gUnknown_083F8DF4\n\
-ldrb r0, [r7, 0x4]\n\
-lsls r0, 30\n\
-lsrs r1, r0, 25\n\
-adds r2, 0x1C\n\
-adds r1, r2\n\
-ldr r1, [r1]\n\
-str r1, [r3]\n\
-lsrs r0, 30\n\
-lsls r1, r0, 4\n\
-subs r1, r0\n\
-lsls r1, 1\n\
-adds r1, 0x21\n\
-lsls r4, 27\n\
-lsrs r4, 27\n\
-subs r6, r4\n\
-lsls r0, r6, 4\n\
-subs r0, r6\n\
-adds r1, r0\n\
-lsls r1, 16\n\
-lsrs r1, 16\n\
-mov r5, r10\n\
-mov r3, r8\n\
-movs r0, 0x34\n\
-ldrsh r2, [r3, r0]\n\
-_081195C8:\n\
-cmp r1, r2\n\
-bge _081195D4\n\
-adds r0, r1, 0\n\
-adds r0, 0x5A\n\
-cmp r2, r0\n\
-ble _08119638\n\
-_081195D4:\n\
-cmp r5, 0x3\n\
-beq _0811961C\n\
-adds r0, r1, 0\n\
-adds r0, 0x5A\n\
-lsls r0, 16\n\
-lsrs r1, r0, 16\n\
-adds r0, r5, 0x1\n\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-cmp r5, 0x3\n\
-bls _081195C8\n\
-_081195EA:\n\
-ldr r0, _08119610 @ =gSharedMem + 0x19000\n\
-ldrb r1, [r0, 0x3]\n\
-movs r0, 0x1F\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08119664\n\
-mov r1, r8\n\
-movs r2, 0x2E\n\
-ldrsh r0, [r1, r2]\n\
-cmp r0, 0\n\
-beq _08119658\n\
-movs r0, 0x98\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-negs r1, r1\n\
-bl PlayCry1\n\
-b _08119670\n\
-.align 2, 0\n\
-_08119610: .4byte gSharedMem + 0x19000\n\
-_08119614: .4byte 0x00000000\n\
-_08119618: .4byte gUnknown_083F8DF4\n\
-_0811961C:\n\
-movs r0, 0x1\n\
-mov r3, r8\n\
-strh r0, [r3, 0x2E]\n\
-ldr r2, _08119634 @ =gSharedMem + 0x19000\n\
-ldrb r1, [r2, 0x3]\n\
-subs r0, 0x21\n\
-ands r0, r1\n\
-movs r1, 0x1\n\
-orrs r0, r1\n\
-strb r0, [r2, 0x3]\n\
-b _081195EA\n\
-.align 2, 0\n\
-_08119634: .4byte gSharedMem + 0x19000\n\
-_08119638:\n\
-lsrs r0, r5, 1\n\
-mov r1, r8\n\
-strh r0, [r1, 0x2E]\n\
-ldr r3, _08119654 @ =gSharedMem + 0x19000\n\
-movs r1, 0x1\n\
-ands r1, r5\n\
-ldrb r2, [r3, 0x3]\n\
-movs r0, 0x20\n\
-negs r0, r0\n\
-ands r0, r2\n\
-orrs r0, r1\n\
-strb r0, [r3, 0x3]\n\
-b _081195EA\n\
-.align 2, 0\n\
-_08119654: .4byte gSharedMem + 0x19000\n\
-_08119658:\n\
-movs r0, 0x98\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-bl PlayCry1\n\
-b _08119670\n\
-_08119664:\n\
-movs r0, 0x99\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-negs r1, r1\n\
-bl PlayCry1\n\
-_08119670:\n\
-movs r5, 0x2\n\
-ldr r4, _081196A0 @ =gSharedMem + 0x19000\n\
-adds r0, r4, 0\n\
-adds r0, 0x7F\n\
-ldrb r0, [r0]\n\
-adds r0, 0x2\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r3, r0, 24\n\
-ldrb r1, [r4, 0x3]\n\
-movs r0, 0x1F\n\
-ands r0, r1\n\
-cmp r0, 0x1\n\
-bne _081196A4\n\
-ldrb r1, [r4, 0x4]\n\
-movs r0, 0x3\n\
-ands r0, r1\n\
-cmp r0, 0x1\n\
-bne _081196A4\n\
-mov r0, r9\n\
-adds r0, 0x6\n\
-b _081196A8\n\
-.align 2, 0\n\
-_081196A0: .4byte gSharedMem + 0x19000\n\
-_081196A4:\n\
-mov r2, r9\n\
-adds r0, r2, r5\n\
-_081196A8:\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r9, r0\n\
-cmp r5, r9\n\
-bcs _0811970E\n\
-ldr r6, _08119734 @ =gSharedMem + 0x19000\n\
-ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n\
-_081196B6:\n\
-lsls r0, r3, 3\n\
-ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n\
-adds r0, r1\n\
-ldr r1, [r6, 0x8]\n\
-ldr r2, [r0]\n\
-ands r1, r2\n\
-cmp r1, 0\n\
-bne _081196F8\n\
-mov r0, r10\n\
-adds r1, r0, 0x1\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-mov r10, r1\n\
-add r0, sp\n\
-strb r5, [r0]\n\
-ldr r0, [sp, 0xC]\n\
-cmp r0, 0\n\
-bne _081196F8\n\
-ldrb r0, [r6, 0x1A]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-ldr r1, _08119740 @ =gSharedMem + 0x1901B\n\
-adds r0, r1\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-adds r0, r7\n\
-ldr r0, [r0]\n\
-ands r2, r0\n\
-cmp r2, 0\n\
-beq _081196F8\n\
-str r5, [sp, 0xC]\n\
-_081196F8:\n\
-adds r0, r3, 0x1\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r3, r0, 24\n\
-adds r0, r5, 0x1\n\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-cmp r5, r9\n\
-bcc _081196B6\n\
-_0811970E:\n\
-ldrb r0, [r4, 0x3]\n\
-lsls r0, 27\n\
-lsrs r0, 27\n\
-adds r0, 0x1\n\
-ldrb r1, [r4, 0x2]\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08119756\n\
-ldr r2, [sp, 0xC]\n\
-cmp r2, 0\n\
-beq _08119744\n\
-movs r0, 0xFF\n\
-ldr r3, [sp, 0x10]\n\
-ands r0, r3\n\
-cmp r0, 0xBF\n\
-bhi _08119744\n\
-mov r0, r8\n\
-strh r2, [r0, 0x3C]\n\
-b _08119766\n\
-.align 2, 0\n\
-_08119734: .4byte gSharedMem + 0x19000\n\
-_08119738: .4byte gUnknown_083F8C00 + 0xC\n\
-_0811973C: .4byte gUnknown_083F8D90 + 0x4\n\
-_08119740: .4byte gSharedMem + 0x1901B\n\
-_08119744:\n\
-ldr r0, [sp, 0x10]\n\
-mov r1, r10\n\
-bl __modsi3\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-mov r1, r8\n\
-strh r0, [r1, 0x3C]\n\
-b _08119766\n\
-_08119756:\n\
-ldr r0, [sp, 0x10]\n\
-mov r1, r10\n\
-bl __modsi3\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-mov r2, r8\n\
-strh r0, [r2, 0x3C]\n\
-_08119766:\n\
-ldr r3, _0811977C @ =sub_8118CEC\n\
-mov r0, r8\n\
-str r3, [r0, 0x1C]\n\
-add sp, 0x14\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_0811977C: .4byte sub_8118CEC\n\
-.syntax divided\n");
+ asm_unified("push {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x14\n"
+ "\tmov r8, r0\n"
+ "\tmovs r0, 0\n"
+ "\tmov r10, r0\n"
+ "\tmovs r1, 0x5\n"
+ "\tmov r9, r1\n"
+ "\tmovs r2, 0\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tmov r0, sp\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0xA\n"
+ "\tbl memset\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tldr r7, _08119610 @ =gSharedMem + 0x19000\n"
+ "\tadds r0, r7, 0\n"
+ "\tadds r0, 0x7D\n"
+ "\tmovs r6, 0x1\n"
+ "\tstrb r6, [r0]\n"
+ "\tldrb r4, [r7, 0x3]\n"
+ "\tmovs r0, 0x20\n"
+ "\torrs r4, r0\n"
+ "\tmovs r0, 0x41\n"
+ "\tnegs r0, r0\n"
+ "\tands r4, r0\n"
+ "\tstrb r4, [r7, 0x3]\n"
+ "\tadds r1, r7, 0\n"
+ "\tadds r1, 0x7E\n"
+ "\tmovs r0, 0xFF\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r5, r7, 0\n"
+ "\tadds r5, 0x88\n"
+ "\tmov r3, r8\n"
+ "\tmovs r1, 0x34\n"
+ "\tldrsh r0, [r3, r1]\n"
+ "\tbl __floatsisf\n"
+ "\tstr r0, [r5]\n"
+ "\tadds r1, r7, 0\n"
+ "\tadds r1, 0x98\n"
+ "\tldr r0, _08119614 @ =0x00000000\n"
+ "\tstr r0, [r1]\n"
+ "\tadds r3, r7, 0\n"
+ "\tadds r3, 0x8C\n"
+ "\tldr r2, _08119618 @ =gUnknown_083F8DF4\n"
+ "\tldrb r0, [r7, 0x4]\n"
+ "\tlsls r0, 30\n"
+ "\tlsrs r1, r0, 25\n"
+ "\tadds r2, 0x1C\n"
+ "\tadds r1, r2\n"
+ "\tldr r1, [r1]\n"
+ "\tstr r1, [r3]\n"
+ "\tlsrs r0, 30\n"
+ "\tlsls r1, r0, 4\n"
+ "\tsubs r1, r0\n"
+ "\tlsls r1, 1\n"
+ "\tadds r1, 0x21\n"
+ "\tlsls r4, 27\n"
+ "\tlsrs r4, 27\n"
+ "\tsubs r6, r4\n"
+ "\tlsls r0, r6, 4\n"
+ "\tsubs r0, r6\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmov r5, r10\n"
+ "\tmov r3, r8\n"
+ "\tmovs r0, 0x34\n"
+ "\tldrsh r2, [r3, r0]\n"
+ "_081195C8:\n"
+ "\tcmp r1, r2\n"
+ "\tbge _081195D4\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x5A\n"
+ "\tcmp r2, r0\n"
+ "\tble _08119638\n"
+ "_081195D4:\n"
+ "\tcmp r5, 0x3\n"
+ "\tbeq _0811961C\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x5A\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, 0x3\n"
+ "\tbls _081195C8\n"
+ "_081195EA:\n"
+ "\tldr r0, _08119610 @ =gSharedMem + 0x19000\n"
+ "\tldrb r1, [r0, 0x3]\n"
+ "\tmovs r0, 0x1F\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119664\n"
+ "\tmov r1, r8\n"
+ "\tmovs r2, 0x2E\n"
+ "\tldrsh r0, [r1, r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119658\n"
+ "\tmovs r0, 0x98\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tnegs r1, r1\n"
+ "\tbl PlayCry1\n"
+ "\tb _08119670\n"
+ "\t.align 2, 0\n"
+ "_08119610: .4byte gSharedMem + 0x19000\n"
+ "_08119614: .4byte 0x00000000\n"
+ "_08119618: .4byte gUnknown_083F8DF4\n"
+ "_0811961C:\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r3, r8\n"
+ "\tstrh r0, [r3, 0x2E]\n"
+ "\tldr r2, _08119634 @ =gSharedMem + 0x19000\n"
+ "\tldrb r1, [r2, 0x3]\n"
+ "\tsubs r0, 0x21\n"
+ "\tands r0, r1\n"
+ "\tmovs r1, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r2, 0x3]\n"
+ "\tb _081195EA\n"
+ "\t.align 2, 0\n"
+ "_08119634: .4byte gSharedMem + 0x19000\n"
+ "_08119638:\n"
+ "\tlsrs r0, r5, 1\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1, 0x2E]\n"
+ "\tldr r3, _08119654 @ =gSharedMem + 0x19000\n"
+ "\tmovs r1, 0x1\n"
+ "\tands r1, r5\n"
+ "\tldrb r2, [r3, 0x3]\n"
+ "\tmovs r0, 0x20\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r3, 0x3]\n"
+ "\tb _081195EA\n"
+ "\t.align 2, 0\n"
+ "_08119654: .4byte gSharedMem + 0x19000\n"
+ "_08119658:\n"
+ "\tmovs r0, 0x98\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tbl PlayCry1\n"
+ "\tb _08119670\n"
+ "_08119664:\n"
+ "\tmovs r0, 0x99\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tnegs r1, r1\n"
+ "\tbl PlayCry1\n"
+ "_08119670:\n"
+ "\tmovs r5, 0x2\n"
+ "\tldr r4, _081196A0 @ =gSharedMem + 0x19000\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r0, 0x7F\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r0, 0x2\n"
+ "\tmovs r1, 0xC\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tldrb r1, [r4, 0x3]\n"
+ "\tmovs r0, 0x1F\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _081196A4\n"
+ "\tldrb r1, [r4, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _081196A4\n"
+ "\tmov r0, r9\n"
+ "\tadds r0, 0x6\n"
+ "\tb _081196A8\n"
+ "\t.align 2, 0\n"
+ "_081196A0: .4byte gSharedMem + 0x19000\n"
+ "_081196A4:\n"
+ "\tmov r2, r9\n"
+ "\tadds r0, r2, r5\n"
+ "_081196A8:\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r9, r0\n"
+ "\tcmp r5, r9\n"
+ "\tbcs _0811970E\n"
+ "\tldr r6, _08119734 @ =gSharedMem + 0x19000\n"
+ "\tldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n"
+ "_081196B6:\n"
+ "\tlsls r0, r3, 3\n"
+ "\tldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r6, 0x8]\n"
+ "\tldr r2, [r0]\n"
+ "\tands r1, r2\n"
+ "\tcmp r1, 0\n"
+ "\tbne _081196F8\n"
+ "\tmov r0, r10\n"
+ "\tadds r1, r0, 0x1\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tmov r10, r1\n"
+ "\tadd r0, sp\n"
+ "\tstrb r5, [r0]\n"
+ "\tldr r0, [sp, 0xC]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _081196F8\n"
+ "\tldrb r0, [r6, 0x1A]\n"
+ "\tlsls r0, 28\n"
+ "\tlsrs r0, 28\n"
+ "\tldr r1, _08119740 @ =gSharedMem + 0x1901B\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 2\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tldr r0, [r0]\n"
+ "\tands r2, r0\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _081196F8\n"
+ "\tstr r5, [sp, 0xC]\n"
+ "_081196F8:\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tmovs r1, 0xC\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, r9\n"
+ "\tbcc _081196B6\n"
+ "_0811970E:\n"
+ "\tldrb r0, [r4, 0x3]\n"
+ "\tlsls r0, 27\n"
+ "\tlsrs r0, 27\n"
+ "\tadds r0, 0x1\n"
+ "\tldrb r1, [r4, 0x2]\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119756\n"
+ "\tldr r2, [sp, 0xC]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _08119744\n"
+ "\tmovs r0, 0xFF\n"
+ "\tldr r3, [sp, 0x10]\n"
+ "\tands r0, r3\n"
+ "\tcmp r0, 0xBF\n"
+ "\tbhi _08119744\n"
+ "\tmov r0, r8\n"
+ "\tstrh r2, [r0, 0x3C]\n"
+ "\tb _08119766\n"
+ "\t.align 2, 0\n"
+ "_08119734: .4byte gSharedMem + 0x19000\n"
+ "_08119738: .4byte gUnknown_083F8C00 + 0xC\n"
+ "_0811973C: .4byte gUnknown_083F8D90 + 0x4\n"
+ "_08119740: .4byte gSharedMem + 0x1901B\n"
+ "_08119744:\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tmov r1, r10\n"
+ "\tbl __modsi3\n"
+ "\tadd r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1, 0x3C]\n"
+ "\tb _08119766\n"
+ "_08119756:\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tmov r1, r10\n"
+ "\tbl __modsi3\n"
+ "\tadd r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r2, r8\n"
+ "\tstrh r0, [r2, 0x3C]\n"
+ "_08119766:\n"
+ "\tldr r3, _0811977C @ =sub_8118CEC\n"
+ "\tmov r0, r8\n"
+ "\tstr r3, [r0, 0x1C]\n"
+ "\tadd sp, 0x14\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811977C: .4byte sub_8118CEC");
}
#endif
void sub_8119780(struct Sprite *sprite)
{
- if (!(sprite->data[0x1]++ < sprite->data[0x3]))
+ if (sprite->data[1]++ >= sprite->data[3])
{
- if ((sprite->pos1.x -= 0x2) < -0x10)
+ sprite->pos1.x -= 2;
+ if (sprite->pos1.x < -16)
{
if (!eRoulette->var03_6)
- {
eRoulette->var03_6 = TRUE;
- }
DestroySprite(sprite);
- eRoulette->var01 = 0x0;
- eRoulette->var34 = gUnknown_083FA61E[0x0];
+ eRoulette->var01 = 0;
+ eRoulette->var34 = gUnknown_083FA61E[0];
}
}
}
@@ -4403,18 +3055,19 @@ void sub_81197D8(struct Sprite *sprite)
{
u16 t[0x3][0x4];
s32 p, z;
- memcpy(t, &gUnknown_083FA632, 0x18);
- if (sprite->data[0x1]++ < sprite->data[0x3])
+
+ memcpy(t, &gUnknown_083FA632, 24);
+ if (sprite->data[1]++ < sprite->data[3])
{
- if(sprite->data[0x1] & 0x1)
+ if (sprite->data[1] & 1)
{
- gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]];
- p = z = sprite->data[0x7] + 0x1;
+ gSpriteCoordOffsetY = t[sprite->data[2] / 2][sprite->data[7]];
+ p = z = sprite->data[7] + 1;
if (z < 0)
- p += 0x3;
- sprite->data[0x7] = z - ((p >> 2) * 4);
+ p += 3;
+ sprite->data[7] = z - ((p >> 2) * 4);
}
- sprite->invisible ^= 0x1;
+ sprite->invisible ^= 1;
}
else
{
@@ -4447,7 +3100,7 @@ void sub_8119898(struct Sprite *sprite)
void sub_8119964(struct Sprite *sprite)
{
- if(sprite->data[0x7] == 0x0)
+ if (sprite->data[0x7] == 0x0)
{
register u32 t asm("r2");
u32 z ;
@@ -4523,7 +3176,7 @@ void sub_8119AAC(struct Sprite *sprite)
void sub_8119B24(struct Sprite *sprite)
{
- if (!(sprite->data[0x1] < 0x0))
+ if (sprite->data[0x1] >= 0x0)
{
sprite->data[0x1]--;
sprite->pos1.y--;
@@ -4532,7 +3185,7 @@ void sub_8119B24(struct Sprite *sprite)
}
else
{
- if (!(sprite->data[0x3] < 0x0))
+ if (sprite->data[0x3] >= 0x0)
{
sprite->data[0x3]--;
if (sprite->animDelayCounter == 0x0)
@@ -4571,7 +3224,7 @@ void sub_8119BCC(struct Sprite *sprite)
}
else
{
- if (!(sprite->data[0x1] < 0x0))
+ if (sprite->data[0x1] >= 0x0)
{
sprite->pos1.x += t[eRoulette->var38->data[0x0]] * z[0x7 - sprite->data[0x1]][0x0];
sprite->pos1.y += z[0x7 - sprite->data[0x1]][0x1];
@@ -4579,10 +3232,10 @@ void sub_8119BCC(struct Sprite *sprite)
else
{
m4aSongNumStartOrChange(0x5E);
- if(eRoulette->var38->data[0x0] == 0x0)
- PlayCry1(0x130, 0x3F);
+ if (eRoulette->var38->data[0x0] == 0x0)
+ PlayCry1(SPECIES_TAILLOW, 0x3F);
else
- PlayCry1(0x130, -0x3F);
+ PlayCry1(SPECIES_TAILLOW, -0x3F);
StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2);
sprite->data[0x1] = 45;
sprite->callback = &sub_8119B24;
@@ -4594,7 +3247,7 @@ void sub_8119D08(struct Sprite *sprite)
{
s8 t[0x2]; //sign
memcpy(t, &gUnknown_083FA64A, 0x2);
- if (!(sprite->data[0x1]-- < 0x0))
+ if (sprite->data[0x1]-- >= 0x0)
{
sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
gSprites[sprite->data[0x6]].invisible ^= 0x1;