diff options
Diffstat (limited to 'src/code_8097F40.c')
-rw-r--r-- | src/code_8097F40.c | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/src/code_8097F40.c b/src/code_8097F40.c index 94d271c..6775965 100644 --- a/src/code_8097F40.c +++ b/src/code_8097F40.c @@ -1,4 +1,13 @@ #include "global.h" +#define NUM_EXCLUSIVE_POKEMON 12 + +struct ExclusivePokemon +{ + u16 poke_id; + bool8 in_rrt; // red rescue team + bool8 in_brt; // blue rescue team +}; +extern struct ExclusivePokemon gExclusivePokemon[]; extern u8 gUnknown_810ACC0[]; extern u8 *gUnknown_203B498; @@ -6,14 +15,7 @@ extern u8 gUnknown_2039840; bool8 sub_8097F40(u32 r0) { - bool8 temp; - temp = FALSE; - if(gUnknown_810ACC0[r0] == 2) - { - temp = TRUE; - } - return temp; - + return gUnknown_810ACC0[r0] == 2; } void sub_8097F5C(void) @@ -26,3 +28,45 @@ u8 *sub_8097F6C(void) return &gUnknown_2039840; } +#ifdef NONMATCHING +void sub_8097F74(void) +{ + s32 counter; + memset(gUnknown_203B498, 0, 0x64); + for(counter = 0; counter < NUM_EXCLUSIVE_POKEMON; counter++) + { + // TODO fix switching of addition statements (when it figures out the index) + gUnknown_203B498[counter + 0x58] = gExclusivePokemon[counter].in_rrt; + } +} +#else +NAKED +void sub_8097F74(void) +{ + asm_unified("\tpush {r4,lr}\n" + "\tldr r4, _08097FA0\n" + "\tldr r0, [r4]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x64\n" + "\tbl memset\n" + "\tmovs r2, 0\n" + "\tldr r3, _08097FA4\n" +"_08097F86:\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x58\n" + "\tadds r0, r2\n" + "\tldrb r1, [r3, 0x2]\n" + "\tstrb r1, [r0]\n" + "\tadds r3, 0x4\n" + "\tadds r2, 0x1\n" + "\tcmp r2, 0xB\n" + "\tble _08097F86\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_08097FA0: .4byte gUnknown_203B498\n" +"_08097FA4: .4byte gExclusivePokemon"); + +} +#endif |