diff options
-rw-r--r-- | asm/use_pokeblock.s | 137 | ||||
-rw-r--r-- | include/pokenav.h | 11 | ||||
-rw-r--r-- | src/use_pokeblock.c | 72 |
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; +} |