summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-05-31 13:07:23 -0400
committerscnorton <scnorton@biociphers.org>2017-05-31 13:07:23 -0400
commite3025532d0d9ce7ad3f4581dac145f97d77905a1 (patch)
treee39b48ed27d6d6dba2b09b6cc58148e148f2d88b
parent508d11da9b1503a8b40f0f34a2c2242d1ef73c7d (diff)
Some more decompilation (giant function nonmatching, need help fixing pokenav struct?)
-rw-r--r--asm/use_pokeblock.s370
-rw-r--r--include/main.h2
-rw-r--r--include/pokenav.h45
-rw-r--r--src/use_pokeblock.c511
4 files changed, 552 insertions, 376 deletions
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index 0b34669af..a79b07bc6 100644
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -6,376 +6,6 @@
.text
- thumb_func_start sub_8136294
-sub_8136294: @ 8136294
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _081362B4 @ =gUnknown_02039304
- ldr r0, [r1]
- adds r0, 0x50
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x16
- bls _081362A8
- b _0813657A
-_081362A8:
- lsls r0, 2
- ldr r1, _081362B8 @ =_081362BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081362B4: .4byte gUnknown_02039304
-_081362B8: .4byte _081362BC
- .align 2, 0
-_081362BC:
- .4byte _08136318
- .4byte _08136354
- .4byte _0813635E
- .4byte _08136366
- .4byte _08136374
- .4byte _08136380
- .4byte _0813638C
- .4byte _081363B8
- .4byte _081363C8
- .4byte _081363DC
- .4byte _081363EE
- .4byte _08136404
- .4byte _08136448
- .4byte _08136464
- .4byte _08136488
- .4byte _08136494
- .4byte _0813649A
- .4byte _081364D8
- .4byte _081364FC
- .4byte _08136508
- .4byte _08136520
- .4byte _08136538
- .4byte _0813656C
-_08136318:
- bl is_c1_link_related_active
- ldr r1, _08136344 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _08136348 @ =0x00006dac
- adds r1, r2
- strb r0, [r1]
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08136330
- b _0813657A
-_08136330:
- ldr r4, _0813634C @ =gUnknown_02039304
- ldr r0, [r4]
- adds r0, 0x55
- strb r1, [r0]
- ldr r0, _08136350 @ =sub_81365A0
- bl launch_c3_walk_stairs_and_run_once
- ldr r1, [r4]
- b _08136528
- .align 2, 0
-_08136344: .4byte gUnknown_083DFEC4
-_08136348: .4byte 0x00006dac
-_0813634C: .4byte gUnknown_02039304
-_08136350: .4byte sub_81365A0
-_08136354:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- b _08136524
-_0813635E:
- movs r0, 0
- bl SetVBlankCallback
- b _08136524
-_08136366:
- ldr r0, _08136370 @ =gWindowConfig_81E7080
- bl SetUpWindowConfig
- b _08136524
- .align 2, 0
-_08136370: .4byte gWindowConfig_81E7080
-_08136374:
- ldr r0, _0813637C @ =gWindowConfig_81E7080
- bl MultistepInitMenuWindowBegin
- b _08136524
- .align 2, 0
-_0813637C: .4byte gWindowConfig_81E7080
-_08136380:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- bne _0813638A
- b _0813657A
-_0813638A:
- b _08136524
-_0813638C:
- ldr r0, _081363AC @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r4, _081363B0 @ =0x000076aa
- adds r0, r1, r4
- movs r2, 0
- strb r2, [r0]
- ldr r4, _081363B4 @ =0x000087e0
- adds r0, r1, r4
- str r2, [r0]
- movs r0, 0xC3
- lsls r0, 2
- adds r1, r0
- movs r0, 0x20
- strh r0, [r1]
- ldr r1, [r3]
- b _08136528
- .align 2, 0
-_081363AC: .4byte gUnknown_083DFEC4
-_081363B0: .4byte 0x000076aa
-_081363B4: .4byte 0x000087e0
-_081363B8:
- bl sub_80F2688
- ldr r0, _081363D8 @ =gUnknown_02039304
- ldr r1, [r0]
- adds r1, 0x50
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081363C8:
- bl sub_80F26BC
- lsls r0, 24
- cmp r0, 0
- beq _081363D4
- b _0813657A
-_081363D4:
- b _08136524
- .align 2, 0
-_081363D8: .4byte gUnknown_02039304
-_081363DC:
- movs r0, 0x1
- bl sub_80F2C80
- ldr r0, _08136400 @ =gUnknown_02039304
- ldr r1, [r0]
- adds r1, 0x50
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081363EE:
- movs r0, 0x1
- bl sub_80F2CBC
- lsls r0, 24
- cmp r0, 0
- beq _081363FC
- b _0813657A
-_081363FC:
- b _08136524
- .align 2, 0
-_08136400: .4byte gUnknown_02039304
-_08136404:
- ldr r1, _08136434 @ =gKeyRepeatStartDelay
- movs r0, 0x14
- strh r0, [r1]
- bl CalculatePlayerPartyCount
- ldr r1, _08136438 @ =gUnknown_083DFEC4
- ldr r4, [r1]
- ldr r2, _0813643C @ =0x00008828
- adds r1, r4, r2
- movs r5, 0
- strb r0, [r1]
- ldr r1, _08136440 @ =0x00009344
- adds r0, r4, r1
- strb r5, [r0]
- subs r2, 0xC0
- adds r0, r4, r2
- str r5, [r0]
- bl sub_80F4BD0
- ldr r0, _08136444 @ =0x0000d160
- adds r4, r0
- strh r5, [r4]
- b _08136524
- .align 2, 0
-_08136434: .4byte gKeyRepeatStartDelay
-_08136438: .4byte gUnknown_083DFEC4
-_0813643C: .4byte 0x00008828
-_08136440: .4byte 0x00009344
-_08136444: .4byte 0x0000d160
-_08136448:
- bl sub_80F1778
- lsls r0, 24
- cmp r0, 0
- beq _08136454
- b _0813657A
-_08136454:
- ldr r0, _08136460 @ =REG_BG2VOFS
- movs r1, 0x6
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- b _08136524
- .align 2, 0
-_08136460: .4byte REG_BG2VOFS
-_08136464:
- movs r0, 0
- bl sub_80F2E18
- ldr r0, _0813647C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _08136480 @ =0x00008768
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _08136484 @ =0x0000ffd8
- strh r0, [r1, 0x26]
- b _08136524
- .align 2, 0
-_0813647C: .4byte gUnknown_083DFEC4
-_08136480: .4byte 0x00008768
-_08136484: .4byte 0x0000ffd8
-_08136488:
- bl sub_80F170C
- lsls r0, 24
- cmp r0, 0
- bne _0813657A
- b _08136524
-_08136494:
- bl sub_80F33A8
- b _08136524
-_0813649A:
- ldr r1, _081364C4 @ =0x0600f800
- movs r2, 0
- str r2, [sp]
- ldr r0, _081364C8 @ =0x040000d4
- mov r4, sp
- str r4, [r0]
- str r1, [r0, 0x4]
- ldr r1, _081364CC @ =0x85000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _081364D0 @ =REG_BG1VOFS
- strh r2, [r0]
- subs r0, 0x2
- strh r2, [r0]
- ldr r1, _081364D4 @ =REG_BG1CNT
- movs r2, 0xF8
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, [r3]
- b _08136528
- .align 2, 0
-_081364C4: .4byte 0x0600f800
-_081364C8: .4byte 0x040000d4
-_081364CC: .4byte 0x85000200
-_081364D0: .4byte REG_BG1VOFS
-_081364D4: .4byte REG_BG1CNT
-_081364D8:
- ldr r0, _081364F0 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r4, _081364F4 @ =0x00008ff0
- adds r0, r1, r4
- ldr r2, _081364F8 @ =0x00009004
- adds r1, r2
- bl sub_80F567C
- bl sub_80F5B38
- b _08136524
- .align 2, 0
-_081364F0: .4byte gUnknown_083DFEC4
-_081364F4: .4byte 0x00008ff0
-_081364F8: .4byte 0x00009004
-_081364FC:
- bl sub_80F5B50
- lsls r0, 24
- cmp r0, 0
- bne _0813657A
- b _08136524
-_08136508:
- ldr r0, _08136518 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r4, _0813651C @ =0x00009004
- adds r0, r4
- bl sub_80F556C
- b _08136524
- .align 2, 0
-_08136518: .4byte gUnknown_083DFEC4
-_0813651C: .4byte 0x00009004
-_08136520:
- bl sub_80F1934
-_08136524:
- ldr r0, _08136534 @ =gUnknown_02039304
- ldr r1, [r0]
-_08136528:
- adds r1, 0x50
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0813657A
- .align 2, 0
-_08136534: .4byte gUnknown_02039304
-_08136538:
- ldr r1, _08136584 @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x9B
- strh r0, [r1]
- ldr r0, _08136588 @ =REG_WIN0V
- ldr r2, _0813658C @ =0x00003273
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _08136590 @ =REG_WININ
- ldr r4, _08136594 @ =0x00003f3f
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x1B
- strh r0, [r1]
- subs r1, 0x38
- movs r0, 0x28
- strh r0, [r1]
- subs r1, 0x12
- ldr r2, _08136598 @ =0x00007f40
- adds r0, r2, 0
- strh r0, [r1]
-_0813656C:
- ldr r0, [r3]
- adds r0, 0x55
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _0813659C @ =sub_81365C8
- bl launch_c3_walk_stairs_and_run_once
-_0813657A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08136584: .4byte REG_WIN0H
-_08136588: .4byte REG_WIN0V
-_0813658C: .4byte 0x00003273
-_08136590: .4byte REG_WININ
-_08136594: .4byte 0x00003f3f
-_08136598: .4byte 0x00007f40
-_0813659C: .4byte sub_81365C8
- thumb_func_end sub_8136294
-
- thumb_func_start sub_81365A0
-sub_81365A0: @ 81365A0
- push {r4,lr}
- ldr r1, _081365C4 @ =gUnknown_02039304
- ldr r0, [r1]
- adds r0, 0x55
- ldrb r0, [r0]
- cmp r0, 0
- bne _081365BE
- adds r4, r1, 0
-_081365B0:
- bl sub_8136294
- ldr r0, [r4]
- adds r0, 0x55
- ldrb r0, [r0]
- cmp r0, 0
- beq _081365B0
-_081365BE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081365C4: .4byte gUnknown_02039304
- thumb_func_end sub_81365A0
-
thumb_func_start sub_81365C8
sub_81365C8: @ 81365C8
push {r4,lr}
diff --git a/include/main.h b/include/main.h
index e0cb09370..ff9bb89c7 100644
--- a/include/main.h
+++ b/include/main.h
@@ -46,8 +46,8 @@ struct Main
extern u8 gLinkTransferringData;
extern struct Main gMain;
extern bool8 gSoftResetDisabled;
-extern bool8 gLinkVSyncDisabled;
+extern bool8 gLinkVSyncDisabled;
extern const u8 gGameVersion;
extern const u8 gGameLanguage;
diff --git a/include/pokenav.h b/include/pokenav.h
index 2a8060191..f32611161 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -16,21 +16,60 @@ struct UnkPokenavStruct_Sub1 {
/*0x08*/ void *unk8;
/*0x0C*/ u8 fillerC[0x44];
/*0x50*/ u8 unk50;
- /*0x51*/ u8 unk51[5];
+ /*0x51*/ u8 unk51[4];
+ /*0x56*/ u8 unk55;
/*0x56*/ u8 unk56;
};
+struct UnkPokenavStruct_Sub2 {
+ /*0x00*/ u8 filler_00[0x26];
+ /*0x26*/ u16 unk26;
+};
+
struct UnkPokenavStruct {
- /*0x0000*/ u8 filler0000[0xCEE8];
+ /*0x0000*/ u8 filler0000[0x30c];
+ /*0x0000*/ u16 unk030C;
+ /*0x0000*/ u8 filler030E[0x6a9e];
+ /*0x6DAC*/ u8 unk6DAC;
+ /*0x6DAD*/ u8 filler6DAD[0x8fd];
+ /*0x6DAD*/ u8 unk76AA;
+ /*0x6DAD*/ u8 filler76AB[0x10bd];
+ /*0x6DAD*/ struct UnkPokenavStruct_Sub2 *unk8768;
+ /*0x6DAD*/ u8 filler876C[0x74];
+ /*0x6DAD*/ void *unk87E0;
+ /*0x6DAD*/ u8 filler87E4[0x44];
+ /*0x6DAD*/ u8 unk8828;
+ /*0x6DAD*/ u8 filler8829[0x7c7];
+ /*0x6DAD*/ u8 unk8ff0;
+ /*0x6DAD*/ u8 filler8ff1[0x13];
+ /*0x6DAD*/ u8 unk9004;
+ /*0x6DAD*/ u8 filler9005[0x33f];
+ /*0x6DAD*/ u8 unk9344;
+ /*0x6DAD*/ u8 filler9345[0x3ba3];
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
/*0xD158*/ u16 unkD158;
- /*0xd15a*/ u8 fillerD15A[8];
+ /*0xd15a*/ u8 fillerD15A[6];
+ /*0xd162*/ u16 unkD160;
/*0xd162*/ u8 unkD162[2];
/*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164;
};
extern struct UnkPokenavStruct *gUnknown_083DFEC4;
+bool8 sub_80F170C(void);
+bool8 sub_80F1778(void);
+void sub_80F1934(void);
+void sub_80F2C80(u8);
+void sub_80F2688(void);
+bool8 sub_80F26BC(void);
+bool8 sub_80F2CBC(u8);
+void sub_80F2E18(u8);
+void sub_80F33A8(void);
+void sub_80F4BD0(void);
+void sub_80F556C(void *);
+void sub_80F567C(void *, void *);
+void sub_80F5B38(void);
+bool8 sub_80F5B50(void);
void sub_80F5CDC(u8);
#endif //POKERUBY_POKENAV_H
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index c45064b80..351248cbd 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -5,24 +5,30 @@
#include "global.h"
#include "main.h"
#include "asm.h"
-#include "sprite.h"
+#include "rom4.h"
#include "pokemon.h"
#include "pokenav.h"
#include "palette.h"
+#include "text.h"
+#include "menu.h"
#include "use_pokeblock.h"
-asm(".text");
+asm(".text\n"
+ ".include \"constants/gba_constants.inc\"");
void *gUnknown_02039308;
void *gUnknown_0203930C;
u8 gUnknown_02039310;
extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304;
+extern u16 gKeyRepeatStartDelay;
+
void launch_c3_walk_stairs_and_run_once(void (*const)(void));
void sub_81361E4(void);
void sub_813622C(void);
void sub_8136244(void);
void sub_8136294(void);
+void sub_81365A0(void);
void sub_81365C8(void);
void sub_81368A4(void);
u8 sub_81370E4(u8);
@@ -92,3 +98,504 @@ void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
gUnknown_02039304->unk0 = func;
gUnknown_02039304->unk50 = 0;
}
+
+#ifdef NONMATCHING
+void sub_8136294(void)
+{
+ u32 dma3sad;
+ bool32 c1LinkRelatedActive;
+ switch (gUnknown_02039304->unk50)
+ {
+ case 0:
+ c1LinkRelatedActive = is_c1_link_related_active();
+ gUnknown_083DFEC4->unk6DAC = c1LinkRelatedActive;
+ if ((bool8)c1LinkRelatedActive == FALSE)
+ {
+ gUnknown_02039304->unk55 = 0;
+ launch_c3_walk_stairs_and_run_once(sub_81365A0);
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 1:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gUnknown_02039304->unk50++;
+ break;
+ case 2:
+ SetVBlankCallback(NULL);
+ gUnknown_02039304->unk50++;
+ break;
+ case 3:
+ SetUpWindowConfig(&gWindowConfig_81E7080);
+ gUnknown_02039304->unk50++;
+ break;
+ case 4:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E7080);
+ gUnknown_02039304->unk50++;
+ break;
+ case 5:
+ if (MultistepInitMenuWindowContinue())
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 6:
+ gUnknown_083DFEC4->unk76AA = 0;
+ gUnknown_083DFEC4->unk87E0 = NULL;
+ gUnknown_083DFEC4->unk030C = 0x20;
+ gUnknown_02039304->unk50++;
+ break;
+ case 7:
+ sub_80F2688();
+ gUnknown_02039304->unk50++;
+ // fallthrough
+ case 8:
+ if (!sub_80F26BC())
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 9:
+ sub_80F2C80(1);
+ gUnknown_02039304->unk50++;
+ // fallthrough
+ case 10:
+ if (!sub_80F2CBC(1))
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 11:
+ gKeyRepeatStartDelay = 20;
+ gUnknown_083DFEC4->unk8828 = CalculatePlayerPartyCount();
+ gUnknown_083DFEC4->unk9344 = 0;
+ gUnknown_083DFEC4->unk8768 = NULL;
+ sub_80F4BD0();
+ gUnknown_083DFEC4->unkD160 = 0;
+ gUnknown_02039304->unk50++;
+ break;
+ case 12:
+ if (!sub_80F1778())
+ {
+ REG_BG2VOFS = 6;
+ REG_BG3VOFS = 6;
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 13:
+ sub_80F2E18(0);
+ gUnknown_083DFEC4->unk8768->unk26 = 0xffd8;
+ gUnknown_02039304->unk50++;
+ break;
+ case 14:
+ if (!sub_80F170C())
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 15:
+ sub_80F33A8();
+ gUnknown_02039304->unk50++;
+ break;
+ case 16:
+ dma3sad = 0;
+ REG_DMA3SAD = (vu32)&dma3sad;
+ REG_DMA3DAD = 0x600F800;
+ REG_DMA3CNT = 0x85000200;
+ REG_BG1VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1CNT = 0x1f00;
+ gUnknown_02039304->unk50++;
+ break;
+ case 17:
+ sub_80F567C(&gUnknown_083DFEC4->unk8ff0, &gUnknown_083DFEC4->unk9004);
+ sub_80F5B38();
+ gUnknown_02039304->unk50++;
+ break;
+ case 18:
+ if (!sub_80F5B50())
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 19:
+ sub_80F556C(&gUnknown_083DFEC4->unk9004);
+ gUnknown_02039304->unk50++;
+ break;
+ case 20:
+ sub_80F1934();
+ gUnknown_02039304->unk50++;
+ break;
+ case 21:
+ REG_WIN0H = 0xf0;
+ REG_WIN1H = 0x9b;
+ REG_WIN0V = 0x3273;
+ REG_WIN1V = 0x3273;
+ REG_WININ = 0x3f3f;
+ REG_WINOUT = 0x1b;
+ REG_BG0VOFS = 0x28;
+ REG_DISPCNT = 0x7f40;
+ // fallthrough
+ case 22:
+ gUnknown_02039304->unk55 = 1;
+ launch_c3_walk_stairs_and_run_once(sub_81365C8);
+ break;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8136294(void)
+{
+ asm(".syntax unified\n"
+ "\tpush {r4,r5,lr}\n"
+ "\tsub sp, 0x4\n"
+ "\tldr r1, _081362B4 @ =gUnknown_02039304\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x50\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r3, r1, 0\n"
+ "\tcmp r0, 0x16\n"
+ "\tbls _081362A8\n"
+ "\tb _0813657A\n"
+ "_081362A8:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _081362B8 @ =_081362BC\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_081362B4: .4byte gUnknown_02039304\n"
+ "_081362B8: .4byte _081362BC\n"
+ "\t.align 2, 0\n"
+ "_081362BC:\n"
+ "\t.4byte _08136318\n"
+ "\t.4byte _08136354\n"
+ "\t.4byte _0813635E\n"
+ "\t.4byte _08136366\n"
+ "\t.4byte _08136374\n"
+ "\t.4byte _08136380\n"
+ "\t.4byte _0813638C\n"
+ "\t.4byte _081363B8\n"
+ "\t.4byte _081363C8\n"
+ "\t.4byte _081363DC\n"
+ "\t.4byte _081363EE\n"
+ "\t.4byte _08136404\n"
+ "\t.4byte _08136448\n"
+ "\t.4byte _08136464\n"
+ "\t.4byte _08136488\n"
+ "\t.4byte _08136494\n"
+ "\t.4byte _0813649A\n"
+ "\t.4byte _081364D8\n"
+ "\t.4byte _081364FC\n"
+ "\t.4byte _08136508\n"
+ "\t.4byte _08136520\n"
+ "\t.4byte _08136538\n"
+ "\t.4byte _0813656C\n"
+ "_08136318:\n"
+ "\tbl is_c1_link_related_active\n"
+ "\tldr r1, _08136344 @ =gUnknown_083DFEC4\n"
+ "\tldr r1, [r1]\n"
+ "\tldr r2, _08136348 @ =0x00006dac\n"
+ "\tadds r1, r2\n"
+ "\tstrb r0, [r1]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08136330\n"
+ "\tb _0813657A\n"
+ "_08136330:\n"
+ "\tldr r4, _0813634C @ =gUnknown_02039304\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, 0x55\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, _08136350 @ =sub_81365A0\n"
+ "\tbl launch_c3_walk_stairs_and_run_once\n"
+ "\tldr r1, [r4]\n"
+ "\tb _08136528\n"
+ "\t.align 2, 0\n"
+ "_08136344: .4byte gUnknown_083DFEC4\n"
+ "_08136348: .4byte 0x00006dac\n"
+ "_0813634C: .4byte gUnknown_02039304\n"
+ "_08136350: .4byte sub_81365A0\n"
+ "_08136354:\n"
+ "\tbl ResetSpriteData\n"
+ "\tbl FreeAllSpritePalettes\n"
+ "\tb _08136524\n"
+ "_0813635E:\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetVBlankCallback\n"
+ "\tb _08136524\n"
+ "_08136366:\n"
+ "\tldr r0, _08136370 @ =gWindowConfig_81E7080\n"
+ "\tbl SetUpWindowConfig\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_08136370: .4byte gWindowConfig_81E7080\n"
+ "_08136374:\n"
+ "\tldr r0, _0813637C @ =gWindowConfig_81E7080\n"
+ "\tbl MultistepInitMenuWindowBegin\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_0813637C: .4byte gWindowConfig_81E7080\n"
+ "_08136380:\n"
+ "\tbl MultistepInitMenuWindowContinue\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0813638A\n"
+ "\tb _0813657A\n"
+ "_0813638A:\n"
+ "\tb _08136524\n"
+ "_0813638C:\n"
+ "\tldr r0, _081363AC @ =gUnknown_083DFEC4\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r4, _081363B0 @ =0x000076aa\n"
+ "\tadds r0, r1, r4\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r4, _081363B4 @ =0x000087e0\n"
+ "\tadds r0, r1, r4\n"
+ "\tstr r2, [r0]\n"
+ "\tmovs r0, 0xC3\n"
+ "\tlsls r0, 2\n"
+ "\tadds r1, r0\n"
+ "\tmovs r0, 0x20\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r1, [r3]\n"
+ "\tb _08136528\n"
+ "\t.align 2, 0\n"
+ "_081363AC: .4byte gUnknown_083DFEC4\n"
+ "_081363B0: .4byte 0x000076aa\n"
+ "_081363B4: .4byte 0x000087e0\n"
+ "_081363B8:\n"
+ "\tbl sub_80F2688\n"
+ "\tldr r0, _081363D8 @ =gUnknown_02039304\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, 0x50\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_081363C8:\n"
+ "\tbl sub_80F26BC\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _081363D4\n"
+ "\tb _0813657A\n"
+ "_081363D4:\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_081363D8: .4byte gUnknown_02039304\n"
+ "_081363DC:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_80F2C80\n"
+ "\tldr r0, _08136400 @ =gUnknown_02039304\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, 0x50\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_081363EE:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_80F2CBC\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _081363FC\n"
+ "\tb _0813657A\n"
+ "_081363FC:\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_08136400: .4byte gUnknown_02039304\n"
+ "_08136404:\n"
+ "\tldr r1, _08136434 @ =gKeyRepeatStartDelay\n"
+ "\tmovs r0, 0x14\n"
+ "\tstrh r0, [r1]\n"
+ "\tbl CalculatePlayerPartyCount\n"
+ "\tldr r1, _08136438 @ =gUnknown_083DFEC4\n"
+ "\tldr r4, [r1]\n"
+ "\tldr r2, _0813643C @ =0x00008828\n"
+ "\tadds r1, r4, r2\n"
+ "\tmovs r5, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r1, _08136440 @ =0x00009344\n"
+ "\tadds r0, r4, r1\n"
+ "\tstrb r5, [r0]\n"
+ "\tsubs r2, 0xC0\n"
+ "\tadds r0, r4, r2\n"
+ "\tstr r5, [r0]\n"
+ "\tbl sub_80F4BD0\n"
+ "\tldr r0, _08136444 @ =0x0000d160\n"
+ "\tadds r4, r0\n"
+ "\tstrh r5, [r4]\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_08136434: .4byte gKeyRepeatStartDelay\n"
+ "_08136438: .4byte gUnknown_083DFEC4\n"
+ "_0813643C: .4byte 0x00008828\n"
+ "_08136440: .4byte 0x00009344\n"
+ "_08136444: .4byte 0x0000d160\n"
+ "_08136448:\n"
+ "\tbl sub_80F1778\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08136454\n"
+ "\tb _0813657A\n"
+ "_08136454:\n"
+ "\tldr r0, _08136460 @ =REG_BG2VOFS\n"
+ "\tmovs r1, 0x6\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_08136460: .4byte REG_BG2VOFS\n"
+ "_08136464:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_80F2E18\n"
+ "\tldr r0, _0813647C @ =gUnknown_083DFEC4\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r1, _08136480 @ =0x00008768\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r0, _08136484 @ =0x0000ffd8\n"
+ "\tstrh r0, [r1, 0x26]\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_0813647C: .4byte gUnknown_083DFEC4\n"
+ "_08136480: .4byte 0x00008768\n"
+ "_08136484: .4byte 0x0000ffd8\n"
+ "_08136488:\n"
+ "\tbl sub_80F170C\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0813657A\n"
+ "\tb _08136524\n"
+ "_08136494:\n"
+ "\tbl sub_80F33A8\n"
+ "\tb _08136524\n"
+ "_0813649A:\n"
+ "\tldr r1, _081364C4 @ =0x0600f800\n"
+ "\tmovs r2, 0\n"
+ "\tstr r2, [sp]\n"
+ "\tldr r0, _081364C8 @ =0x040000d4\n"
+ "\tmov r4, sp\n"
+ "\tstr r4, [r0]\n"
+ "\tstr r1, [r0, 0x4]\n"
+ "\tldr r1, _081364CC @ =0x85000200\n"
+ "\tstr r1, [r0, 0x8]\n"
+ "\tldr r0, [r0, 0x8]\n"
+ "\tldr r0, _081364D0 @ =REG_BG1VOFS\n"
+ "\tstrh r2, [r0]\n"
+ "\tsubs r0, 0x2\n"
+ "\tstrh r2, [r0]\n"
+ "\tldr r1, _081364D4 @ =REG_BG1CNT\n"
+ "\tmovs r2, 0xF8\n"
+ "\tlsls r2, 5\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r1, [r3]\n"
+ "\tb _08136528\n"
+ "\t.align 2, 0\n"
+ "_081364C4: .4byte 0x0600f800\n"
+ "_081364C8: .4byte 0x040000d4\n"
+ "_081364CC: .4byte 0x85000200\n"
+ "_081364D0: .4byte REG_BG1VOFS\n"
+ "_081364D4: .4byte REG_BG1CNT\n"
+ "_081364D8:\n"
+ "\tldr r0, _081364F0 @ =gUnknown_083DFEC4\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r4, _081364F4 @ =0x00008ff0\n"
+ "\tadds r0, r1, r4\n"
+ "\tldr r2, _081364F8 @ =0x00009004\n"
+ "\tadds r1, r2\n"
+ "\tbl sub_80F567C\n"
+ "\tbl sub_80F5B38\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_081364F0: .4byte gUnknown_083DFEC4\n"
+ "_081364F4: .4byte 0x00008ff0\n"
+ "_081364F8: .4byte 0x00009004\n"
+ "_081364FC:\n"
+ "\tbl sub_80F5B50\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0813657A\n"
+ "\tb _08136524\n"
+ "_08136508:\n"
+ "\tldr r0, _08136518 @ =gUnknown_083DFEC4\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r4, _0813651C @ =0x00009004\n"
+ "\tadds r0, r4\n"
+ "\tbl sub_80F556C\n"
+ "\tb _08136524\n"
+ "\t.align 2, 0\n"
+ "_08136518: .4byte gUnknown_083DFEC4\n"
+ "_0813651C: .4byte 0x00009004\n"
+ "_08136520:\n"
+ "\tbl sub_80F1934\n"
+ "_08136524:\n"
+ "\tldr r0, _08136534 @ =gUnknown_02039304\n"
+ "\tldr r1, [r0]\n"
+ "_08136528:\n"
+ "\tadds r1, 0x50\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _0813657A\n"
+ "\t.align 2, 0\n"
+ "_08136534: .4byte gUnknown_02039304\n"
+ "_08136538:\n"
+ "\tldr r1, _08136584 @ =REG_WIN0H\n"
+ "\tmovs r0, 0xF0\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r1, 0x2\n"
+ "\tmovs r0, 0x9B\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r0, _08136588 @ =REG_WIN0V\n"
+ "\tldr r2, _0813658C @ =0x00003273\n"
+ "\tadds r1, r2, 0\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x2\n"
+ "\tstrh r1, [r0]\n"
+ "\tldr r1, _08136590 @ =REG_WININ\n"
+ "\tldr r4, _08136594 @ =0x00003f3f\n"
+ "\tadds r0, r4, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r1, 0x2\n"
+ "\tmovs r0, 0x1B\n"
+ "\tstrh r0, [r1]\n"
+ "\tsubs r1, 0x38\n"
+ "\tmovs r0, 0x28\n"
+ "\tstrh r0, [r1]\n"
+ "\tsubs r1, 0x12\n"
+ "\tldr r2, _08136598 @ =0x00007f40\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "_0813656C:\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r0, 0x55\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, _0813659C @ =sub_81365C8\n"
+ "\tbl launch_c3_walk_stairs_and_run_once\n"
+ "_0813657A:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08136584: .4byte REG_WIN0H\n"
+ "_08136588: .4byte REG_WIN0V\n"
+ "_0813658C: .4byte 0x00003273\n"
+ "_08136590: .4byte REG_WININ\n"
+ "_08136594: .4byte 0x00003f3f\n"
+ "_08136598: .4byte 0x00007f40\n"
+ "_0813659C: .4byte sub_81365C8\n"
+ ".syntax divided\n");
+}
+#endif
+
+void sub_81365A0(void)
+{
+ while (!gUnknown_02039304->unk55)
+ {
+ sub_8136294();
+ }
+}