summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/use_pokeblock.s137
-rw-r--r--include/pokenav.h11
-rw-r--r--src/use_pokeblock.c72
3 files changed, 78 insertions, 142 deletions
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index ba7001051..0b34669af 100644
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -6,143 +6,6 @@
.text
- thumb_func_start sub_8136174
-sub_8136174: @ 8136174
- push {r4,r5,lr}
- ldr r5, _081361C4 @ =gUnknown_02039304
- ldr r1, [r5]
- ldr r0, _081361C8 @ =gUnknown_0203930C
- ldr r0, [r0]
- str r0, [r1, 0x8]
- ldr r0, _081361CC @ =gUnknown_02039308
- ldr r0, [r0]
- str r0, [r1, 0x4]
- ldr r4, _081361D0 @ =gUnknown_02039310
- ldrb r0, [r4]
- bl sub_81370E4
- strb r0, [r4]
- ldr r5, [r5]
- movs r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0813619E
- movs r1, 0x1
-_0813619E:
- adds r0, r5, 0
- adds r0, 0x56
- strb r1, [r0]
- ldr r0, _081361D4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _081361D8 @ =0x0000d162
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, _081361DC @ =sub_8136294
- bl launch_c3_walk_stairs_and_run_once
- ldr r0, _081361E0 @ =sub_81361E4
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081361C4: .4byte gUnknown_02039304
-_081361C8: .4byte gUnknown_0203930C
-_081361CC: .4byte gUnknown_02039308
-_081361D0: .4byte gUnknown_02039310
-_081361D4: .4byte gUnknown_083DFEC4
-_081361D8: .4byte 0x0000d162
-_081361DC: .4byte sub_8136294
-_081361E0: .4byte sub_81361E4
- thumb_func_end sub_8136174
-
- thumb_func_start sub_81361E4
-sub_81361E4: @ 81361E4
- push {r4,lr}
- ldr r4, _08136220 @ =gUnknown_02039304
- ldr r0, [r4]
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r4, [r4]
- ldr r1, [r4]
- ldr r0, _08136224 @ =sub_81365C8
- cmp r1, r0
- bne _0813621A
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, r4, 0
- adds r0, 0x50
- strb r1, [r0]
- ldr r0, _08136228 @ =sub_813622C
- bl SetMainCallback2
-_0813621A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08136220: .4byte gUnknown_02039304
-_08136224: .4byte sub_81365C8
-_08136228: .4byte sub_813622C
- thumb_func_end sub_81361E4
-
- thumb_func_start sub_813622C
-sub_813622C: @ 813622C
- push {lr}
- bl sub_81368A4
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_813622C
-
- thumb_func_start sub_8136244
-sub_8136244: @ 8136244
- push {lr}
- ldr r0, _08136260 @ =gUnknown_02039304
- ldr r0, [r0]
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08136260: .4byte gUnknown_02039304
- thumb_func_end sub_8136244
-
- thumb_func_start sub_8136264
-sub_8136264: @ 8136264
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- movs r0, 0x6
- bl sub_80F5CDC
- bl sub_8089668
- pop {r0}
- bx r0
- thumb_func_end sub_8136264
-
- thumb_func_start launch_c3_walk_stairs_and_run_once
-launch_c3_walk_stairs_and_run_once: @ 8136280
- ldr r1, _08136290 @ =gUnknown_02039304
- ldr r1, [r1]
- str r0, [r1]
- adds r1, 0x50
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08136290: .4byte gUnknown_02039304
- thumb_func_end launch_c3_walk_stairs_and_run_once
-
thumb_func_start sub_8136294
sub_8136294: @ 8136294
push {r4,r5,lr}
diff --git a/include/pokenav.h b/include/pokenav.h
index df7d73b75..2a8060191 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -11,9 +11,13 @@ struct UnkPokenavStruct_Sub {
};
struct UnkPokenavStruct_Sub1 {
- /*0x0*/ u32 unk0;
- /*0x1*/ u32 unk4;
- /*0x2*/ u32 unk8;
+ /*0x00*/ void (*unk0)(void);
+ /*0x04*/ void *unk4;
+ /*0x08*/ void *unk8;
+ /*0x0C*/ u8 fillerC[0x44];
+ /*0x50*/ u8 unk50;
+ /*0x51*/ u8 unk51[5];
+ /*0x56*/ u8 unk56;
};
struct UnkPokenavStruct {
@@ -27,5 +31,6 @@ struct UnkPokenavStruct {
extern struct UnkPokenavStruct *gUnknown_083DFEC4;
+void sub_80F5CDC(u8);
#endif //POKERUBY_POKENAV_H
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 78415cbd7..c45064b80 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -4,18 +4,30 @@
#include "global.h"
#include "main.h"
+#include "asm.h"
+#include "sprite.h"
#include "pokemon.h"
#include "pokenav.h"
+#include "palette.h"
#include "use_pokeblock.h"
asm(".text");
+void *gUnknown_02039308;
+void *gUnknown_0203930C;
+u8 gUnknown_02039310;
+
extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304;
-void launch_c3_walk_stairs_and_run_once(void *);
+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_81365C8(void);
+void sub_81368A4(void);
+u8 sub_81370E4(u8);
-void sub_8136130(u32 a0, u32 a1)
+void sub_8136130(void *a0, void *a1)
{
gUnknown_02039304 = &gUnknown_083DFEC4->unkD164;
gUnknown_02039304->unk8 = a0;
@@ -24,3 +36,59 @@ void sub_8136130(u32 a0, u32 a1)
launch_c3_walk_stairs_and_run_once(sub_8136294);
SetMainCallback2(sub_8136244);
}
+
+void sub_8136174(void)
+{
+ gUnknown_02039304->unk8 = gUnknown_0203930C;
+ gUnknown_02039304->unk4 = gUnknown_02039308;
+ gUnknown_02039310 = sub_81370E4(gUnknown_02039310);
+ gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1;
+ gUnknown_083DFEC4->unkD162[0] = 2;
+ launch_c3_walk_stairs_and_run_once(sub_8136294);
+ SetMainCallback2(sub_81361E4);
+}
+
+void sub_81361E4(void)
+{
+ gUnknown_02039304->unk0();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ if (gUnknown_02039304->unk0 == sub_81365C8)
+ {
+ REG_DISPCNT = 0;
+ gUnknown_02039304->unk50 = 0;
+ SetMainCallback2(sub_813622C);
+ }
+}
+
+void sub_813622C(void)
+{
+ sub_81368A4();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_8136244(void)
+{
+ gUnknown_02039304->unk0();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_8136264(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_80F5CDC(6);
+ sub_8089668();
+}
+
+void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
+{
+ gUnknown_02039304->unk0 = func;
+ gUnknown_02039304->unk50 = 0;
+}