From 18e060cd532fbe5678d08dd1a1386ae0763f6fc1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 10:12:55 -0400 Subject: Start to decompile use_pokeblock.s --- asm/use_pokeblock.s | 31 ------------------------------- include/pokenav.h | 31 +++++++++++++++++++++++++++++++ include/use_pokeblock.h | 8 ++++++++ ld_script.txt | 1 + src/pokenav.c | 17 +---------------- src/use_pokeblock.c | 26 ++++++++++++++++++++++++++ 6 files changed, 67 insertions(+), 47 deletions(-) create mode 100644 include/pokenav.h create mode 100644 include/use_pokeblock.h create mode 100644 src/use_pokeblock.c diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index a9913b6d0..ba7001051 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,37 +6,6 @@ .text - thumb_func_start sub_8136130 -sub_8136130: @ 8136130 - push {r4,r5,lr} - ldr r4, _0813615C @ =gUnknown_02039304 - ldr r2, _08136160 @ =gUnknown_083DFEC4 - ldr r3, [r2] - ldr r5, _08136164 @ =0x0000d164 - adds r2, r3, r5 - str r2, [r4] - str r0, [r2, 0x8] - str r1, [r2, 0x4] - ldr r0, _08136168 @ =0x0000d162 - adds r3, r0 - movs r0, 0x2 - strb r0, [r3] - ldr r0, _0813616C @ =sub_8136294 - bl launch_c3_walk_stairs_and_run_once - ldr r0, _08136170 @ =sub_8136244 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813615C: .4byte gUnknown_02039304 -_08136160: .4byte gUnknown_083DFEC4 -_08136164: .4byte 0x0000d164 -_08136168: .4byte 0x0000d162 -_0813616C: .4byte sub_8136294 -_08136170: .4byte sub_8136244 - thumb_func_end sub_8136130 - thumb_func_start sub_8136174 sub_8136174: @ 8136174 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h new file mode 100644 index 000000000..df7d73b75 --- /dev/null +++ b/include/pokenav.h @@ -0,0 +1,31 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#ifndef POKERUBY_POKENAV_H +#define POKERUBY_POKENAV_H + +struct UnkPokenavStruct_Sub { + /*0x0*/ u16 unk0; + /*0x2*/ u8 filler2[6]; +}; + +struct UnkPokenavStruct_Sub1 { + /*0x0*/ u32 unk0; + /*0x1*/ u32 unk4; + /*0x2*/ u32 unk8; +}; + +struct UnkPokenavStruct { + /*0x0000*/ u8 filler0000[0xCEE8]; + /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; + /*0xD158*/ u16 unkD158; + /*0xd15a*/ u8 fillerD15A[8]; + /*0xd162*/ u8 unkD162[2]; + /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; +}; + +extern struct UnkPokenavStruct *gUnknown_083DFEC4; + + +#endif //POKERUBY_POKENAV_H diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h new file mode 100644 index 000000000..ca999e0ed --- /dev/null +++ b/include/use_pokeblock.h @@ -0,0 +1,8 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#ifndef POKERUBY_USE_POKEBLOCK_H +#define POKERUBY_USE_POKEBLOCK_H + +#endif //POKERUBY_USE_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index cae32faa2..cca808e89 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -258,6 +258,7 @@ SECTIONS { asm/decoration_inventory.o(.text); src/roamer.o(.text); asm/battle_tower.o(.text); + src/use_pokeblock.o(.text); asm/use_pokeblock.o(.text); asm/battle_anim_8137220.o(.text); src/player_pc.o(.text); diff --git a/src/pokenav.c b/src/pokenav.c index f50f039f8..4d1ecf421 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,24 +1,9 @@ #include "global.h" #include "battle.h" #include "data2.h" +#include "pokenav.h" #include "string_util.h" -struct UnkPokenavStruct_Sub { - /*0x0*/ u16 unk0; - /*0x2*/ u8 filler2[6]; -}; - - -struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0xCEE8]; - /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; - /*0xD158*/ u16 unkD158; - -}; - -extern struct UnkPokenavStruct *gUnknown_083DFEC4; - - void sub_80F700C(u8 *arg0, u16 arg1) { struct Trainer *trainer; u8 *ptr; diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c new file mode 100644 index 000000000..78415cbd7 --- /dev/null +++ b/src/use_pokeblock.c @@ -0,0 +1,26 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#include "global.h" +#include "main.h" +#include "pokemon.h" +#include "pokenav.h" +#include "use_pokeblock.h" + +asm(".text"); + +extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; +void launch_c3_walk_stairs_and_run_once(void *); +void sub_8136244(void); +void sub_8136294(void); + +void sub_8136130(u32 a0, u32 a1) +{ + gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; + gUnknown_02039304->unk8 = a0; + gUnknown_02039304->unk4 = a1; + gUnknown_083DFEC4->unkD162[0] = 2; + launch_c3_walk_stairs_and_run_once(sub_8136294); + SetMainCallback2(sub_8136244); +} -- cgit v1.2.3 From 508d11da9b1503a8b40f0f34a2c2242d1ef73c7d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 10:55:51 -0400 Subject: Continue decompilation of use_pokeblock.s --- asm/use_pokeblock.s | 137 ---------------------------------------------------- include/pokenav.h | 11 +++-- 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; +} -- cgit v1.2.3 From e3025532d0d9ce7ad3f4581dac145f97d77905a1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 13:07:23 -0400 Subject: Some more decompilation (giant function nonmatching, need help fixing pokenav struct?) --- asm/use_pokeblock.s | 370 ------------------------------------- include/main.h | 2 +- include/pokenav.h | 45 ++++- src/use_pokeblock.c | 511 +++++++++++++++++++++++++++++++++++++++++++++++++++- 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(); + } +} -- cgit v1.2.3 From 39efcb2a6d169fba0ff33f1bd25e2947b74881a0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 13:37:37 -0400 Subject: sub_81365C8 --- asm/use_pokeblock.s | 54 ----------------------------------------------------- include/pokenav.h | 2 ++ src/use_pokeblock.c | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 54 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index a79b07bc6..c8e96ae0b 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,60 +6,6 @@ .text - thumb_func_start sub_81365C8 -sub_81365C8: @ 81365C8 - push {r4,lr} - sub sp, 0x4 - ldr r4, _081365E0 @ =gUnknown_02039304 - ldr r0, [r4] - adds r0, 0x50 - ldrb r1, [r0] - cmp r1, 0 - beq _081365E4 - cmp r1, 0x1 - beq _0813660C - b _08136626 - .align 2, 0 -_081365E0: .4byte gUnknown_02039304 -_081365E4: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _08136608 @ =sub_8136264 - bl SetVBlankCallback - ldr r1, [r4] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136626 - .align 2, 0 -_08136608: .4byte sub_8136264 -_0813660C: - ldr r0, _08136630 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08136626 - bl sub_80F3C94 - bl sub_80F3D00 - ldr r0, _08136634 @ =sub_8136638 - bl launch_c3_walk_stairs_and_run_once -_08136626: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136630: .4byte gPaletteFade -_08136634: .4byte sub_8136638 - thumb_func_end sub_81365C8 - thumb_func_start sub_8136638 sub_8136638: @ 8136638 push {r4,lr} diff --git a/include/pokenav.h b/include/pokenav.h index f32611161..4c9ec43eb 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -65,6 +65,8 @@ bool8 sub_80F26BC(void); bool8 sub_80F2CBC(u8); void sub_80F2E18(u8); void sub_80F33A8(void); +void sub_80F3C94(void); +void sub_80F3D00(void); void sub_80F4BD0(void); void sub_80F556C(void *); void sub_80F567C(void *, void *); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 351248cbd..39003a1e3 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -27,9 +27,11 @@ 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_8136264(void); void sub_8136294(void); void sub_81365A0(void); void sub_81365C8(void); +void sub_8136638(void); void sub_81368A4(void); u8 sub_81370E4(u8); @@ -599,3 +601,23 @@ void sub_81365A0(void) sub_8136294(); } } + +void sub_81365C8(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + SetVBlankCallback(sub_8136264); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + sub_80F3C94(); + sub_80F3D00(); + launch_c3_walk_stairs_and_run_once(sub_8136638); + } + break; + } +} -- cgit v1.2.3 From 7bb9c048b717dcc911383580603009665b479575 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 17:53:44 -0400 Subject: Matching sub_8136294 --- include/pokenav.h | 6 +- src/pokenav.c | 1 + src/use_pokeblock.c | 374 ++-------------------------------------------------- 3 files changed, 14 insertions(+), 367 deletions(-) diff --git a/include/pokenav.h b/include/pokenav.h index 6fc492a29..ebe8ba59d 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -8,8 +8,8 @@ struct UnkPokenavStruct_Sub { struct UnkPokenavStruct_Sub1 { /*0x00*/ void (*unk0)(void); - /*0x04*/ void *unk4; - /*0x08*/ void *unk8; + /*0x04*/ MainCallback callback; + /*0x08*/ struct Pokeblock *pokeblock; /*0x0C*/ u8 fillerC[0x44]; /*0x50*/ u8 unk50; /*0x51*/ u8 unk51[4]; @@ -50,7 +50,7 @@ struct UnkPokenavStruct { /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; }; -extern struct UnkPokenavStruct *gUnknown_083DFEC4; +extern struct UnkPokenavStruct *const gUnknown_083DFEC4; bool8 sub_80F170C(void); bool8 sub_80F1778(void); diff --git a/src/pokenav.c b/src/pokenav.c index 3a386d865..84ed7b14b 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,4 +1,5 @@ #include "global.h" +#include "main.h" #include "pokenav.h" #include "battle.h" #include "data2.h" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index fd60d6291..17387e09f 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -15,8 +15,8 @@ asm(".text\n" ".include \"constants/gba_constants.inc\""); -void *gUnknown_02039308; -void *gUnknown_0203930C; +extern MainCallback gUnknown_02039308; +extern struct Pokeblock *gUnknown_0203930C; u8 gUnknown_02039310; extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; @@ -35,11 +35,11 @@ void sub_81368A4(void); void sub_8089668(void); u8 sub_81370E4(u8); -void sub_8136130(struct Pokeblock *a0, MainCallback a1) +void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; - gUnknown_02039304->unk8 = a0; - gUnknown_02039304->unk4 = a1; + gUnknown_02039304->pokeblock = pokeblock; + gUnknown_02039304->callback = callback; gUnknown_083DFEC4->unkD162[0] = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_8136244); @@ -47,8 +47,8 @@ void sub_8136130(struct Pokeblock *a0, MainCallback a1) void sub_8136174(void) { - gUnknown_02039304->unk8 = gUnknown_0203930C; - gUnknown_02039304->unk4 = gUnknown_02039308; + gUnknown_02039304->pokeblock = gUnknown_0203930C; + gUnknown_02039304->callback = gUnknown_02039308; gUnknown_02039310 = sub_81370E4(gUnknown_02039310); gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; gUnknown_083DFEC4->unkD162[0] = 2; @@ -101,10 +101,8 @@ void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) gUnknown_02039304->unk50 = 0; } -#ifdef NONMATCHING void sub_8136294(void) { - u32 dma3sad; bool32 c1LinkRelatedActive; switch (gUnknown_02039304->unk50) { @@ -200,13 +198,10 @@ void sub_8136294(void) gUnknown_02039304->unk50++; break; case 16: - dma3sad = 0; - REG_DMA3SAD = (vu32)&dma3sad; - REG_DMA3DAD = 0x600F800; - REG_DMA3CNT = 0x85000200; + DmaClear32(3, 0x600f800, 0x800); REG_BG1VOFS = 0; REG_BG1HOFS = 0; - REG_BG1CNT = 0x1f00; + REG_BG1CNT = BGCNT_SCREENBASE(31); gUnknown_02039304->unk50++; break; case 17: @@ -236,7 +231,7 @@ void sub_8136294(void) REG_WININ = 0x3f3f; REG_WINOUT = 0x1b; REG_BG0VOFS = 0x28; - REG_DISPCNT = 0x7f40; + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; // fallthrough case 22: gUnknown_02039304->unk55 = 1; @@ -244,355 +239,6 @@ void sub_8136294(void) 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) { -- cgit v1.2.3 From 7caa3fd85bcb243cf5f63b2cf58185dc1eb9217c Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:20:16 -0400 Subject: sub_8136638 --- asm/use_pokeblock.s | 221 +--------------------------------------------------- include/pokenav.h | 42 +++++----- src/use_pokeblock.c | 101 +++++++++++++++++++++++- 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; + } +} -- cgit v1.2.3 From c44f9abfbb661d1721f03244eac99062df86d85d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:29:30 -0400 Subject: sub_8136808 --- asm/use_pokeblock.s | 74 ------------------------------------------------ include/pokeblock_feed.h | 10 +++++++ src/use_pokeblock.c | 23 +++++++++++++++ 3 files changed, 33 insertions(+), 74 deletions(-) create mode 100644 include/pokeblock_feed.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index b05fcadf4..e6f69d335 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,80 +6,6 @@ .text - thumb_func_start sub_8136808 -sub_8136808: @ 8136808 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08136820 @ =gUnknown_02039304 - ldr r0, [r5] - adds r0, 0x50 - ldrb r4, [r0] - cmp r4, 0 - beq _08136824 - cmp r4, 0x1 - beq _08136874 - b _0813688C - .align 2, 0 -_08136820: .4byte gUnknown_02039304 -_08136824: - ldr r0, _08136860 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136864 @ =0x000087dc - adds r0, r1 - ldrb r0, [r0] - bl sub_81370A4 - ldr r1, _08136868 @ =gUnknown_02039310 - strb r0, [r1] - ldr r1, _0813686C @ =gUnknown_02039308 - ldr r2, [r5] - ldr r0, [r2, 0x4] - str r0, [r1] - ldr r1, _08136870 @ =gUnknown_0203930C - ldr r0, [r2, 0x8] - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r5] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813688C - .align 2, 0 -_08136860: .4byte gUnknown_083DFEC4 -_08136864: .4byte 0x000087dc -_08136868: .4byte gUnknown_02039310 -_0813686C: .4byte gUnknown_02039308 -_08136870: .4byte gUnknown_0203930C -_08136874: - ldr r0, _08136894 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813688C - ldr r0, _08136898 @ =gMain - ldr r1, _0813689C @ =sub_8136174 - str r1, [r0, 0x8] - ldr r0, _081368A0 @ =sub_8147ADC - bl SetMainCallback2 -_0813688C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08136894: .4byte gPaletteFade -_08136898: .4byte gMain -_0813689C: .4byte sub_8136174 -_081368A0: .4byte sub_8147ADC - thumb_func_end sub_8136808 - thumb_func_start sub_81368A4 sub_81368A4: @ 81368A4 push {r4,lr} diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h new file mode 100644 index 000000000..65d0d1dc9 --- /dev/null +++ b/include/pokeblock_feed.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 6/28/17. +// + +#ifndef POKERUBY_POKEBLOCK_FEED_H +#define POKERUBY_POKEBLOCK_FEED_H + +void sub_8147ADC(void); + +#endif //POKERUBY_POKEBLOCK_FEED_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 3c9afb756..b23cc4d69 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -12,6 +12,7 @@ #include "menu.h" #include "sound.h" #include "songs.h" +#include "pokeblock_feed.h" #include "use_pokeblock.h" asm(".text\n" @@ -43,6 +44,7 @@ bool8 sub_8137058(void); void sub_8136D60(void); void sub_8136808(void); void sub_8136D8C(void); +u8 sub_81370A4(u8); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -366,3 +368,24 @@ void sub_8136638(void) break; } } + +void sub_8136808(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC); + gUnknown_02039308 = gUnknown_02039304->callback; + gUnknown_0203930C = gUnknown_02039304->pokeblock; + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + gMain.savedCallback = sub_8136174; + SetMainCallback2(sub_8147ADC); + } + break; + } +} -- cgit v1.2.3 From ea9652139728e41317b900f0aba5f50478643fc5 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:37:35 -0400 Subject: sub_81368A4 --- asm/use_pokeblock.s | 139 ---------------------------------------------------- src/use_pokeblock.c | 54 ++++++++++++++++++++ 2 files changed, 54 insertions(+), 139 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index e6f69d335..2cb9110dd 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,145 +6,6 @@ .text - thumb_func_start sub_81368A4 -sub_81368A4: @ 81368A4 - push {r4,lr} - sub sp, 0x4 - ldr r1, _081368C4 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x50 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _081368B8 - b _081369B8 -_081368B8: - lsls r0, 2 - ldr r1, _081368C8 @ =_081368CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081368C4: .4byte gUnknown_02039304 -_081368C8: .4byte _081368CC - .align 2, 0 -_081368CC: - .4byte _081368E8 - .4byte _08136922 - .4byte _0813692E - .4byte _0813694C - .4byte _0813695A - .4byte _0813696C - .4byte _08136998 -_081368E8: - ldr r0, _0813690C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136910 @ =0x000087dc - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, _08136914 @ =gUnknown_02039310 - ldrb r0, [r0] - cmp r1, r0 - beq _08136918 - ldr r0, [r4] - adds r0, 0x56 - ldrb r0, [r0] - bl sub_80F5060 - ldr r1, [r4] - b _08136986 - .align 2, 0 -_0813690C: .4byte gUnknown_083DFEC4 -_08136910: .4byte 0x000087dc -_08136914: .4byte gUnknown_02039310 -_08136918: - ldr r0, [r4] - adds r0, 0x50 - movs r1, 0x3 - strb r1, [r0] - b _081369B8 -_08136922: - bl gpu_sync_bg_show - lsls r0, 24 - cmp r0, 0 - bne _081369B8 - b _08136982 -_0813692E: - bl sub_8055870 - adds r4, r0, 0 - cmp r4, 0 - bne _081369B8 - bl sub_80F1934 - ldr r0, _08136948 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - strb r4, [r0] - b _081369B8 - .align 2, 0 -_08136948: .4byte gUnknown_02039304 -_0813694C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _08136982 -_0813695A: - movs r1, 0x80 - lsls r1, 19 - ldr r2, _08136968 @ =0x00007f40 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [r4] - b _08136986 - .align 2, 0 -_08136968: .4byte 0x00007f40 -_0813696C: - ldr r0, _08136990 @ =sub_8136264 - bl SetVBlankCallback - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08136982: - ldr r0, _08136994 @ =gUnknown_02039304 - ldr r1, [r0] -_08136986: - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081369B8 - .align 2, 0 -_08136990: .4byte sub_8136264 -_08136994: .4byte gUnknown_02039304 -_08136998: - ldr r0, _081369C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081369B8 - bl sub_80F3C94 - bl sub_80F3D00 - ldr r0, _081369C4 @ =sub_81369CC - bl launch_c3_walk_stairs_and_run_once - ldr r0, _081369C8 @ =sub_8136244 - bl SetMainCallback2 -_081369B8: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081369C0: .4byte gPaletteFade -_081369C4: .4byte sub_81369CC -_081369C8: .4byte sub_8136244 - thumb_func_end sub_81368A4 - thumb_func_start sub_81369CC sub_81369CC: @ 81369CC push {r4-r6,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index b23cc4d69..f84ecad08 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -45,6 +45,7 @@ void sub_8136D60(void); void sub_8136808(void); void sub_8136D8C(void); u8 sub_81370A4(u8); +void sub_81369CC(void); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -389,3 +390,56 @@ void sub_8136808(void) break; } } + +void sub_81368A4(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310) + { + sub_80F5060(gUnknown_02039304->unk56); + gUnknown_02039304->unk50++; + } + else + { + gUnknown_02039304->unk50 = 3; + } + break; + case 1: + if (!gpu_sync_bg_show()) + { + gUnknown_02039304->unk50++; + } + break; + case 2: + if (!sub_8055870()) + { + sub_80F1934(); + gUnknown_02039304->unk50 = 0; + } + break; + case 3: + BlendPalettes(-1, 16, 0); + gUnknown_02039304->unk50++; + break; + case 4: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gUnknown_02039304->unk50++; + break; + case 5: + SetVBlankCallback(sub_8136264); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_02039304->unk50++; + break; + case 6: + if (!gPaletteFade.active) + { + sub_80F3C94(); + sub_80F3D00(); + launch_c3_walk_stairs_and_run_once(sub_81369CC); + SetMainCallback2(sub_8136244); + } + break; + } +} -- cgit v1.2.3 From 5c8320f9e1f8735272e2b8239fbba3b2b6eb69c4 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 19:09:19 -0400 Subject: sub_81369CC --- asm/use_pokeblock.s | 170 ---------------------------------------------------- include/pokenav.h | 30 ++++++++-- src/use_pokeblock.c | 57 +++++++++++++++++- 3 files changed, 79 insertions(+), 178 deletions(-) mode change 100644 => 100755 include/pokenav.h mode change 100644 => 100755 src/use_pokeblock.c diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 2cb9110dd..a2c16bc16 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,176 +6,6 @@ .text - thumb_func_start sub_81369CC -sub_81369CC: @ 81369CC - push {r4-r6,lr} - ldr r1, _081369E8 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x50 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x5 - bls _081369DE - b _08136B32 -_081369DE: - lsls r0, 2 - ldr r1, _081369EC @ =_081369F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081369E8: .4byte gUnknown_02039304 -_081369EC: .4byte _081369F0 - .align 2, 0 -_081369F0: - .4byte _08136A08 - .4byte _08136A48 - .4byte _08136A5C - .4byte _08136AAC - .4byte _08136AEC - .4byte _08136B0E -_08136A08: - ldr r3, [r4] - ldr r2, _08136A38 @ =gPlayerParty - str r2, [r3, 0xC] - ldr r0, _08136A3C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r5, _08136A40 @ =0x000087dc - adds r0, r1, r5 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r0, 2 - adds r1, r0 - ldr r0, _08136A44 @ =0x0000893e - adds r1, r0 - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 27 - movs r1, 0x64 - muls r0, r1 - adds r0, r2 - str r0, [r3, 0xC] - bl move_anim_execute - b _08136B02 - .align 2, 0 -_08136A38: .4byte gPlayerParty -_08136A3C: .4byte gUnknown_083DFEC4 -_08136A40: .4byte 0x000087dc -_08136A44: .4byte 0x0000893e -_08136A48: - ldr r0, _08136A58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08136B32 - b _08136B02 - .align 2, 0 -_08136A58: .4byte gMain -_08136A5C: - bl sub_8136EF0 - ldr r6, _08136A98 @ =gUnknown_02039304 - ldr r0, [r6] - adds r0, 0x5C - ldr r1, _08136A9C @ =gUnknown_083DFEC4 - ldr r4, [r1] - ldr r1, _08136AA0 @ =0x00009040 - adds r5, r4, r1 - adds r1, r5, 0 - bl sub_80F567C - ldr r1, _08136AA4 @ =0x00008fe9 - adds r0, r4, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r1, _08136AA8 @ =0x00009004 - adds r0, r1 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80F5550 - bl sub_8137138 - ldr r1, [r6] - b _08136B04 - .align 2, 0 -_08136A98: .4byte gUnknown_02039304 -_08136A9C: .4byte gUnknown_083DFEC4 -_08136AA0: .4byte 0x00009040 -_08136AA4: .4byte 0x00008fe9 -_08136AA8: .4byte 0x00009004 -_08136AAC: - bl sub_80F555C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08136B32 - ldr r0, _08136AE0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r5, _08136AE4 @ =0x000087dc - adds r0, r5 - ldrb r0, [r0] - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - bl sub_80F7224 - bl sub_80F3D00 - ldr r1, _08136AE8 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x52 - strb r4, [r0] - ldr r1, [r1] - b _08136B04 - .align 2, 0 -_08136AE0: .4byte gUnknown_083DFEC4 -_08136AE4: .4byte 0x000087dc -_08136AE8: .4byte gUnknown_02039304 -_08136AEC: - ldr r1, [r4] - adds r1, 0x52 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bls _08136B32 - bl sub_8136C6C -_08136B02: - ldr r1, [r4] -_08136B04: - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136B32 -_08136B0E: - ldr r0, _08136B38 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08136B32 - bl sub_8136D00 - lsls r0, 24 - cmp r0, 0 - bne _08136B32 - ldr r0, _08136B3C @ =gScriptItemId - ldrb r0, [r0] - bl sub_810CA6C - ldr r0, _08136B40 @ =sub_8136B44 - bl launch_c3_walk_stairs_and_run_once -_08136B32: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08136B38: .4byte gMain -_08136B3C: .4byte gScriptItemId -_08136B40: .4byte sub_8136B44 - thumb_func_end sub_81369CC - thumb_func_start sub_8136B44 sub_8136B44: @ 8136B44 push {r4,lr} diff --git a/include/pokenav.h b/include/pokenav.h old mode 100644 new mode 100755 index 5fffc91fb..a35bd3117 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -10,11 +10,17 @@ struct UnkPokenavStruct_Sub1 { /*0x00*/ void (*unk0)(void); /*0x04*/ MainCallback callback; /*0x08*/ struct Pokeblock *pokeblock; - /*0x0C*/ u8 fillerC[0x44]; + /*0x0C*/ struct Pokemon *pokemon; + /*0x10*/ u8 fillerC[0x40]; /*0x50*/ u8 unk50; - /*0x51*/ u8 unk51[4]; - /*0x56*/ u8 unk55; + /*0x51*/ u8 unk51; + /*0x52*/ u8 unk52; + /*0x53*/ u8 unk53; + /*0x54*/ u8 unk54; + /*0x55*/ u8 unk55; /*0x56*/ u8 unk56; + /*0x57*/ u8 fil57[5]; + /*0x5c*/ u8 unk5c[1]; }; struct UnkPokenavStruct_Sub2 { @@ -22,6 +28,11 @@ struct UnkPokenavStruct_Sub2 { /*0x26*/ u16 unk26; }; +struct UnkUsePokeblockSub { + /*0*/ u8 fil0[2]; + /*2*/ u8 partyIdx:5; +}; + struct UnkPokenavStruct { /*0x0000*/ u8 filler0000[0x30c]; /*0x0000*/ u16 unk030C; @@ -38,11 +49,15 @@ struct UnkPokenavStruct { /*0x87E0*/ void *unk87E0; /*0x87E4*/ u8 filler87E4[0x44]; /*0x8828*/ u8 unk8828; - /*0x8829*/ u8 filler8829[0x7c7]; + /*0x8829*/ u8 filler8829[0x113]; + /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab]; + /*0x8fe8*/ u8 fil8fe8[1]; + /*0x8fe9*/ s8 unk8fe9; + /*0x8fea*/ u8 fil8fea[6]; /*0x8ff0*/ u8 unk8ff0; /*0x8ff1*/ u8 filler8ff1[0x13]; - /*0x9004*/ u8 unk9004; - /*0x9005*/ u8 filler9005[0x33f]; + /*0x9004*/ u8 unk9004[3][20]; + /*0x9040*/ u8 unk9040[0x304]; /*0x9344*/ u8 unk9344; /*0x9345*/ u8 filler9345[0x3ba3]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; @@ -76,5 +91,8 @@ void sub_80EBA5C(void); void sub_80F5060(bool8); void move_anim_execute(void); bool8 gpu_sync_bg_show(void); +void sub_80F5550(void *, void *); +bool8 sub_80F555C(void); +void sub_80F7224(u8); #endif // GUARD_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c old mode 100644 new mode 100755 index f84ecad08..861a3efcd --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -12,6 +12,7 @@ #include "menu.h" #include "sound.h" #include "songs.h" +#include "pokeblock.h" #include "pokeblock_feed.h" #include "use_pokeblock.h" @@ -24,6 +25,7 @@ u8 gUnknown_02039310; extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern u16 gKeyRepeatStartDelay; +extern u16 gScriptItemId; // remove after merge of #349 Pokeblock void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); @@ -46,6 +48,10 @@ void sub_8136808(void); void sub_8136D8C(void); u8 sub_81370A4(u8); void sub_81369CC(void); +void sub_8136EF0(void); +void sub_8137138(void); +void sub_8136C6C(void); +bool8 sub_8136D00(void); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -217,7 +223,7 @@ void sub_8136294(void) gUnknown_02039304->unk50++; break; case 17: - sub_80F567C(&gUnknown_083DFEC4->unk8ff0, &gUnknown_083DFEC4->unk9004); + sub_80F567C(&gUnknown_083DFEC4->unk8ff0, gUnknown_083DFEC4->unk9004); sub_80F5B38(); gUnknown_02039304->unk50++; break; @@ -228,7 +234,7 @@ void sub_8136294(void) } break; case 19: - sub_80F556C(&gUnknown_083DFEC4->unk9004); + sub_80F556C(gUnknown_083DFEC4->unk9004); gUnknown_02039304->unk50++; break; case 20: @@ -443,3 +449,50 @@ void sub_81368A4(void) break; } } + +void sub_81369CC(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + gUnknown_02039304->pokemon = &gPlayerParty[0]; + gUnknown_02039304->pokemon = &gPlayerParty[gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx]; + move_anim_execute(); + gUnknown_02039304->unk50++; + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + gUnknown_02039304->unk50++; + break; + case 2: + sub_8136EF0(); + sub_80F567C(gUnknown_02039304->unk5c, gUnknown_083DFEC4->unk9040); + sub_80F5550(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040); + sub_8137138(); + gUnknown_02039304->unk50++; + break; + case 3: + if (!sub_80F555C()) + { + sub_80F7224(sub_81370A4(gUnknown_083DFEC4->unk87DC)); + sub_80F3D00(); + gUnknown_02039304->unk52 = 0; + gUnknown_02039304->unk50++; + } + break; + case 4: + if ((++gUnknown_02039304->unk52) > 16) + { + sub_8136C6C(); + gUnknown_02039304->unk50++; + } + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) + { + sub_810CA6C((u8)gScriptItemId); + launch_c3_walk_stairs_and_run_once(sub_8136B44); + } + break; + } +} -- cgit v1.2.3 From 66f219dba7d19cc5561cd12fb81b4add8eb888e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Jun 2017 21:53:45 -0400 Subject: through sub_8136C40 --- asm/use_pokeblock.s | 145 ---------------------------------------------------- include/pokenav.h | 3 +- src/use_pokeblock.c | 49 ++++++++++++++++++ 3 files changed, 51 insertions(+), 146 deletions(-) mode change 100644 => 100755 asm/use_pokeblock.s diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s old mode 100644 new mode 100755 index a2c16bc16..27ccf4da3 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,151 +6,6 @@ .text - thumb_func_start sub_8136B44 -sub_8136B44: @ 8136B44 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08136B60 @ =gUnknown_02039304 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x50 - ldrb r1, [r2] - cmp r1, 0x1 - beq _08136B80 - cmp r1, 0x1 - bgt _08136B64 - cmp r1, 0 - beq _08136B6E - b _08136BAE - .align 2, 0 -_08136B60: .4byte gUnknown_02039304 -_08136B64: - cmp r1, 0x2 - beq _08136B98 - cmp r1, 0x3 - beq _08136BA8 - b _08136BAE -_08136B6E: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08136B9C -_08136B80: - ldr r0, _08136B94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08136BAE - movs r0, 0x2 - strb r0, [r2] - b _08136BAE - .align 2, 0 -_08136B94: .4byte gPaletteFade -_08136B98: - bl sub_80F5BDC -_08136B9C: - ldr r1, [r4] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136BAE -_08136BA8: - ldr r0, [r0, 0x4] - bl SetMainCallback2 -_08136BAE: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8136B44 - - thumb_func_start sub_8136BB8 -sub_8136BB8: @ 8136BB8 - push {r4,lr} - ldr r0, _08136C28 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136C2C @ =0x000087dc - adds r0, r1 - ldrb r0, [r0] - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08136C30 @ =gPlayerParty - adds r0, r1 - ldr r4, _08136C34 @ =gUnknown_02039304 - ldr r2, [r4] - adds r2, 0x10 - movs r1, 0x2 - bl GetMonData - ldr r0, [r4] - adds r0, 0x10 - bl StringGetEnd10 - ldr r0, [r4] - adds r0, 0x10 - ldr r1, _08136C38 @ =gOtherText_GetsAPokeBlock - bl StringAppend - ldr r0, _08136C3C @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, [r4] - adds r0, 0x10 - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x17 - movs r1, 0xA - movs r2, 0x1 - bl DisplayYesNoMenu - movs r0, 0 - bl MoveMenuCursor - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136C28: .4byte gUnknown_083DFEC4 -_08136C2C: .4byte 0x000087dc -_08136C30: .4byte gPlayerParty -_08136C34: .4byte gUnknown_02039304 -_08136C38: .4byte gOtherText_GetsAPokeBlock -_08136C3C: .4byte gWindowConfig_81E709C - thumb_func_end sub_8136BB8 - - thumb_func_start sub_8136C40 -sub_8136C40: @ 8136C40 - push {r4,lr} - bl ProcessMenuInputNoWrap - lsls r0, 24 - asrs r4, r0, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x2 - bhi _08136C60 - bl MenuZeroFillScreen - ldr r0, _08136C68 @ =gWindowConfig_81E7080 - bl BasicInitMenuWindow -_08136C60: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08136C68: .4byte gWindowConfig_81E7080 - thumb_func_end sub_8136C40 - thumb_func_start sub_8136C6C sub_8136C6C: @ 8136C6C push {lr} diff --git a/include/pokenav.h b/include/pokenav.h index a35bd3117..87ba4d42c 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -11,7 +11,7 @@ struct UnkPokenavStruct_Sub1 { /*0x04*/ MainCallback callback; /*0x08*/ struct Pokeblock *pokeblock; /*0x0C*/ struct Pokemon *pokemon; - /*0x10*/ u8 fillerC[0x40]; + /*0x10*/ u8 stringBuffer[0x40]; /*0x50*/ u8 unk50; /*0x51*/ u8 unk51; /*0x52*/ u8 unk52; @@ -94,5 +94,6 @@ bool8 gpu_sync_bg_show(void); void sub_80F5550(void *, void *); bool8 sub_80F555C(void); void sub_80F7224(u8); +void sub_80F5BDC(void); #endif // GUARD_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 861a3efcd..e6875645b 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -5,6 +5,8 @@ #include "global.h" #include "main.h" #include "rom4.h" +#include "string_util.h" +#include "strings.h" #include "pokemon.h" #include "pokenav.h" #include "palette.h" @@ -496,3 +498,50 @@ void sub_81369CC(void) break; } } + +void sub_8136B44(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + gUnknown_02039304->unk50 = 2; + } + break; + case 2: + sub_80F5BDC(); + gUnknown_02039304->unk50++; + break; + case 3: + SetMainCallback2(gUnknown_02039304->callback); + break; + } +} + +void sub_8136BB8(void) +{ + GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); + StringGetEnd10(gUnknown_02039304->stringBuffer); + StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(gUnknown_02039304->stringBuffer, 1, 17); + DisplayYesNoMenu(23, 10, 1); + MoveMenuCursor(0); +} + +s8 sub_8136C40(void) +{ + s8 retval = ProcessMenuInputNoWrap(); + if ((u8)(retval + 1) < 3) + { + MenuZeroFillScreen(); + BasicInitMenuWindow(&gWindowConfig_81E7080); + } + return retval; +} -- cgit v1.2.3 From 062f0b5bd9fe3e804ca9e2b4f6b2bae89f94ab61 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 08:34:48 -0400 Subject: sub_8136C6C --- asm/use_pokeblock.s | 75 ----------------------------------------------------- include/pokenav.h | 2 ++ src/use_pokeblock.c | 18 +++++++++++++ 3 files changed, 20 insertions(+), 75 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 27ccf4da3..64157f558 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,81 +6,6 @@ .text - thumb_func_start sub_8136C6C -sub_8136C6C: @ 8136C6C - push {lr} - ldr r0, _08136C8C @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r3, _08136C90 @ =gUnknown_02039304 - ldr r0, [r3] - adds r0, 0x53 - movs r1, 0 - b _08136C9C - .align 2, 0 -_08136C8C: .4byte gWindowConfig_81E709C -_08136C90: .4byte gUnknown_02039304 -_08136C94: - ldr r0, [r3] - adds r0, 0x53 - ldrb r1, [r0] - adds r1, 0x1 -_08136C9C: - strb r1, [r0] - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136CDC - adds r0, r2, 0 - adds r0, 0x61 - ldrb r1, [r1] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08136C94 - ldr r0, _08136CD8 @ =gUnknown_02039304 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136CDC - adds r0, r2, 0 - adds r0, 0x10 - ldrb r1, [r1] - adds r2, 0x61 - adds r2, r1 - ldrb r2, [r2] - bl sub_8136DC0 - b _08136CEE - .align 2, 0 -_08136CD8: .4byte gUnknown_02039304 -_08136CDC: - ldr r0, _08136CFC @ =gUnknown_02039304 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x10 - adds r1, 0x53 - ldrb r1, [r1] - movs r2, 0 - bl sub_8136DC0 -_08136CEE: - ldr r0, _08136CFC @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x10 - bl sub_8136DA0 - pop {r0} - bx r0 - .align 2, 0 -_08136CFC: .4byte gUnknown_02039304 - thumb_func_end sub_8136C6C - thumb_func_start sub_8136D00 sub_8136D00: @ 8136D00 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 87ba4d42c..87079600d 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -21,6 +21,8 @@ struct UnkPokenavStruct_Sub1 { /*0x56*/ u8 unk56; /*0x57*/ u8 fil57[5]; /*0x5c*/ u8 unk5c[1]; + /*0x5d*/ u8 fil5d[4]; + /*0x61*/ u8 unk61[5]; }; struct UnkPokenavStruct_Sub2 { diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index e6875645b..0c2ba8642 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -54,6 +54,8 @@ void sub_8136EF0(void); void sub_8137138(void); void sub_8136C6C(void); bool8 sub_8136D00(void); +void sub_8136DC0(u8 *, u8, u8); +void sub_8136DA0(u8 *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -545,3 +547,19 @@ s8 sub_8136C40(void) } return retval; } + +void sub_8136C6C(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); + if (gUnknown_02039304->unk53 < 5) + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + } + else + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); + } + sub_8136DA0(gUnknown_02039304->stringBuffer); +} -- cgit v1.2.3 From 4e02c236d8594ab81ae46c54d6f1ccc8e7929bea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 08:49:55 -0400 Subject: Nonmatching sub_8136D00 --- asm/use_pokeblock.s | 108 ++++++++++++++++++++++++++-------------------------- src/use_pokeblock.c | 79 +++++++++++++++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 56 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 64157f558..af050f3d5 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -5,60 +5,60 @@ .syntax unified .text - - thumb_func_start sub_8136D00 -sub_8136D00: @ 8136D00 - push {r4,r5,lr} - ldr r4, _08136D30 @ =gUnknown_02039304 - adds r3, r4, 0 - movs r5, 0x5 -_08136D08: - ldr r0, [r3] - adds r0, 0x53 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136D34 - adds r0, r2, 0 - adds r0, 0x61 - ldrb r1, [r1] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08136D3A - b _08136D08 - .align 2, 0 -_08136D30: .4byte gUnknown_02039304 -_08136D34: - strb r5, [r1] - movs r0, 0 - b _08136D5A -_08136D3A: - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x10 - adds r1, r2, 0 - adds r1, 0x53 - ldrb r1, [r1] - adds r2, 0x61 - adds r2, r1 - ldrb r2, [r2] - bl sub_8136DC0 - ldr r0, [r4] - adds r0, 0x10 - bl sub_8136DA0 - movs r0, 0x1 -_08136D5A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8136D00 - +@ +@ thumb_func_start sub_8136D00 +@ sub_8136D00: @ 8136D00 +@ push {r4,r5,lr} +@ ldr r4, _08136D30 @ =gUnknown_02039304 +@ adds r3, r4, 0 +@ movs r5, 0x5 +@ _08136D08: +@ ldr r0, [r3] +@ adds r0, 0x53 +@ ldrb r1, [r0] +@ adds r1, 0x1 +@ strb r1, [r0] +@ ldr r2, [r3] +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r0, [r1] +@ cmp r0, 0x4 +@ bhi _08136D34 +@ adds r0, r2, 0 +@ adds r0, 0x61 +@ ldrb r1, [r1] +@ adds r0, r1 +@ ldrb r0, [r0] +@ cmp r0, 0 +@ bne _08136D3A +@ b _08136D08 +@ .align 2, 0 +@ _08136D30: .4byte gUnknown_02039304 +@ _08136D34: +@ strb r5, [r1] +@ movs r0, 0 +@ b _08136D5A +@ _08136D3A: +@ ldr r2, [r4] +@ adds r0, r2, 0 +@ adds r0, 0x10 +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r1, [r1] +@ adds r2, 0x61 +@ adds r2, r1 +@ ldrb r2, [r2] +@ bl sub_8136DC0 +@ ldr r0, [r4] +@ adds r0, 0x10 +@ bl sub_8136DA0 +@ movs r0, 0x1 +@ _08136D5A: +@ pop {r4,r5} +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_8136D00 +@ thumb_func_start sub_8136D60 sub_8136D60: @ 8136D60 push {lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 0c2ba8642..7590b19ff 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -21,11 +21,11 @@ asm(".text\n" ".include \"constants/gba_constants.inc\""); +extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern MainCallback gUnknown_02039308; extern struct Pokeblock *gUnknown_0203930C; -u8 gUnknown_02039310; +extern u8 gUnknown_02039310; -extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // remove after merge of #349 Pokeblock @@ -563,3 +563,78 @@ void sub_8136C6C(void) } sub_8136DA0(gUnknown_02039304->stringBuffer); } + +#ifdef NONMATCHING +bool8 sub_8136D00(void) +{ + while (1) + { + if (++gUnknown_02039304->unk53 >= 5) + { + break; + } + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + sub_8136DA0(gUnknown_02039304->stringBuffer); + return TRUE; + } + } + gUnknown_02039304->unk53 = 5; + return FALSE; +} +#else +__attribute__((naked)) +bool8 sub_8136D00(void) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tldr r4, _08136D30 @ =gUnknown_02039304\n" + "\tadds r3, r4, 0\n" + "\tmovs r5, 0x5\n" + "_08136D08:\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x53\n" + "\tldrb r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0x4\n" + "\tbhi _08136D34\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x61\n" + "\tldrb r1, [r1]\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08136D3A\n" + "\tb _08136D08\n" + "\t.align 2, 0\n" + "_08136D30: .4byte gUnknown_02039304\n" + "_08136D34:\n" + "\tstrb r5, [r1]\n" + "\tmovs r0, 0\n" + "\tb _08136D5A\n" + "_08136D3A:\n" + "\tldr r2, [r4]\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x10\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r1, [r1]\n" + "\tadds r2, 0x61\n" + "\tadds r2, r1\n" + "\tldrb r2, [r2]\n" + "\tbl sub_8136DC0\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x10\n" + "\tbl sub_8136DA0\n" + "\tmovs r0, 0x1\n" + "_08136D5A:\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif -- cgit v1.2.3 From eefb510a3c442d6997a6a681e919046a775766be Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:19:45 -0400 Subject: Nonmatching sub_8136DC0 --- asm/use_pokeblock.s | 145 ------------------------------------------------ data/use_pokeblock.s | 29 ---------- include/use_pokeblock.h | 2 + ld_script.txt | 1 + src/use_pokeblock.c | 111 +++++++++++++++++++++++++++++++++++- sym_ewram.txt | 5 +- 6 files changed, 116 insertions(+), 177 deletions(-) mode change 100644 => 100755 data/use_pokeblock.s mode change 100644 => 100755 include/use_pokeblock.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index af050f3d5..5e1f94267 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -5,151 +5,6 @@ .syntax unified .text -@ -@ thumb_func_start sub_8136D00 -@ sub_8136D00: @ 8136D00 -@ push {r4,r5,lr} -@ ldr r4, _08136D30 @ =gUnknown_02039304 -@ adds r3, r4, 0 -@ movs r5, 0x5 -@ _08136D08: -@ ldr r0, [r3] -@ adds r0, 0x53 -@ ldrb r1, [r0] -@ adds r1, 0x1 -@ strb r1, [r0] -@ ldr r2, [r3] -@ adds r1, r2, 0 -@ adds r1, 0x53 -@ ldrb r0, [r1] -@ cmp r0, 0x4 -@ bhi _08136D34 -@ adds r0, r2, 0 -@ adds r0, 0x61 -@ ldrb r1, [r1] -@ adds r0, r1 -@ ldrb r0, [r0] -@ cmp r0, 0 -@ bne _08136D3A -@ b _08136D08 -@ .align 2, 0 -@ _08136D30: .4byte gUnknown_02039304 -@ _08136D34: -@ strb r5, [r1] -@ movs r0, 0 -@ b _08136D5A -@ _08136D3A: -@ ldr r2, [r4] -@ adds r0, r2, 0 -@ adds r0, 0x10 -@ adds r1, r2, 0 -@ adds r1, 0x53 -@ ldrb r1, [r1] -@ adds r2, 0x61 -@ adds r2, r1 -@ ldrb r2, [r2] -@ bl sub_8136DC0 -@ ldr r0, [r4] -@ adds r0, 0x10 -@ bl sub_8136DA0 -@ movs r0, 0x1 -@ _08136D5A: -@ pop {r4,r5} -@ pop {r1} -@ bx r1 -@ thumb_func_end sub_8136D00 -@ - thumb_func_start sub_8136D60 -sub_8136D60: @ 8136D60 - push {lr} - ldr r0, _08136D84 @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08136D88 @ =gOtherText_WontEat - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_08136D84: .4byte gWindowConfig_81E709C -_08136D88: .4byte gOtherText_WontEat - thumb_func_end sub_8136D60 - - thumb_func_start sub_8136D8C -sub_8136D8C: @ 8136D8C - push {lr} - bl MenuZeroFillScreen - ldr r0, _08136D9C @ =gWindowConfig_81E7080 - bl BasicInitMenuWindow - pop {r0} - bx r0 - .align 2, 0 -_08136D9C: .4byte gWindowConfig_81E7080 - thumb_func_end sub_8136D8C - - thumb_func_start sub_8136DA0 -sub_8136DA0: @ 8136DA0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8136DA0 - - thumb_func_start sub_8136DC0 -sub_8136DC0: @ 8136DC0 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 16 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _08136DFC - cmp r2, 0 - ble _08136DD8 - movs r0, 0 -_08136DD8: - lsls r0, 16 - ldr r1, _08136DF4 @ =gUnknown_08406134 - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - ldr r1, _08136DF8 @ =gOtherText_WasEnhanced - adds r0, r4, 0 - bl StringAppend - b _08136E04 - .align 2, 0 -_08136DF4: .4byte gUnknown_08406134 -_08136DF8: .4byte gOtherText_WasEnhanced -_08136DFC: - ldr r1, _08136E0C @ =gOtherText_NothingChanged - adds r0, r4, 0 - bl StringCopy -_08136E04: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136E0C: .4byte gOtherText_NothingChanged - thumb_func_end sub_8136DC0 thumb_func_start sub_8136E10 sub_8136E10: @ 8136E10 diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s old mode 100644 new mode 100755 index 2eabe9ce3..88f8cc336 --- a/data/use_pokeblock.s +++ b/data/use_pokeblock.s @@ -3,35 +3,6 @@ .section .rodata -.ifndef GERMAN - .align 2 -ConditionUpDownPalette: - .incbin "graphics/misc/condition_up_down.gbapal" - - .align 2 -ConditionUpDownTiles: - .incbin "graphics/misc/condition_up_down.4bpp" -.endif - -gUnknown_08406118:: @ 8406118 - .4byte 22 @ MON_DATA_COOL - .4byte 47 @ MON_DATA_TOUGH - .4byte 33 @ MON_DATA_SMART - .4byte 24 @ MON_DATA_CUTE - .4byte 23 @ MON_DATA_BEAUTY - - .align 2 -gUnknown_0840612C:: @ 840612C - obj_pal 0x02030400, 0x0001 - - .align 2 -gUnknown_08406134:: @ 8406134 - .4byte OtherText_Coolness - .4byte OtherText_Toughness - .4byte OtherText_Smartness - .4byte OtherText_Cuteness - .4byte OtherText_Beauty - .align 2 gSpriteSheet_ConditionUpDown:: @ 8406148 obj_tiles ConditionUpDownTiles, 0x200, 0 diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h old mode 100644 new mode 100755 index f34857cf1..779ba27d1 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -5,6 +5,8 @@ #ifndef POKERUBY_USE_POKEBLOCK_H #define POKERUBY_USE_POKEBLOCK_H +extern void *gUnknown_02030400; + void sub_8136130(struct Pokeblock *, MainCallback); #endif //POKERUBY_USE_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index 4e72e03a0..a360ee781 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -462,6 +462,7 @@ SECTIONS { src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); data/battle_tower.o(.rodata); + src/use_pokeblock.o(.rodata); data/use_pokeblock.o(.rodata); data/battle_anim_8137220.o(.rodata); src/player_pc.o(.rodata); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 7590b19ff..efa3b6200 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -7,6 +7,7 @@ #include "rom4.h" #include "string_util.h" #include "strings.h" +#include "sprite.h" #include "pokemon.h" #include "pokenav.h" #include "palette.h" @@ -18,6 +19,34 @@ #include "pokeblock_feed.h" #include "use_pokeblock.h" +#define GFX_TAG_CONDITIONUPDOWN 0 +#define GFX_TAG_UNKNOWN02030400 1 + +#ifndef GERMAN +const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); +const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); +#endif + +const u32 gUnknown_08406118[] = { + MON_DATA_COOL, + MON_DATA_TOUGH, + MON_DATA_SMART, + MON_DATA_CUTE, + MON_DATA_BEAUTY +}; + +const struct SpritePalette gUnknown_0840612C = { + (u16 *const)&gUnknown_02030400, GFX_TAG_UNKNOWN02030400 +}; + +const u8 *const gUnknown_08406134[] = { + OtherText_Coolness, + OtherText_Toughness, + OtherText_Smartness, + OtherText_Cuteness, + OtherText_Beauty +}; + asm(".text\n" ".include \"constants/gba_constants.inc\""); @@ -54,8 +83,8 @@ void sub_8136EF0(void); void sub_8137138(void); void sub_8136C6C(void); bool8 sub_8136D00(void); -void sub_8136DC0(u8 *, u8, u8); -void sub_8136DA0(u8 *); +void sub_8136DC0(u8 *, u8, s16); +void sub_8136DA0(const u8 *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -638,3 +667,81 @@ bool8 sub_8136D00(void) "\tbx r1"); } #endif + +void sub_8136D60(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(gOtherText_WontEat, 1, 17); +} + +void sub_8136D8C(void) +{ + MenuZeroFillScreen(); + BasicInitMenuWindow(&gWindowConfig_81E7080); +} + +void sub_8136DA0(const u8 *message) +{ + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(message, 1, 17); +} + +#ifdef NONMATCHING +void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +{ + u16 v0 = a2; + if (a2 != 0) + { + if ((v0 = max(a2, 0)) == 0); + StringCopy(dest, gUnknown_08406134[a1]); + StringAppend(dest, gOtherText_WasEnhanced); + } + else + { + StringCopy(dest, gOtherText_NothingChanged); + } +} +#else +__attribute__((naked)) +void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +{ + asm_unified("\tpush {r4,lr}\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r3, r1, 24\n" + "\tlsls r2, 16\n" + "\tlsrs r0, r2, 16\n" + "\tasrs r2, 16\n" + "\tcmp r2, 0\n" + "\tbeq _08136DFC\n" + "\tcmp r2, 0\n" + "\tble _08136DD8\n" + "\tmovs r0, 0\n" + "_08136DD8:\n" + "\tlsls r0, 16\n" + "\tldr r1, _08136DF4 @ =gUnknown_08406134\n" + "\tlsls r0, r3, 2\n" + "\tadds r0, r1\n" + "\tldr r1, [r0]\n" + "\tadds r0, r4, 0\n" + "\tbl StringCopy\n" + "\tldr r1, _08136DF8 @ =gOtherText_WasEnhanced\n" + "\tadds r0, r4, 0\n" + "\tbl StringAppend\n" + "\tb _08136E04\n" + "\t.align 2, 0\n" + "_08136DF4: .4byte gUnknown_08406134\n" + "_08136DF8: .4byte gOtherText_WasEnhanced\n" + "_08136DFC:\n" + "\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n" + "\tadds r0, r4, 0\n" + "\tbl StringCopy\n" + "_08136E04:\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08136E0C: .4byte gOtherText_NothingChanged"); +} +#endif diff --git a/sym_ewram.txt b/sym_ewram.txt index 42b0982ab..f142a1b1a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -539,7 +539,10 @@ gTrainerCards: @ 202FFC0 .space 0xE0 gPokemonStorage: @ 20300A0 - .space 0x83D0 + .space 0x360 + +gUnknown_02030400: @ 02030400 + .space 0x8070 gUnknown_02038470: @ 2038470 .space 0x3 -- cgit v1.2.3 From 1bb72454b44307b772660e54318598f0cea274cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:39:25 -0400 Subject: sub_8136E40 --- asm/use_pokeblock.s | 117 ---------------------------------------------------- include/pokenav.h | 1 + src/use_pokeblock.c | 38 +++++++++++++++++ 3 files changed, 39 insertions(+), 117 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 5e1f94267..f5abbb27e 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,123 +6,6 @@ .text - thumb_func_start sub_8136E10 -sub_8136E10: @ 8136E10 - push {r4-r7,lr} - adds r6, r0, 0 - adds r5, r1, 0 - movs r4, 0 - ldr r7, _08136E3C @ =gUnknown_08406118 -_08136E1A: - lsls r0, r4, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r6, 0 - bl GetMonData - adds r1, r5, r4 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08136E1A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08136E3C: .4byte gUnknown_08406118 - thumb_func_end sub_8136E10 - - thumb_func_start sub_8136E40 -sub_8136E40: @ 8136E40 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r5, r1, 0 - adds r0, r5, 0 - movs r1, 0x30 - bl GetMonData - cmp r0, 0xFF - beq _08136EDC - mov r0, r8 - adds r1, r5, 0 - bl sub_8136F74 - movs r4, 0 - mov r7, sp -_08136E64: - ldr r1, _08136EE8 @ =gUnknown_08406118 - lsls r0, r4, 2 - adds r0, r1 - ldr r6, [r0] - adds r0, r5, 0 - adds r1, r6, 0 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - strb r0, [r7] - ldr r1, _08136EEC @ =gUnknown_02039304 - ldr r1, [r1] - lsls r2, r4, 1 - adds r1, 0x66 - adds r1, r2 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _08136E92 - movs r1, 0 -_08136E92: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08136E9C - movs r1, 0xFF -_08136E9C: - strb r1, [r7] - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, sp - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08136E64 - adds r0, r5, 0 - movs r1, 0x30 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r2, r8 - ldrb r2, [r2, 0x6] - adds r1, r0, r2 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08136ECE - movs r1, 0xFF -_08136ECE: - mov r0, sp - strb r1, [r0] - adds r0, r5, 0 - movs r1, 0x30 - mov r2, sp - bl SetMonData -_08136EDC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08136EE8: .4byte gUnknown_08406118 -_08136EEC: .4byte gUnknown_02039304 - thumb_func_end sub_8136E40 - thumb_func_start sub_8136EF0 sub_8136EF0: @ 8136EF0 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 87079600d..97634955a 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -23,6 +23,7 @@ struct UnkPokenavStruct_Sub1 { /*0x5c*/ u8 unk5c[1]; /*0x5d*/ u8 fil5d[4]; /*0x61*/ u8 unk61[5]; + /*0x66*/ s16 unk66[5]; }; struct UnkPokenavStruct_Sub2 { diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index efa3b6200..c4b0d4e2e 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -85,6 +85,7 @@ void sub_8136C6C(void); bool8 sub_8136D00(void); void sub_8136DC0(u8 *, u8, s16); void sub_8136DA0(const u8 *); +void sub_8136F74(struct Pokeblock *, struct Pokemon *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -745,3 +746,40 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "_08136E0C: .4byte gOtherText_NothingChanged"); } #endif + +void sub_8136E10(struct Pokemon *pokemon, u8 *data) +{ + u16 i; + for (i=0; i<5; i++) + { + data[i] = GetMonData(pokemon, gUnknown_08406118[i]); + } +} + +void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +{ + u16 i; + s16 cstat; + u8 data; + if (GetMonData(pokemon, MON_DATA_SHEEN) != 255) + { + sub_8136F74(pokeblock, pokemon); + for (i=0; i<5; i++) + { + data = GetMonData(pokemon, gUnknown_08406118[i]); + cstat = data + gUnknown_02039304->unk66[i]; + if (cstat < 0) + cstat = 0; + if (cstat > 255) + cstat = 255; + data = cstat; + SetMonData(pokemon, gUnknown_08406118[i], &data); + } + cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); + cstat = cstat + pokeblock->feel; + if (cstat > 255) + cstat = 255; + data = cstat; + SetMonData(pokemon, MON_DATA_SHEEN, &data); + } +} -- cgit v1.2.3 From eb9df8bc6699093ef8f3c9ccb985bec9809910c7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:48:53 -0400 Subject: sub_8136EF0 --- asm/use_pokeblock.s | 64 ----------------------------------------------------- include/pokenav.h | 5 ++--- src/use_pokeblock.c | 14 ++++++++++++ 3 files changed, 16 insertions(+), 67 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index f5abbb27e..c153f7cfb 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,70 +6,6 @@ .text - thumb_func_start sub_8136EF0 -sub_8136EF0: @ 8136EF0 - push {r4,r5,lr} - ldr r5, _08136F60 @ =gPlayerParty - ldr r0, _08136F64 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _08136F68 @ =0x000087dc - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - lsls r0, 2 - adds r1, r0 - ldr r0, _08136F6C @ =0x0000893e - adds r1, r0 - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 27 - movs r1, 0x64 - muls r0, r1 - adds r5, r0, r5 - ldr r4, _08136F70 @ =gUnknown_02039304 - ldr r1, [r4] - adds r1, 0x57 - adds r0, r5, 0 - bl sub_8136E10 - ldr r0, [r4] - ldr r0, [r0, 0x8] - adds r1, r5, 0 - bl sub_8136E40 - ldr r1, [r4] - adds r1, 0x5C - adds r0, r5, 0 - bl sub_8136E10 - movs r3, 0 -_08136F36: - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x61 - adds r2, r3 - adds r1, r0, 0 - adds r1, 0x5C - adds r1, r3 - adds r0, 0x57 - adds r0, r3 - ldrb r1, [r1] - ldrb r0, [r0] - subs r1, r0 - strb r1, [r2] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _08136F36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08136F60: .4byte gPlayerParty -_08136F64: .4byte gUnknown_083DFEC4 -_08136F68: .4byte 0x000087dc -_08136F6C: .4byte 0x0000893e -_08136F70: .4byte gUnknown_02039304 - thumb_func_end sub_8136EF0 - thumb_func_start sub_8136F74 sub_8136F74: @ 8136F74 push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 97634955a..70cc4135f 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -19,9 +19,8 @@ struct UnkPokenavStruct_Sub1 { /*0x54*/ u8 unk54; /*0x55*/ u8 unk55; /*0x56*/ u8 unk56; - /*0x57*/ u8 fil57[5]; - /*0x5c*/ u8 unk5c[1]; - /*0x5d*/ u8 fil5d[4]; + /*0x57*/ u8 unk57[5]; + /*0x5c*/ u8 unk5c[5]; /*0x61*/ u8 unk61[5]; /*0x66*/ s16 unk66[5]; }; diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c4b0d4e2e..e21984180 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -783,3 +783,17 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) SetMonData(pokemon, MON_DATA_SHEEN, &data); } } + +void sub_8136EF0(void) +{ + u16 i; + struct Pokemon *pokemon = gPlayerParty; + pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; + sub_8136E10(pokemon, gUnknown_02039304->unk57); + sub_8136E40(gUnknown_02039304->pokeblock, pokemon); + sub_8136E10(pokemon, gUnknown_02039304->unk5c); + for (i=0; i<5; i++) + { + gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; + } +} -- cgit v1.2.3 From fe40c6053622e89dbc0f9e26493946fa098765fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:06:27 -0400 Subject: sub_8136F74 --- asm/use_pokeblock.s | 117 ------------------------------------------------ include/pokemon.h | 1 + include/use_pokeblock.h | 1 + src/use_pokeblock.c | 37 +++++++++++++-- 4 files changed, 36 insertions(+), 120 deletions(-) mode change 100644 => 100755 include/pokemon.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index c153f7cfb..d16abf724 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,123 +6,6 @@ .text - thumb_func_start sub_8136F74 -sub_8136F74: @ 8136F74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r1 - ldr r1, _08136FBC @ =gUnknown_02039304 - ldr r3, [r1] - ldrb r1, [r0, 0x1] - adds r2, r3, 0 - adds r2, 0x66 - strh r1, [r2] - ldrb r2, [r0, 0x5] - adds r1, r3, 0 - adds r1, 0x68 - strh r2, [r1] - ldrb r1, [r0, 0x4] - adds r2, r3, 0 - adds r2, 0x6A - strh r1, [r2] - ldrb r2, [r0, 0x3] - adds r1, r3, 0 - adds r1, 0x6C - strh r2, [r1] - ldrb r1, [r0, 0x2] - adds r0, r3, 0 - adds r0, 0x6E - strh r1, [r0] - ldr r0, _08136FC0 @ =gUnknown_02039312 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _08136FC4 - movs r0, 0x1 - b _08136FCA - .align 2, 0 -_08136FBC: .4byte gUnknown_02039304 -_08136FC0: .4byte gUnknown_02039312 -_08136FC4: - cmp r0, 0 - bge _08137040 - movs r0, 0xFF -_08136FCA: - movs r2, 0 - lsls r0, 24 - mov r9, r0 - ldr r0, _08137050 @ =gUnknown_02039304 - mov r8, r0 -_08136FD4: - mov r0, r8 - ldr r1, [r0] - lsls r0, r2, 24 - asrs r6, r0, 24 - lsls r7, r6, 1 - adds r1, 0x66 - adds r1, r7 - movs r2, 0 - ldrsh r4, [r1, r2] - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _0813700C - lsls r0, r5, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r5, r0, 24 -_0813700C: - ldr r0, _08137054 @ =gUnknown_0840612C - adds r0, r6, r0 - ldrb r1, [r0] - mov r0, r10 - bl sub_8040A54 - lsls r0, 24 - asrs r2, r0, 24 - cmp r0, r9 - bne _08137034 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x66 - adds r0, r7 - lsls r1, r5, 24 - asrs r1, 24 - muls r1, r2 - ldrh r2, [r0] - adds r1, r2 - strh r1, [r0] -_08137034: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x4 - ble _08136FD4 -_08137040: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08137050: .4byte gUnknown_02039304 -_08137054: .4byte gUnknown_0840612C - thumb_func_end sub_8136F74 - thumb_func_start sub_8137058 sub_8137058: @ 8137058 push {lr} diff --git a/include/pokemon.h b/include/pokemon.h old mode 100644 new mode 100755 index be8e4e56d..6fbdb18d3 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -511,5 +511,6 @@ void sub_8040B8C(void); void SetWildMonHeldItem(void); u8 *sub_8040D08(); bool32 sub_8040D3C(u16 species, u8 *name, u8 language); +s8 sub_8040A54(struct Pokemon *, u8); #endif // GUARD_POKEMON_H diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h index 779ba27d1..978476d89 100755 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -6,6 +6,7 @@ #define POKERUBY_USE_POKEBLOCK_H extern void *gUnknown_02030400; +extern s16 gUnknown_02039312; void sub_8136130(struct Pokeblock *, MainCallback); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index e21984180..5a14f74fa 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -20,7 +20,6 @@ #include "use_pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 -#define GFX_TAG_UNKNOWN02030400 1 #ifndef GERMAN const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); @@ -35,8 +34,8 @@ const u32 gUnknown_08406118[] = { MON_DATA_BEAUTY }; -const struct SpritePalette gUnknown_0840612C = { - (u16 *const)&gUnknown_02030400, GFX_TAG_UNKNOWN02030400 +const u8 gUnknown_0840612C[] = { + 0, 4, 3, 2, 1 }; const u8 *const gUnknown_08406134[] = { @@ -797,3 +796,35 @@ void sub_8136EF0(void) gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; } } + +void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +{ + s8 direction; + s8 i; + s16 amount; + s8 boost; + s8 taste; + gUnknown_02039304->unk66[0] = pokeblock->spicy; + gUnknown_02039304->unk66[1] = pokeblock->sour; + gUnknown_02039304->unk66[2] = pokeblock->bitter; + gUnknown_02039304->unk66[3] = pokeblock->sweet; + gUnknown_02039304->unk66[4] = pokeblock->dry; + if (gUnknown_02039312 > 0) + direction = 1; + else if (gUnknown_02039312 < 0) + direction = -1; + else + return; + for (i=0; i<5; i++) + { + amount = gUnknown_02039304->unk66[i]; + boost = amount / 10; + if (amount % 10 >= 5) // round to the nearest + boost++; + taste = sub_8040A54(pokemon, gUnknown_0840612C[i]); + if (taste == direction) + { + gUnknown_02039304->unk66[i] += boost * taste; + } + } +} -- cgit v1.2.3 From 05c997bd75ce375425f1941c86b7643973e41e3f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:17:58 -0400 Subject: sub_81370A4 --- asm/use_pokeblock.s | 76 ----------------------------------------------------- src/use_pokeblock.c | 24 +++++++++++++++++ 2 files changed, 24 insertions(+), 76 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index d16abf724..d51560e52 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,82 +6,6 @@ .text - thumb_func_start sub_8137058 -sub_8137058: @ 8137058 - push {lr} - ldr r0, _0813708C @ =gPlayerParty - ldr r1, _08137090 @ =gUnknown_083DFEC4 - ldr r2, [r1] - ldr r3, _08137094 @ =0x000087dc - adds r1, r2, r3 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r1, 2 - adds r2, r1 - ldr r1, _08137098 @ =0x0000893e - adds r2, r1 - ldrb r1, [r2] - lsls r1, 27 - lsrs r1, 27 - movs r2, 0x64 - muls r1, r2 - adds r0, r1, r0 - movs r1, 0x30 - bl GetMonData - cmp r0, 0xFF - beq _0813709C - movs r0, 0 - b _0813709E - .align 2, 0 -_0813708C: .4byte gPlayerParty -_08137090: .4byte gUnknown_083DFEC4 -_08137094: .4byte 0x000087dc -_08137098: .4byte 0x0000893e -_0813709C: - movs r0, 0x1 -_0813709E: - pop {r1} - bx r1 - thumb_func_end sub_8137058 - - thumb_func_start sub_81370A4 -sub_81370A4: @ 81370A4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_081370AC: - movs r0, 0x64 - muls r0, r4 - ldr r1, _081370C8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _081370D2 - cmp r5, 0 - bne _081370CC - adds r0, r4, 0 - b _081370DE - .align 2, 0 -_081370C8: .4byte gPlayerParty -_081370CC: - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_081370D2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _081370AC - movs r0, 0 -_081370DE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81370A4 - thumb_func_start sub_81370E4 sub_81370E4: @ 81370E4 push {r4-r6,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 5a14f74fa..b29cb7454 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -828,3 +828,27 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } } + +bool8 sub_8137058(void) +{ + struct Pokemon *pokemon = gPlayerParty; + pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; + if (GetMonData(pokemon, MON_DATA_SHEEN) == 255) + return TRUE; + return FALSE; +} + +u8 sub_81370A4(u8 a0) +{ + u8 i; + for (i=0; i Date: Thu, 29 Jun 2017 22:22:56 -0400 Subject: Through sub_8137124 --- asm/use_pokeblock.s | 50 -------------------------------------------------- src/use_pokeblock.c | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 50 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index d51560e52..6b0b0392d 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,56 +6,6 @@ .text - thumb_func_start sub_81370E4 -sub_81370E4: @ 81370E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - movs r6, 0 - cmp r6, r5 - bcs _08137114 -_081370F2: - movs r0, 0x64 - muls r0, r4 - ldr r1, _08137120 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0813710A - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0813710A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _081370F2 -_08137114: - subs r0, r5, r6 - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08137120: .4byte gPlayerParty - thumb_func_end sub_81370E4 - - thumb_func_start sub_8137124 -sub_8137124: @ 8137124 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8137124 - thumb_func_start sub_8137138 sub_8137138: @ 8137138 push {r4-r7,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index b29cb7454..c21e3719a 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -852,3 +852,22 @@ u8 sub_81370A4(u8 a0) } return 0; } + +u8 sub_81370E4(u8 a0) +{ + u8 ct; + u8 i; + for (i=0, ct=0; i Date: Thu, 29 Jun 2017 22:32:23 -0400 Subject: Decompile use_pokeblock data --- data/use_pokeblock.s | 44 -------------------------------------------- ld_script.txt | 1 - src/use_pokeblock.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 45 deletions(-) delete mode 100755 data/use_pokeblock.s diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s deleted file mode 100755 index 88f8cc336..000000000 --- a/data/use_pokeblock.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteSheet_ConditionUpDown:: @ 8406148 - obj_tiles ConditionUpDownTiles, 0x200, 0 - - .align 2 -gSpritePalette_ConditionUpDown:: @ 8406150 - obj_pal ConditionUpDownPalette, 0 - -gUnknown_08406158:: @ 8406158 - .2byte 156, 30 - .2byte 117, 53 - .2byte 117, 112 - .2byte 197, 112 - .2byte 197, 53 - - .align 2 -gOamData_840616C:: @ 840616C - .2byte 0x4000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8406174:: @ 8406174 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_840617C:: @ 840617C - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8406184:: @ 8406184 - .4byte gSpriteAnim_8406174 - .4byte gSpriteAnim_840617C - - .align 2 -gSpriteTemplate_840618C:: @ 840618C - spr_template 0, 0, gOamData_840616C, gSpriteAnimTable_8406184, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/ld_script.txt b/ld_script.txt index a360ee781..2282bc7a2 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -463,7 +463,6 @@ SECTIONS { src/roamer.o(.rodata); data/battle_tower.o(.rodata); src/use_pokeblock.o(.rodata); - data/use_pokeblock.o(.rodata); data/battle_anim_8137220.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c21e3719a..6ca3437fd 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -46,6 +46,56 @@ const u8 *const gUnknown_08406134[] = { OtherText_Beauty }; +const struct SpriteSheet gSpriteSheet_ConditionUpDown = { + (u8 *)ConditionUpDownTiles, + sizeof ConditionUpDownTiles, + GFX_TAG_CONDITIONUPDOWN +}; + +const struct SpritePalette gSpritePalette_ConditionUpDown = { + ConditionUpDownPalette, + GFX_TAG_CONDITIONUPDOWN +}; + +const struct Coords16 gUnknown_08406158[] = { + {0x9c, 0x1e}, + {0x75, 0x35}, + {0x75, 0x70}, + {0xc5, 0x70}, + {0xc5, 0x35} +}; + +const struct OamData gOamData_840616C = { + .shape = 1, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8406174[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_840617C[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8406184[] = { + gSpriteAnim_8406174, + gSpriteAnim_840617C +}; + +const struct SpriteTemplate gSpriteTemplate_840618C = { + GFX_TAG_CONDITIONUPDOWN, + GFX_TAG_CONDITIONUPDOWN, + &gOamData_840616C, + gSpriteAnimTable_8406184, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + asm(".text\n" ".include \"constants/gba_constants.inc\""); -- cgit v1.2.3 From 06f5a396016aee2406749633b627bb9d729744ff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:42:28 -0400 Subject: Remaining functions in use_pokeblock --- asm/use_pokeblock.s | 130 ---------------------------------------------------- ld_script.txt | 1 - src/use_pokeblock.c | 40 +++++++++++++++- 3 files changed, 39 insertions(+), 132 deletions(-) delete mode 100755 asm/use_pokeblock.s diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s deleted file mode 100755 index 6b0b0392d..000000000 --- a/asm/use_pokeblock.s +++ /dev/null @@ -1,130 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8137138 -sub_8137138: @ 8137138 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _081371C0 @ =gSpriteSheet_ConditionUpDown - bl LoadSpriteSheet - ldr r0, _081371C4 @ =gSpritePalette_ConditionUpDown - bl LoadSpritePalette - ldr r2, _081371C8 @ =gUnknown_02039304 - ldr r0, [r2] - adds r0, 0x54 - movs r1, 0 - strb r1, [r0] - movs r4, 0 - adds r5, r2, 0 - ldr r6, _081371CC @ =gUnknown_08406158 - adds r0, r6, 0x2 - mov r8, r0 - ldr r7, _081371D0 @ =gSprites + 0x1C -_08137160: - ldr r0, [r5] - adds r0, 0x61 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _081371AC - lsls r2, r4, 2 - adds r0, r2, r6 - movs r3, 0 - ldrsh r1, [r0, r3] - add r2, r8 - movs r0, 0 - ldrsh r2, [r2, r0] - ldr r0, _081371D4 @ =gSpriteTemplate_840618C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _081371AC - ldr r0, [r5] - adds r0, 0x61 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _081371A2 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _081371D8 @ =sub_81371DC - str r1, [r0] -_081371A2: - ldr r1, [r5] - adds r1, 0x54 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081371AC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08137160 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081371C0: .4byte gSpriteSheet_ConditionUpDown -_081371C4: .4byte gSpritePalette_ConditionUpDown -_081371C8: .4byte gUnknown_02039304 -_081371CC: .4byte gUnknown_08406158 -_081371D0: .4byte gSprites + 0x1C -_081371D4: .4byte gSpriteTemplate_840618C -_081371D8: .4byte sub_81371DC - thumb_func_end sub_8137138 - - thumb_func_start sub_81371DC -sub_81371DC: @ 81371DC - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x5 - bgt _081371EE - ldrh r0, [r1, 0x26] - subs r0, 0x2 - b _081371F6 -_081371EE: - cmp r0, 0xB - bgt _081371F8 - ldrh r0, [r1, 0x26] - adds r0, 0x2 -_081371F6: - strh r0, [r1, 0x26] -_081371F8: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _08137218 - adds r0, r1, 0 - bl DestroySprite - ldr r0, _0813721C @ =gUnknown_02039304 - ldr r1, [r0] - adds r1, 0x54 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_08137218: - pop {r0} - bx r0 - .align 2, 0 -_0813721C: .4byte gUnknown_02039304 - thumb_func_end sub_81371DC - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 2282bc7a2..56dfef8fe 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -256,7 +256,6 @@ SECTIONS { src/roamer.o(.text); asm/battle_tower.o(.text); src/use_pokeblock.o(.text); - asm/use_pokeblock.o(.text); src/battle_anim_8137220.o(.text); src/player_pc.o(.text); src/intro.o(.text); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 6ca3437fd..a62821a90 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -57,7 +57,7 @@ const struct SpritePalette gSpritePalette_ConditionUpDown = { GFX_TAG_CONDITIONUPDOWN }; -const struct Coords16 gUnknown_08406158[] = { +const s16 gUnknown_08406158[][2] = { {0x9c, 0x1e}, {0x75, 0x35}, {0x75, 0x70}, @@ -135,6 +135,7 @@ bool8 sub_8136D00(void); void sub_8136DC0(u8 *, u8, s16); void sub_8136DA0(const u8 *); void sub_8136F74(struct Pokeblock *, struct Pokemon *); +void sub_81371DC(struct Sprite *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -921,3 +922,40 @@ u8 sub_8137124(u8 a0) { return sub_81370A4(a0); } + +void sub_8137138(void) +{ + u16 flavor; + u8 spriteidx; + LoadSpriteSheet(&gSpriteSheet_ConditionUpDown); + LoadSpritePalette(&gSpritePalette_ConditionUpDown); + gUnknown_02039304->unk54 = 0; + for (flavor=0; flavor<5; flavor++) + { + if (gUnknown_02039304->unk61[flavor] != 0) + { + spriteidx = CreateSprite(&gSpriteTemplate_840618C, gUnknown_08406158[flavor][0], gUnknown_08406158[flavor][1], 0); + if (spriteidx != MAX_SPRITES) + { + if (gUnknown_02039304->unk61[flavor] != 0) + { + gSprites[spriteidx].callback = sub_81371DC; + } + gUnknown_02039304->unk54++; + } + } + } +} + +void sub_81371DC(struct Sprite *sprite) +{ + if (sprite->data0 <= 5) + sprite->pos2.y -= 2; + else if (sprite->data0 <= 11) + sprite->pos2.y += 2; + if ((++sprite->data0) > 60) + { + DestroySprite(sprite); + gUnknown_02039304->unk54--; + } +} -- cgit v1.2.3 From a07701d4e1f115c5ed1686419c12f9bdcfda6aca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Jun 2017 08:38:48 -0400 Subject: Attempt to get German to build --- src/use_pokeblock.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index a62821a90..40c960cf9 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -21,7 +21,10 @@ #define GFX_TAG_CONDITIONUPDOWN 0 -#ifndef GERMAN +#ifdef GERMAN +const u16 ConditionUpDownPalette[16]; +const u32 ConditionUpDownTiles[0x80]; +#else const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); #endif -- cgit v1.2.3 From 282cae4a9fbd019a973fb6618337d29a61f97f42 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 30 Jun 2017 09:44:28 -0400 Subject: Address review items by Marijn vd Werf --- src/use_pokeblock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 40c960cf9..ce83bc1c2 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -22,8 +22,8 @@ #define GFX_TAG_CONDITIONUPDOWN 0 #ifdef GERMAN -const u16 ConditionUpDownPalette[16]; -const u32 ConditionUpDownTiles[0x80]; +extern const u16 ConditionUpDownPalette[16]; +extern const u32 ConditionUpDownTiles[0x80]; #else const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); @@ -108,7 +108,7 @@ extern struct Pokeblock *gUnknown_0203930C; extern u8 gUnknown_02039310; extern u16 gKeyRepeatStartDelay; -extern u16 gScriptItemId; // remove after merge of #349 Pokeblock +extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); -- cgit v1.2.3