summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-28 18:20:16 -0400
committerscnorton <scnorton@biociphers.org>2017-06-28 18:20:16 -0400
commit7caa3fd85bcb243cf5f63b2cf58185dc1eb9217c (patch)
treed63bbb58c72d6c5ae4a725ecd467b3528159cf28
parent7bb9c048b717dcc911383580603009665b479575 (diff)
sub_8136638
-rw-r--r--asm/use_pokeblock.s221
-rw-r--r--include/pokenav.h42
-rw-r--r--src/use_pokeblock.c101
3 files changed, 125 insertions, 239 deletions
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index c8e96ae0b..b05fcadf4 100644
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -6,225 +6,6 @@
.text
- thumb_func_start sub_8136638
-sub_8136638: @ 8136638
- push {r4,lr}
- ldr r0, _08136654 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08136648
- b _081367FA
-_08136648:
- lsls r0, 2
- ldr r1, _08136658 @ =_0813665C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08136654: .4byte gUnknown_02039304
-_08136658: .4byte _0813665C
- .align 2, 0
-_0813665C:
- .4byte _0813667C
- .4byte _08136748
- .4byte _08136754
- .4byte _08136774
- .4byte _081367FA
- .4byte _08136780
- .4byte _08136798
- .4byte _081367E0
-_0813667C:
- ldr r2, _081366A4 @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081366AC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_80F5060
- bl move_anim_execute
- ldr r0, _081366A8 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x1
- b _081367F8
- .align 2, 0
-_081366A4: .4byte gMain
-_081366A8: .4byte gUnknown_02039304
-_081366AC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081366D4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_80F5060
- bl move_anim_execute
- ldr r0, _081366D0 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x1
- b _081367F8
- .align 2, 0
-_081366D0: .4byte gUnknown_02039304
-_081366D4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081366F4
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081366F0 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x3
- b _081367F8
- .align 2, 0
-_081366F0: .4byte gUnknown_02039304
-_081366F4:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081366FE
- b _081367FA
-_081366FE:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08136728 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _0813672C @ =0x000087dc
- adds r1, r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, _08136730 @ =0x000087da
- adds r0, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- cmp r1, r0
- bne _08136738
- ldr r0, _08136734 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x3
- b _081367F8
- .align 2, 0
-_08136728: .4byte gUnknown_083DFEC4
-_0813672C: .4byte 0x000087dc
-_08136730: .4byte 0x000087da
-_08136734: .4byte gUnknown_02039304
-_08136738:
- ldr r0, _08136744 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x5
- b _081367F8
- .align 2, 0
-_08136744: .4byte gUnknown_02039304
-_08136748:
- bl gpu_sync_bg_show
- lsls r0, 24
- cmp r0, 0
- bne _081367FA
- b _08136784
-_08136754:
- bl sub_8055870
- adds r4, r0, 0
- cmp r4, 0
- bne _081367FA
- bl sub_80F1934
- bl sub_80F3D00
- ldr r0, _08136770 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- strb r4, [r0]
- b _081367FA
- .align 2, 0
-_08136770: .4byte gUnknown_02039304
-_08136774:
- ldr r0, _0813677C @ =sub_8136B44
- bl launch_c3_walk_stairs_and_run_once
- b _081367FA
- .align 2, 0
-_0813677C: .4byte sub_8136B44
-_08136780:
- bl sub_8136BB8
-_08136784:
- ldr r0, _08136794 @ =gUnknown_02039304
- ldr r1, [r0]
- adds r1, 0x50
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081367FA
- .align 2, 0
-_08136794: .4byte gUnknown_02039304
-_08136798:
- bl sub_8136C40
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081367B8
- cmp r1, 0
- bgt _081367B2
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081367F0
- b _081367FA
-_081367B2:
- cmp r1, 0x1
- bne _081367FA
- b _081367F0
-_081367B8:
- bl sub_8137058
- lsls r0, 24
- cmp r0, 0
- beq _081367D4
- bl sub_8136D60
- ldr r0, _081367D0 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0x7
- b _081367F8
- .align 2, 0
-_081367D0: .4byte gUnknown_02039304
-_081367D4:
- ldr r0, _081367DC @ =sub_8136808
- bl launch_c3_walk_stairs_and_run_once
- b _081367FA
- .align 2, 0
-_081367DC: .4byte sub_8136808
-_081367E0:
- ldr r0, _08136800 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081367FA
- bl sub_8136D8C
-_081367F0:
- ldr r0, _08136804 @ =gUnknown_02039304
- ldr r0, [r0]
- adds r0, 0x50
- movs r1, 0
-_081367F8:
- strb r1, [r0]
-_081367FA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08136800: .4byte gMain
-_08136804: .4byte gUnknown_02039304
- thumb_func_end sub_8136638
-
thumb_func_start sub_8136808
sub_8136808: @ 8136808
push {r4,r5,lr}
@@ -1517,5 +1298,5 @@ _08137218:
.align 2, 0
_0813721C: .4byte gUnknown_02039304
thumb_func_end sub_81371DC
-
+
.align 2, 0 @ Don't pad with nop.
diff --git a/include/pokenav.h b/include/pokenav.h
index ebe8ba59d..5fffc91fb 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -28,26 +28,29 @@ struct UnkPokenavStruct {
/*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];
+ /*0x76AA*/ u8 unk76AA;
+ /*0x76AB*/ u8 filler76AB[0x10bd];
+ /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768;
+ /*0x876C*/ u8 filler876C[0x6e];
+ /*0x87DA*/ s16 unk87DA;
+ /*0x87DC*/ s16 unk87DC;
+ /*0x87DE*/ s16 unk87DE;
+ /*0x87E0*/ void *unk87E0;
+ /*0x87E4*/ u8 filler87E4[0x44];
+ /*0x8828*/ u8 unk8828;
+ /*0x8829*/ u8 filler8829[0x7c7];
+ /*0x8ff0*/ u8 unk8ff0;
+ /*0x8ff1*/ u8 filler8ff1[0x13];
+ /*0x9004*/ u8 unk9004;
+ /*0x9005*/ u8 filler9005[0x33f];
+ /*0x9344*/ u8 unk9344;
+ /*0x9345*/ u8 filler9345[0x3ba3];
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
/*0xD158*/ u16 unkD158;
- /*0xd15a*/ u8 fillerD15A[6];
- /*0xd162*/ u16 unkD160;
- /*0xd162*/ u8 unkD162[2];
- /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164;
+ /*0xD15A*/ u8 fillerD15A[6];
+ /*0xD162*/ u16 unkD160;
+ /*0xD162*/ u8 unkD162[2];
+ /*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
};
extern struct UnkPokenavStruct *const gUnknown_083DFEC4;
@@ -70,5 +73,8 @@ void sub_80F5B38(void);
bool8 sub_80F5B50(void);
void sub_80F5CDC(u8);
void sub_80EBA5C(void);
+void sub_80F5060(bool8);
+void move_anim_execute(void);
+bool8 gpu_sync_bg_show(void);
#endif // GUARD_POKENAV_H
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 17387e09f..3c9afb756 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -10,6 +10,8 @@
#include "palette.h"
#include "text.h"
#include "menu.h"
+#include "sound.h"
+#include "songs.h"
#include "use_pokeblock.h"
asm(".text\n"
@@ -33,7 +35,14 @@ void sub_81365C8(void);
void sub_8136638(void);
void sub_81368A4(void);
void sub_8089668(void);
+void sub_8136B44(void);
u8 sub_81370E4(u8);
+void sub_8136BB8(void);
+s8 sub_8136C40(void);
+bool8 sub_8137058(void);
+void sub_8136D60(void);
+void sub_8136808(void);
+void sub_8136D8C(void);
void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
{
@@ -198,7 +207,7 @@ void sub_8136294(void)
gUnknown_02039304->unk50++;
break;
case 16:
- DmaClear32(3, 0x600f800, 0x800);
+ DmaClear32(3, BG_SCREEN_ADDR(31), 0x800);
REG_BG1VOFS = 0;
REG_BG1HOFS = 0;
REG_BG1CNT = BGCNT_SCREENBASE(31);
@@ -267,3 +276,93 @@ void sub_81365C8(void)
break;
}
}
+
+void sub_8136638(void)
+{
+ switch (gUnknown_02039304->unk50)
+ {
+ case 0:
+ if (gMain.heldKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sub_80F5060(TRUE);
+ move_anim_execute();
+ gUnknown_02039304->unk50 = 1;
+ }
+ else if (gMain.heldKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sub_80F5060(FALSE);
+ move_anim_execute();
+ gUnknown_02039304->unk50 = 1;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_02039304->unk50 = 3;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1)
+ {
+ gUnknown_02039304->unk50 = 3;
+ }
+ else
+ {
+ gUnknown_02039304->unk50 = 5;
+ }
+ }
+ break;
+ case 1:
+ if (!gpu_sync_bg_show())
+ {
+ gUnknown_02039304->unk50++;
+ }
+ break;
+ case 2:
+ if (!sub_8055870())
+ {
+ sub_80F1934();
+ sub_80F3D00();
+ gUnknown_02039304->unk50 = 0;
+ }
+ break;
+ case 3:
+ launch_c3_walk_stairs_and_run_once(sub_8136B44);
+ break;
+ case 4:
+ break;
+ case 5:
+ sub_8136BB8();
+ gUnknown_02039304->unk50++;
+ break;
+ case 6:
+ switch (sub_8136C40())
+ {
+ case 1:
+ case -1:
+ gUnknown_02039304->unk50 = 0;
+ break;
+ case 0:
+ if (sub_8137058())
+ {
+ sub_8136D60();
+ gUnknown_02039304->unk50 = 7;
+ }
+ else
+ {
+ launch_c3_walk_stairs_and_run_once(sub_8136808);
+ }
+ break;
+ }
+ break;
+ case 7:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8136D8C();
+ gUnknown_02039304->unk50 = 0;
+ }
+ break;
+ }
+}