summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorM <No Email>2018-01-06 00:21:01 +0100
committerMade-s <made111@gmx.de>2018-01-06 00:24:34 +0100
commite9bb490023f346697b4f432a9add1fe158f2038d (patch)
tree2cba636ce459725a3a6b833a94ff0be750cb4394 /src
parentba4b0d8dd2587667c04e6cc63e31afe16fba1381 (diff)
finish roulette file
Diffstat (limited to 'src')
-rw-r--r--src/roulette.c2260
-rw-r--r--src/roulette_util.c615
2 files changed, 1899 insertions, 976 deletions
diff --git a/src/roulette.c b/src/roulette.c
index 0250857a2..36c15bf23 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -1,60 +1,121 @@
#include "global.h"
-#include "roulette.h"
-#include "roulette_util.h"
-#include "task.h"
-#include "palette.h"
-#include "text.h"
-#include "pokemon.h"
-#include "species.h"
-#include "rtc.h"
+
+#include "ewram.h"
+#include "field_fadetransition.h"
+#include "game_stat.h"
+#include "m4a.h"
#include "main.h"
-#include "menu_helpers.h"
-#include "unknown_task.h"
#include "menu.h"
-#include "trig.h"
-#include "sprite.h"
#include "menu_cursor.h"
-#include "sound.h"
-#include "songs.h"
-#include "m4a.h"
-#include "rng.h"
-#include "game_stat.h"
+#include "menu_helpers.h"
#include "overworld.h"
-#include "string_util.h"
-#include "field_fadetransition.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "rng.h"
+#include "roulette.h"
+#include "roulette_util.h"
+#include "rtc.h"
+#include "songs.h"
+#include "sound.h"
#include "script.h"
+#include "species.h"
+#include "sprite.h"
#include "strings2.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "trig.h"
+#include "unknown_task.h"
asm(".include \"constants/gba_constants.inc\"");
-extern u8 gUnknown_02019000[];
-extern u16 gSpecialVar_0x8004;
-extern struct Unkg083F8DF4 gUnknown_083F8DF4[];
-extern u8 gUnknown_083F8EC4;
-extern u8 gUnknown_083F8DF0[];
-extern u8 gUnknown_083F8E34[];
-extern const u8 gUnknown_08E8096C[];
-extern const u8 gRouletteWheelTiles[];
-extern const u8 gRouletteCenter_Gfx[];
-extern const u8 gRouletteHeadersTiles[];
-extern const u8 gRouletteCreditTiles[];
-extern const u8 gRouletteNumbersTiles[];
-extern const u8 gRouletteMultiplierTiles[];
-extern const u8 gUnknown_083F86BC[];
-extern const u8 gUnknown_083F88BC[];
-extern const u8 gUnknown_083F8A60[];
-
-extern u16 gPlttBufferFaded[];
-extern u16 gPlttBufferUnfaded[];
-
-extern const u8 gUnknown_081C4157[];
+struct OamMatrix
+{
+ s16 a;
+ s16 b;
+ s16 c;
+ s16 d;
+};
-extern const struct YesNoFuncTable gUnknown_083F8EBC;
-extern const u8 gUnknown_081C41E3;
+struct Roulette /* ewram + 0x19000 */
+{
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03_0:5;
+ u8 var03_5:1;
+ u8 var03_6:1;
+ u8 var03_7:1;
+ u8 var04_0:2;
+ u8 var04_2:5;
+ u8 var04_7:1;
+ u32 var08;
+ u8 var0C[0x6];
+ u8 var12[0x4];
+ u8 var16[0x3];
+ u8 var19;
+ u8 var1A_0:4;
+ u8 var1A_4:4;
+ u8 var1B[0x6];
+ u8 var21;
+ u8 var22;
+ u8 var23;
+ s16 var24;
+ s16 var26;
+ s16 var28;
+ s16 var2A;
+ struct OamMatrix var2C;
+ u16 var34;
+ struct Sprite *var38;
+ u8 var3C[0x40]; // Sprite IDs
+ u8 var7C;
+ u8 var7D;
+ u8 var7E;
+ u8 var7F;
+ s16 var80;
+ s16 var82;
+ s16 var84;
+ s16 var86;
+ float var88;
+ float var8C;
+ float var90;
+ float var94;
+ float var98;
+ float var9C;
+ float varA0;
+ u8 varA4;
+ u8 varA5;
+ u8 v51[0x2];
+ u16 varA8;
+ u16 varAA;
+ TaskFunc varAC;
+ u8 v46[0x4];
+ TaskFunc varB4;
+ struct UnkStruct0 varB8;
+};
-extern const u16 gUnknown_083F8ECE;
+struct StructgUnknown_083F8DF4
+{
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03;
+ u8 var04;
+ u8 v[0x3];
+ u16 var08;
+ u16 var0A;
+ u16 var0C;
+ u16 v13[0x1];
+ u16 var10;
+ u16 var12;
+ u16 var14;
+ u8 v1[0x2];
+ u16 var18;
+ u16 var1A;
+ float var1C;
+};
-struct StructUnknown_083F8C00
+struct StructgUnknown_083F8C00
{
u8 var00;
u8 var01_0:4;
@@ -63,8 +124,8 @@ struct StructUnknown_083F8C00
u8 var03;
u8 var04;
u8 var05;
- u8 var06;
- u8 var07;
+ u8 var06;
+ u8 var07;
u32 var08;
u32 var0C;
u16 var10;
@@ -80,35 +141,147 @@ struct StructgUnknown_083F8D90
u32 var04;
};
-extern const struct StructUnknown_083F8C00 gUnknown_083F8C00[];
+static void sub_81150FC(void);
+static void sub_8115124(void);
+static void sub_8115238(void);
+static void sub_8115384(void);
+static void sub_8115634(u8);
+static void sub_81156BC(u8);
+static void sub_8115734(u8);
+void sub_811577C(u8);
+void sub_81157AC(u8);
+static void sub_81157D0(u8);
+static void sub_8115928(u8, u8);
+static void sub_811597C(u8);
+static void sub_81159BC(u8);
+static u8 sub_8115A94(s16 *, u8);
+void sub_8115B58(u8);
+static void sub_8115DA0(u8);
+static void sub_8115E14(u8);
+static void sub_8115ECC(u8);
+u8 sub_8115F58(u16, u16);
+static void sub_8116100(u8);
+void sub_8116308(u8);
+static void sub_811637C(u8);
+static void sub_8116474(u8);
+static void sub_8116514(u8);
+static void sub_811659C(u8);
+static void sub_8116638(u8);
+static void sub_81166E8(u8);
+static void sub_811677C(u8);
+static void sub_81167F4(u8);
+static void sub_8116880(u8);
+static void dp01t_12_3_battle_menu(u8);
+static void sub_8116AB0(u8);
+static void sub_8116B40(u8);
+static void sub_8116BC0(u8);
+static void sub_8116C34(u8, TaskFunc, u16, u16);
+static void sub_8116CAC(u8);
+static void sub_8116CF8(void);
+static u8 sub_8116D54(u8, u8);
+static u8 sub_8116E5C(u8, u8);
+static void sub_8116EF8(u8);
+static void sub_8117158(u8);
+static u8 sub_8117380(u8);
+static void sub_8117434(void);
+static void sub_81174F8(u8);
+static void sub_8117528(u8);
+void sub_811755C(u8);
+void sub_81175C0(u8);
+static void sub_81175DC(u8);
+static void sub_8117630(u8);
+static void Task_Roulette_0(u8);
+static void sub_8117838(u8);
+static u8 sub_8117890(const struct SpriteTemplate *, u8, u16 *);
+static void sub_8117900(void);
+void unref_sub_8117A74(void);
+static void sub_8117AA8(u8, u8);
+static void sub_8117BBC(void);
+static void sub_8117C60(u8, u8);
+static void sub_8117D68(u8);
+static void sub_8117DF4(void);
+void sub_8117E98(struct Sprite *);
+static void sub_8117F2C(void);
+static void sub_81180F4(u16);
+static u8 sub_81181E8(u8);
+static void sub_811829C(u8);
+static void sub_81182F8(u8);
+void sub_81184CC(struct Sprite *);
+static void sub_81184D8(void);
+void sub_8118554(struct Sprite *);
+static void sub_811857C(void);
+static void sub_81185E8(void);
+static s16 sub_811866C(struct Sprite *);
+static u8 sub_81186B8(struct Sprite *);
+static s16 sub_81186E8(struct Sprite *);
+static void sub_8118724(struct Sprite *);
+static void sub_8118834(struct Sprite *);
+static void sub_811889C(struct Sprite *);
+static void sub_81189A8(struct Sprite *);
+static void sub_8118B30(struct Sprite *);
+static void sub_8118BD8(struct Sprite *);
+static void sub_8118CAC(struct Sprite *);
+void sub_8118CEC(struct Sprite *);
+void sub_8118D2C(struct Sprite *);
+static void sub_8118DE4(struct Sprite *);
+static void sub_8118F8C(struct Sprite *);
+static void sub_8119088(struct Sprite *);
+static void sub_8119134(struct Sprite *);
+static void sub_81191F4(struct Sprite *);
+static void sub_8119224(struct Sprite *);
+static void sub_81193D4(struct Sprite *);
+static void sub_811952C(struct Sprite *);
+static void sub_8119780(struct Sprite *);
+static void sub_81197D8(struct Sprite *);
+static void sub_8119898(struct Sprite *);
+void sub_8119964(struct Sprite *);
+static void sub_8119A90(struct Sprite *);
+static void sub_8119AAC(struct Sprite *);
+static void sub_8119B24(struct Sprite *);
+static void sub_8119BCC(struct Sprite *);
+static void sub_8119D08(struct Sprite *);
+void sub_8119D80(struct Sprite *);
+extern u8 gUnknown_02019000[];
+extern u16 gSpecialVar_0x8004;
+extern struct StructgUnknown_083F8DF4 gUnknown_083F8DF4[];
+extern u8 gUnknown_083F8EC4;
+extern u8 gUnknown_083F8DF0[];
+extern u8 gUnknown_083F8E34[];
+extern const u8 gUnknown_08E8096C[];
+extern const u8 gRouletteWheelTiles[];
+extern const u8 gRouletteCenter_Gfx[];
+extern const u8 gRouletteHeadersTiles[];
+extern const u8 gRouletteCreditTiles[];
+extern const u8 gRouletteNumbersTiles[];
+extern const u8 gRouletteMultiplierTiles[];
+extern const u16 gUnknown_083F86BC[];
+extern const u8 gUnknown_083F88BC[];
+extern const u8 gUnknown_083F8A60[];
+extern u16 gPlttBufferFaded[];
+extern u16 gPlttBufferUnfaded[];
+extern const u8 gUnknown_081C4157[];
+extern const struct YesNoFuncTable gUnknown_083F8EBC;
+extern const u8 gUnknown_081C41E3;
+extern const u16 gUnknown_083F8ECE;
+extern const struct StructgUnknown_083F8C00 gUnknown_083F8C00[];
const extern u8 gUnknown_083F8ECA[];
-
const extern u8 gUnknown_081C41A5;
const extern u8 gUnknown_081C4199;
const extern u8 gUnknown_081C41AE;
-
const extern u8 gUnknown_081C41BD;
-
const extern u8 gUnknown_081C41F1;
const extern u8 gUnknown_081C4231;
const extern u8 gUnknown_081C41D2;
-
extern const struct StructgUnknown_083F8D90 gUnknown_083F8D90[];
extern const u32 gUnknown_083F8ED8[];
extern const u32 gUnknown_083F8EE8[];
-
extern const struct UnkStruct1 gUnknown_083F8E9C[];
-
extern const u8 gUnknown_083F8EF4[];
-
extern const struct YesNoFuncTable gUnknown_083F8EB4;
-
-//Strings TODO: give proper names
extern const u8 gUnknown_081C40DF;
extern const u8 gUnknown_081C4139;
extern const u8 gUnknown_081C411C;
-
extern const u8 gUnknown_083F92A8[];
extern const u8 gUnknown_083F90FC[];
extern const u8 gUnknown_083F9D3C[];
@@ -118,195 +291,34 @@ extern const struct SpriteSheet gUnknown_083F9F5C;
extern const struct SpriteTemplate gSpriteTemplate_83FA07C[];
extern const struct SpriteTemplate gSpriteTemplate_83F9FD4[];
extern const struct SpriteTemplate gSpriteTemplate_83FA034[];
-
extern const struct SpriteTemplate gSpriteTemplate_83FA40C;
-
extern const struct SpriteSheet gUnknown_083F9EE8;
extern const struct SpriteTemplate gSpriteTemplate_83FA0DC[];
-
extern struct OamMatrix gOamMatrices[];
-
extern const struct SpriteSheet gUnknown_083FA21C[];
extern const struct SpriteTemplate gSpriteTemplate_83FA2B0;
extern const struct SpriteTemplate gSpriteTemplate_83FA2C8;
extern const struct SpriteTemplate gSpriteTemplate_83FA2E0;
extern const struct SpriteTemplate gSpriteTemplate_83FA2F8;
extern const struct SpriteTemplate gSpriteTemplate_83FA310;
-
extern const u8 gUnknown_083FA608[0x5];
-
extern const struct SpriteSheet gUnknown_083FA42C;
extern const struct SpriteTemplate gSpriteTemplate_83FA434;
-
extern void (*gFieldCallback)(void);
-
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
+extern const u16 gUnknown_083FA60E[0x2][0x2];
+extern const struct SpriteTemplate gSpriteTemplate_83FA50C;
+extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[];
+extern const u16 gUnknown_083FA616[0x2][0x2];
+extern const struct SpriteTemplate gSpriteTemplate_83FA524;
+extern const struct SpriteTemplate gSpriteTemplate_83FA5F0;
+extern const u16 gUnknown_083FA61E[0xA];
+extern const u16 gUnknown_083FA632[];
+extern const s8 gUnknown_083FA64A[0x2];
+extern const s8 gUnknown_083FA64C[0x8][0x2];
-void sub_8117434(void);
-
-void sub_8117838(u8);
-void sub_811857C(void);
-void sub_81184D8(void);
-void sub_8117F2C(void);
-void sub_8117900(void);
-void sub_8117BBC(void);
-void sub_8117DF4(void);
-
-void sub_81180F4(u16);
-void sub_81182F8(u8);
-void sub_811829C(u8);
-void sub_8117158(u8);
-
-void sub_81156BC(u8);
-void sub_8115634(u8);
-
-void sub_8116CAC(u8);
-void sub_8116CF8(void);
-void sub_81185E8(void);
-void sub_81182F8(u8);
-void sub_81159BC(u8);
-void sub_8116C34(u8, TaskFunc, u16, u16);
-
-void sub_8116AB0(u8);
-
-void sub_8115E14(u8);
-
-void sub_8116EF8(u8);
-void sub_8115ECC(u8);
-
-u8 sub_8117380(u8);
-
-void sub_8117AA8(u8, u8);
-void sub_8117C60(u8, u8);
-void sub_8116100(u8);
-
-void sub_8116308(u8);
-
-void sub_81191F4(struct Sprite *);
-void sub_811637C(u8);
-
-u8 sub_8116D54(u8, u8);
-u8 sub_8116E5C(u8 ,u8);
-void sub_8116474(u8);
-
-void sub_81184CC(struct Sprite *);
-void sub_8117D68(u8);
-void sub_8116514(u8);
-
-void sub_8116638(u8);
-
-void sub_811677C(u8);
-void sub_81167F4(u8);
-
-void sub_8116880(u8);
-void sub_81157AC(u8);
-
-void sub_8116B40(u8);
-
-void sub_8119224(struct Sprite *);
-void sub_81193D4(struct Sprite *);
-void sub_811952C(struct Sprite *);
-
-
-
-void dp01t_12_3_battle_menu(u8);
-
-extern u8 gSharedMem[];
-
-#define ewram17000 ((u16 *) (gSharedMem + 0x17000)) //money stuff?
-#define ewram17E00 ((u16 *) (gSharedMem + 0x17E00))
-#define ewram17800 ((u16 *) (gSharedMem + 0x17800))
-#define ewram18000 ((u16 *) (gSharedMem + 0x18000))
-#define ewram18800 ((u16 *) (gSharedMem + 0x18800))
-#define ewram189a0 ((u16 *) (gSharedMem + 0x189a0))
-#define ewram18a20 ((u16 *) (gSharedMem + 0x18a20))
-#define ewram18a32 ((u16 *) (gSharedMem + 0x18A32))
-#define ewram18a80 ((u16 *) (gSharedMem + 0x18a80))
-#define RDATA ((struct RData *) (gSharedMem + 0x19000))
-
-struct OamMatrix
-{
- s16 a;
- s16 b;
- s16 c;
- s16 d;
-};
-
-struct Unkg083F8DF4
-{
- u8 var00;
- u8 var01;
- u8 var02;
- u8 var03;
- u8 var04;
- u8 v[0x7];
- u16 var0C;
- u8 v1[0xA];
- u16 var18;
- u16 var1A; //is this signed or not ?
- float var1C;
-};
-
-struct RData /* ewram + 0x19000 */
-{
- u8 var00;
- u8 var01;
- u8 var02;
- u8 var03_0:5;
- u8 var03_5:1;
- u8 var03_6:1;
- u8 var03_7:1;
- u8 var04_0:2;
- u8 var04_2:5;
- u8 var04_7:1;
- u8 v7[0x3];
- u32 var08;
- u8 var0C[0x6];
- u8 var12[0x4];
- u8 var16[0x3];
- u8 var19;
- u8 var1A_0:4;
- u8 var1A_4:4;
- u8 var1B[0x6];
- u8 var21;
- u8 var22;
- u8 var23;
- s16 var24;
- s16 var26;
- s16 var28;
- s16 var2A;
- struct OamMatrix var2C;
- u16 var34;
- u8 v99[0x2];
- struct Sprite *var38;
- u8 var3C[0x40]; // Sprite IDs ? TODO: add some defines for the different areas
- u8 var7C;
- u8 var7D;
- u8 var7E;
- u8 var7F;
- s16 var80;
- s16 var82;
- s16 var84;
- s16 var86;
- float var88;
- float var8C;
- float var90;
- float var94;
- float var98;
- float var9C;
- float varA0;
- u8 varA4;
- u8 varA5; // taskid
- u8 v51[0x2];
- u16 varA8;
- u16 varAA;
- TaskFunc varAC;
- u8 v46[0x4];
- TaskFunc varB4;
- struct UnkStruct0 varB8;
-};
void sub_81150FC(void)
@@ -314,8 +326,8 @@ void sub_81150FC(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- if (RDATA->varB8.val0)
- task_tutorial_controls_fadein(&RDATA->varB8);
+ if (eRoulette->varB8.var00)
+ task_tutorial_controls_fadein(&eRoulette->varB8);
}
void sub_8115124(void)
@@ -324,20 +336,20 @@ void sub_8115124(void)
ProcessSpriteCopyRequests();
TransferPlttBuffer();
sub_8117434();
- REG_BG1HOFS = 0x200 - RDATA->var26;
- if (RDATA->var01)
- REG_BLDALPHA = RDATA->var34;
- if (RDATA->var2A != 0)
+ REG_BG1HOFS = 0x200 - eRoulette->var26;
+ if (eRoulette->var01)
+ REG_BLDALPHA = eRoulette->var34;
+ if (eRoulette->var2A != 0)
{
DmaCopy16(3, &gBGTilemapBuffers[1][0xE0], (void *)(VRAM + 0x21C0), 0x340);
- RDATA->var2A = 0x0;
+ eRoulette->var2A = 0x0;
}
- switch (RDATA->var28)
+ switch (eRoulette->var28)
{
case 0x1:
REG_BG0CNT = (0x20 * 0xF8);
DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340);
- RDATA->var28 = 0x2;
+ eRoulette->var28 = 0x2;
break;
case 0x2:
DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340);
@@ -345,59 +357,61 @@ void sub_8115124(void)
case 0xFF:
REG_BG0CNT = 0x1F08;
DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340);
- RDATA->var28 = 0x0;
+ eRoulette->var28 = 0x0;
break;
case 0x0:
}
}
#ifdef NONMATCHING
+
void sub_8115238(void)
{
u8 i;
u32 temp;
- struct Unkg083F8DF4 *s0;
- u16 arr[0x3]; // the third is never used ?
+ 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);
- memset(RDATA, 0x0, 0x17C);
- RDATA->var04_0 = (gSpecialVar_0x8004 & 0x1);
+ memset(eRoulette, 0x0, 0x17C);
+ eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1);
if (gSpecialVar_0x8004 & 0x80)
- RDATA->var04_7 = 0x1;
+ eRoulette->var04_7 = 0x1;
s0 = &gUnknown_083F8DF4[0];
- RDATA->var22 = s0[RDATA->var04_0].var03;
- RDATA->var23 = s0[RDATA->var04_0].var04;
- temp = gUnknown_083F8DF0[RDATA->var04_0 + RDATA->var04_7 * 2];
- RDATA->var19 = temp;
- RDATA->var1A_4 = 0x1;
+ 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->var1A_4 = 0x1;
if (temp == 0x1)
{
- u16 *faded = &gPlttBufferFaded[0];
- u16 *unfaded = &gPlttBufferUnfaded[0];
- faded[0x51] = arr[0];
- faded[0x0] = arr[0];
- unfaded[0x51] = arr[0];
- unfaded[0x0] = arr[0];
+ unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
+ faded = (struct PlttData *)&gPlttBufferFaded[0];
+ t = arr[0];
}
else
{
- u16 *faded = &gPlttBufferFaded[0];
- u16 *unfaded = &gPlttBufferUnfaded[0];
- faded[0x51] = arr[1];
- faded[0x0] = arr[1];
- unfaded[0x51] = arr[1];
- unfaded[0x0] = arr[1];
+ unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
+ faded = (struct PlttData *)&gPlttBufferFaded[0];
+ t = arr[1];
}
- sub_8124918((&RDATA->varB8));
+ faded[0x51] = t;
+ faded[0x0] = faded[0x51];
+ unfaded[0x51] = t;
+ unfaded[0x0] = t;
+ sub_8124918((&eRoulette->varB8));
for (i = 0; i < 0xD; i++)
- sub_812492C((&RDATA->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]);
+ sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]);
for (i = 0; i < 0x6; i++)
{
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
{
case SPECIES_TAILLOW:
- RDATA->var02 |= 0x2;
+ eRoulette->var02 |= 0x2;
break;
case SPECIES_SHROOMISH:
- RDATA->var02 |= 0x1;
+ eRoulette->var02 |= 0x1;
break;
}
}
@@ -639,10 +653,10 @@ void sub_8115384(void)
REG_DISPSTAT |= 0x8;
SetVBlankCallback(&sub_8115124);
BeginHardwarePaletteFade(0xFF, 0x0, 0x10, 0x0 , 0x1);
- taskid = RDATA->varA4 = CreateTask(&sub_81156BC, 0x0);
+ taskid = eRoulette->varA4 = CreateTask(&sub_81156BC, 0x0);
gTasks[taskid].data[0x6] = 0x6;
gTasks[taskid].data[0xD] = gSaveBlock1.coins;
- RDATA->varA5 = CreateTask(&sub_8115634, 0x1);
+ eRoulette->varA5 = CreateTask(&sub_8115634, 0x1);
SetMainCallback2(&sub_81150FC);
break;
}
@@ -653,20 +667,20 @@ void sub_8115634(u8 unused)
s16 sin;
s16 cos;
s32 cos32;
- if (RDATA->var21++ == RDATA->var23)
+ if (eRoulette->var21++ == eRoulette->var23)
{
- RDATA->var21 = 0x0;
- if ((RDATA->var24 -= RDATA->var22) < 0)
- RDATA->var24 = 0x168 - RDATA->var22;
+ eRoulette->var21 = 0x0;
+ if ((eRoulette->var24 -= eRoulette->var22) < 0)
+ eRoulette->var24 = 0x168 - eRoulette->var22;
}
- sin = Sin2(RDATA->var24);
- cos = Cos2(RDATA->var24);
+ sin = Sin2(eRoulette->var24);
+ cos = Cos2(eRoulette->var24);
sin = sin / 16;
cos32 = cos / 16;
- RDATA->var2C.d = cos32;
- RDATA->var2C.a = cos32;
- RDATA->var2C.b = sin;
- RDATA->var2C.c = -sin;
+ eRoulette->var2C.d = cos32;
+ eRoulette->var2C.a = cos32;
+ eRoulette->var2C.b = sin;
+ eRoulette->var2C.c = -sin;
}
void sub_81156BC(u8 taskid)
@@ -702,7 +716,7 @@ void sub_811577C(u8 taskid)
void sub_81157AC(u8 taskid)
{
- DestroyTask(RDATA->varA5);
+ DestroyTask(eRoulette->varA5);
sub_8116AB0(taskid);
}
@@ -737,37 +751,37 @@ void sub_81157D0(u8 r0)
}
}
-void sub_8115928(u8 taskid, bool8 r1)
+void sub_8115928(u8 taskid, u8 r1)
{
if (!r1)
sub_811829C(gTasks[taskid].data[0x4]);
else
- sub_811829C(RDATA->var1B[RDATA->var1A_0]);
+ sub_811829C(eRoulette->var1B[eRoulette->var1A_0]);
sub_81157D0(gTasks[taskid].data[0x4]);
}
void sub_811597C(u8 taskid)
{
- RDATA->var28 = 0x1;
+ eRoulette->var28 = 0x1;
sub_81157D0(gTasks[taskid].data[0x4]);
- RDATA->var23 = 0x2;
- RDATA->var21 = 0x0;
+ eRoulette->var23 = 0x2;
+ eRoulette->var21 = 0x0;
gTasks[taskid].func = &sub_8115E14;
}
void sub_81159BC(u8 taskid)
{
s16 i;
- if(RDATA->var08 & 0x20)
+ if(eRoulette->var08 & 0x20)
{
for (i = 0xB; (i < 0xE); i++)
- if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0)
+ if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
break;
}
else
{
for (i = 0x6; (i < 0xA); i++)
- if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0)
+ if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
break;
}
gTasks[taskid].data[0x4] = i;
@@ -779,7 +793,7 @@ void sub_81159BC(u8 taskid)
gTasks[taskid].func = &sub_811597C;
}
-bool8 sub_8115A94(s16 *r0, u8 r1)
+u8 sub_8115A94(s16 *r0, u8 r1)
{
s8 temp1 = 0;
s8 temp = 0;
@@ -829,45 +843,45 @@ void sub_8115B58(u8 r0)
sub_8115928(r0, FALSE);
gTasks[r0].data[0x1] = z;
PlaySE(SE_SELECT);
- sub_8124D3C((&RDATA->varB8), 0xFFFF);
- (&RDATA->varB8)->val3[0xF].field1 = 0x0;
- (&RDATA->varB8)->val3[0xE].field1 = 0x0;
- (&RDATA->varB8)->val3[0xD].field1 = 0x0;
+ 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;
sub_8116EF8(gTasks[r0].data[0x4]);
for (i = 0; i < 0x4; i++)
{
- gSprites[RDATA->var3C[i + 0x29]].oam.tileNum =
- gSprites[RDATA->var3C[i + 0x29]].sheetTileStart
- + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type;
+ gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type;
}
- if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(RDATA->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) )
+ if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(eRoulette->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) )
{
z = gTasks[r0].data[0x4] - 1;
- gSprites[RDATA->var3C[z + 0x29]].oam.tileNum =
- gSprites[RDATA->var3C[z + 0x29]].sheetTileStart
- + (*gSprites[RDATA->var3C[z + 0x29]].anims + 1)->type;
+ gSprites[eRoulette->var3C[z + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[z + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[z + 0x29]].anims + 1)->type;
}
}
}
void sub_8115D58(u8 r0)
{
- RDATA->var28 = 0xFF;
- if (RDATA->var19 == 1)
- RDATA->var23 = 1;
+ eRoulette->var28 = 0xFF;
+ if (eRoulette->var19 == 1)
+ eRoulette->var23 = 1;
else
- RDATA->var23 = 0;
- RDATA->var21 = 0;
+ eRoulette->var23 = 0;
+ eRoulette->var21 = 0;
gTasks[r0].data[0x1] = 0x20;
gTasks[r0].func = &sub_8115ECC;
}
void sub_8115DA0(u8 taskid)
{
- RDATA->var1B[RDATA->var1A_0] = gTasks[taskid].data[0x4];
- gTasks[taskid].data[0x2] = sub_8117380(RDATA->var1B[RDATA->var1A_0]);
- sub_811829C(RDATA->var1B[RDATA->var1A_0]);
- if ((gTasks[taskid].data[0xD] -= RDATA->var19) < 0)
+ eRoulette->var1B[eRoulette->var1A_0] = gTasks[taskid].data[0x4];
+ gTasks[taskid].data[0x2] = sub_8117380(eRoulette->var1B[eRoulette->var1A_0]);
+ sub_811829C(eRoulette->var1B[eRoulette->var1A_0]);
+ if ((gTasks[taskid].data[0xD] -= eRoulette->var19) < 0)
gTasks[taskid].data[0xD] = 0;
sub_81180F4(gTasks[taskid].data[0xD]);
gTasks[taskid].func = &sub_8115D58;
@@ -894,7 +908,7 @@ void sub_8115E14(u8 taskid)
}
if (gMain.newKeys & A_BUTTON)
{
- if ((RDATA->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08))
+ if ((eRoulette->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08))
PlaySE(SE_BOO);
else
{
@@ -910,8 +924,8 @@ void sub_8115ECC(u8 taskid)
{
if (gTasks[taskid].data[0x1] > 0x2)
gSpriteCoordOffsetX += 0x2;
- if ((RDATA->var26 += 0x4) == 0x68)
- gSprites[RDATA->var3C[0x19]].callback = &SpriteCallbackDummy;
+ if ((eRoulette->var26 += 0x4) == 0x68)
+ gSprites[eRoulette->var3C[0x19]].callback = &SpriteCallbackDummy;
}
else
{
@@ -925,7 +939,7 @@ void sub_8115ECC(u8 taskid)
u8 sub_8115F58(u16 r0, u16 r1)
{
u8 timeh;
- switch (RDATA->var02)
+ switch (eRoulette->var02)
{
case 0x1: // SHROOMISH
case 0x2: // TAILLOW
@@ -937,19 +951,19 @@ u8 sub_8115F58(u16 r0, u16 r1)
return 0x1;
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
}
else if (!(r1 & 0x3))
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
}
break;
case 0x3:
@@ -959,8 +973,8 @@ u8 sub_8115F58(u16 r0, u16 r1)
{
if (r0 < 0x6 || (r1 & 0x1))
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
else
{
@@ -969,13 +983,13 @@ u8 sub_8115F58(u16 r0, u16 r1)
}
else if ((r1 & 0x1) && !(r0 < 0x7))
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 4;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 4;
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
break;
case 0:
@@ -990,40 +1004,40 @@ u8 sub_8115F58(u16 r0, u16 r1)
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
}
else if (!(r1 & 0x3))
{
if (!(r0 < 0xD))
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02 / 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
}
}
else if (r1 & (0x80 << 8))
{
if (!(r0 < 0xD))
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var02;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var01;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var01;
}
}
else
{
- struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0];
- return p[RDATA->var04_0].var01 * 2;
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var01 * 2;
}
}
}
@@ -1042,10 +1056,10 @@ void sub_8116100(u8 taskid)
memcpy(angles, &gUnknown_083F8ECE, 0x8);
rand = Random();
randmod = rand % 0x64;
- RDATA->var7C = gTasks[taskid].data[0x6];
- RDATA->var7F = zero;
- RDATA->var7E = zero;
- RDATA->var7D = zero;
+ eRoulette->var7C = gTasks[taskid].data[0x6];
+ eRoulette->var7F = zero;
+ eRoulette->var7E = zero;
+ eRoulette->var7D = zero;
randf = sub_8115F58(gTasks[taskid].data[0x8], rand);
randfinal = (rand % randf) - (randf / 2);
if (gLocalTime.hours < 0xD)
@@ -1056,21 +1070,21 @@ void sub_8116100(u8 taskid)
r5 *= 2;
else
r5 = (1 - r5) * 2;
- g = (&gUnknown_083F8DF4[RDATA->var04_0])->var1A;
- RDATA->var80 = (g + randfinal);
+ g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A;
+ eRoulette->var80 = (g + randfinal);
//
g = ((float)(u16)(g + randfinal)) / 5.0f;
- RDATA->var82 = g * 3;
- RDATA->var84 = g;
- RDATA->var86 = g;
+ eRoulette->var82 = g * 3;
+ eRoulette->var84 = g;
+ eRoulette->var86 = g;
//
- RDATA->var88 = (float)(angles[(rand & 0x1) + r5]);
- RDATA->var8C = (float)((&gUnknown_083F8DF4[RDATA->var04_0])->var18);
- RDATA->var90 = ((RDATA->var8C * 0.5f) - RDATA->var8C) / (float)(u16)(g * 3);
- RDATA->var94 = 68.0f;
- RDATA->var9C = 0.0f;
- RDATA->var98 = -(8.0f / (float)(u16)(g * 3));
- RDATA->varA0 = 36.0f;
+ 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->var94 = 68.0f;
+ eRoulette->var9C = 0.0f;
+ eRoulette->var98 = -(8.0f / (float)(u16)(g * 3));
+ eRoulette->varA0 = 36.0f;
gTasks[taskid].func = &sub_8116308;
}
#else
@@ -1317,9 +1331,9 @@ _08116304: .4byte sub_8116308\n\
void sub_8116308(u8 taskid)
{
u8 index;
- RDATA->var03_7 = 1;
- index = RDATA->var3C[RDATA->var7C];
- RDATA->var38 = &gSprites[index];
+ eRoulette->var03_7 = 1;
+ index = eRoulette->var3C[eRoulette->var7C];
+ eRoulette->var38 = &gSprites[index];
(&gSprites[index])->callback = &sub_81191F4;
gTasks[taskid].data[0x6]++;
gTasks[taskid].data[0x8]++;
@@ -1330,24 +1344,24 @@ void sub_8116308(u8 taskid)
void sub_811637C(u8 taskid)
{
- if (RDATA->var7D)
+ if (eRoulette->var7D)
{
- if (RDATA->var03_5)
+ if (eRoulette->var03_5)
{
- if (RDATA->var03_6)
+ if (eRoulette->var03_6)
{
- RDATA->var03_6 = FALSE;
- RDATA->var03_5 = FALSE;
+ eRoulette->var03_6 = FALSE;
+ eRoulette->var03_5 = FALSE;
}
}
else
{
if (!gTasks[taskid].data[0x1])
{
- u8 temp = sub_8116E5C(sub_8116D54(taskid, RDATA->var7E), RDATA->var1B[RDATA->var1A_0]);
+ u8 temp = sub_8116E5C(sub_8116D54(taskid, eRoulette->var7E), eRoulette->var1B[eRoulette->var1A_0]);
gTasks[taskid].data[0x5] = temp;
if (temp == 1)
- sub_8124CE8((&RDATA->varB8), 0x1000);
+ sub_8124CE8((&eRoulette->varB8), 0x1000);
}
if (gTasks[taskid].data[0x1] < 0x3D)
{
@@ -1357,7 +1371,7 @@ void sub_811637C(u8 taskid)
}
else
{
- sub_8117158(RDATA->var1B[RDATA->var1A_0]);
+ sub_8117158(eRoulette->var1B[eRoulette->var1A_0]);
sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]);
sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1);
gTasks[taskid].data[0x1] = 0x20;
@@ -1373,8 +1387,8 @@ void sub_8116474(u8 taskid)
{
if(gTasks[taskid].data[0x1] > 0x2)
gSpriteCoordOffsetX -= 0x2;
- if((RDATA->var26 -= 0x4) == 0x68)
- gSprites[RDATA->var3C[0x19]].callback = &sub_81184CC;
+ if((eRoulette->var26 -= 0x4) == 0x68)
+ gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC;
}
else
{
@@ -1494,22 +1508,22 @@ void sub_81166E8(u8 taskid)
void sub_811677C(u8 taskid)
{
- ConvertIntToDecimalStringN((u8 *)&gStringVar1, (RDATA->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2);
+ ConvertIntToDecimalStringN((u8 *)&gStringVar1, (eRoulette->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2);
StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD);
MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
MenuPrint((u8 *)&gStringVar4, 0x1, 0xF);
- gTasks[taskid].data[0x1] = (RDATA->var19 * gTasks[taskid].data[0x2]);
+ gTasks[taskid].data[0x1] = (eRoulette->var19 * gTasks[taskid].data[0x2]);
gTasks[taskid].data[0x7] = 0x0;
gTasks[taskid].func = &sub_81166E8;
}
void sub_81167F4(u8 taskid)
{
- sub_8124D3C((&RDATA->varB8), 0xFFFF);
- (&RDATA->varB8)->val3[0xF].field1 = 0x0;
- (&RDATA->varB8)->val3[0xE].field1 = 0x0;
- (&RDATA->varB8)->val3[0xD].field1 = 0x0;
- gSprites[RDATA->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE;
+ 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;
+ gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE;
gTasks[taskid].func = &sub_8116880;
}
@@ -1517,16 +1531,16 @@ void sub_8116880(u8 taskid)
{
u8 i = 0;
gTasks[taskid].data[0x4] = i;
- RDATA->var1B[RDATA->var1A_0] = 0x0;
+ eRoulette->var1B[eRoulette->var1A_0] = 0x0;
sub_8117158(0x0);
- gSprites[RDATA->var3C[0x30]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
for (i = 0; i < 0x4; i++)
{
- gSprites[RDATA->var3C[i + 0x29]].oam.tileNum =
- gSprites[RDATA->var3C[i + 0x29]].sheetTileStart
- + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type;
+ gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type;
}
- if (!(gTasks[taskid].data[0xD] < RDATA->var19))
+ if (!(gTasks[taskid].data[0xD] < eRoulette->var19))
{
if (gTasks[taskid].data[0x6] == 0x6)
{
@@ -1563,7 +1577,7 @@ void dp01t_12_3_battle_menu(u8 taskid)
sub_8117158(0x0);
sub_81182F8(0x6);
for (i = 0; i < 0xC; i++)
- gSprites[RDATA->var3C[i + 0x7]].invisible = FALSE;
+ gSprites[eRoulette->var3C[i + 0x7]].invisible = FALSE;
if (gTasks[taskid].data[0xD] == 0x270F)
{
MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
@@ -1578,10 +1592,10 @@ void dp01t_12_3_battle_menu(u8 taskid)
void sub_8116AB0(u8 taskid)
{
- sub_8124D3C((&RDATA->varB8), 0xFFFF);
- sub_8124918((&RDATA->varB8));
+ sub_8124D3C((&eRoulette->varB8), 0xFFFF);
+ sub_8124918((&eRoulette->varB8));
gSaveBlock1.coins = gTasks[taskid].data[0xD];
- if (gSaveBlock1.coins < RDATA->var19)
+ if (gSaveBlock1.coins < eRoulette->var19)
gSpecialVar_0x8004 = TRUE;
else
gSpecialVar_0x8004 = FALSE;
@@ -1594,7 +1608,7 @@ void sub_8116B40(u8 taskid) // end oulette ?
if (UpdatePaletteFade() == 0)
{
SetVBlankCallback(0x0);
- memset(RDATA, 0x0, 0x17C);
+ memset(eRoulette, 0x0, 0x17C);
gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0;
sub_80F9368();
FreeAllSpritePalettes();
@@ -1612,57 +1626,57 @@ void sub_8116B40(u8 taskid) // end oulette ?
void sub_8116BC0(u8 taskid)
{
- if(RDATA->varA8 == 0 || gMain.newKeys & RDATA->varAA)
+ if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
{
- gTasks[taskid].func = RDATA->varAC;
- if (RDATA->varAA > 0)
+ gTasks[taskid].func = eRoulette->varAC;
+ if (eRoulette->varAA > 0)
PlaySE(SE_SELECT);
- RDATA->varAC = NULL;
- RDATA->varAA = 0x0;
- RDATA->varA8 = 0x0;
+ eRoulette->varAC = NULL;
+ eRoulette->varAA = 0x0;
+ eRoulette->varA8 = 0x0;
}
- if (RDATA->varA8 != 0xFFFF)
- RDATA->varA8--;
+ if (eRoulette->varA8 != 0xFFFF)
+ eRoulette->varA8--;
}
void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3)
{
- RDATA->varB4 = gTasks[taskid].func;
+ eRoulette->varB4 = gTasks[taskid].func;
if(r1 == NULL)
- r1 = RDATA->varB4;
- RDATA->varAC = r1;
- RDATA->varA8 = r2;
+ r1 = eRoulette->varB4;
+ eRoulette->varAC = r1;
+ eRoulette->varA8 = r2;
if (r2 == 0xFFFF && r3 == 0)
- RDATA->varAA = 0xFFFF;
+ eRoulette->varAA = 0xFFFF;
else
- RDATA->varAA = r3;
+ eRoulette->varAA = r3;
gTasks[taskid].func = &sub_8116BC0;
}
void sub_8116CAC(u8 taskid)
{
u8 i = 0;
- RDATA->var00 = i;
- RDATA->var03_0 = 0x0;
- RDATA->var03_5 = 0x0;
- RDATA->var03_6 = 0x0;
- RDATA->var03_7 = 0x0;
+ eRoulette->var00 = i;
+ eRoulette->var03_0 = 0x0;
+ eRoulette->var03_5 = 0x0;
+ eRoulette->var03_6 = 0x0;
+ eRoulette->var03_7 = 0x0;
for (i = 0; i < 0x6; i++)
- RDATA->var1B[i] = 0x0;
- RDATA->var1A_0 = 0x0;
+ eRoulette->var1B[i] = 0x0;
+ eRoulette->var1A_0 = 0x0;
gTasks[taskid].data[0x1] = 0x0;
}
void sub_8116CF8(void)
{
u8 i;
- RDATA->var08 = 0x0;
+ eRoulette->var08 = 0x0;
for (i = 0; i < 0x6; i++)
- RDATA->var0C[i] = 0x0;
+ eRoulette->var0C[i] = 0x0;
for (i = 0; i < 0x4; i++)
- RDATA->var12[i] = 0x0;
+ eRoulette->var12[i] = 0x0;
for (i = 0; i < 0x3; i++)
- RDATA->var16[i] = 0x0;
+ eRoulette->var16[i] = 0x0;
sub_8117C60(0x1, 0xFF);
}
@@ -1680,22 +1694,22 @@ u8 sub_8116D54(u8 taskid, u8 r1)
{
u8 i;
u8 z;
- RDATA->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02;
+ eRoulette->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02;
gTasks[taskid].data[0xC] = gUnknown_083F8D90[r1].var02;
- RDATA->var08 |= gUnknown_083F8D90[r1].var04;
+ eRoulette->var08 |= gUnknown_083F8D90[r1].var04;
for (i = 0; i < 0x4; i++)
{
if (gUnknown_083F8D90[r1].var04 & t0[i])
- RDATA->var12[i]++;
- if (RDATA->var12[i] > 0x2)
- RDATA->var08 |= t0[i];
+ eRoulette->var12[i]++;
+ if (eRoulette->var12[i] > 0x2)
+ eRoulette->var08 |= t0[i];
}
for (z = 0; z < 0x3; z++)
{
if (gUnknown_083F8D90[r1].var04 & t1[z])
- RDATA->var16[z]++;
- if (RDATA->var16[z] > 0x3)
- RDATA->var08 |= t1[z];
+ eRoulette->var16[z]++;
+ if (eRoulette->var16[z] > 0x3)
+ eRoulette->var08 |= t1[z];
}
return gUnknown_083F8D90[r1].var02;
}
@@ -1745,10 +1759,10 @@ void sub_8116EF8(u8 r0)
case 0xA:
case 0xF:
for (i = (r0 + 0x1); i < (r0 + 0x5); i++)
- if (!(RDATA->var08 & gUnknown_083F8C00[i].var08))
+ if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08))
var0 |= gUnknown_083F8C00[i].var10;
var0 &= 0xDFFF;
- sub_8124CE8(&RDATA->varB8, var0);
+ sub_8124CE8(&eRoulette->varB8, var0);
break;
default:
memcpy(var1, gUnknown_083F8E9C, 0x18);
@@ -1760,26 +1774,26 @@ void sub_8116EF8(u8 r0)
switch((u8)r0 % 0x5)
{
case 0x1:
- var3 = gSprites[RDATA->var3C[0x7 + 0x0]].oam.paletteNum * 0x10;
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10;
break;
case 0x2:
- var3 = gSprites[RDATA->var3C[0x7 + 0x1]].oam.paletteNum * 0x10;
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10;
break;
case 0x3:
- var3 = gSprites[RDATA->var3C[0x7 + 0x2]].oam.paletteNum * 0x10;
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10;
break;
case 0x4:
- var3 = gSprites[RDATA->var3C[0x7 + 0x3]].oam.paletteNum * 0x10;
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10;
break;
}
if (var2 == 0x1)
{
- if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08))
+ if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
{
var4 = (r0 / 0x5);
- var1[var4 - 0x1].val1 += var3;
- sub_812492C(&RDATA->varB8, 0xD, &var1[var4 - 0x2]);
- sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ var1[var4 - 0x1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]);
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
}
}
else
@@ -1787,11 +1801,11 @@ void sub_8116EF8(u8 r0)
for (i = 0; i < 0x3; i++)
{
u8 var4 = i * 0x5 + r0 + 0x5;
- if (!(RDATA->var08 & gUnknown_083F8C00[var4].var08))
+ if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08))
{
u8 var5 = (var4 / 0x5);
- var1[var5 - 0x1].val1 += var3;
- sub_812492C(&RDATA->varB8, (u8)(0xD + i), &var1[var5 - 0x2]);
+ var1[var5 - 0x1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]);
if (var2 == 0x3)
var0 = gUnknown_083F8C00[var4].var10;
var2--;
@@ -1799,7 +1813,7 @@ void sub_8116EF8(u8 r0)
}
if (var2 != 0x2)
var0 = 0x0;
- sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
}
}
}
@@ -2124,7 +2138,7 @@ void sub_8117158(u8 r0)
u8 var0;
u8 var1;
u16 var2;
- RDATA->var2A = 0x1;
+ eRoulette->var2A = 0x1;
sub_8117AA8(0x0, 0x0);
sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD);
switch(r0)
@@ -2448,16 +2462,16 @@ u8 sub_8117380(u8 r0)
{
case 0x3:
z = r0 / 0x5 - 0x1;
- if (RDATA->var16[z] > 0x3)
+ if (eRoulette->var16[z] > 0x3)
return 0x0;
- return var0[RDATA->var16[z] + 0x1];
+ return var0[eRoulette->var16[z] + 0x1];
case 0x4:
t = r0 - 0x1;
- if (RDATA->var12[t] > 0x2)
+ if (eRoulette->var12[t] > 0x2)
return 0x0;
- return var0[RDATA->var12[t] + 0x2];
+ return var0[eRoulette->var12[t] + 0x2];
case 0xC:
- if (RDATA->var08 & gUnknown_083F8C00[r0].var08)
+ if (eRoulette->var08 & gUnknown_083F8C00[r0].var08)
return 0x0;
return var0[0x4];
default:
@@ -2565,99 +2579,23 @@ bx r1\n\
}
#endif
-#ifdef NONMATCHING
-void sub_8117434(void) //sprite rotation ?
+void sub_8117434(void)
{
s32 x1;
s32 x2;
- REG_BG2PA = RDATA->var2C.a;
- REG_BG2PB = RDATA->var2C.b;
- REG_BG2PC = RDATA->var2C.c;
- REG_BG2PD = RDATA->var2C.d;
- x1 = 0x7400 - RDATA->var2C.a * (gSpriteCoordOffsetX + 0x74)
- - RDATA->var2C.b * (gSpriteCoordOffsetY + 0x50);
- x2 = 0x5400 - RDATA->var2C.c * gSpriteCoordOffsetX
- - RDATA->var2C.d * gSpriteCoordOffsetY;
+ REG_BG2PA = eRoulette->var2C.a;
+ REG_BG2PB = eRoulette->var2C.b;
+ REG_BG2PC = eRoulette->var2C.c;
+ REG_BG2PD = eRoulette->var2C.d;
+ x1 = 0x7400 - eRoulette->var2C.a * (gSpriteCoordOffsetX + 0x74)
+ - eRoulette->var2C.b * (gSpriteCoordOffsetY + 0x50);
+ x2 = 0x5400 - eRoulette->var2C.c * (gSpriteCoordOffsetX + 0x74)
+ - eRoulette->var2C.d * (gSpriteCoordOffsetY + 0x50);
REG_BG2X_L = x1;
REG_BG2X_H = (x1 & 0x0fff0000) >> 16;
REG_BG2Y_L = x2;
REG_BG2Y_H = (x2 & 0x0fff0000) >> 16;
}
-#else
-__attribute__((naked))
-void sub_8117434(void)
-{
-asm(".syntax unified\n\
-push {r4-r6,lr}\n\
-ldr r1, _081174AC @ =REG_BG2PA\n\
-ldr r4, _081174B0 @ =0x02019000\n\
-ldrh r0, [r4, 0x2C]\n\
-strh r0, [r1]\n\
-adds r1, 0x2\n\
-ldrh r0, [r4, 0x2E]\n\
-strh r0, [r1]\n\
-adds r1, 0x2\n\
-ldrh r0, [r4, 0x30]\n\
-strh r0, [r1]\n\
-adds r1, 0x2\n\
-ldrh r0, [r4, 0x32]\n\
-strh r0, [r1]\n\
-movs r0, 0x2E\n\
-ldrsh r2, [r4, r0]\n\
-ldr r0, _081174B4 @ =gSpriteCoordOffsetY\n\
-movs r3, 0\n\
-ldrsh r1, [r0, r3]\n\
-adds r1, 0x50\n\
-adds r0, r2, 0\n\
-muls r0, r1\n\
-movs r2, 0xE8\n\
-lsls r2, 7\n\
-subs r2, r0\n\
-movs r6, 0x2C\n\
-ldrsh r5, [r4, r6]\n\
-ldr r0, _081174B8 @ =gSpriteCoordOffsetX\n\
-movs r6, 0\n\
-ldrsh r3, [r0, r6]\n\
-adds r3, 0x74\n\
-adds r0, r5, 0\n\
-muls r0, r3\n\
-subs r2, r0\n\
-movs r5, 0x32\n\
-ldrsh r0, [r4, r5]\n\
-muls r0, r1\n\
-movs r1, 0xA8\n\
-lsls r1, 7\n\
-subs r1, r0\n\
-movs r6, 0x30\n\
-ldrsh r0, [r4, r6]\n\
-muls r0, r3\n\
-subs r1, r0\n\
-ldr r0, _081174BC @ =REG_BG2X_L\n\
-strh r2, [r0]\n\
-adds r0, 0x2\n\
-ldr r3, _081174C0 @ =0x0fff0000\n\
-ands r2, r3\n\
-asrs r2, 16\n\
-strh r2, [r0]\n\
-adds r0, 0x2\n\
-strh r1, [r0]\n\
-adds r0, 0x2\n\
-ands r1, r3\n\
-asrs r1, 16\n\
-strh r1, [r0]\n\
-pop {r4-r6}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_081174AC: .4byte REG_BG2PA\n\
-_081174B0: .4byte 0x02019000\n\
-_081174B4: .4byte gSpriteCoordOffsetY\n\
-_081174B8: .4byte gSpriteCoordOffsetX\n\
-_081174BC: .4byte REG_BG2X_L\n\
-_081174C0: .4byte 0x0fff0000\n\
-.syntax divided\n");
-}
-#endif
s16 sub_81174C4(s16 r0, s16 r1)
{
@@ -2763,7 +2701,7 @@ void Task_Roulette_0(u8 taskid)
}
}
-void PlayRoulette()
+void PlayRoulette(void)
{
u8 taskid;
ScriptContext2_Enable();
@@ -2823,7 +2761,7 @@ void sub_8117900(void)
u8 o = i * 0x18;
for (j = 0; j < 0x4; j++)
{
- spriteid = RDATA->var3C[0x1D + i * 0x4 + j] =
+ spriteid = eRoulette->var3C[0x1D + i * 0x4 + j] =
CreateSprite(&gSpriteTemplate_83FA07C[j], j * 0x18 + 0x94, o + 0x5C, 0x1E);
gSprites[spriteid].animPaused = TRUE;
o += 0x18;
@@ -2833,13 +2771,13 @@ void sub_8117900(void)
}
for (i = 0x0; i < 0x4; i++)
{
- spriteid = RDATA->var3C[0x29 + i] =
+ spriteid = eRoulette->var3C[0x29 + i] =
CreateSprite(&gSpriteTemplate_83F9FD4[i], (s16)(i * 0x18 + 0x94), 0x46, 0x1E);
gSprites[spriteid].animPaused = TRUE;
}
for (i = 0x0; i < 0x3; i++)
{
- spriteid = RDATA->var3C[0x2D + i] =
+ spriteid = eRoulette->var3C[0x2D + i] =
CreateSprite(&gSpriteTemplate_83FA034[i], 0x7E, (s16)(i * 0x18 + 0x5C), 0x1E);
gSprites[spriteid].animPaused = TRUE;
}
@@ -2849,7 +2787,7 @@ void unref_sub_8117A74(void) //destroy all sprites at 0x1D
{
u8 i;
for (i = 0x0; i < 0xC; i++)
- DestroySprite(&gSprites[RDATA->var3C[0x1D + i]]);
+ DestroySprite(&gSprites[eRoulette->var3C[0x1D + i]]);
}
void sub_8117AA8(u8 r0, u8 r1)
@@ -2859,20 +2797,20 @@ void sub_8117AA8(u8 r0, u8 r1)
{
case 0x1:
for (i = 0x0; i < 0x13; i++)
- gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE;
break;
case 0x0:
for (i = 0x0; i < 0xC; i++)
{
- if (!(RDATA->var08 & gUnknown_083F8D90[i].var04))
- gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE;
+ if (!(eRoulette->var08 & gUnknown_083F8D90[i].var04))
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
else if(!(gUnknown_083F8D90[i].var02 == r1))
- gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE;
else
- gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
}
for ( ; i < 0x13; i++)
- gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
break;
}
}
@@ -2882,12 +2820,12 @@ void sub_8117BBC(void)
u8 i;
for (i = 0x0; i < 0x6; i++)
{
- RDATA->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA);
- gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE;
- gSprites[RDATA->var3C[0x31 + i]].data[0] = 0x1;
- gSprites[RDATA->var3C[0x31 + i]].callback = &sub_81184CC;
- gSprites[RDATA->var3C[0x31 + i]].oam.priority = 0x1;
- StartSpriteAnim(&gSprites[RDATA->var3C[0x31 + i]], 0x8);
+ 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]].callback = &sub_81184CC;
+ gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1;
+ StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8);
}
}
@@ -2897,21 +2835,21 @@ void sub_8117C60(u8 r0, u8 r1)
if (r0)
{
for ( ; i < 0x6; i++)
- gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
}
else
{
for ( ; i < 0x6; i++)
{
- if (!(RDATA->var0C[i]) || (i == r1))
+ if (!(eRoulette->var0C[i]) || (i == r1))
{
- gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
}
else
{
- gSprites[RDATA->var3C[0x31 + i]].invisible = FALSE;
- gSprites[RDATA->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[RDATA->var0C[i]].var03 + 0x1) * 0x8 + 0x4;
- gSprites[RDATA->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[RDATA->var0C[i]].var04 + 0x1) * 0x8 + 0x3;
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[eRoulette->var0C[i]].var03 + 0x1) * 0x8 + 0x4;
+ gSprites[eRoulette->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[eRoulette->var0C[i]].var04 + 0x1) * 0x8 + 0x3;
}
}
}
@@ -2921,13 +2859,13 @@ void sub_8117D68(u8 r0)
{
if (!r0)
{
- gSprites[RDATA->var3C[0x30]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
}
else
{
- gSprites[RDATA->var3C[0x30]].invisible = FALSE;
- gSprites[RDATA->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8;
- gSprites[RDATA->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8;
+ gSprites[eRoulette->var3C[0x30]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8;
+ gSprites[eRoulette->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8;
}
}
@@ -2948,7 +2886,7 @@ void sub_8117DF4(void)
{
u8 spriteid;
spriteid =
- RDATA->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k);
+ eRoulette->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k);
gSprites[spriteid].animPaused = TRUE;
gSprites[spriteid].affineAnimPaused = TRUE;
}
@@ -2963,14 +2901,14 @@ void sub_8117E98(struct Sprite *sprite)
u16 angle;
s16 cos, sin, z;
u32 cos32;
- angle = RDATA->var24 + sprite->data0;
+ angle = eRoulette->var24 + sprite->data[0x0];
z = angle;
if (z > 359)
angle = z - 360;
sin = Sin2(angle);
cos = Cos2(angle);
- sprite->pos2.x = sin * sprite->data1 >> 0xC;
- sprite->pos2.y = -cos * sprite->data1 >> 0xC;
+ 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];
@@ -3073,26 +3011,26 @@ void sub_8117F2C(void)
s.tag = gUnknown_083FA21C[i].tag;
LoadSpriteSheet(&s);
}
- RDATA->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4);
- gSprites[RDATA->var3C[0x14]].animPaused = TRUE;
+ eRoulette->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4);
+ gSprites[eRoulette->var3C[0x14]].animPaused = TRUE;
for (i = 0x0; i < 0x4; i++)
{
- RDATA->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0);
- gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE;
- gSprites[RDATA->var3C[0x15 + i]].animPaused = TRUE;
+ eRoulette->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0);
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x15 + i]].animPaused = TRUE;
}
- RDATA->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4);
- gSprites[RDATA->var3C[0x19]].animPaused = TRUE;
+ eRoulette->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4);
+ gSprites[eRoulette->var3C[0x19]].animPaused = TRUE;
for (i = 0x0; i < 0x3; i++)
{
- RDATA->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4);
- gSprites[RDATA->var3C[0x1A + i]].invisible = TRUE;
- gSprites[RDATA->var3C[0x1A + i]].animPaused = TRUE;
+ eRoulette->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4);
+ gSprites[eRoulette->var3C[0x1A + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x1A + i]].animPaused = TRUE;
}
- RDATA->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9);
- gSprites[RDATA->var3C[0x30]].oam.priority = 0x1;
- gSprites[RDATA->var3C[0x30]].animPaused = TRUE;
- gSprites[RDATA->var3C[0x30]].invisible = TRUE;
+ eRoulette->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9);
+ gSprites[eRoulette->var3C[0x30]].oam.priority = 0x1;
+ gSprites[eRoulette->var3C[0x30]].animPaused = TRUE;
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
}
void sub_81180F4(u16 r0)
@@ -3103,13 +3041,13 @@ void sub_81180F4(u16 r0)
for (i = 0x0; i < 0x4; i++)
{
u8 t = r0 / d;
- gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE;
if (t > 0x0 || v || i == 0x3)
{
- gSprites[RDATA->var3C[0x15 + i]].invisible = FALSE;
- gSprites[RDATA->var3C[0x15 + i]].oam.tileNum =
- gSprites[RDATA->var3C[0x15 + i]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x15 + i]].anims + t)->type;
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x15 + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x15 + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x15 + i]].anims + t)->type;
v = TRUE;
}
r0 = r0 % d;
@@ -3128,16 +3066,16 @@ u8 sub_81181E8(u8 r0)
{
case 0x3:
r0 = r0 / 0x5 - 0x1;
- if ((u32)RDATA->var16[r0] < 0x4)
- return t[0x1 + RDATA->var16[r0]]; // couldn't recreate redundant loads
+ if ((u32)eRoulette->var16[r0] < 0x4)
+ return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads
break;
case 0x4:
r0 = r0 - 0x1;
- if (RDATA->var12[r0] < 0x3)
- return t[0x2 + RDATA->var12[r0]];
+ if (eRoulette->var12[r0] < 0x3)
+ return t[0x2 + eRoulette->var12[r0]];
break;
case 0xC:
- if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08))
+ if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
return t[0x4];
break;
}
@@ -3246,7 +3184,7 @@ bx r1\n\
void sub_811829C(u8 r0)
{
- struct Sprite *s = &gSprites[RDATA->var3C[0x19]];
+ struct Sprite *s = &gSprites[eRoulette->var3C[0x19]];
s->animCmdIndex = sub_81181E8(r0);
s->oam.tileNum =
s->sheetTileStart
@@ -3257,58 +3195,58 @@ void sub_81182F8(u8 r0)
{
u8 i;
u8 t = 0x0;
- if (RDATA->var19 == 0x1)
+ if (eRoulette->var19 == 0x1)
t = 0x2;
switch(r0)
{
case 0x6:
for (i = 0x0; i < 0x3; i++)
{
- gSprites[RDATA->var3C[0x1A + i]].invisible = FALSE;
- gSprites[RDATA->var3C[0x1A + i]].oam.tileNum =
- gSprites[RDATA->var3C[0x1A + i]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1A + i]].anims)->type;
+ gSprites[eRoulette->var3C[0x1A + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A + i]].anims)->type;
}
break;
case 0x5:
- gSprites[RDATA->var3C[0x1C]].oam.tileNum =
- gSprites[RDATA->var3C[0x1C]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x1)->type;
+ gSprites[eRoulette->var3C[0x1C]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1C]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x1)->type;
break;
case 0x4:
- gSprites[RDATA->var3C[0x1C]].oam.tileNum =
- gSprites[RDATA->var3C[0x1C]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x2)->type;
+ gSprites[eRoulette->var3C[0x1C]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1C]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x2)->type;
break;
case 0x3:
- gSprites[RDATA->var3C[0x1B]].oam.tileNum =
- gSprites[RDATA->var3C[0x1B]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x1)->type;
+ gSprites[eRoulette->var3C[0x1B]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1B]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x1)->type;
break;
case 0x2:
- gSprites[RDATA->var3C[0x1B]].oam.tileNum =
- gSprites[RDATA->var3C[0x1B]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x2)->type;
+ gSprites[eRoulette->var3C[0x1B]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1B]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x2)->type;
break;
case 0x1:
- gSprites[RDATA->var3C[0x1A]].oam.tileNum =
- gSprites[RDATA->var3C[0x1A]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1A]].anims + t + 0x1)->type;
+ gSprites[eRoulette->var3C[0x1A]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A]].anims + t + 0x1)->type;
break;
case 0x0:
default:
for (i = 0x0; i < 0x3; i++)
{
- gSprites[RDATA->var3C[0x1A + i]].oam.tileNum =
- gSprites[RDATA->var3C[0x1A + i]].sheetTileStart
- + (*gSprites[RDATA->var3C[0x1A + i]].anims + t + 2)->type;
+ gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A + i]].anims + t + 2)->type;
}
}
}
void sub_81184CC(struct Sprite *sprite)
{
- sprite->pos2.x = RDATA->var26;
+ sprite->pos2.x = eRoulette->var26;
}
void sub_81184D8(void)
@@ -3321,7 +3259,7 @@ void sub_81184D8(void)
s.tag = gUnknown_083FA42C.tag;
LoadSpriteSheet(&s);
spriteid = CreateSprite(&gSpriteTemplate_83FA434, 0x74, 0x50, 0x51);
- gSprites[spriteid].data[0] = RDATA->var24;
+ gSprites[spriteid].data[0] = eRoulette->var24;
gSprites[spriteid].data[1] = 0x0;
gSprites[spriteid].animPaused = TRUE;
gSprites[spriteid].affineAnimPaused = TRUE;
@@ -3332,10 +3270,10 @@ void sub_8118554(struct Sprite *sprite)
{
u32 t = sprite->oam.matrixNum;
struct OamMatrix *m = &gOamMatrices[0];
- m[t].d = RDATA->var2C.a;
- m[t].a = RDATA->var2C.a;
- m[t].b = RDATA->var2C.b;
- m[t].c = RDATA->var2C.c;
+ m[t].d = eRoulette->var2C.a;
+ m[t].a = eRoulette->var2C.a;
+ m[t].b = eRoulette->var2C.b;
+ m[t].c = eRoulette->var2C.c;
}
void sub_811857C(void)
@@ -3344,18 +3282,18 @@ void sub_811857C(void)
for (i = 0x0; i < 0x6; i++)
{
u8 spriteid =
- RDATA->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i);
+ eRoulette->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i);
if (spriteid != 0x40)
{
- gSprites[RDATA->var3C[i]].invisible = TRUE;
- gSprites[RDATA->var3C[i]].coordOffsetEnabled = TRUE;
+ gSprites[eRoulette->var3C[i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[i]].coordOffsetEnabled = TRUE;
}
}
}
void sub_81185E8(void)
{
- u8 t = RDATA->var3C[0x0];
+ u8 t = eRoulette->var3C[0x0];
u8 i;
for (i = 0x0; i < 0x6; i++)
{
@@ -3371,21 +3309,21 @@ void sub_81185E8(void)
s16 sub_811866C(struct Sprite *sprite)
{
- if (RDATA->var24 > sprite->data[0x3])
+ if (eRoulette->var24 > sprite->data[0x3])
{
- sprite->data[0x6] = 360 - RDATA->var24 + sprite->data[0x3];
+ sprite->data[0x6] = 360 - eRoulette->var24 + sprite->data[0x3];
if (sprite->data[0x6] > 359)
sprite->data[0x6] -=360;
}
else
- sprite->data[0x6] = sprite->data[0x3] - RDATA->var24;
+ sprite->data[0x6] = sprite->data[0x3] - eRoulette->var24;
return sprite->data[0x6];
}
u8 sub_81186B8(struct Sprite *sprite)
{
- RDATA->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f);
- return RDATA->var7E;
+ eRoulette->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f);
+ return eRoulette->var7E;
}
s16 sub_81186E8(struct Sprite *sprite)
@@ -3412,17 +3350,17 @@ s16 sub_81186E8(struct Sprite *sprite)
void sub_8118724(struct Sprite *sprite)
{
s16 sin, cos;
- RDATA->var8C += RDATA->var90;
- RDATA->var88 += RDATA->var8C;
- if (RDATA->var88 >= 360)
- RDATA->var88 -= 360.0f;
+ eRoulette->var8C += eRoulette->var90;
+ eRoulette->var88 += eRoulette->var8C;
+ if (eRoulette->var88 >= 360)
+ eRoulette->var88 -= 360.0f;
else
- if (RDATA->var88 < 0.0f)
- RDATA->var88 += 360.0f;
- sprite->data[0x3] = RDATA->var88;
- RDATA->var98 += RDATA->var9C;
- RDATA->var94 += RDATA->var98;
- sprite->data[0x4] = RDATA->var94;
+ if (eRoulette->var88 < 0.0f)
+ eRoulette->var88 += 360.0f;
+ sprite->data[0x3] = eRoulette->var88;
+ eRoulette->var98 += eRoulette->var9C;
+ eRoulette->var94 += eRoulette->var98;
+ sprite->data[0x4] = eRoulette->var94;
sin = Sin2(sprite->data[0x3]);
cos = Cos2(sprite->data[0x3]);
sprite->pos2.x = sin * sprite->data[0x4] >> 0xC;
@@ -3437,7 +3375,7 @@ void sub_8118724(struct Sprite *sprite)
void sub_8118834(struct Sprite *sprite)
{
s16 sin, cos;
- sprite->data[0x3] = RDATA->var24 + sprite->data[0x6];
+ sprite->data[0x3] = eRoulette->var24 + sprite->data[0x6];
if (sprite->data[0x3] > 359)
sprite->data[0x3] -= 360;
sin = Sin2(sprite->data[0x3]);
@@ -3459,10 +3397,10 @@ void sub_811889C(struct Sprite *sprite)
{
if (!sprite->data[0x0])
{
- if (RDATA->var94 <= RDATA->varA0 - 2.0f)
+ if (eRoulette->var94 <= eRoulette->varA0 - 2.0f)
{
- RDATA->var7D = 0xFF;
- RDATA->var03_7 = 0x0;
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
sub_81186B8(sprite);
sprite->data[0x4] = 30;
@@ -3470,16 +3408,16 @@ void sub_811889C(struct Sprite *sprite)
sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
sprite->callback = &sub_8118834;
m4aSongNumStartOrChange(0x47);
- RDATA->var9C = RDATA->var98 = 0.0f;
- RDATA->var8C = -1.0f;
+ eRoulette->var9C = eRoulette->var98 = 0.0f;
+ eRoulette->var8C = -1.0f;
}
}
else
{
- if (RDATA->var94 >= RDATA->varA0 - 2.0f)
+ if (eRoulette->var94 >= eRoulette->varA0 - 2.0f)
{
- RDATA->var7D = 0xFF;
- RDATA->var03_7 = 0x0;
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
sub_81186B8(sprite);
sprite->data[0x4] = 30;
@@ -3487,8 +3425,8 @@ void sub_811889C(struct Sprite *sprite)
sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
sprite->callback = &sub_8118834;
m4aSongNumStartOrChange(0x47);
- RDATA->var9C = RDATA->var98 = 0.0f;
- RDATA->var8C = -1.0f;
+ eRoulette->var9C = eRoulette->var98 = 0.0f;
+ eRoulette->var8C = -1.0f;
}
}
}
@@ -3497,7 +3435,7 @@ void sub_811889C(struct Sprite *sprite)
void sub_81189A8(struct Sprite *sprite)
{
float f0, f1, f2;
- struct Unkg083F8DF4 *p;
+ struct StructgUnknown_083F8DF4 *p;
sub_8118724(sprite);
switch(sprite->data[0x3])
{
@@ -3506,8 +3444,8 @@ void sub_81189A8(struct Sprite *sprite)
{
f0 = ((float)sprite->data[0x7]);
p = &gUnknown_083F8DF4[0];
- f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1));
- f2 = (f0 / ((float)(s32)p[RDATA->var04_0].var0C));
+ f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1));
+ f2 = (f0 / ((float)(s32)p[eRoulette->var04_0].var0C));
}
else
{
@@ -3519,8 +3457,8 @@ void sub_81189A8(struct Sprite *sprite)
{
f0 = ((float)sprite->data[0x7]);
p = &gUnknown_083F8DF4[0];
- f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1));
- f2 = -(f0 / ((float)(s32)p[RDATA->var04_0].var0C));
+ f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1));
+ f2 = -(f0 / ((float)(s32)p[eRoulette->var04_0].var0C));
}
else
{
@@ -3529,10 +3467,10 @@ void sub_81189A8(struct Sprite *sprite)
break;
default: return;
}
- RDATA->varA0 = RDATA->var94;
- RDATA->var98 = f2;
- RDATA->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1)));
- RDATA->var8C = 0.0f;
+ eRoulette->varA0 = eRoulette->var94;
+ eRoulette->var98 = f2;
+ eRoulette->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1)));
+ eRoulette->var8C = 0.0f;
sprite->animPaused = FALSE;
sprite->animNum = 0x0;
sprite->animBeginning = TRUE;
@@ -3547,8 +3485,8 @@ void sub_8118B30(struct Sprite *sprite)
sprite->data[0x2]++;
if (sprite->data[0x2] > 29 && sprite->pos2.y >= 0)
{
- RDATA->var7D = 0xFF;
- RDATA->var03_7 = FALSE;
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = FALSE;
StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
sub_81186B8(sprite);
sprite->data[0x4] = 30;
@@ -3556,7 +3494,7 @@ void sub_8118B30(struct Sprite *sprite)
sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
sprite->callback = &sub_8118834;
m4aSongNumStartOrChange(0x47);
- RDATA->var03_6 = TRUE;
+ eRoulette->var03_6 = TRUE;
}
}
@@ -3567,7 +3505,7 @@ void sub_8118BD8(struct Sprite *sprite)
sprite->pos2.y--;
if(sprite->data[0x2] == 45)
{
- if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1)
+ if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
sprite->pos2.y++;
}
}
@@ -3575,9 +3513,9 @@ void sub_8118BD8(struct Sprite *sprite)
{
if (sprite->data[0x2] < sprite->data[0x7])
{
- if (gSprites[RDATA->var3C[0x37]].animDelayCounter == 0x0)
+ if (gSprites[eRoulette->var3C[0x37]].animDelayCounter == 0x0)
{
- if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1)
+ if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
sprite->pos2.y++;
else
sprite->pos2.y--;
@@ -3621,7 +3559,7 @@ void sub_8118CAC(struct Sprite *sprite)
void sub_8118CEC(struct Sprite *sprite)
{
sub_8118724(sprite);
- switch(RDATA->var03_0)
+ switch(eRoulette->var03_0)
{
default:
case 0x0:
@@ -3639,13 +3577,13 @@ void sub_8118D2C(struct Sprite *sprite)
{
sub_8118724(sprite);
if (sprite->data[0x2]-- == 0x10)
- RDATA->var98 *= -1.0f;
+ eRoulette->var98 *= -1.0f;
if (sprite->data[0x2] == 0x0)
{
if (!sprite->data[0x0])
{
- RDATA->var7D = 0xFF;
- RDATA->var03_7 = 0x0;
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
sub_81186B8(sprite);
sprite->data[0x4] = 30;
@@ -3663,15 +3601,16 @@ void sub_8118D2C(struct Sprite *sprite)
}
}
+#ifdef NONMATCHING
void sub_8118DE4(struct Sprite *sprite)
{
sub_8118724(sprite);
sprite->data[0x2] = 0x0;
sub_81186B8(sprite);
- if (!(gUnknown_083F8D90[RDATA->var7E].var04 & RDATA->var08))
+ if (!(gUnknown_083F8D90[eRoulette->var7E].var04 & eRoulette->var08))
{
- RDATA->var7D = 0xFF;
- RDATA->var03_7 = 0x0;
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
sub_81186B8(sprite);
sprite->data[0x4] = 30;
@@ -3687,43 +3626,1022 @@ void sub_8118DE4(struct Sprite *sprite)
m4aSongNumStart(0x38);
if ((z = (Random() & 0x1)))
{
- RDATA->var8C = 0.0f;
- t = (RDATA->var7E + 0x1) % 0xC;
- RDATA->var7F = t;
+ u32 o;
+ eRoulette->var8C = 0.0f;
+ o = (eRoulette->var7E + 0x1) % 0xC;
+ t = o;
+ eRoulette->var7F = o;
}
else
{
- RDATA->var8C = gUnknown_083F8DF4[RDATA->var04_0].var1C * 2;
- t = (RDATA->var7E + 0xB) % 0xC;
- RDATA->var7F = t;
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2; // couldn't replicate loads
+ t = (eRoulette->var7E + 0xB) % 0xC;
+ eRoulette->var7F = eRoulette->var7E;
}
- if (gUnknown_083F8D90[t].var04 & RDATA->var08)
+ if (gUnknown_083F8D90[t].var04 & eRoulette->var08)
{
sprite->data[0x0] = 0x1;
- sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02;
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
}
else
{
- sprite->data[0x0] = gUnknown_083F8D90[t].var04 & RDATA->var08;
- if (RDATA->var04_0)
+ sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08;
+ if (eRoulette->var04_0)
{
- sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var01;
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01;
}
else
{
- sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02;
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
if (z)
{
- RDATA->var8C = 1.5f;
+ eRoulette->var8C = 1.5f;
}
else
{
- RDATA->var8C = -1.5f;
+ eRoulette->var8C = -1.5f;
}
}
}
- RDATA->var98 = 0.085000000894069671630859375f;
+ eRoulette->var98 = 0.085f;
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)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var8C > 0.5f))
+ {
+ sub_81186B8(sprite);
+ if (sub_81186E8(sprite) == 0x0)
+ {
+ 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));
+ sprite->data[0x1] = 0x4;
+ sprite->callback = &sub_8118DE4;
+ }
+ else
+ {
+ if (eRoulette->var90 != 0.0f)
+ {
+ if (eRoulette->var8C < 0.0f)
+ {
+ eRoulette->var90 = 0.0f;
+ eRoulette->var8C = 0.0f;
+ eRoulette->var98 /= 1.2;
+ }
+ }
+ }
+ }
+}
+
+void sub_8119088(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var94 > 40.f))
+ {
+ eRoulette->var98 = - ( 4.0f / (float)(u16)eRoulette->var86);
+ eRoulette->var90 = - (eRoulette->var8C / (float)(u16)eRoulette->var86);
+ sprite->animNum = 0x2;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->data[0x1] = 0x3;
+ sprite->callback = &sub_8118F8C;
+ }
+}
+
+void sub_8119134(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var94 > 60.0f))
+ {
+ m4aSongNumStartOrChange(0x5D);
+ eRoulette->var98 = - ( 20.0f / (float)(u16)eRoulette->var84);
+ eRoulette->var90 = ((1.0f - eRoulette->var8C) / (float)(u16)eRoulette->var84);
+ sprite->animNum = 0x1;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->data[0x1] = 0x2;
+ sprite->callback = &sub_8119088;
+ }
+}
+
+void sub_81191F4(struct Sprite *sprite)
+{
+ sprite->data[0x1] = 0x1;
+ sprite->data[0x2] = 0x0;
+ sub_8118724(sprite);
+ sprite->invisible = FALSE;
+ sprite->callback = &sub_8119134;
+}
+
+void sub_8119224(struct Sprite *sprite)
+{
+ u16 t;
+ u8 i;
+ s16 s[0x2][0x2];
+ struct Roulette *p;
+ memcpy(s, &gUnknown_083FA60E, 0x8);
+ t = sprite->data[0x7] - 0x2;
+ p = eRoulette;
+ p->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA50C, 0x24, -0xC, 0x32);
+ p->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5C0[0x0], s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x3B);
+ p->var3C[0x39] = CreateSprite(&gSpriteTemplate_83FA5C0[0x1], 0x24, 0x8C, 0x33);
+ gSprites[eRoulette->var3C[0x39]].oam.objMode = 0x1;
+ for (i = 0x0; i < 0x3; i++)
+ {
+ gSprites[eRoulette->var3C[0x37 + i]].coordOffsetEnabled = FALSE;
+ gSprites[eRoulette->var3C[0x37 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].animPaused = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].affineAnimPaused = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37];
+ 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[0x38]].coordOffsetEnabled = TRUE;
+ eRoulette->var38 = sprite;
+}
+
+void sub_81193D4(struct Sprite *sprite)
+{
+ u8 i = 0;
+ s16 t;
+ s16 s[0x2][0x2];
+ struct StructgUnknown_083F8DF4 *p;
+ memcpy(s, &gUnknown_083FA616, 0x8);
+ t = sprite->data[0x7] - 0x2;
+ eRoulette->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA524, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x32);
+ StartSpriteAnim(&gSprites[eRoulette->var3C[0x37]], sprite->data[0x0]);
+ eRoulette->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5F0, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x33);
+ gSprites[eRoulette->var3C[0x38]].affineAnimPaused = TRUE;
+ gSprites[eRoulette->var3C[0x38]].animPaused = TRUE;
+ sprite->data[0x7] = (t * (p = &gUnknown_083F8DF4[0])[eRoulette->var04_0].var01) + (p[eRoulette->var04_0].var10 + 0x2D);
+ for (; i < 0x2; i++)
+ {
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x38];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t;
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = sprite->data[0x7] - 0x2D;
+ }
+ eRoulette->var38 = sprite;
+}
+
+#ifdef NONMATCHING
+void sub_811952C(struct Sprite *sprite)
+{
+ 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;
+ eRoulette->var03_5 = TRUE;
+ eRoulette->var03_6 = FALSE;
+ eRoulette->var7E = 0xFF;
+ eRoulette->var88 = sprite->data[0x3];
+ eRoulette->var98 = 0.0f;
+ eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4
+ o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15;
+ for (i = 0x0; i < 0x4; i++)
+ {
+ if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90))
+ {
+ sprite->data[0x0] = i * 0x2;
+ eRoulette->var03_0 = 0x1 & i;
+ break;
+ }
+ if (i == 0x3)
+ {
+ sprite->data[0x0] = 0x1;
+ eRoulette->var03_0 = 0x1;
+ break;
+ }
+ o += 90;
+ }
+ if (eRoulette->var03_0)
+ {
+ if (sprite->data[0x0])
+ {
+ PlayCry1(0x130, -0x3F);
+ }
+ else
+ {
+ PlayCry1(0x130, 0x3F);
+ }
+ }
+ else
+ {
+ PlayCry1(0x132, -0x3F);
+ }
+ i = 0x2;
+ z = (eRoulette->var7F + 0x2) % 0xC;
+ if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1)
+ j += 0x6;
+ else
+ j += i;
+ for (; i < j; i++)
+ {
+ if (!(eRoulette->var08 & gUnknown_083F8D90[z].var04))
+ {
+ s[h++] = i;
+ if (!p && (gUnknown_083F8D90[z].var04 & gUnknown_083F8C00[eRoulette->var1B[eRoulette->var1A_0]].var00))
+ {
+ p = i;
+ }
+ }
+ z = (z + 0x1) % 0xC;
+ }
+ if ((eRoulette->var03_0 + 0x1) & eRoulette->var02)
+ {
+ if (p && (t & 0xFF) <= 0xBF)
+ {
+ sprite->data[0x7] = p;
+ }
+ else
+ {
+ sprite->data[0x7] = s[t % h];
+ }
+ }
+ else
+ {
+ sprite->data[0x7] = s[t % h];
+ }
+ 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");
+}
+#endif
+
+void sub_8119780(struct Sprite *sprite)
+{
+ if (!(sprite->data[0x1]++ < sprite->data[0x3]))
+ {
+ if ((sprite->pos1.x -= 0x2) < -0x10)
+ {
+ if (!eRoulette->var03_6)
+ {
+ eRoulette->var03_6 = TRUE;
+ }
+ DestroySprite(sprite);
+ eRoulette->var01 = 0x0;
+ eRoulette->var34 = gUnknown_083FA61E[0x0];
+ }
+ }
+}
+
+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])
+ {
+ if(sprite->data[0x1] & 0x1)
+ {
+ gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]];
+ p = z = sprite->data[0x7] + 0x1;
+ if (z < 0)
+ p += 0x3;
+ sprite->data[0x7] = z - ((p >> 2) * 4);
+ }
+ sprite->invisible ^= 0x1;
+ }
+ else
+ {
+ gSpriteCoordOffsetY = 0x0;
+ gSprites[eRoulette->var3C[0x37]].animPaused = FALSE;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8119898(struct Sprite *sprite)
+{
+ float t;
+ sprite->data[0x1]++;
+ t = sprite->data[0x1];
+ sprite->pos2.y = t * 0.039f * t;
+ eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2];
+ if (eRoulette->var01 < 0x13)
+ eRoulette->var01++;
+ if (sprite->data[0x1] > 0x3C)
+ {
+ sprite->data[0x1] = 0x0;
+ sprite->callback = &sub_8119780;
+ gSprites[sprite->data[0x6]].callback = &sub_8119780;
+ gSprites[sprite->data[0x6]].data[0x1] = -0x2;
+ gSprites[sprite->data[0x5]].invisible = FALSE;
+ gSprites[sprite->data[0x5]].callback = &sub_81197D8;
+ m4aSongNumStart(0xD6);
+ }
+}
+
+void sub_8119964(struct Sprite *sprite)
+{
+ if(sprite->data[0x7] == 0x0)
+ {
+ register u32 t asm("r2");
+ u32 z ;
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var08;
+ }
+ else
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var08;
+ z += 0xB4;
+ }
+ if (t == z)
+ {
+ sprite->invisible = FALSE;
+ sprite->data[0x7]++;
+ m4aSongNumStart(0x2B);
+ eRoulette->var01 = 0x1;
+ eRoulette->var34 = gUnknown_083FA61E[0x0];
+ }
+ }
+ else
+ {
+ u32 t, z;
+ eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2];
+ if (eRoulette->var01 < 0x13)
+ eRoulette->var01++;
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var0A;
+ }
+ else
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var0A ;
+ z += 0xB4;
+ }
+ if (t == z)
+ {
+ gSprites[sprite->data[0x4]].callback = &sub_8119898;
+ gSprites[sprite->data[0x4]].invisible = FALSE;
+ sprite->callback = &SpriteCallbackDummy;
+ sprite->data[0x7] = 0x0;
+ }
+ }
+}
+
+void sub_8119A90(struct Sprite *sprite)
+{
+ sprite->invisible ^= 0x1;
+}
+
+void sub_8119AAC(struct Sprite *sprite)
+{
+ if (sprite->pos1.y > -0x10)
+ {
+ sprite->pos1.y--;
+ }
+ else
+ {
+ sprite->callback = &SpriteCallbackDummy;
+ sprite->invisible = TRUE;
+ sprite->animPaused = TRUE;
+ m4aSongNumStop(0x5E);
+ DestroySprite(sprite);
+ FreeOamMatrix(gSprites[eRoulette->var3C[0x38]].oam.matrixNum);
+ DestroySprite(&gSprites[eRoulette->var3C[0x38]]);
+ }
+}
+
+void sub_8119B24(struct Sprite *sprite)
+{
+ if (!(sprite->data[0x1] < 0x0))
+ {
+ sprite->data[0x1]--;
+ sprite->pos1.y--;
+ if (sprite->data[0x1] == 0x0 && sprite->animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ }
+ else
+ {
+ if (!(sprite->data[0x3] < 0x0))
+ {
+ sprite->data[0x3]--;
+ if (sprite->animDelayCounter == 0x0)
+ {
+ if (sprite->animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ else
+ sprite->pos2.y--;
+ }
+ }
+ else
+ {
+ m4aSongNumStart(0x2B);
+ StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x4);
+ sprite->callback = &sub_8119AAC;
+ gSprites[sprite->data[0x6]].affineAnimPaused = FALSE;
+ }
+ }
+}
+
+void sub_8119BCC(struct Sprite *sprite)
+{
+ s8 t[0x2]; //sign
+ s8 z[0x8][0x2];
+ memcpy(t, &gUnknown_083FA64A, 0x2);
+ memcpy(z, &gUnknown_083FA64C, 0x10);
+ if (sprite->data[0x1]-- > 0x7)
+ {
+ sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
+ if (IsSEPlaying())
+ {
+ s8 u = -((0x74 - sprite->pos1.x) / 0x2);
+ m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF,u);
+ m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, u);
+ }
+ }
+ else
+ {
+ 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];
+ }
+ else
+ {
+ m4aSongNumStartOrChange(0x5E);
+ if(eRoulette->var38->data[0x0] == 0x0)
+ PlayCry1(0x130, 0x3F);
+ else
+ PlayCry1(0x130, -0x3F);
+ StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2);
+ sprite->data[0x1] = 45;
+ sprite->callback = &sub_8119B24;
+ }
+ }
+}
+
+void sub_8119D08(struct Sprite *sprite)
+{
+ s8 t[0x2]; //sign
+ memcpy(t, &gUnknown_083FA64A, 0x2);
+ if (!(sprite->data[0x1]-- < 0x0))
+ {
+ sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
+ gSprites[sprite->data[0x6]].invisible ^= 0x1;
+ }
+ else
+ {
+ sprite->callback = &sub_8119A90;
+ }
+}
+
+void sub_8119D80(struct Sprite *sprite)
+{
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var12 + 90)
+ {
+ gSprites[sprite->data[0x6]].data[0x1] = 0x34;
+ gSprites[sprite->data[0x4]].data[0x1] = 0x34;
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var14 + 270)
+ {
+ gSprites[sprite->data[0x6]].data[0x1] = 0x2E;
+ gSprites[sprite->data[0x4]].data[0x1] = 0x2E;
+ }
+ else
+ {
+ return;
+ }
+ }
+ gSprites[sprite->data[0x6]].callback = &sub_8119D08;
+ gSprites[sprite->data[0x4]].callback = &sub_8119BCC;
+ m4aSongNumStart(0x2B);
+}
diff --git a/src/roulette_util.c b/src/roulette_util.c
index bb47ed540..53585714e 100644
--- a/src/roulette_util.c
+++ b/src/roulette_util.c
@@ -4,378 +4,383 @@
static u8 sub_81249E4(struct UnkStruct3 *);
static u8 sub_8124BEC(struct UnkStruct3 *);
+u8 unref_sub_81249B0(struct UnkStruct0 *, u8);
extern u16 gPlttBufferFaded[];
extern u16 gPlttBufferUnfaded[];
void sub_8124918(struct UnkStruct0 *r0)
{
- r0->val0 = 0;
- r0->val2 = 0;
- memset((&r0->val3), 0, 0xC0);
+ r0->var00 = 0;
+ r0->var02 = 0;
+ memset((&r0->var04), 0, 0xC0);
}
u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2)
{
- if (!(r1 < 0x10) || (r0->val3[r1].field1))
- return 0xFF;
+ if (!(r1 < 0x10) || (r0->var04[r1].var00_7))
+ return 0xFF;
- r0->val3[r1].val4.val0 = r2->val0;
- r0->val3[r1].val4.val1 = r2->val1;
- r0->val3[r1].val4.val2 = r2->val2;
- r0->val3[r1].val4.val3 = r2->val3;
- r0->val3[r1].val4.val4 = r2->val4;
- r0->val3[r1].val4.field0 = r2->field0;
- r0->val3[r1].val4.field1 = r2->field1;
- r0->val3[r1].val4.field2 = r2->field2;
+ r0->var04[r1].var04.var00 = r2->var00;
+ r0->var04[r1].var04.var02 = r2->var02;
+ r0->var04[r1].var04.var04 = r2->var04;
+ r0->var04[r1].var04.var05 = r2->var05;
+ r0->var04[r1].var04.var06 = r2->var06;
+ r0->var04[r1].var04.var07_0 = r2->var07_0;
+ r0->var04[r1].var04.var07_5 = r2->var07_5;
+ r0->var04[r1].var04.var07_7 = r2->var07_7;
- //Why not r0->val3[r1].val4 = *r2; ?
- r0->val3[r1].field0 = 0x0;
- r0->val3[r1].field1 = 0x1;
+ r0->var04[r1].var00_0 = 0x0;
+ r0->var04[r1].var00_7 = 0x1;
- r0->val3[r1].val2 = 0x0;
- r0->val3[r1].val1 = 0x0;
- if (r0->val3[r1].val4.field2 < 0)
- r0->val3[r1].val3 = 0xFF;
- else
- r0->val3[r1].val3 = 0x1;
- return r1;
+ r0->var04[r1].var02 = 0x0;
+ r0->var04[r1].var01 = 0x0;
+ if (r0->var04[r1].var04.var07_7 < 0)
+ r0->var04[r1].var03 = 0xFF;
+ else
+ r0->var04[r1].var03 = 0x1;
+ return r1;
}
#ifdef NONMATCHING
u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1)
{
- if (!(r1 < 0x10) || (r0->val3[r1].field1))
- return 0xFF;
- r0->val3[r1] = (struct UnkStruct3){0};
- return r1;
+ if (r1 < 0x10)
+ {
+ if (r0->var04[r1].var00_7)
+ {
+ r0->var04[r1] = (struct UnkStruct3){0};
+ return r1;
+ }
+ }
+ return 0xFF;
}
#else
__attribute__((naked))
u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r2, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r4, r1, 0\n\
- cmp r4, 0xF\n\
- bhi _081249DC\n\
- lsls r0, r4, 1\n\
- adds r0, r4\n\
- lsls r0, 2\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1, 0x4]\n\
- lsrs r0, 7\n\
- cmp r0, 0\n\
- beq _081249DC\n\
- adds r0, r1, 0x4\n\
- movs r1, 0\n\
- movs r2, 0xC\n\
- bl memset\n\
- adds r0, r4, 0\n\
- b _081249DE\n\
- _081249DC:\n\
- movs r0, 0xFF\n\
- _081249DE:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r2, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r4, r1, 0\n\
+ cmp r4, 0xF\n\
+ bhi _081249DC\n\
+ lsls r0, r4, 1\n\
+ adds r0, r4\n\
+ lsls r0, 2\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsrs r0, 7\n\
+ cmp r0, 0\n\
+ beq _081249DC\n\
+ adds r0, r1, 0x4\n\
+ movs r1, 0\n\
+ movs r2, 0xC\n\
+ bl memset\n\
+ adds r0, r4, 0\n\
+ b _081249DE\n\
+ _081249DC:\n\
+ movs r0, 0xFF\n\
+ _081249DE:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
}
#endif
u8 sub_81249E4(struct UnkStruct3 *r0)
{
- u8 i;
- u8 returnval;
- for (i = 0; i < r0->val4.val2; i++)
- {
- u32 offset = r0->val4.val1 + i;
- struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset];
- struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset];
- switch(r0->field0)
- {
- case 0x1:
- if ((u32)(faded->r + r0->val3) < 0x20)
- faded->r += r0->val3;
- if ((u32)(faded->g + r0->val3) < 0x20)
- faded->g += r0->val3;
- if ((u32)(faded->b + r0->val3) < 0x20)
- faded->b += r0->val3;
- break;
- case 0x2:
- if (r0->val3 < 0)
- {
- if (!(faded->r + r0->val3 < unfaded->r))
- faded->r += r0->val3;
- if (!(faded->g + r0->val3 < unfaded->g))
- faded->g += r0->val3;
- if (!(faded->b + r0->val3 < unfaded->b))
- faded->b += r0->val3;
- }
- else
- {
- if (!(faded->r + r0->val3 > unfaded->r))
- faded->r += r0->val3;
- if (!(faded->g + r0->val3 > unfaded->g))
- faded->g += r0->val3;
- if (!(faded->b + r0->val3 > unfaded->b))
- faded->b += r0->val3;
- }
- break;
- }
- }
- if (((u32)r0->val2++) != r0->val4.field0)
- {
- returnval = 0x0;
- }
- else
- {
- r0->val2 = 0x0;
- r0->val3 = r0->val3 * -1;
- if (r0->field0 == 0x1)
- r0->field0++;
- else
- r0->field0--;
- returnval = 0x1;
- }
- return returnval;
+ u8 i;
+ u8 returnval;
+ for (i = 0; i < r0->var04.var04; i++)
+ {
+ u32 offset = r0->var04.var02 + i;
+ struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset];
+ struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset];
+ switch(r0->var00_0)
+ {
+ case 0x1:
+ if ((u32)(faded->r + r0->var03) < 0x20)
+ faded->r += r0->var03;
+ if ((u32)(faded->g + r0->var03) < 0x20)
+ faded->g += r0->var03;
+ if ((u32)(faded->b + r0->var03) < 0x20)
+ faded->b += r0->var03;
+ break;
+ case 0x2:
+ if (r0->var03 < 0)
+ {
+ if (!(faded->r + r0->var03 < unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 < unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 < unfaded->b))
+ faded->b += r0->var03;
+ }
+ else
+ {
+ if (!(faded->r + r0->var03 > unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 > unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 > unfaded->b))
+ faded->b += r0->var03;
+ }
+ break;
+ }
+ }
+ if (((u32)r0->var02++) != r0->var04.var07_0)
+ {
+ returnval = 0x0;
+ }
+ else
+ {
+ r0->var02 = 0x0;
+ r0->var03 = r0->var03 * -1;
+ if (r0->var00_0 == 0x1)
+ r0->var00_0++;
+ else
+ r0->var00_0--;
+ returnval = 0x1;
+ }
+ return returnval;
}
u8 sub_8124BEC(struct UnkStruct3 *r0)
{
- u8 rg2 = 0;
- switch (r0->field0)
- {
- case 0x1:
- for (rg2 = 0; rg2 < r0->val4.val2; rg2++)
- gPlttBufferFaded[r0->val4.val1 + rg2] = r0->val4.val0;
- r0->field0++;
- break;
- case 0x2:
- for (rg2 = 0; rg2 < r0->val4.val2; rg2++)
- gPlttBufferFaded[r0->val4.val1 + rg2] = gPlttBufferUnfaded[r0->val4.val1 + rg2];
- r0->field0--;
- break;
- }
- return 0x1;
+ u8 rg2 = 0;
+ switch (r0->var00_0)
+ {
+ case 0x1:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00;
+ r0->var00_0++;
+ break;
+ case 0x2:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2];
+ r0->var00_0--;
+ break;
+ }
+ return 0x1;
}
void task_tutorial_controls_fadein(struct UnkStruct0 *r0)
{
- u8 i = 0;
- if (r0->val0)
- {
- for (i = 0; i < 0x10; i++)
- {
- if ((r0->val2 >> i) & 0x1)
- {
- if (((u8)--r0->val3[i].val1) == 0xFF) // if underflow ?
- {
- if (r0->val3[i].val4.val0 & (0x80 << 8)) // PlttData->unused_15 ?
- sub_81249E4(&r0->val3[i]);
- else
- sub_8124BEC(&r0->val3[i]);
- r0->val3[i].val1 = r0->val3[i].val4.val3;
- }
- }
- }
- }
+ u8 i = 0;
+ if (r0->var00)
+ {
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (((u8)--r0->var04[i].var01) == 0xFF) // if underflow ?
+ {
+ if (r0->var04[i].var04.var00 & (0x80 << 8)) // PlttData->unused_15 ?
+ sub_81249E4(&r0->var04[i]);
+ else
+ sub_8124BEC(&r0->var04[i]);
+ r0->var04[i].var01 = r0->var04[i].var04.var05;
+ }
+ }
+ }
+ }
}
void sub_8124CE8(struct UnkStruct0 *r0, u16 r1)
{
- u8 i = 0;
- r0->val0++;
- for (i = 0; i < 0x10; i++)
- {
- if ((r1 >> i) & 0x1)
- {
- if (r0->val3[i].field1)
- {
- r0->val2 |= 0x1 << i;
- r0->val3[i].field0 = 0x1;
- }
- }
- }
+ u8 i = 0;
+ r0->var00++;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ r0->var02 |= 0x1 << i;
+ r0->var04[i].var00_0 = 0x1;
+ }
+ }
+ }
}
void sub_8124D3C(struct UnkStruct0 *r0, u16 r1)
{
- u8 i;
- for (i = 0; i < 0x10; i++)
- {
- if ((r0->val2 >> i) & 0x1)
- {
- if (r0->val3[i].field1)
- {
- if ((r1 >> i) & 0x1)
- {
- u32 offset = r0->val3[i].val4.val1;
- u16 *faded = &gPlttBufferFaded[offset];
- u16 *unfaded = &gPlttBufferUnfaded[offset];
- memcpy(faded, unfaded, r0->val3[i].val4.val2 * 2);
- r0->val3[i].field0 = 0x0;
- r0->val3[i].val2 = 0x0;
- r0->val3[i].val1 = 0x0;
- if (r0->val3[i].val4.field2 < 0)
- r0->val3[i].val3 = 0xFF;
- else
- r0->val3[i].val3 = 0x1;
- }
- }
- }
- }
- if (r1 == 0xFFFF)
- {
- r0->val0 = 0x0;
- r0->val2 = 0x0;
- }
- else
- {
- r0->val2 = r0->val2 & ~r1;
- }
+ u8 i;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ u32 offset = r0->var04[i].var04.var02;
+ u16 *faded = &gPlttBufferFaded[offset];
+ u16 *unfaded = &gPlttBufferUnfaded[offset];
+ memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2);
+ r0->var04[i].var00_0 = 0x0;
+ r0->var04[i].var02 = 0x0;
+ r0->var04[i].var01 = 0x0;
+ if (r0->var04[i].var04.var07_7 < 0)
+ r0->var04[i].var03 = 0xFF;
+ else
+ r0->var04[i].var03 = 0x1;
+ }
+ }
+ }
+ }
+ if (r1 == 0xFFFF)
+ {
+ r0->var00 = 0x0;
+ r0->var02 = 0x0;
+ }
+ else
+ {
+ r0->var02 = r0->var02 & ~r1;
+ }
}
#ifdef NONMATCHING
void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- u16 *rg0;
- u8 c;
- u8 i = 0;
- u32 offset= r3 * 0x20 + r2;
- rg0 = &r0[offset];
- for (i = 0; i < r5; i++)
- {
- rg0 = &rg0[i * 0x20 ];
- c = 0;
- for (c = 0; c < r4; c++)
- {
- *rg0++ = r1;
- }
- }
+ u16 *rg0;
+ u8 c;
+ u8 i = 0;
+ u32 offset= r3 * 0x20 + r2;
+ rg0 = &r0[offset];
+ for (i = 0; i < r5; i++)
+ {
+ rg0 = &rg0[i * 0x20 ];
+ c = 0;
+ for (c = 0; c < r4; c++)
+ {
+ *rg0++ = r1;
+ }
+ }
}
#else
__attribute__((naked))
void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r6, r0, 0\n\
- ldr r0, [sp, 0x14]\n\
- ldr r4, [sp, 0x18]\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r3, 24\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r1, 0\n\
- lsrs r3, 19\n\
- adds r3, r2\n\
- lsls r3, 1\n\
- adds r6, r3\n\
- cmp r1, r4\n\
- bcs _08124E26\n\
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r6, r0, 0\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r4, [sp, 0x18]\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r1, 0\n\
+ lsrs r3, 19\n\
+ adds r3, r2\n\
+ lsls r3, 1\n\
+ adds r6, r3\n\
+ cmp r1, r4\n\
+ bcs _08124E26\n\
_08124E04:\n\
- lsls r0, r1, 6\n\
- adds r2, r6, r0\n\
- movs r0, 0\n\
- adds r3, r1, 0x1\n\
- cmp r0, r5\n\
- bcs _08124E1E\n\
+ lsls r0, r1, 6\n\
+ adds r2, r6, r0\n\
+ movs r0, 0\n\
+ adds r3, r1, 0x1\n\
+ cmp r0, r5\n\
+ bcs _08124E1E\n\
_08124E10:\n\
- strh r7, [r2]\n\
- adds r2, 0x2\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bcc _08124E10\n\
+ strh r7, [r2]\n\
+ adds r2, 0x2\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ bcc _08124E10\n\
_08124E1E:\n\
- lsls r0, r3, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, r4\n\
- bcc _08124E04\n\
+ lsls r0, r3, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, r4\n\
+ bcc _08124E04\n\
_08124E26:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
#endif
#ifdef NONMATCHING
void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- u16 *rg0;
- u8 c;
- u8 i = 0;
- u32 offset= r3 * 0x20 + r2;
- //rg0 = &r0[offset];
- for (i = 0; i < r5; i++)
- {
- rg0 = &r0[offset + i * 0x20 ];
- c = 0;
- for (c = 0; c < r4; c++)
- {
- *(rg0++) = *(r1++);
- }
- }
+ u16 *rg0;
+ u8 c;
+ u8 i = 0;
+ u32 offset= r3 * 0x20 + r2;
+ //rg0 = &r0[offset];
+ for (i = 0; i < r5; i++)
+ {
+ rg0 = &r0[offset + i * 0x20 ];
+ c = 0;
+ for (c = 0; c < r4; c++)
+ {
+ *(rg0++) = *(r1++);
+ }
+ }
}
#else
__attribute__((naked))
void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r7, r0, 0\n\
- ldr r0, [sp, 0x14]\n\
- ldr r4, [sp, 0x18]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r3, 24\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r4, 24\n\
- lsrs r6, r4, 24\n\
- movs r4, 0\n\
- lsrs r3, 19\n\
- adds r3, r2\n\
- lsls r3, 1\n\
- adds r7, r3\n\
- cmp r4, r6\n\
- bcs _08124E76\n\
- _08124E50:\n\
- lsls r0, r4, 6\n\
- adds r2, r7, r0\n\
- movs r3, 0\n\
- adds r4, 0x1\n\
- cmp r3, r5\n\
- bcs _08124E6E\n\
- _08124E5C:\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- adds r1, 0x2\n\
- adds r2, 0x2\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, r5\n\
- bcc _08124E5C\n\
- _08124E6E:\n\
- lsls r0, r4, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, r6\n\
- bcc _08124E50\n\
- _08124E76:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r7, r0, 0\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r4, [sp, 0x18]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r4, 24\n\
+ lsrs r6, r4, 24\n\
+ movs r4, 0\n\
+ lsrs r3, 19\n\
+ adds r3, r2\n\
+ lsls r3, 1\n\
+ adds r7, r3\n\
+ cmp r4, r6\n\
+ bcs _08124E76\n\
+ _08124E50:\n\
+ lsls r0, r4, 6\n\
+ adds r2, r7, r0\n\
+ movs r3, 0\n\
+ adds r4, 0x1\n\
+ cmp r3, r5\n\
+ bcs _08124E6E\n\
+ _08124E5C:\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ adds r1, 0x2\n\
+ adds r2, 0x2\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, r5\n\
+ bcc _08124E5C\n\
+ _08124E6E:\n\
+ lsls r0, r4, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, r6\n\
+ bcc _08124E50\n\
+ _08124E76:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
#endif