diff options
author | M <No Email> | 2018-01-06 00:21:01 +0100 |
---|---|---|
committer | Made-s <made111@gmx.de> | 2018-01-06 00:24:34 +0100 |
commit | e9bb490023f346697b4f432a9add1fe158f2038d (patch) | |
tree | 2cba636ce459725a3a6b833a94ff0be750cb4394 | |
parent | ba4b0d8dd2587667c04e6cc63e31afe16fba1381 (diff) |
finish roulette file
-rw-r--r-- | asm/roulette.s | 4 | ||||
-rwxr-xr-x | include/ewram.h | 8 | ||||
-rw-r--r-- | include/roulette.h | 53 | ||||
-rw-r--r-- | include/roulette_util.h | 1 | ||||
-rw-r--r-- | src/roulette.c | 2260 | ||||
-rw-r--r-- | src/roulette_util.c | 615 |
6 files changed, 1933 insertions, 1008 deletions
diff --git a/asm/roulette.s b/asm/roulette.s index 1fda9ece9..5050cf7a7 100644 --- a/asm/roulette.s +++ b/asm/roulette.s @@ -7811,7 +7811,7 @@ _08118F80: .4byte 0xbfc00000 _08118F84: .4byte 0x3dae147b _08118F88: .4byte sub_8118D2C thumb_func_end sub_8118DE4 -*/ + thumb_func_start sub_8118F8C sub_8118F8C: @ 8118F8C push {r4-r7,lr} @@ -9655,4 +9655,4 @@ _08119E34: .4byte sub_8119D08 _08119E38: .4byte sub_8119BCC thumb_func_end sub_8119D80 - .align 2, 0 @ Don't pad with nop. + .align 2, 0 @ Don't pad with nop.*/ diff --git a/include/ewram.h b/include/ewram.h index 5a350840a..fbc010853 100755 --- a/include/ewram.h +++ b/include/ewram.h @@ -192,13 +192,14 @@ extern u8 gSharedMem[]; #define B_FUNCTION_STACK ((struct funcStack *) (gSharedMem + 0x17140)) #define ewram17160 (gSharedMem[0x17160]) #define ewram17800 ((struct Struct2017800 *) (gSharedMem + 0x17800)) +#define ewram17800_2 (&gSharedMem[0x17800]) #define EWRAM_17800 ((struct UnknownStruct1 *)(gSharedMem + 0x17800)) #define eTransformStatuses ((struct TransformStatus *)(gSharedMem + 0x17800)) -#define ewram17800_2 (&gSharedMem[0x17800]) #define ewram17810 ((struct Struct2017810 *) (gSharedMem + 0x17810)) #define EWRAM_17810 ((struct UnknownStruct3 *)(gSharedMem + 0x17810)) #define ewram17840 (*(struct Struct2017840 *) (gSharedMem + 0x17840)) #define ewram17850 ((struct UnknownStruct5 *)(gSharedMem + 0x17850)) +#define ewram17E00 ((u16 *)(gSharedMem + 0x17E00)) #define ewram_2018000 (*(struct PlayerRecords *)(gSharedMem + 0x18000)) #define EWRAM_18000 ((u16 *)(gSharedMem + 0x18000)) #define ewram18000 ((u16 *)(gSharedMem + 0x18000)) @@ -212,8 +213,13 @@ extern u8 gSharedMem[]; #define ewram18300 ((u16 *)(gSharedMem + 0x18300)) #define ewram18800 (&gSharedMem[0x18800]) #define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800) +#define ewram189a0 ((u16 *)(gSharedMem + 0x189A0)) +#define ewram18a20 ((u16 *)(gSharedMem + 0x18A20)) +#define ewram18a32 ((u16 *)(gSharedMem + 0x18A32)) +#define ewram18a80 ((u16 *)(gSharedMem + 0x18a80)) #define ewram19000 (&gSharedMem[0x19000]) #define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000) +#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000)) #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348)) #define ewram19348 (*(struct Struct2019348 *)(gSharedMem + 0x19348)) #define ewram19800 (&gSharedMem[0x19800]) diff --git a/include/roulette.h b/include/roulette.h index 5bd2e5240..9cf0ba1d2 100644 --- a/include/roulette.h +++ b/include/roulette.h @@ -3,42 +3,39 @@ struct UnkStruct1 { - u16 val0; - u16 val1; - u8 val2; - u8 val3; - u8 val4; - s8 field0:5; - s8 field1:2; - s8 field2:1; + u16 var00; + u16 var02; + u8 var04; + u8 var05; + u8 var06; + s8 var07_0:5; + s8 var07_5:2; + s8 var07_7:1; }; struct UnkStruct3 { - u8 field0:7; - u8 field1:1; - u8 val1; - s8 val2; - s8 val3; - /* - u16 val4; - u16 val5; - u8 val6; - u8 val7; - u8 val8; - s8 field2:5; - s8 field3:2; - s8 field4:1; - */ - struct UnkStruct1 val4; + u8 var00_0:7; + u8 var00_7:1; + u8 var01; + s8 var02; + s8 var03; + struct UnkStruct1 var04; }; struct UnkStruct0 { - u8 val0; - u8 val1; - u16 val2; //flag for each UnkStruct3 - struct UnkStruct3 val3[0x10]; + u8 var00; + u8 var01; + u16 var02; //flag for each UnkStruct3 + struct UnkStruct3 var04[0x10]; }; +s16 sub_81174C4(s16, s16); +s16 sub_81174E0(s16); + +void PlayRoulette(void); + + + #endif diff --git a/include/roulette_util.h b/include/roulette_util.h index ed925b5bd..daeaeeeef 100644 --- a/include/roulette_util.h +++ b/include/roulette_util.h @@ -5,7 +5,6 @@ void sub_8124918(struct UnkStruct0 *); u8 sub_812492C(struct UnkStruct0 *, u8, struct UnkStruct1 *); -u8 unref_sub_81249B0(struct UnkStruct0 *, u8); void task_tutorial_controls_fadein(struct UnkStruct0 *); void sub_8124CE8(struct UnkStruct0 *, u16); void sub_8124D3C(struct UnkStruct0 *, u16); 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 |