diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-04-09 11:14:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-09 11:14:37 -0700 |
commit | 84c5825c8ecc9804313ec3b1a8dcc0271ee4c2cc (patch) | |
tree | c90f705e43f2b1728ed1e0400312b7d6c5c81c21 | |
parent | 562dcc4bcdc14d5b6c0bb2a638410156945cdd41 (diff) | |
parent | 91f869d1e6ed1ef12ad4b2255d3762e3b1b51429 (diff) |
Merge pull request #589 from PikalaxALT/unk_debug_menu_3
Unk Debug Menu 3 and Start Menu Debug
111 files changed, 3271 insertions, 7173 deletions
diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s deleted file mode 100644 index aa156a99b..000000000 --- a/asm/unk_debug_menu_3.s +++ /dev/null @@ -1,747 +0,0 @@ -.if DEBUG - - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .text - - thumb_func_start debug_sub_813C404 -debug_sub_813C404: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._1 @ gUnknown_Debug_845DDB2 - ldr r4, ._1 + 4 @ gUnknown_Debug_845DAE1 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._2: - .align 2, 0 -._1: - .word gUnknown_Debug_845DDB2 - .word gUnknown_Debug_845DAE1 - - thumb_func_end debug_sub_813C404 - - thumb_func_start debug_sub_813C430 -debug_sub_813C430: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._3 @ gUnknown_Debug_845E402 - ldr r4, ._3 + 4 @ gUnknown_Debug_845E3E0 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._4: - .align 2, 0 -._3: - .word gUnknown_Debug_845E402 - .word gUnknown_Debug_845E3E0 - - thumb_func_end debug_sub_813C430 - - thumb_func_start debug_sub_813C45C -debug_sub_813C45C: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._5 @ gUnknown_Debug_845E443 - ldr r4, ._5 + 4 @ gUnknown_Debug_845E422 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._6: - .align 2, 0 -._5: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E422 - - thumb_func_end debug_sub_813C45C - - thumb_func_start debug_sub_813C488 -debug_sub_813C488: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._7 @ gUnknown_Debug_845E422 - ldr r4, ._7 + 4 @ gUnknown_Debug_845E402 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._8: - .align 2, 0 -._7: - .word gUnknown_Debug_845E422 - .word gUnknown_Debug_845E402 - - thumb_func_end debug_sub_813C488 - - thumb_func_start debug_sub_813C4B4 -debug_sub_813C4B4: - push {r4, lr} - ldr r4, ._9 @ gUnknown_Debug_845E619 - ldr r1, ._9 + 4 @ gUnknown_Debug_845E606 - sub r4, r4, r1 - add r2, r4, #0 - bl memcpy - add r0, r4, #0 - pop {r4} - pop {r1} - bx r1 -._10: - .align 2, 0 -._9: - .word gUnknown_Debug_845E619 - .word gUnknown_Debug_845E606 - - thumb_func_end debug_sub_813C4B4 - - thumb_func_start debug_sub_813C4D4 -debug_sub_813C4D4: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._11 @ gUnknown_Debug_845E712 - ldr r4, ._11 + 4 @ gUnknown_Debug_845E619 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_81261B4 - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._12: - .align 2, 0 -._11: - .word gUnknown_Debug_845E712 - .word gUnknown_Debug_845E619 - - thumb_func_end debug_sub_813C4D4 - - thumb_func_start debug_sub_813C500 -debug_sub_813C500: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._13 @ gUnknown_Debug_845E797 - ldr r4, ._13 + 4 @ gUnknown_Debug_845E712 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._14: - .align 2, 0 -._13: - .word gUnknown_Debug_845E797 - .word gUnknown_Debug_845E712 - - thumb_func_end debug_sub_813C500 - - thumb_func_start debug_sub_813C52C -debug_sub_813C52C: - push {r4, r5, r6, lr} - mov r6, r9 - mov r5, r8 - push {r5, r6} - mov r8, r0 - lsl r5, r1, #0x10 - lsr r0, r5, #0x10 - mov r9, r0 - ldr r6, ._15 @ gUnknown_Debug_845E7BB - ldr r4, ._15 + 4 @ gUnknown_Debug_845E797 - sub r6, r6, r4 - mov r0, r8 - add r1, r4, #0 - add r2, r6, #0 - bl memcpy - ldr r0, ._15 + 8 @ gUnknown_Debug_845E7B5 - sub r0, r0, r4 - add r0, r0, r8 - add r0, r0, #0x3 - mov r1, r9 - strb r1, [r0] - lsr r5, r5, #0x18 - strb r5, [r0, #0x1] - mov r0, r8 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r6, #0 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6} - pop {r1} - bx r1 -._16: - .align 2, 0 -._15: - .word gUnknown_Debug_845E7BB - .word gUnknown_Debug_845E797 - .word gUnknown_Debug_845E7B5 - - thumb_func_end debug_sub_813C52C - - thumb_func_start debug_sub_813C580 -debug_sub_813C580: - push {lr} - mov r1, #0xd - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C580 - - thumb_func_start debug_sub_813C58C -debug_sub_813C58C: - push {lr} - mov r1, #0x4 - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C58C - - thumb_func_start debug_sub_813C598 -debug_sub_813C598: - push {lr} - mov r1, #0x85 - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C598 - - thumb_func_start debug_sub_813C5A4 -debug_sub_813C5A4: - push {lr} - ldr r1, ._17 @ 0x121 - bl debug_sub_813C52C - pop {r1} - bx r1 -._18: - .align 2, 0 -._17: - .word 0x121 - - thumb_func_end debug_sub_813C5A4 - - thumb_func_start debug_sub_813C5B4 -debug_sub_813C5B4: - push {r4, r5, r6, r7, lr} - add r4, r0, #0 - ldr r7, ._23 @ gSaveBlock1 - ldr r0, ._23 + 4 @ gUnknown_Debug_845DDD6 - ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2 - sub r0, r0, r1 - add r6, r0, r4 - ldr r0, ._23 + 12 @ gUnknown_Debug_845E306 - sub r5, r0, r1 - ldr r0, ._23 + 16 @ Str_842E23C - mov r1, #0x0 - mov r2, #0x0 - bl debug_sub_80C2C18 - mov r2, #0x0 - ldr r3, ._23 + 20 @ 0xfff - mov r1, #0x0 -._19: - add r0, r4, r2 - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r3 - ble ._19 @cond_branch - mov r2, #0x0 - cmp r2, r5 - bcs ._20 @cond_branch - ldr r3, ._23 + 8 @ gUnknown_Debug_845DDB2 -._21: - add r0, r4, r2 - add r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r5 - bcc ._21 @cond_branch -._20: - mov r2, #0x0 - ldr r3, ._23 + 24 @ 0x52f -._22: - add r0, r6, r2 - add r1, r7, r2 - ldrb r1, [r1] - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r3 - bls ._22 @cond_branch - bl ClearEnigmaBerries - ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2 - add r0, r4, #0 - bl unref_sub_81261B4 - add r0, r5, #0 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._24: - .align 2, 0 -._23: - .word gSaveBlock1+0x3160 - .word gUnknown_Debug_845DDD6 - .word gUnknown_Debug_845DDB2 - .word gUnknown_Debug_845E306 - .word Str_842E23C - .word 0xfff - .word 0x52f - - thumb_func_end debug_sub_813C5B4 - - thumb_func_start debug_sub_813C638 -debug_sub_813C638: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffec - mov r8, r0 - add r4, r1, #0 - add r5, r2, #0 - add r6, r3, #0 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - lsl r6, r6, #0x10 - lsr r6, r6, #0x10 - bl ZeroMonData - mov r0, #0x0 - str r0, [sp] - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - ldr r0, ._25 @ 0x270f - str r0, [sp, #0xc] - mov r0, r8 - add r1, r4, #0 - add r2, r5, #0 - mov r3, #0x20 - bl CreateMon - ldr r2, ._25 + 4 @ Str_842E240 - mov r0, r8 - mov r1, #0x7 - bl SetMonData - ldr r2, ._25 + 8 @ Str_842E248 - mov r0, r8 - mov r1, #0x2 - bl SetMonData - str r6, [sp, #0x10] - mov r0, r8 - mov r1, #0xc - add r2, sp, #0x10 - bl SetMonData - add sp, sp, #0x14 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 -._26: - .align 2, 0 -._25: - .word 0x270f - .word Str_842E240 - .word Str_842E248 - - thumb_func_end debug_sub_813C638 - - thumb_func_start debug_sub_813C6AC -debug_sub_813C6AC: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - add sp, sp, #0xfffffff8 - add r6, r0, #0 - add r5, r1, #0 - add r0, r5, #0 - bl ClearMailStruct - add r0, r6, #0 - mov r1, #0xc - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r8, r0 - bl ItemIsMail - lsl r0, r0, #0x18 - cmp r0, #0 - beq ._27 @cond_branch - add r4, r5, #0 - add r4, r4, #0x12 - add r7, r5, #0 - add r7, r7, #0x1a - mov r1, #0x9 - add r0, r5, #0 - add r0, r0, #0x10 -._28: - strh r1, [r0] - sub r1, r1, #0x1 - sub r0, r0, #0x2 - cmp r0, r5 - bge ._28 @cond_branch - add r0, r6, #0 - mov r1, #0x7 - mov r2, sp - bl GetMonData - add r0, r4, #0 - mov r1, sp - mov r2, #0x8 - bl StringCopyN - add r0, r6, #0 - mov r1, #0x1 - bl GetMonData - add r1, r7, #0 - bl write_word_to_mem - add r0, r6, #0 - mov r1, #0xb - bl GetMonData - add r4, r0, #0 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r6, #0 - mov r1, #0x0 - bl GetMonData - add r1, r0, #0 - add r0, r4, #0 - bl SpeciesToMailSpecies - strh r0, [r5, #0x1e] - mov r0, r8 - strh r0, [r5, #0x20] -._27: - add sp, sp, #0x8 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_end debug_sub_813C6AC - - thumb_func_start debug_sub_813C740 -debug_sub_813C740: - push {r4, r5, r6, lr} - mov r6, sl - mov r5, r9 - mov r4, r8 - push {r4, r5, r6} - add sp, sp, #0xffffffd0 - add r6, r0, #0 - ldr r0, ._29 @ gUnknown_Debug_845E443 - mov r8, r0 - ldr r1, ._29 + 4 @ gUnknown_Debug_845E4EF - ldr r5, ._29 + 8 @ gEnemyParty - sub r1, r1, r0 - mov r9, r1 - add r0, r6, #0 - mov r1, r8 - mov r2, r9 - bl memcpy - add r0, r5, #0 - mov r1, #0x19 - mov r2, #0x5 - mov r3, #0x0 - bl debug_sub_813C638 - add r4, sp, #0x24 - mov r0, #0x1 - mov sl, r0 - mov r1, sl - strb r1, [r4] - add r0, r5, #0 - mov r1, #0x2d - add r2, r4, #0 - bl SetMonData - mov r0, #0x3 - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x20 - add r2, r4, #0 - bl SetMonData - mov r0, #0xff - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x23 - add r2, r4, #0 - bl SetMonData - ldr r1, ._29 + 12 @ Str_842E238 - add r0, r4, #0 - mov r2, #0xb - bl StringCopyN - add r0, r5, #0 - mov r1, #0x2 - add r2, r4, #0 - bl SetMonData - mov r0, sl - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x3 - add r2, r4, #0 - bl SetMonData - ldr r0, ._29 + 16 @ gUnknown_Debug_845E467 - add r0, r6, r0 - mov r1, r8 - sub r0, r0, r1 - add r1, r5, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._29 + 20 @ gUnknown_Debug_845E4CB - add r6, r6, r0 - mov r0, r8 - sub r6, r6, r0 - add r0, r6, #0 - mov r1, sp - mov r2, #0x24 - bl memcpy - mov r0, r9 - add sp, sp, #0x30 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6} - pop {r1} - bx r1 -._30: - .align 2, 0 -._29: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word Str_842E238 - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C740 - - thumb_func_start debug_sub_813C810 -debug_sub_813C810: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffdc - add r6, r0, #0 - ldr r5, ._31 @ gUnknown_Debug_845E443 - ldr r0, ._31 + 4 @ gUnknown_Debug_845E4EF - ldr r4, ._31 + 8 @ gEnemyParty - sub r0, r0, r5 - mov r8, r0 - add r0, r6, #0 - add r1, r5, #0 - mov r2, r8 - bl memcpy - add r0, r4, #0 - mov r1, #0xc9 - mov r2, #0x15 - mov r3, #0x82 - bl debug_sub_813C638 - add r0, r4, #0 - mov r1, sp - bl debug_sub_813C6AC - ldr r0, ._31 + 12 @ gUnknown_Debug_845E467 - add r0, r6, r0 - sub r0, r0, r5 - add r1, r4, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._31 + 16 @ gUnknown_Debug_845E4CB - add r0, r6, r0 - sub r0, r0, r5 - mov r1, sp - mov r2, #0x24 - bl memcpy - add r0, r6, #0 - add r1, r5, #0 - bl unref_sub_812620C - mov r0, r8 - add sp, sp, #0x24 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 -._32: - .align 2, 0 -._31: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C810 - - thumb_func_start debug_sub_813C888 -debug_sub_813C888: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffdc - add r6, r0, #0 - ldr r5, ._33 @ gUnknown_Debug_845E443 - ldr r0, ._33 + 4 @ gUnknown_Debug_845E4EF - ldr r4, ._33 + 8 @ gEnemyParty - sub r0, r0, r5 - mov r8, r0 - add r0, r6, #0 - add r1, r5, #0 - mov r2, r8 - bl memcpy - add r0, r4, #0 - mov r1, #0xc9 - mov r2, #0x15 - mov r3, #0x82 - bl debug_sub_813C638 - add r0, r4, #0 - mov r1, sp - bl debug_sub_813C6AC - mov r0, #0x0 - strh r0, [r4, #0x1c] - ldr r0, ._33 + 12 @ gUnknown_Debug_845E467 - add r0, r6, r0 - sub r0, r0, r5 - add r1, r4, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._33 + 16 @ gUnknown_Debug_845E4CB - add r0, r6, r0 - sub r0, r0, r5 - mov r1, sp - mov r2, #0x24 - bl memcpy - add r0, r6, #0 - add r1, r5, #0 - bl unref_sub_812620C - mov r0, r8 - add sp, sp, #0x24 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 -._34: - .align 2, 0 -._33: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C888 - - thumb_func_start debug_sub_813C904 -debug_sub_813C904: - push {r4, lr} - ldr r4, ._35 @ gPlayerParty - add r0, r4, #0 - mov r1, #0x5 - mov r2, #0x32 - mov r3, #0xb7 - bl debug_sub_813C638 - add r0, r4, #0 - add r0, r0, #0x64 - mov r1, #0x8 - mov r2, #0x32 - mov r3, #0xc4 - bl debug_sub_813C638 - add r4, r4, #0xc8 - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x32 - mov r3, #0x8d - bl debug_sub_813C638 - pop {r4} - pop {r0} - bx r0 -._36: - .align 2, 0 -._35: - .word gPlayerParty - - thumb_func_end debug_sub_813C904 - - thumb_func_start debug_sub_813C93C -debug_sub_813C93C: - push {r4, r5, r6, lr} - add sp, sp, #0xffffff44 - add r4, r0, #0 - ldr r6, ._37 @ gUnknown_Debug_845E4EF - ldr r5, ._37 + 4 @ gUnknown_Debug_845E606 - sub r5, r5, r6 - add r1, r6, #0 - add r2, r5, #0 - bl memcpy - bl SavePlayerParty - bl debug_sub_813C904 - ldr r1, ._37 + 8 @ Str_842E253 - ldr r2, ._37 + 12 @ 0x270f - mov r0, sp - bl debug_sub_8075DB4 - bl LoadPlayerParty - ldr r0, ._37 + 16 @ gUnknown_Debug_845E506 - add r4, r4, r0 - sub r4, r4, r6 - add r0, r4, #0 - mov r1, sp - mov r2, #0xbc - bl memcpy - add r0, r5, #0 - add sp, sp, #0xbc - pop {r4, r5, r6} - pop {r1} - bx r1 -._38: - .align 2, 0 -._37: - .word gUnknown_Debug_845E4EF - .word gUnknown_Debug_845E606 - .word Str_842E253+5 @ weird... - .word 0x270f - .word gUnknown_Debug_845E506 - - thumb_func_end debug_sub_813C93C - - .align 2, 0 - -.endif diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s deleted file mode 100644 index ed4bb599b..000000000 --- a/data/debug_menu_3.s +++ /dev/null @@ -1,106 +0,0 @@ -.if DEBUG - - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_Debug_845DAE1:: - .byte 0x01, 0xe1, 0xda, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x45, 0x08, 0xb2, 0xdd, 0x45, 0x08, 0x06, 0x08 - .byte 0x01, 0x01, 0x56, 0xdb, 0x45, 0x08, 0x0d, 0xdd, 0x45, 0x08, 0x0b, 0x01, 0x05, 0x13, 0x01, 0x05, 0x0d, 0xdd, 0x45, 0x08, 0x02, 0xc6, 0xd5, 0xe9, 0xda, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xd6, 0xd9 - .byte 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0xfe, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0x00 - .byte 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc, 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21 - .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4 - .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13 - .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02, 0xd0, 0xbb, 0xce - .byte 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xab, 0x00, 0xcd, 0xd7, 0xdc, 0xf5, 0xe2, 0xb8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xee, 0xe9, 0x00, 0xe7, 0xd9, 0xdc, 0xd9, 0xe2, 0xab, 0xfe, 0xc2, 0xdd - .byte 0xd9, 0xe6, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xbc, 0xe6, 0xdd, 0xd9, 0xda, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0xb8, 0x00, 0xfd, 0x01, 0xad, 0xff, 0xd0 - .byte 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xd6, 0xdd, 0xe2, 0x00, 0xe1, 0xdd, 0xe6, 0x00, 0xe2, 0xdd, 0xd7, 0xdc, 0xe8, 0x00, 0xe7, 0xdd, 0xd7, 0xdc, 0xd9, 0xe6, 0xb8, 0x00 - .byte 0xd9, 0xe7, 0xfe, 0xdf, 0xf5, 0xe2, 0xe2, 0xe8, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xce, 0xc3, 0xbd, 0xc5, 0xbf, 0xce, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xc0, 0xf4 - .byte 0xdc, 0xe6, 0xd9, 0x00, 0xe7, 0xd9, 0xdd, 0xe2, 0xad, 0xfb, 0xbe, 0xe9, 0x00, 0xe7, 0xe3, 0xe0, 0xe0, 0xe8, 0xd9, 0xe7, 0xe8, 0x00, 0xe2, 0xd5, 0xd7, 0xdc, 0x00, 0xcd, 0xbf, 0xbf, 0xc1, 0xcc - .byte 0xbb, 0xcd, 0xcf, 0xc6, 0xbc, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0x00, 0xdb, 0xd9, 0xdc, 0xd9, 0xe2, 0xfe, 0xe9, 0xe2, 0xd8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xd8, 0xe3, 0xe6, 0xe8, 0x00, 0xdb - .byte 0xd9, 0xe2, 0xd5, 0xe9, 0xd9, 0xe6, 0x00, 0xd9, 0xe6, 0xdf, 0xe9, 0xe2, 0xd8, 0xdd, 0xdb, 0xd9, 0xe2, 0xad, 0xff, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xb8, 0x00, 0xd8, 0xdd - .byte 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae, 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe7, 0x00, 0xbc, 0xbf, 0xcf, 0xce, 0xbf, 0xc6, 0xcd, 0x00, 0xdd, 0xe7 - .byte 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xfb, 0xc6, 0xd5, 0xdb, 0xd9, 0xe6, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0xdd, 0xdb, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe6, 0x00, 0xbc, 0xd5, 0xe7 - .byte 0xdd, 0xe7, 0xae, 0xc3, 0xe8, 0xd9, 0xe1, 0xe7, 0x00, 0xdd, 0xe2, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe1, 0x00, 0xca, 0xbd, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xdf, 0xe3, 0xe1, 0xe1, 0x00, 0xd8 - .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff, 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 - .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21 - .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e - .byte 0x03, 0x02, 0xbe, 0xdd, 0xd9, 0xe7, 0xd9, 0xe7, 0x00, 0xc1, 0xbf, 0xcd, 0xbd, 0xc2, 0xbf, 0xc2, 0xbf, 0xc8, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xe2, 0xe9, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xe1 - .byte 0xd5, 0xe0, 0xfe, 0xdb, 0xd9, 0xe7, 0xe4, 0xdd, 0xd9, 0xe0, 0xe8, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff, 0xbe, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae - .byte 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xff - -gUnknown_Debug_845DDB2:: - .byte 0x01, 0xb2, 0xdd, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x45, 0x08, 0x06, 0xe3, 0x45, 0x08, 0x07, 0xd6 - .byte 0xdd, 0x45, 0x08, 0x02 - -gUnknown_Debug_845DDD6:: - .space 0x530 - -gUnknown_Debug_845E306:: - .byte 0x01, 0x06, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0x29, 0xe3, 0x45, 0x08, 0x03, 0x02, 0x4f, 0xe3, 0x45, 0x08, 0x03, 0x03, 0x87, 0xe3 - .byte 0x45, 0x08, 0x02, 0xb8, 0x29, 0xe3, 0x45, 0x08, 0x43, 0x21, 0x0d, 0x80, 0x06, 0x00, 0xbb, 0x01, 0x4c, 0xe3, 0x45, 0x08, 0x79, 0x45, 0x01, 0x0f, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x0e, 0x03, 0x02, 0xbf, 0xdd, 0xe2, 0x00, 0xca, 0xc9, 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd5 - .byte 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0xfe, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0xad - .byte 0xff, 0xbe, 0xd5, 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0x00, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xe7 - .byte 0xe8, 0xf4, 0xe2, 0xd8, 0xdd, 0xdb, 0xad, 0xfe, 0xbf, 0xe7, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xeb, 0xd9, 0xdd, 0xe8, 0xd9, 0xe6, 0xd9, 0xe7, 0x00, 0xca, 0xc9 - .byte 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0xfa, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff - -gUnknown_Debug_845E3E0:: - .byte 0x01, 0xe0, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0x45, 0x08, 0x02, 0xe4, 0x45, 0x08, 0x08, 0x00 - .byte 0x01, 0x02 - -gUnknown_Debug_845E402:: - .byte 0x01, 0x02, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe4, 0x45, 0x08, 0x22, 0xe4, 0x45, 0x08, 0x09, 0x02 - -gUnknown_Debug_845E422:: - .byte 0x01, 0x22, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0x45, 0x08, 0x43, 0xe4, 0x45, 0x08, 0x0a, 0x01 - .byte 0x02 - -gUnknown_Debug_845E443:: - .byte 0x01, 0x43, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0xe4, 0x45, 0x08, 0xef, 0xe4, 0x45, 0x08, 0x0c, 0x67 - .byte 0xe4, 0x45, 0x08, 0x02 - -gUnknown_Debug_845E467:: - .space 100 - -gUnknown_Debug_845E4CB:: - .space 36 - -gUnknown_Debug_845E4EF:: - .byte 0x01, 0xef, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x06, 0xe5, 0x45, 0x08, 0x02 - -gUnknown_Debug_845E506:: - .space 256 - -gUnknown_Debug_845E606:: - .byte 0x01, 0x06, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x02 - -gUnknown_Debug_845E619:: - .byte 0x01, 0x19, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x37, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x06, 0x08 - .byte 0x01, 0x01, 0x83, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x03, 0xff, 0x4c, 0xe6, 0x45, 0x08, 0x04, 0x02, 0x02, 0xbc, 0xd9, 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9 - .byte 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0x00, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0xfe, 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc - .byte 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x83, 0xe6, 0x45, 0x08, 0x47, 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x4a - .byte 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xc0, 0xe6, 0x45, 0x08, 0x66, 0x6d, 0x1a, 0x00, 0x80, 0xa9, 0x00, 0x1a, 0x01, 0x80 - .byte 0x01, 0x00, 0x09, 0x00, 0x6c, 0x0d, 0x0c, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc2, 0xdd, 0xb8, 0x00, 0xfd, 0x01, 0xab, 0xfb, 0xc3, 0xd7, 0xdc, 0x00, 0xdc, 0xd5, 0xd6, 0xd9, 0x00, 0xdb - .byte 0xd9, 0xe6, 0xd5, 0xd8, 0xd9, 0x00, 0xd8, 0xdd, 0xd9, 0xe7, 0xd9, 0x00, 0xe7, 0xd9, 0xe0, 0xe8, 0xd9, 0xe2, 0xd9, 0x00, 0xbc, 0xbf, 0xbf, 0xcc, 0xbf, 0xfe, 0xd9, 0xe6, 0xdc, 0xd5, 0xe0, 0xe8 - .byte 0xd9, 0xe2, 0xad, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xe7, 0xd7, 0xdc, 0xd9, 0xe2, 0xdf, 0xd9, 0x00, 0xe7, 0xdd, 0xd9, 0x00, 0xd8, 0xdd, 0xe6, 0xab, 0xff - -gUnknown_Debug_845E712:: - .byte 0x01, 0x12, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe7, 0x45, 0x08, 0x97, 0xe7, 0x45, 0x08, 0x05, 0x36 - .byte 0xe7, 0x45, 0x08, 0x02, 0xb8, 0x36, 0xe7, 0x45, 0x08, 0x81, 0x00, 0x78, 0x00, 0x4b, 0x78, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x55, 0xe7, 0x45, 0x08, 0xbe, 0x5d, 0xe7, 0x45, 0x08 - .byte 0x0e, 0x02, 0x02, 0xbe, 0x71, 0xe7, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xfd, 0x02, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xf6, 0xd6, 0xd9, 0xe6, 0xdb, 0xd9, 0xd6, 0xd9, 0xe2, 0xad, 0xff, 0xbf - .byte 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xca, 0xe0, 0xd5, 0xe8, 0xee, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xfd, 0x02, 0xfe, 0xea, 0xe3, 0xe6, 0xdc, 0xd5, 0xe2, 0xd8, 0xd9 - .byte 0xe2, 0xad, 0xad, 0xad, 0xff - -gUnknown_Debug_845E797:: - .byte 0x01, 0x97, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe7, 0x45, 0x08, 0xbb, 0xe7, 0x45, 0x08 - -gUnknown_Debug_845E7B5:: - .byte 0x0b, 0x01, 0x03, 0x0d, 0x00, 0x02 - -gUnknown_Debug_845E7BB:: - .byte 0x00 - -.endif - diff --git a/data/debug_mystery_event_scripts.s b/data/debug_mystery_event_scripts.s new file mode 100644 index 000000000..37d7585b2 --- /dev/null +++ b/data/debug_mystery_event_scripts.s @@ -0,0 +1,311 @@ +.if DEBUG +#include "constants/decorations.h" +#include "constants/flags.h" +#include "constants/game_stat.h" +#include "constants/items.h" +#include "constants/map_objects.h" +#include "constants/maps.h" +#include "constants/moves.h" +#include "constants/opponents.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/weather.h" +#include "constants/vars.h" + .include "include/macros.inc" + .include "constants/constants.inc" + .include "include/macros/event.inc" + + .section .rodata + +gUnknown_Debug_845DAE1:: + me_checkcompat gUnknown_Debug_845DAE1, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845DAFF, _0845DAFFEnd +_0845DAFF: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _845DB56End + me_setrecordmixinggift 0x1, 0x5, ITEM_EON_TICKET + me_runscript _0845DD0D + me_end + +_0845DB16: + .string "Lauf und besuche deinen Vater in der\n" + .string "ARENA von BLÜTENBURG CITY.$" + +_845DB56: + setvaddress _845DB56 + checkitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DBB4 + lock + faceplayer + vmessage _0845DBBE + waitmessage + waitbuttonpress + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DBB5 + setorcopyvar VAR_SPECIAL_0, ITEM_EON_TICKET + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + setflag FLAG_SYS_HAS_EON_TICKET + vmessage _0845DC00 + waitmessage + waitbuttonpress + release +_0845DBB4: + killscript +_0845DBB5: + vmessage _0845DC94 + waitmessage + waitbuttonpress + release + end + +_0845DBBE: + .string "VATER: {PLAYER}! Schön, dich zu sehen!\n" + .string "Hier ist ein Brief für dich, {PLAYER}.$" + +_0845DC00: + .string "VATER: Ich bin mir nicht sicher, es\n" + .string "könnte ein TICKET für eine Fähre sein.\p" + .string "Du solltest nach SEEGRASULB CITY gehen\n" + .string "und dich dort genauer erkundigen.$" + +_0845DC94: + .string "VATER: {PLAYER}, die BASIS-TASCHE\n" + .string "deines BEUTELS ist voll.\p" + .string "Lagere einige deiner Basis-Items in\n" + .string "deinem PC und komm dann wieder.$" +_845DB56End: + .size _845DB56, _845DB56End - _845DB56 + +_0845DD0D: + setvaddress _0845DD0D + checkitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DD53 + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DD5B + vloadptr _0845DB16 + setmysteryeventstatus 0x2 + end + +_0845DD53: + vloadptr _0845DD63 + setmysteryeventstatus 0x3 + end + +_0845DD5B: + vloadptr _0845DD95 + setmysteryeventstatus 0x3 + end + +_0845DD63: + .string "Dieses GESCHEHEN kann nur einmal\n" + .string "gespielt werden.$" + +_0845DD95: + .string "Deine BASIS-TASCHE ist voll.$" +_0845DAFFEnd: + .size _0845DAFF, _0845DAFFEnd - _0845DAFF +gUnknown_Debug_845DAE1End:: + +gUnknown_Debug_845DDB2:: + me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 + me_checksum 0x0, _0845DDD0, _0845DDD0End +_0845DDD0: + me_setenigmaberry gUnknown_Debug_845DDD6 + me_end + +gUnknown_Debug_845DDD6:: + .space 0x530 +_0845DDD0End: + .size _0845DDD0, _0845DDD0End - _0845DDD0 +gUnknown_Debug_845DDB2End:: + +gUnknown_Debug_845E306:: + me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 + me_runscript _0845E329 + me_setmsg 0x2, _0845E34F + me_setmsg 0x3, _0845E387 + me_end + +_0845E329: + setvaddress _0845E329 + getpartysize + compare RESULT, 0x6 + vgoto_if 0x1, _0845E34C + givemon SPECIES_LUVDISC, 15, ITEM_BERRY_JUICE, 0x0, 0x0, 0x0 + setmysteryeventstatus 0x2 + end + +_0845E34C: + setmysteryeventstatus 0x3 + end + +_0845E34F: + .string "Ein POKéMON wurde in das Team des\n" + .string "Spielers aufgenommen.$" + +_0845E387: + .string "Das Team des Spielers ist vollständig.\n" + .string "Es kann kein weiteres POKéMON\l" + .string "aufgenommen werden.$" + +gUnknown_Debug_845E3E0:: + me_checkcompat gUnknown_Debug_845E3E0, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E3FE, _0845E3FEEnd +_0845E3FE: + me_giveribbon 0x0, 0x1 + me_end +_0845E3FEEnd: + .size _0845E3FE, _0845E3FEEnd - _0845E3FE +gUnknown_Debug_845E3E0End:: + +gUnknown_Debug_845E402:: + me_checkcompat gUnknown_Debug_845E402, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E420, _0845E420End +_0845E420: + me_givenationaldex + me_end +_0845E420End: + .size _0845E420, _0845E420End - _0845E420 +gUnknown_Debug_845E402End:: + +gUnknown_Debug_845E422:: + me_checkcompat gUnknown_Debug_845E422, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E440, _0845E440End +_0845E440: + me_addrareword 0x1 + me_end +_0845E440End: + .size _0845E440, _0845E440End - _0845E440 +gUnknown_Debug_845E422End:: + +gUnknown_Debug_845E443:: + me_checkcompat gUnknown_Debug_845E443, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E461, _0845E461End +_0845E461: + me_givepokemon gUnknown_Debug_845E467 + me_end + +gUnknown_Debug_845E467:: + .space 100 + +gUnknown_Debug_845E4CB:: + .space 36 +_0845E461End: + .size _0845E461, _0845E461End - _0845E461 +gUnknown_Debug_845E443End:: + +gUnknown_Debug_845E4EF:: + me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 + me_addtrainer gUnknown_Debug_845E506 + me_end + +gUnknown_Debug_845E506:: + .space 256 +gUnknown_Debug_845E4EFEnd:: + +gUnknown_Debug_845E606:: + me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 + me_enableresetrtc + me_end +gUnknown_Debug_845E606End:: + +gUnknown_Debug_845E619:: + me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 + me_checksum 0x0, _0845E637, _0845E637End +_0845E637: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, _0845E683End + me_setmsg 0xff, _0845E64C + me_setstatus 0x2 + me_end + +_0845E64C: + .string "Besuche deinen Vater in der ARENA\n" + .string "von BLÜTENBURG CITY.$" + +_0845E683: + setvaddress _0845E683 + checkitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + checkpcitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + lock + faceplayer + vmessage _0845E6C0 + waitmessage + waitbuttonpress + setorcopyvar VAR_SPECIAL_0, ITEM_GANLON_BERRY + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + release + killscript +_0845E6BF: + gotoram + +_0845E6C0: + .string "VATER: Hi, {PLAYER}!\p" + .string "Ich habe gerade diese seltene BEERE\n" + .string "erhalten. Ich schenke sie dir!$" +_0845E637End: + .size _0845E637, _0845E637End - _0845E637 +_0845E683End: + .size _0845E683, _0845E683End - _0845E683 +gUnknown_Debug_845E619End:: + +gUnknown_Debug_845E712:: + me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E730, _0845E730End +_0845E730: + me_runscript _0845E736 + me_end + +_0845E736: + setvaddress _0845E736 + bufferdecorationname 0x0, DECOR_REGISTEEL_DOLL + givedecoration DECOR_REGISTEEL_DOLL + compare RESULT, 0x0 + vgoto_if 0x1, _0845E755 + vloadptr _0845E75D + setmysteryeventstatus 0x2 + end + +_0845E755: + vloadptr _0845E771 + setmysteryeventstatus 0x3 + end + +_0845E75D: + .string "{STR_VAR_1} wurde übergeben.$" +_0845E771: + .string "Es ist kein Platz für {STR_VAR_1}\n" + .string "vorhanden...$" +_0845E730End: + .size _0845E730, _0845E730End - _0845E730 +gUnknown_Debug_845E712End:: + +gUnknown_Debug_845E797:: + me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End +gUnknown_Debug_845E7B5:: + me_setrecordmixinggift 0x1, 0x3, ITEM_POTION + me_end +gUnknown_Debug_845E7B5End: + .size gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End - gUnknown_Debug_845E7B5 +gUnknown_Debug_845E797End:: + +.endif diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc index 5dc217585..d32107396 100644 --- a/data/scripts/maps/LilycoveCity_Harbor.inc +++ b/data/scripts/maps/LilycoveCity_Harbor.inc @@ -106,7 +106,7 @@ LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE goto_if_unset FLAG_SYS_GAME_CLEAR, LilycoveCity_Harbor_EventScript_1598BA - goto_if_set FLAG_ECOUNTERED_LATIAS_OR_LATIOS, LilycoveCity_Harbor_EventScript_1598BA + goto_if_set FLAG_ENCOUNTERED_LATIAS_OR_LATIOS, LilycoveCity_Harbor_EventScript_1598BA goto_if_unset FLAG_SYS_HAS_EON_TICKET, LilycoveCity_Harbor_EventScript_1598BA msgbox LilycoveCity_Harbor_Text_1C50F2, 4 closemessage diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc index 5878a43d5..1a537cfb0 100644 --- a/data/scripts/maps/SouthernIsland_Interior.inc +++ b/data/scripts/maps/SouthernIsland_Interior.inc @@ -43,9 +43,9 @@ SouthernIsland_Interior_EventScript_160B9B:: @ 8160B9B end SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7 - goto_if_set FLAG_ECOUNTERED_LATIAS_OR_LATIOS, SouthernIsland_Interior_EventScript_160C08 + goto_if_set FLAG_ENCOUNTERED_LATIAS_OR_LATIOS, SouthernIsland_Interior_EventScript_160C08 goto_if_unset FLAG_SYS_HAS_EON_TICKET, SouthernIsland_Interior_EventScript_160C08 - setflag FLAG_ECOUNTERED_LATIAS_OR_LATIOS + setflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS special SpawnCameraDummy applymovement 127, SouthernIsland_Interior_Movement_160C12 waitmovement 0 diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s deleted file mode 100644 index dc722bf33..000000000 --- a/data/start_menu_debug.s +++ /dev/null @@ -1,495 +0,0 @@ - .if DEBUG - -#include "constants/moves.h" - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -Str_839BD90:: @ 0x839BD90 - .string "ジュンイチ$" - -Str_839BD96:: @ 0x839BD96 - .string "ダイゴロウ$" - -Str_839BD9C:: @ 0x839BD9C - .string "テツジ$" - -Str_839BDA0:: @ 0x839BDA0 - .string "バレンシア$" - -Str_839BDA6:: @ 0x839BDA6 - .string "ハルコマチ$" - -Str_839BDAC:: @ 0x839BDAC - .string "RAYMOND$" - -Str_839BDB4:: @ 0x839BDB4 - .string "TIFFANY$" - -Str_839BDBC:: @ 0x839BDBC - .string "くまxちえ$" - - .align 2 -gUnknown_Debug_839BDC4:: @ 0x839BDC4 - .4byte Str_839BD90, 0x0 - .4byte Str_839BD96, 0x0 - .4byte Str_839BDA0, 0x1 - .4byte Str_839BDA6, 0x1 - .4byte Str_839BDAC, 0x80 - .4byte Str_839BDB4, 0x81 - .4byte Str_839BD9C, 0x0 - .4byte Str_839BDBC, 0x1 - -Str_839BE04:: @ 0x839BE04 - .string "ID$" - -Str_839BE07:: @ 0x839BE07 - .string "X$" - -Str_839BE09:: @ 0x839BE09 - .string " Y$" - -Str_839BE0C:: @ 0x839BE0C - .string " H$" - -Str_839BE0F:: @ 0x839BE0F - .string "HP$" - -Str_839BE12:: @ 0x839BE12 - .string "PAR$" - -Str_839BE16:: @ 0x839BE16 - .string "SLP$" - -Str_839BE1A:: @ 0x839BE1A - .string "PSN$" - -Str_839BE1E:: @ 0x839BE1E - .string "ウマイ$" - - .align 2 -gUnknown_Debug_839BE24:: @ 0x839BE24 - .4byte Str_839BE0F, DebugMenu_8077434+1 - .4byte Str_839BE12, DebugMenu_8077434+1 - .4byte Str_839BE16, DebugMenu_8077434+1 - .4byte Str_839BE1A, DebugMenu_8077434+1 - .4byte Str_839BE1E, DebugMenu_8077434+1 - -Str_839BE4C:: @ 0x839BE4C - .string "OFF$" - -Str_839BE50:: @ 0x839BE50 - .string "ON$" - -Str_839BE53:: @ 0x839BE53 - .string "BG0\n" - .string "BG1\n" - .string "BG2\n" - .string "BG3\n" - .string "$" - -Str_839BE64:: @ 0x839BE64 - .string "ON$" - -Str_839BE67:: @ 0x839BE67 - .string "OFF$" - -Str_839BE6B:: @ 0x839BE6B - .string "さいせんかのうトレーナー:{STR_VAR_1}\n" - .string "さいせんじょうたいトレーナー:{STR_VAR_2}$" - -Str_839BE8D:: @ 0x839BE8D - .string "いる$" - -Str_839BE90:: @ 0x839BE90 - .string "いない$" - -Str_839BE94:: @ 0x839BE94 - .string "Max num of steps$" - -Str_839BEA5:: @ 0x839BEA5 - .string "Clear num of steps$" - -Str_839BEB8:: @ 0x839BEB8 - .string "See trainers$" - -Str_839BEC5:: @ 0x839BEC5 - .string "Flag all clear$" - -Str_839BED4:: @ 0x839BED4 - .string "Flag all set$" - - .align 2 -gUnknown_Debug_839BEE4:: @ 0x839BEE4 - .4byte Str_839BEB8, DebugMenu_8077974+1 - .4byte Str_839BE94, DebugMenu_8077A20+1 - .4byte Str_839BEA5, DebugMenu_8077A40+1 - .4byte Str_839BED4, DebugMenu_8077934+1 - .4byte Str_839BEC5, DebugMenu_8077954+1 - -Str_839BF0C:: @ 0x839BF0C - .string "のこり {STR_VAR_1}ほ$" - -Str_839BF14:: @ 0x839BF14 - .string "{STR_VAR_1}\n" - .string "のこり {STR_VAR_2}ほ$" - -Str_839BF1F:: @ 0x839BF1F - .string "めのまえには\n" - .string "キューブが ありません!$" - -Str_839BF33:: @ 0x839BF33 - .string "ほすうをのこり1にする$" - -Str_839BF3F:: @ 0x839BF3F - .string "ボールをのこり1にする$" - -Str_839BF4B:: @ 0x839BF4B - .string "キューブおきば$" - -Str_839BF53:: @ 0x839BF53 - .string "ボールをのこり30に$" - -Str_839BF5E:: @ 0x839BF5E - .string "ほすうをのこり500に$" - - .align 2 -gUnknown_Debug_839BF6C:: @ 0x839BF6C - .4byte Str_839BF4B, DebugMenu_8077B00+1 - .4byte Str_839BF5E, DebugMenu_8077ACC+1 - .4byte Str_839BF33, DebugMenu_8077AE8+1 - .4byte Str_839BF53, DebugMenu_8077A9C+1 - .4byte Str_839BF3F, DebugMenu_8077AB4+1 - -gUnknown_Debug_839BF94:: @ 0x839BF94 - .4byte gMoveNames + 13 * MOVE_CUT, DebugMenu_8077BB4+1 - .4byte gMoveNames + 13 * MOVE_FLASH, DebugMenu_8077BC0+1 - .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, DebugMenu_8077BCC+1 - .4byte gMoveNames + 13 * MOVE_STRENGTH, DebugMenu_8077BD8+1 - .4byte gMoveNames + 13 * MOVE_SURF, debug_sub_80B0770+1 - .4byte gMoveNames + 13 * MOVE_FLY, debug_sub_80B07B0+1 - .4byte gMoveNames + 13 * MOVE_WATERFALL, DebugMenu_8077BE4+1 - .4byte gMoveNames + 13 * MOVE_DIVE, debug_sub_80B0800+1 - .4byte gMoveNames + 13 * MOVE_SECRET_POWER, DebugMenu_8077BF4+1 - -Str_839BFDC:: @ 0x839BFDC - .string " じかん ふん びょう$" - -gUnknown_Debug_839BFE8:: - .byte 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00 - -Str_839C008: @ 0x839C008 -gDebug0x839C008:: - .string "Which item?$" - -Str_839C014:: @ 0x839C014 - .string "How many?$" - -Str_839C01E:: @ 0x839C01E - .string "にがおえ ばんごう\n" - .string "ポケモンナンバー\n" - .string "ポケモンめい\n" - .string "ブリーダーめい\n" - .string "しゅるい\n" - .string "こせいらんすう$" - -Str_839C04D:: @ 0x839C04D - .string "データなし$" - -Str_839C053:: @ 0x839C053 - .string "Miracle Island emerged\n" - .string "Random numbers:{STR_VAR_1}$" - -Str_839C07C:: @ 0x839C07C - .string "{STR_VAR_1}:{STR_VAR_2}\n" - .string "{STR_VAR_3}$" - -Str_839C085:: @ 0x839C085 - .string "みしよう データ$" - -Str_839C08E:: @ 0x839C08E - .string "Confirmation$" - -Str_839C09B:: @ 0x839C09B - .string "Max-1 set$" - -Str_839C0A5:: @ 0x839C0A5 - .string "Zero clear$" - -Str_839C0B0:: @ 0x839C0B0 - .string "レポート$" - -Str_839C0B5:: @ 0x839C0B5 - .string "クリア じかん$" - -Str_839C0BD:: @ 0x839C0BD - .string "りゅうこう さくせい$" - -Str_839C0C8:: @ 0x839C0C8 - .string "きのみを うえたかいすう$" - -Str_839C0D5:: @ 0x839C0D5 - .string "じてんしゃこうかん$" - -Str_839C0DF:: @ 0x839C0DF - .string "ほすう$" - -Str_839C0E3:: @ 0x839C0E3 - .string "インタビュー$" - -Str_839C0EA:: @ 0x839C0EA - .string "バトル$" - -Str_839C0EE:: @ 0x839C0EE - .string "やせいバトル$" - -Str_839C0F5:: @ 0x839C0F5 - .string "トレーナーバトル$" - -Str_839C0FE:: @ 0x839C0FE - .string "でんどういり$" - -Str_839C105:: @ 0x839C105 - .string "ポケモンほかく$" - -Str_839C10D:: @ 0x839C10D - .string "つった かいすう$" - -Str_839C116:: @ 0x839C116 - .string "タマゴかえった$" - -Str_839C11E:: @ 0x839C11E - .string "しんかした$" - -Str_839C124:: @ 0x839C124 - .string "ポケセン かいふく$" - -Str_839C12E:: @ 0x839C12E - .string "じたく かいふく$" - -Str_839C137:: @ 0x839C137 - .string "サファリ りよう$" - -Str_839C140:: @ 0x839C140 - .string "ひでん:いあいぎり$" - -Str_839C14A:: @ 0x839C14A - .string "ひでん:いわくだき$" - -Str_839C154:: @ 0x839C154 - .string "きち ひっこし$" - -Str_839C15C:: @ 0x839C15C - .string "つうしんこうかん$" - -Str_839C165:: @ 0x839C165 - .string "つうしんたいせん$" - -Str_839C16E:: @ 0x839C16E - .string "つうしん かち$" - -Str_839C176:: @ 0x839C176 - .string "つうしん まけ$" - -Str_839C17E:: @ 0x839C17E - .string "つうしん ひきわけ$" - -Str_839C188:: @ 0x839C188 - .string "わざ:はねる$" - -Str_839C18F:: @ 0x839C18F - .string "わざ:わるあがき$" - -Str_839C198:: @ 0x839C198 - .string "スロットおおあたりかいすう$" - -Str_839C1A6:: @ 0x839C1A6 - .string "ルーレット れんしょう$" - -Str_839C1B2:: @ 0x839C1B2 - .string "バトルタワー$" - -Str_839C1B9:: @ 0x839C1B9 - .string "バトルタワーかち$" - -Str_839C1C2:: @ 0x839C1C2 - .string "バトルタワーれんしょう$" - -Str_839C1CE:: @ 0x839C1CE - .string "ポロックさくせい$" - -Str_839C1D7:: @ 0x839C1D7 - .string "つうしんでポロックつくった$" - -Str_839C1E5:: @ 0x839C1E5 - .string "つうしんコンテストかち$" - -Str_839C1F1:: @ 0x839C1F1 - .string "CPUコンテストさんか$" - -Str_839C1FD:: @ 0x839C1FD - .string "CPUコンテストかち$" - -Str_839C208:: @ 0x839C208 - .string "かいもの$" - -Str_839C20D:: @ 0x839C20D - .string "ダウジングマシン$" - -Str_839C216:: @ 0x839C216 - .string "あめふり$" - -Str_839C21B:: @ 0x839C21B - .string "ずかんをみた$" - -Str_839C222:: @ 0x839C222 - .string "リボン もらった$" - -Str_839C22B:: @ 0x839C22B - .string "だんさ とびおり$" - -Str_839C234:: @ 0x839C234 - .string "TVを みた$" - -Str_839C23B:: @ 0x839C23B - .string "とけいを みた$" - -Str_839C243:: @ 0x839C243 - .string "くじが あたった$" - -Str_839C24C:: @ 0x839C24C - .string "ポケモンあずけた$" - -Str_839C255:: @ 0x839C255 - .string "ロープウェイりよう$" - -Str_839C25F:: @ 0x839C25F - .string "おんせん はいった$" - - .align 2 -gUnknown_Debug_839C26C:: @ 0x839C26C - .4byte 0xFFFFFF, Str_839C0B0 - .4byte 0x3E73B3B, Str_839C0B5 - .4byte 0xFFFFFF, Str_839C0BD - .4byte 0xFFFFFF, Str_839C0C8 - .4byte 0xFFFFFF, Str_839C0D5 - .4byte 0xFFFFFF, Str_839C0DF - .4byte 0xFFFFFF, Str_839C0E3 - .4byte 0xFFFFFF, Str_839C0EA - .4byte 0xFFFFFF, Str_839C0EE - .4byte 0xFFFFFF, Str_839C0F5 - .4byte 0x3E7, Str_839C0FE - .4byte 0xFFFFFF, Str_839C105 - .4byte 0xFFFFFF, Str_839C10D - .4byte 0xFFFFFF, Str_839C116 - .4byte 0xFFFFFF, Str_839C11E - .4byte 0xFFFFFF, Str_839C124 - .4byte 0xFFFFFF, Str_839C12E - .4byte 0xFFFFFF, Str_839C137 - .4byte 0xFFFFFF, Str_839C140 - .4byte 0xFFFFFF, Str_839C14A - .4byte 0xFFFFFF, Str_839C154 - .4byte 0xFFFFFF, Str_839C15C - .4byte 0xFFFFFF, Str_839C165 - .4byte 0x270F, Str_839C16E - .4byte 0x270F, Str_839C176 - .4byte 0x270F, Str_839C17E - .4byte 0xFFFFFF, Str_839C188 - .4byte 0xFFFFFF, Str_839C18F - .4byte 0xFFFFFF, Str_839C198 - .4byte 0xFFFFFF, Str_839C1A6 - .4byte 0xFFFFFF, Str_839C1B2 - .4byte 0x0, Str_839C1B9 - .4byte 0x0, Str_839C1C2 - .4byte 0xFFFFFF, Str_839C1CE - .4byte 0xFFFFFF, Str_839C1D7 - .4byte 0xFFFFFF, Str_839C1E5 - .4byte 0xFFFFFF, Str_839C1F1 - .4byte 0xFFFFFF, Str_839C1FD - .4byte 0xFFFFFF, Str_839C208 - .4byte 0xFFFFFF, Str_839C20D - .4byte 0xFFFFFF, Str_839C216 - .4byte 0xFFFFFF, Str_839C21B - .4byte 0xFFFFFF, Str_839C222 - .4byte 0xFFFFFF, Str_839C22B - .4byte 0xFFFFFF, Str_839C234 - .4byte 0xFFFFFF, Str_839C23B - .4byte 0xFFFFFF, Str_839C243 - .4byte 0xFFFFFF, Str_839C24C - .4byte 0xFFFFFF, Str_839C255 - .4byte 0xFFFFFF, Str_839C25F - -gUnknown_Debug_839C3FC:: @ 0x839C3FC - .4byte Str_839C08E, DebugMenu_8078774+1 - .4byte Str_839C09B, DebugMenu_8078788+1 - .4byte Str_839C0A5, DebugMenu_807879C+1 - -Str_839C414:: @ 0x839C414 - .string "ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" - .string "CODE:{STR_VAR_2}$" - -Str_839C42E:: @ 0x839C42E - .string "レベル ステージ$" - -Str_839C438:: @ 0x839C438 - .string "ポロック グループ{STR_VAR_1}$" - -gUnknown_Debug_839C444:: - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -Str_839C574:: @ 0x839C574 -gDebug0x839C574:: - .string "write to flash$" - -Str_839C583:: @ 0x839C583 - .string "read from flash$" - - .align 2 -gUnknown_Debug_839C594:: @ 0x839C594 - .4byte gDebug0x839C574, DebugMenu_8078C80+1 - .4byte Str_839C583, DebugMenu_8078D30+1 - -Str_839C5A4:: @ 0x839C5A4 - .string "Press A, begin to write\n" - .string "Press B, cancel$" - -Str_839C5CC:: @ 0x839C5CC - .string "かきこみ せいこう$" - -Str_839C5D6:: @ 0x839C5D6 - .string "よみこみせいこう$" - -Str_839C5DF:: @ 0x839C5DF - .string "かきこみ しっぱい$" - -Str_839C5E9:: @ 0x839C5E9 - .string "よみこみ しっぱい$" - - .align 1 -gUnknown_Debug_839C5F4:: - .byte 0x00, 0x00, 0xe7, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x09, 0x03, 0x00, 0x00 - -Str_839C60C:: @ 0x839C60C -gDebug0x839C60C:: - .string "Set FLASH ERR$" - -Str_839C61A:: @ 0x839C61A - .string "abcde; abcde: ABCDE; ABCDE:\p" - .string "Tableaux des verbes du 2{SUPER_E} groupe.\p" - .string "La1{SUPER_RE} chose à apprendre c’est de lire.\p" - .string "Tableaux des verbes du 1{SUPER_ER} groupe.\p" - .string "“あいうえおかきくけコさしすせそたちつてとな”\n" - .string "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" - .string "をんゃゅょアイウエオカキクケサシスルレロワ,$" - - .endif diff --git a/data/unk_debug_menu_3.s b/data/unk_debug_menu_3.s deleted file mode 100644 index 100821c9b..000000000 --- a/data/unk_debug_menu_3.s +++ /dev/null @@ -1,105 +0,0 @@ - .section .rodata - - .align 2 - -Str_842E238:: @ 0x842E238 - .string "タマゴ$" - -.if DEBUG - -Str_842E23C:: @ 0x842E23C - .string "ガイブ$" - -Str_842E240:: @ 0x842E240 - .string "ENGLISH$" - -Str_842E248:: @ 0x842E248 - .string "TOURNAMENT$" - -Str_842E253:: @ 0x842E253 - .string " そら カードイー$" - -Str_842E25E:: @ 0x842E25E - .string "ポケコッコ$" - -Str_842E264:: @ 0x842E264 - .string "ticket$" - -Str_842E26B:: @ 0x842E26B - .string "{PKMN}$" - -Str_842E26E:: @ 0x842E26E - .string "wrong {PKMN}$" - -Str_842E277:: @ 0x842E277 - .string "ribbon$" - -Str_842E27E:: @ 0x842E27E - .string "DEX$" - -Str_842E282:: @ 0x842E282 - .string "message$" - -Str_842E28A:: @ 0x842E28A - .string "egg$" - -Str_842E28E:: @ 0x842E28E - .string "RAM seed$" - -Str_842E297:: @ 0x842E297 - .string "trainer$" - -Str_842E29F:: @ 0x842E29F - .string "clock$" - -Str_842E2A5:: @ 0x842E2A5 - .string "item$" - -Str_842E2AA:: @ 0x842E2AA - .string "goods$" - -Str_842E2B0:: @ 0x842E2B0 - .string "potion$" - -Str_842E2B7:: @ 0x842E2B7 - .string "ball$" - -Str_842E2BC:: @ 0x842E2BC - .string "cheri berry$" - -Str_842E2C8:: @ 0x842E2C8 - .string "TM01$" - - .align 2 -gUnknown_Debug_842E2D0:: - .4byte Str_842E264, debug_sub_813C404+1 - .4byte Str_842E26B, debug_sub_813C810+1 - .4byte Str_842E26E, debug_sub_813C888+1 - .4byte Str_842E277, debug_sub_813C430+1 - .4byte Str_842E27E, debug_sub_813C488+1 - .4byte Str_842E282, debug_sub_813C45C+1 - .4byte Str_842E28A, debug_sub_813C740+1 - .4byte Str_842E28E, debug_sub_813C5B4+1 - .4byte Str_842E297, debug_sub_813C93C+1 - .4byte Str_842E29F, debug_sub_813C4B4+1 - .4byte Str_842E2A5, debug_sub_813C4D4+1 - .4byte Str_842E2AA, debug_sub_813C500+1 - .4byte Str_842E2B0, debug_sub_813C580+1 - .4byte Str_842E2B7, debug_sub_813C58C+1 - .4byte Str_842E2BC, debug_sub_813C598+1 - .4byte Str_842E2C8, debug_sub_813C5A4+1 - -gUnknown_Debug_842E350:: - .4byte 0x10 - .4byte gUnknown_Debug_845DAE1 - .4byte gUnknown_Debug_845DDB2 - .4byte gUnknown_Debug_845E306 - .4byte gUnknown_Debug_845E3E0 - .4byte gUnknown_Debug_845E3E0 - .4byte gUnknown_Debug_845E402 - .4byte gUnknown_Debug_845E402 - .4byte gUnknown_Debug_845E422 - .4byte gUnknown_Debug_845E422 - .4byte gUnknown_Debug_845E443 - -.endif diff --git a/include/battle.h b/include/battle.h index af0b48013..02e02ca83 100644 --- a/include/battle.h +++ b/include/battle.h @@ -818,4 +818,6 @@ void BattleStopLowHpSound(void); void SetBankFuncToLinkOpponentBufferRunCommand(void); +void GameClear(void); + #endif // GUARD_BATTLE_H diff --git a/include/berry.h b/include/berry.h index a7ac5ba94..7d8787dea 100644 --- a/include/berry.h +++ b/include/berry.h @@ -23,6 +23,8 @@ enum BERRY_STAGE_SPARKLING = 0xFF, }; +void ClearEnigmaBerries(void); +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam); void SetEnigmaBerry(u8 *src); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); @@ -45,5 +47,7 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); bool8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness); +u8 * DebugOpenBerryInfo(void); #endif // GUARD_BERRY_H diff --git a/include/berry_blender.h b/include/berry_blender.h new file mode 100644 index 000000000..8aaf934e5 --- /dev/null +++ b/include/berry_blender.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_BLENDER_H +#define GUARD_BERRY_BLENDER_H + +void debug_sub_80524BC(void); + +#endif //GUARD_BERRY_BLENDER_H diff --git a/include/cable_club.h b/include/cable_club.h index 2f509c9fc..2fd447691 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -22,6 +22,7 @@ bool32 sub_8083BF4(u8 linkPlayerIndex); void sub_8083C50(u8 taskId); #if DEBUG void debug_sub_808B838(u8); +bool8 debug_sub_8138CC4(void); #endif #endif // GUARD_CABLE_CLUB_H diff --git a/include/constants/flags.h b/include/constants/flags.h index a8067f6ca..562741b93 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -158,7 +158,7 @@ #define FLAG_RECEIVED_GREEN_SCARF 0xCB #define FLAG_RECEIVED_YELLOW_SCARF 0xCC -#define FLAG_ECOUNTERED_LATIAS_OR_LATIOS 0xCE +#define FLAG_ENCOUNTERED_LATIAS_OR_LATIOS 0xCE #define FLAG_RECEIVED_BASEMENT_KEY 0xD0 #define FLAG_RECEIVED_TM24 0xD1 diff --git a/include/debug.h b/include/debug.h index 469560b9e..d090f8bed 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,15 +1,22 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H +struct UnkDebugMenu3Items { + const u8 * text; + size_t (*func)(u8 * dest); +}; + // start_menu_debug void DebugMenu_8077048(void); // matsuda_debug_menu void sub_80AAF30(void); void Crash(const u8 *text); +bool8 InitMatsudaDebugMenu(void); // tomomichi_debug_menu void debug_nullsub_66(void); +bool8 InitTomomichiDebugWindow(void); // sound_check_menu void CB2_StartSoundCheckMenu(void); @@ -17,4 +24,34 @@ void CB2_StartSoundCheckMenu(void); // nakamura_debug_menu void NakaGenderTest(void); +// unk debug menu 3 +extern const u8 gUnknown_Debug_842E350; +extern const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[]; + +// unknown debug menu +int InitSogabeDebugMenu(void); + +// kagaya_debug_menu +bool8 InitKagayaDebugMenu_A(void); +bool8 debug_sub_80B0770(void); +bool8 debug_sub_80B07B0(void); +bool8 debug_sub_80B0800(void); + +// nohara_debug_menu +bool8 InitNoharaDebugMenu(void); + +// watanabe_debug_menu +void InitWatanabeDebugMenu(void); +void InitSizeComparison(void); +void InitBattleForDebug(void); +void InitCreatePokemon(void); +void InitSeePokemonGraphics(void); +void InitSeeTrainers(void); + +// taya_debug_menu +bool8 InitTayaDebugWindow(void); + +// nakamura_debug_menu +bool8 InitNakamuraDebugMenu(void); + #endif // GUARD_DEBUG_H diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h index 0a5261468..6230b822a 100644 --- a/include/fldeff_cut.h +++ b/include/fldeff_cut.h @@ -9,5 +9,6 @@ void sub_80A28F4(s16, s16); void objc_8097BBC(struct Sprite *sprite); void sub_80A2AB8(void); void sub_80A2B00(void); // unknown args +void debug_sub_80AFEE4(void); #endif // GUARD_FLDEFF_CUT_H diff --git a/include/fldeff_flash.h b/include/fldeff_flash.h index 546a7f5dc..3b1fbf812 100644 --- a/include/fldeff_flash.h +++ b/include/fldeff_flash.h @@ -4,5 +4,6 @@ void sub_810CC80(void); u8 sub_810CDB8(u8, u8); u8 fade_type_for_given_maplight_pair(u8, u8); +void debug_sub_8122080(void); #endif // GUARD_FLDEFF_FLASH_H diff --git a/include/fldeff_secretpower.h b/include/fldeff_secretpower.h new file mode 100644 index 000000000..be6bebf55 --- /dev/null +++ b/include/fldeff_secretpower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_SECRETPOWER_H +#define GUARD_FLDEFF_SECRETPOWER_H + +void debug_sub_80D93F4(void); + +#endif //GUARD_FLDEFF_SECRETPOWER_H diff --git a/include/fldeff_strength.h b/include/fldeff_strength.h new file mode 100644 index 000000000..9e324e057 --- /dev/null +++ b/include/fldeff_strength.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_STRENGTH_H +#define GUARD_FLDEFF_STRENGTH_H + +void debug_sub_8130318(void); + +#endif //GUARD_FLDEFF_STRENGTH_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 7fd429d9e..26e0c873f 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -8,6 +8,8 @@ #define IWRAM_DATA __attribute__((section("iwram_data"))) #define EWRAM_DATA __attribute__((section("ewram_data"))) +#define UNUSED __attribute__((unused)) +#define NAKED __attribute__((naked)) #define ALIGNED(n) __attribute__((aligned(n))) diff --git a/include/global.h b/include/global.h index 4437b7feb..b61488545 100644 --- a/include/global.h +++ b/include/global.h @@ -612,8 +612,8 @@ struct ContestWinner /*0x04*/ u32 otId; // otId /*0x08*/ u16 species; // species /*0x0A*/ u8 contestCategory; - /*0x0B*/ u8 nickname[0x16-0xB]; - /*0x16*/ u8 trainerName[0x20-0x16]; + /*0x0B*/ u8 nickname[11]; + /*0x16*/ u8 trainerName[8]; }; // there should be enough flags for all 412 slots diff --git a/include/macros.inc b/include/macros.inc index f34353079..8d58f06de 100644 --- a/include/macros.inc +++ b/include/macros.inc @@ -4,6 +4,7 @@ .include "include/macros/pokemon_data.inc" .include "include/macros/ec.inc" .include "include/macros/map.inc" + .include "include/macros/mystery_event_script.inc" .macro region_map_location x, y, width, height, name .byte \x diff --git a/include/macros/event.inc b/include/macros/event.inc index fcbd3a055..a27e1da76 100644 --- a/include/macros/event.inc +++ b/include/macros/event.inc @@ -1236,7 +1236,6 @@ .macro setvaddress long, word .byte 0xb8 .4byte \long - .2byte \word .endm .macro vgoto pointer diff --git a/include/macros/mystery_event_script.inc b/include/macros/mystery_event_script.inc new file mode 100644 index 000000000..4d5f59d1b --- /dev/null +++ b/include/macros/mystery_event_script.inc @@ -0,0 +1,88 @@ + .macro me_nop + .byte 0 + .endm + + .macro me_checkcompat word, v1, v2, v3, v4 + .byte 1 + .4byte \word + .2byte \v1 + .4byte \v2 + .2byte \v3 + .4byte \v4 + .endm + + .macro me_end + .byte 2 + .endm + + .macro me_setmsg value, str + .byte 3 + .byte \value + .4byte \str + .endm + + .macro me_setstatus value + .byte 4 + .byte \value + .endm + + .macro me_runscript script + .byte 5 + .4byte \script + .endm + + .macro me_initramscript mapId, objId, script, end + .byte 6 + map \mapId + .byte \objId + .4byte \script, \end + .endm + + .macro me_setenigmaberry berry + .byte 7 + .4byte \berry + .endm + + .macro me_giveribbon index, ribbonId + .byte 8 + .byte \index, \ribbonId + .endm + + .macro me_givenationaldex + .byte 9 + .endm + + .macro me_addrareword word + .byte 10 + .byte \word + .endm + + .macro me_setrecordmixinggift unk, quantity, itemId + .byte 11 + .byte \unk, \quantity + .2byte \itemId + .endm + + .macro me_givepokemon data + .byte 12 + .4byte \data + .endm + + .macro me_addtrainer data + .byte 13 + .4byte \data + .endm + + .macro me_enableresetrtc + .byte 14 + .endm + + .macro me_checksum checksum, data, dataEnd + .byte 15 + .4byte \checksum, \data, \dataEnd + .endm + + .macro me_crc crc, data, dataEnd + .byte 16 + .4byte \crc, \data, \dataEnd + .endm diff --git a/include/main.h b/include/main.h index 78403225e..f348e48f8 100644 --- a/include/main.h +++ b/include/main.h @@ -64,4 +64,6 @@ void InitFlashTimer(void); void DoSoftReset(void); void ClearPokemonCrySongs(void); +extern const char BuildDateTime[]; + #endif // GUARD_MAIN_H diff --git a/include/menu.h b/include/menu.h index 523037839..8f7b91346 100644 --- a/include/menu.h +++ b/include/menu.h @@ -59,8 +59,8 @@ s8 Menu_ProcessInputNoWrap(void); void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 Menu_ProcessInputGridLayout(void); u8 Menu_GetColumnXCoord(u8); -void Menu_PrintItems(u8, u8, u8, const struct MenuAction[]); -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); +void Menu_PrintItems(u8, u8, u8, const void *); +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 Menu_ProcessInputNoWrap_(void); diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index ab23a8d00..b86a2eed4 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -4,5 +4,9 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); +#if DEBUG +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2); +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2); +#endif // DEBUG #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/new_game.h b/include/new_game.h index c90606b5a..e50fc2c80 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -14,5 +14,6 @@ void WarpToTruck(void); void ClearSav2(void); void sub_8052E4C(void); void NewGameInitData(void); +void debug_sub_8057508(bool32 arg0); #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index b18027933..f9446c789 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -238,5 +238,6 @@ void SpriteCB_LinkPlayer(struct Sprite *); void sub_805465C(void); void CB2_InitTestMenu(void); +void debug_sub_8058C00(void); #endif // GUARD_ROM4_H diff --git a/include/pokedex.h b/include/pokedex.h index 73877bead..9158a97f0 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -25,4 +25,6 @@ u16 GetHoennPokedexCount(u8); bool8 CompletedHoennPokedex(void); bool16 CompletedNationalPokedex(void); +extern bool8 gUnknown_03005CE8; + #endif // GUARD_POKEDEX_H diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index 57a313d89..313877caa 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -47,5 +47,6 @@ void sub_808B020(void); void sub_808B0C0(u8 taskID); void sub_808B508(u8); void sub_808B564(void); +void debug_sub_80986AC(void); #endif // GUARD_POKEMON_MENU_H diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h index 2de95534a..88abd4945 100644 --- a/include/reset_rtc_screen.h +++ b/include/reset_rtc_screen.h @@ -3,5 +3,7 @@ void CB2_InitResetRtcScreen(void); void debug_sub_806F8F8(void); +void debug_sub_806F9E4(u8 taskId); +void debug_sub_806F99C(void); #endif // GUARD_RESET_RTC_SCREEN_H diff --git a/include/rom6.h b/include/rom6.h index 8c3691624..67fc7a18a 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -5,5 +5,6 @@ extern struct MapPosition gUnknown_0203923C; bool8 npc_before_player_of_type(u8); u8 oei_task_add(void); +void debug_sub_8120968(void); #endif diff --git a/include/safari_zone.h b/include/safari_zone.h index 0bee08a95..dd9ca8088 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -2,6 +2,7 @@ #define GUARD_SAFARI_ZONE_H extern u8 gNumSafariBalls; +extern u16 gSafariZoneStepCounter; bool32 GetSafariZoneFlag(void); void SetSafariZoneFlag(void); @@ -18,6 +19,6 @@ void SafariZoneGetPokeblockNameInFeeder(void); struct Pokeblock *unref_sub_80C8418(void); struct Pokeblock *SafariZoneGetActivePokeblock(void); void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); -bool8 unref_sub_80C853C(void); +bool32 debug_sub_80C853C(void); #endif // GUARD_SAFARI_ZONE_H diff --git a/include/save.h b/include/save.h index 13e07d06a..371bf2c85 100644 --- a/include/save.h +++ b/include/save.h @@ -34,5 +34,6 @@ u8 sub_8125E04(void); u8 sub_8125E2C(void); bool8 sub_8125E6C(void); u8 Save_LoadGameData(u8 a1); +void sub_813B79C(void); #endif // GUARD_SAVE_H diff --git a/include/sound.h b/include/sound.h index 283b2b1f9..d883fd9c7 100644 --- a/include/sound.h +++ b/include/sound.h @@ -1,6 +1,8 @@ #ifndef GUARD_SOUND_H #define GUARD_SOUND_H +extern bool8 gDisableMusic; + void InitMapMusic(void); void MapMusicMain(void); void ResetMapMusic(void); diff --git a/include/start_menu.h b/include/start_menu.h index 5e513b9dc..df4efda6d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -9,5 +9,11 @@ void sub_80712B4(u8 taskId); void sub_8071310(void); void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); +void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); +bool8 debug_sub_8075C30(void); + +#if DEBUG +extern u32 gUnknown_Debug_03004BD0; +#endif // DEBUG #endif // GUARD_STARTER_CHOOSE_H diff --git a/include/util.h b/include/util.h index 676c3bd9b..02c503f75 100644 --- a/include/util.h +++ b/include/util.h @@ -9,7 +9,7 @@ extern const u32 gBitTable[]; u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); -u16 CalcCRC16(u8 *data, int length); +u16 CalcCRC16(const u8 *data, int length); void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 41ca31835..1b8b8dfc7 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -39,6 +39,7 @@ bool8 UpdateRepelCounter(void); u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0); void FeebasSeedRng(u16 seed); u16 FeebasRandom(void); +extern u8 gWildEncountersDisabled; #endif // DEBUG #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index c0fd24b80..0bacb1d50 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -363,7 +363,7 @@ SECTIONS { src/unused_8124F94.o(.text); src/save.o(.text); src/mystery_event_script.o(.text); - asm/unk_debug_menu_3.o(.text); + src/debug/ereader_debug_menu.o(.text); src/field_effect_helpers.o(.text); src/contest_ai.o(.text); src/unused_81258BC.o(.text); @@ -538,7 +538,6 @@ SECTIONS { src/start_menu.o(.rodata); src/debug/start_menu_debug.o(.data); src/debug/start_menu_debug.o(.rodata); - data/start_menu_debug.o(.rodata); src/menu.o(.rodata); src/tileset_anim.o(.rodata); src/palette.o(.rodata); @@ -647,7 +646,7 @@ SECTIONS { src/choose_party.o(.rodata); src/cable_car.o(.rodata); src/save.o(.rodata); - data/unk_debug_menu_3.o(.rodata); + src/debug/ereader_debug_menu.o(.rodata); src/field_effect_helpers.o(.rodata); src/contest_ai.o(.rodata); src/battle/battle_controller_safari.o(.rodata); @@ -678,7 +677,7 @@ SECTIONS { data/strings2.o(.rodata); src/menu_cursor.o(.rodata); src/mystery_event_msg.o(.rodata); - data/debug_menu_3.o(.rodata); + data/debug_mystery_event_scripts.o(.rodata); src/libs/m4a_tables.o(.rodata); data/sound_data.o(.rodata); } =0 diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 9a1d0842b..55d500950 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -611,7 +611,7 @@ static void sub_80E0620(u8 taskId) // } // } -__attribute__((naked)) +NAKED static void sub_80E079C(struct Task *task) { asm(".syntax unified\n\ diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 4a48d1ecf..7babb3a19 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -690,7 +690,7 @@ void sub_80DC4F4(u8 taskId) task->func = sub_80DC5F4; } #else -__attribute__((naked)) +NAKED void sub_80DC4F4(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index b4e18eb51..be033ae6d 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -129,7 +129,7 @@ void sub_80D0614(struct Task* task, u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80D0614(struct Task* task, u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index 6e0d0321b..8e3f0a8b7 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -45,7 +45,7 @@ void sub_80CFE2C(struct Sprite* sprite) } } #else -__attribute__((naked)) +NAKED void sub_80CFE2C(struct Sprite* sprite) { asm(".syntax unified\n\ diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index 2700bfd27..a7e1883f3 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -51,7 +51,7 @@ static void sub_80D3874(struct Sprite *sprite) } } -__attribute__((naked)) +NAKED void sub_80D38BC(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 096bd878f..005dee32d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -4470,7 +4470,7 @@ void sub_8012324(void) } } */ -__attribute__((naked)) +NAKED void sub_8012324(void) { asm(".syntax unified\n\ @@ -6839,7 +6839,7 @@ void HandleAction_UseItem(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } #else -__attribute__((naked)) +NAKED void HandleAction_UseItem(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 8f5ea7cae..6646d6bae 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -2850,7 +2850,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } } #else -__attribute__((naked)) +NAKED void SetMoveEffect(bool8 primary, u8 certainArg) { asm(".syntax unified\n\ @@ -5694,7 +5694,7 @@ static void atk24(void) } #else -__attribute__((naked)) +NAKED static void atk24(void) { asm(".syntax unified\n\ @@ -6484,7 +6484,7 @@ static void atk48_playstatchangeanimation(void) } #else -__attribute__((naked)) +NAKED static void atk48_playstatchangeanimation(void) { asm(".syntax unified\n\ @@ -6892,7 +6892,7 @@ static void atk49_moveend(void) } while (effect == 0) } #else -__attribute__((naked)) +NAKED void atk49_moveend(void) { asm(".syntax unified\n\ @@ -8498,7 +8498,7 @@ static void atk50_openpartyscreen(void) } */ -__attribute__((naked)) +NAKED static void atk50_openpartyscreen(void) { asm(".syntax unified\n\ @@ -9965,7 +9965,7 @@ static void atk5D_getmoneyreward(void) gBattlescriptCurrInstr += 1; } #else -__attribute__((naked)) +NAKED static void atk5D_getmoneyreward(void) { asm(".syntax unified\n\ @@ -10508,7 +10508,7 @@ static void atk6C_drawlvlupbox(void) } #else -__attribute__((naked)) +NAKED static void atk6C_drawlvlupbox(void) { asm(".syntax unified\n\ @@ -12631,7 +12631,7 @@ static void atk9D_mimicattackcopy(void) } #if DEBUG -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm("\ @@ -12834,7 +12834,7 @@ static void atk9E_metronome(void) } #else -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm(".syntax unified\n\ @@ -13097,7 +13097,7 @@ static void atkA6_settypetorandomresistance(void) } #else -__attribute__((naked)) +NAKED static void atkA6_settypetorandomresistance(void) { asm(".syntax unified\n\ @@ -13997,7 +13997,7 @@ static void atkC0_recoverbasedonsunlight(void) } } -__attribute__((naked)) +NAKED static void atkC1_hiddenpowercalc(void) { asm(".syntax unified\n\ @@ -14231,7 +14231,7 @@ static void atkC4_trydobeatup(void) } } #else -__attribute__((naked)) +NAKED static void atkC4_trydobeatup(void) { asm(".syntax unified\n\ @@ -14655,7 +14655,7 @@ static void atkD2_tryswapitems(void) } #else -__attribute__((naked)) +NAKED static void atkD2_tryswapitems(void) { asm(".syntax unified\n\ @@ -15210,7 +15210,7 @@ static void atkDE_asistattackselect(void) } #else -__attribute__((naked)) +NAKED static void atkDE_asistattackselect(void) { asm(".syntax unified\n\ @@ -15875,7 +15875,7 @@ static void atkF2_displaydexinfo(void) } } -__attribute__((naked)) +NAKED void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 134f6c18b..447909091 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1008,7 +1008,7 @@ static void BattleAICmd_is_most_powerful_move(void) gAIScriptPtr += 1; } #else -__attribute__((naked)) +NAKED static void BattleAICmd_is_most_powerful_move(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai_switch_items.c b/src/battle/battle_ai_switch_items.c index e01c7b729..4dd7614bf 100755 --- a/src/battle/battle_ai_switch_items.c +++ b/src/battle/battle_ai_switch_items.c @@ -107,7 +107,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard } #else -__attribute__((naked)) +NAKED static bool8 ShouldSwitchIfWonderGuard(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a3360096a..2f57bcd97 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2528,7 +2528,7 @@ s8 BattleAnimAdjustPanning(s8 a) //_0807706E } */ -__attribute__((naked)) +NAKED s8 BattleAnimAdjustPanning(s8 a) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 583690c27..d6e7ed4a7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1438,7 +1438,7 @@ void OpponentHandlecmd19(void) } #if DEBUG -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm("\ @@ -1812,7 +1812,7 @@ void OpponentHandlecmd20(void) } } #else -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 50ab1eb7e..881ec72fc 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -1459,7 +1459,7 @@ void sub_802DB6C(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_802DB6C(u8 taskId) { asm_unified("push {r4-r7,lr}\n\ diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index bd954ae8d..b7c0dce4e 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -539,7 +539,7 @@ void sub_8043740(s16 a, u16 *b, u8 c) asm(""::"r"(r9)); } #else -__attribute__((naked)) +NAKED void sub_8043740(s16 a, u16 *b, u8 c) { asm(".syntax unified\n\ @@ -1123,7 +1123,7 @@ void sub_80440EC(u8 a, s16 b, u8 c) } } #else -__attribute__((naked)) +NAKED void sub_80440EC(u8 a, s16 b, u8 c) { asm(".syntax unified\n\ @@ -1380,7 +1380,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn) } } #else -__attribute__((naked)) +NAKED void sub_8044338(u8 a, struct Pokemon *pkmn) { asm(".syntax unified\n\ @@ -1925,7 +1925,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) return taskId; } #else -__attribute__((naked)) +NAKED u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 4fb236294..94454e45c 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -107,7 +107,7 @@ u8 sub_80C86A0(const u8 *string) return language; } #else -__attribute__((naked)) u8 sub_80C86A0(const u8 *string) +NAKED u8 sub_80C86A0(const u8 *string) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r4, r0, 0\n" diff --git a/src/battle_tower.c b/src/battle_tower.c index 8c44b71a3..8659f202f 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -514,7 +514,7 @@ bool8 sub_81346F4(void) // } // } -__attribute__((naked)) +NAKED void sub_81347F8(void) { asm(".syntax unified\n\ @@ -906,7 +906,7 @@ void SetEReaderTrainerGfxId(void) // gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; // } -__attribute__((naked)) +NAKED void sub_8134AC0(struct BattleTowerRecord *record) { asm(".syntax unified\n\ diff --git a/src/berry.c b/src/berry.c index 9313c458b..16b5b2b22 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1085,7 +1085,7 @@ extern u8 gUnknown_Debug_839B6CE[]; static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); -void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam) +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam) { s32 i; diff --git a/src/berry_blender.c b/src/berry_blender.c index 5d40ea321..cde189738 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3276,7 +3276,7 @@ static bool8 Blender_PrintBlendingRanking(void) // debug menu goes here -void unref_sub_80524BC(void) +void debug_sub_80524BC(void) { ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/contest.c b/src/contest.c index 031cf768f..f7436c51c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3891,7 +3891,7 @@ void sub_80B0748(u8 taskId) #undef i } #else -__attribute__((naked)) +NAKED void sub_80B0748(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/contest_effect.c b/src/contest_effect.c index 2932d8e6e..a5615851f 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -646,7 +646,7 @@ static void ContestEffect_BetterIfSameType(void) } } #else -__attribute__((naked)) void ContestEffect_BetterIfSameType(void) +NAKED void ContestEffect_BetterIfSameType(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" diff --git a/src/contest_painting.c b/src/contest_painting.c index e90391469..28dd3def7 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -104,7 +104,7 @@ static void VBlankCB_ContestPainting(void); void sub_8106B90(); //should be static static void sub_8107090(u8 arg0, u8 arg1); -__attribute__((naked)) +NAKED void sub_8106630(u32 arg0) { asm(".syntax unified\n\ @@ -364,7 +364,7 @@ static void sub_8106AC4(u16 species, u8 arg1) } } #else -__attribute__((naked)) +NAKED static void sub_8106AC4(u16 arg0, u8 arg2) { asm(".syntax unified\n\ @@ -497,7 +497,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8]) } } #else -__attribute__((naked)) +NAKED void sub_8106B90() { asm(".syntax unified\n\ diff --git a/src/daycare.c b/src/daycare.c index e26db531f..a77b6c5f5 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -592,7 +592,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP } } #else -__attribute__((naked)) +NAKED void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1119,7 +1119,7 @@ static bool8 _ShouldEggHatch(struct DayCare *daycare) return FALSE; } #else -__attribute__((naked)) +NAKED static bool8 _ShouldEggHatch(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1398,7 +1398,7 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) } } #else -__attribute__((naked)) +NAKED static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index c93ef74cd..24e0fa51b 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -89,7 +89,7 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) } #else -__attribute__((naked)) +NAKED void de_sub_8041024(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c new file mode 100644 index 000000000..aaffca383 --- /dev/null +++ b/src/debug/ereader_debug_menu.c @@ -0,0 +1,362 @@ +#include "global.h" +#include "debug.h" +#include "constants/species.h" +#include "constants/items.h" +#include "string_util.h" +#include "new_game.h" +#include "load_save.h" +#include "start_menu.h" +#include "mystery_event_script.h" +#include "berry.h" +#include "mail_data.h" + +const u8 Str_842E238[] = _("タマゴ"); + +#if DEBUG + +extern u8 gUnknown_Debug_845DAE1[]; +extern u8 gUnknown_Debug_845DAE1End[]; + +size_t debug_sub_813C404(u8 * dest) +{ + size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; + memcpy(dest, gUnknown_Debug_845DAE1, size); + debug_sub_812620C(dest, gUnknown_Debug_845DAE1); + return size; +} + +extern u8 gUnknown_Debug_845E3E0[]; +extern u8 gUnknown_Debug_845E3E0End[]; + +size_t debug_sub_813C430(u8 * dest) +{ + size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; + memcpy(dest, gUnknown_Debug_845E3E0, size); + debug_sub_812620C(dest, gUnknown_Debug_845E3E0); + return size; +} + +extern u8 gUnknown_Debug_845E422[]; +extern u8 gUnknown_Debug_845E422End[]; + +size_t debug_sub_813C45C(u8 * dest) +{ + size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; + memcpy(dest, gUnknown_Debug_845E422, size); + debug_sub_812620C(dest, gUnknown_Debug_845E422); + return size; +} + +extern u8 gUnknown_Debug_845E402[]; +extern u8 gUnknown_Debug_845E402End[]; + +size_t debug_sub_813C488(u8 * dest) +{ + size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; + memcpy(dest, gUnknown_Debug_845E402, size); + debug_sub_812620C(dest, gUnknown_Debug_845E402); + return size; +} + +extern u8 gUnknown_Debug_845E606[]; +extern u8 gUnknown_Debug_845E606End[]; + +size_t debug_sub_813C4B4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; + memcpy(dest, gUnknown_Debug_845E606, size); + return size; +} + +extern u8 gUnknown_Debug_845E619[]; +extern u8 gUnknown_Debug_845E619End[]; + +size_t debug_sub_813C4D4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; + memcpy(dest, gUnknown_Debug_845E619, size); + debug_sub_81261B4(dest, gUnknown_Debug_845E619); + return size; +} + +extern u8 gUnknown_Debug_845E712[]; +extern u8 gUnknown_Debug_845E712End[]; + +size_t debug_sub_813C500(u8 * dest) +{ + size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; + memcpy(dest, gUnknown_Debug_845E712, size); + debug_sub_812620C(dest, gUnknown_Debug_845E712); + return size; +} + +extern u8 gUnknown_Debug_845E797[]; +extern u8 gUnknown_Debug_845E797End[]; +extern u8 gUnknown_Debug_845E7B5[]; + +size_t debug_sub_813C52C(u8 * dest, u16 itemId) +{ + u8 * ptr; + size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; + memcpy(dest, gUnknown_Debug_845E797, size); + ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; + ptr += 3; + ptr[0] = itemId; + ptr[1] = itemId >> 8; + debug_sub_812620C(dest, gUnknown_Debug_845E797); + return size; +} + +size_t debug_sub_813C580(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POTION); +} + +size_t debug_sub_813C58C(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POKE_BALL); +} + +size_t debug_sub_813C598(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); +} + +size_t debug_sub_813C5A4(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); +} + +extern u8 gUnknown_Debug_845DDB2[]; +extern u8 gUnknown_Debug_845DDB2End[]; +extern u8 gUnknown_Debug_845DDD6[]; + +const u8 Str_842E23C[] = _("ガイブ"); + +size_t debug_sub_813C5B4(u8 * dest) +{ + u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; + u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); + size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; + int i; + + debug_sub_80C2C18(Str_842E23C, 0, 0); + + for (i = 0; i < 0x1000; i++) + dest[i] = 0; + + for (i = 0; i < size; i++) + dest[i] = gUnknown_Debug_845DDB2[i]; + + for (i = 0; i < sizeof(struct EnigmaBerry); i++) + berry[i] = saveBerry[i]; + + ClearEnigmaBerries(); + debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); + return size; +} + +const u8 Str_842E240[] = _("ENGLISH"); +const u8 Str_842E248[] = _("TOURNAMENT"); + +void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) +{ + u32 _itemId; + ZeroMonData(mon); + CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); + SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); + SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); + _itemId = itemId; + SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); +} + +void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) +{ + u16 itemId; + ClearMailStruct(mail); + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(itemId)) + { + u8 * name = mail->playerName; + u8 * id = mail->trainerId; + u8 nameBuf[8]; + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = i + 1; + + GetMonData(mon, MON_DATA_OT_NAME, nameBuf); + StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); + + write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); + + mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); + mail->itemId = itemId; + + } +} + +extern u8 gUnknown_Debug_845E443[]; +extern u8 gUnknown_Debug_845E443End[]; +extern u8 gUnknown_Debug_845E467[]; +extern u8 gUnknown_Debug_845E4CB[]; + +size_t debug_sub_813C740(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + u8 dataBuffer[11]; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); + dataBuffer[0] = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); + dataBuffer[0] = 3; + SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); + dataBuffer[0] = 255; + SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); + + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); + SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); + + dataBuffer[0] = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + return size; +} + +size_t debug_sub_813C810(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +size_t debug_sub_813C888(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; + +const u8 Str_842E253[] = _(" そら カードイー"); + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + +const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E264[] = _("ticket"); +const u8 Str_842E26B[] = _("{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E277[] = _("ribbon"); +const u8 Str_842E27E[] = _("DEX"); +const u8 Str_842E282[] = _("message"); +const u8 Str_842E28A[] = _("egg"); +const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E297[] = _("trainer"); +const u8 Str_842E29F[] = _("clock"); +const u8 Str_842E2A5[] = _("item"); +const u8 Str_842E2AA[] = _("goods"); +const u8 Str_842E2B0[] = _("potion"); +const u8 Str_842E2B7[] = _("ball"); +const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2C8[] = _("TM01"); + +const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { + {Str_842E264, debug_sub_813C404}, + {Str_842E26B, debug_sub_813C810}, + {Str_842E26E, debug_sub_813C888}, + {Str_842E277, debug_sub_813C430}, + {Str_842E27E, debug_sub_813C488}, + {Str_842E282, debug_sub_813C45C}, + {Str_842E28A, debug_sub_813C740}, + {Str_842E28E, debug_sub_813C5B4}, + {Str_842E297, debug_sub_813C93C}, + {Str_842E29F, debug_sub_813C4B4}, + {Str_842E2A5, debug_sub_813C4D4}, + {Str_842E2AA, debug_sub_813C500}, + {Str_842E2B0, debug_sub_813C580}, + {Str_842E2B7, debug_sub_813C58C}, + {Str_842E2BC, debug_sub_813C598}, + {Str_842E2C8, debug_sub_813C5A4} +}; + +extern u8 gUnknown_Debug_845E306[]; + +const u8 gUnknown_Debug_842E350 = 16; + +u8 *const gUnknown_Debug_842E354[] = { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 +}; + +#endif // DEBUG diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7a66ded57..c936af864 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -76,7 +76,7 @@ const struct MenuAction gMatsudaDebugMenuActions[] = {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems}, }; -u8 unref_sub_80A9B28(void) +u8 InitMatsudaDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 3880c7b7b..f40d5556a 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1335,7 +1335,7 @@ static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) return 0; // PBLOCK_CLR_UNKNOWN } #else -__attribute__((naked)) +NAKED static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 340ef2f17..549842c6a 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2,6 +2,8 @@ #include "global.h" #include "constants/songs.h" +#include "constants/moves.h" +#include "constants/items.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -16,12 +18,67 @@ #include "task.h" #include "text.h" #include "trade.h" - -// berry_blender.c -extern void unref_sub_80524BC(void); +#include "start_menu.h" +#include "string_util.h" +#include "new_game.h" +#include "script.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "credits.h" +#include "event_data.h" +#include "berry.h" +#include "pokedex.h" +#include "mori_debug_menu.h" +#include "cable_club.h" +#include "field_fadetransition.h" +#include "wild_encounter.h" +#include "battle_setup.h" +#include "safari_zone.h" +#include "fldeff_cut.h" +#include "fldeff_flash.h" +#include "rom6.h" +#include "fldeff_strength.h" +#include "pokemon_menu.h" +#include "fldeff_secretpower.h" +#include "data2.h" +#include "item.h" +#include "reset_rtc_screen.h" +#include "pokeblock.h" +#include "ewram.h" +#include "gba/flash_internal.h" +#include "gba/m4a_internal.h" +#include "berry_blender.h" void debug_sub_8076BB4(u8); -void debug_sub_8077CF4(); +void debug_sub_8077CF4(u8 x, u8 y); +u8 DebugMenu_807706C(void); +u8 DebugMenu_807709C(void); +void DebugMenu_807719C(void); +void DebugMenu_80771EC(void); +void DebugMenu_8077238(void); +u8 DebugMenu_8077D78(const struct MenuAction *menuActions); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount); +u8 DebugMenu_8077C14(void); +bool8 DebugMenu_8077DB4(void); +void DebugMenu_8077EAC(void); +void DebugMenu_8077F40(u8 taskId); +void DebugMenu_8077F7C(u8 taskId); +void DebugMenu_8077FFC(u8 taskId); +void DebugMenu_807806C(u8 taskId); +void DebugMenu_8078A14(u8 taskId); +void DebugMenu_8078AA4(u8 taskId); +void DebugMenu_8078B38(u8 taskId); +bool8 DebugMenu_8078C80(void); +bool8 DebugMenu_8078CA8(void); +bool8 DebugMenu_8078CE4(void); +bool8 DebugMenu_8078D30(void); +bool8 DebugMenu_8078D7C(void); +bool8 DebugMenu_8078DA4(void); +bool8 DebugMenu_8078DF0(void); +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078F68(u8 taskId); +void DebugMenu_8079020(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -280,12 +337,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; -__attribute__((unused)) static u8 gUnknown_030006B8[4]; -__attribute__((unused)) static u8 gUnknown_030006BC[4]; -__attribute__((unused)) static u8 gUnknown_030006C0; -__attribute__((unused)) static u8 gUnknown_030006C1; -static const u8 *gUnknown_030006C4; -__attribute__((unused)) static u8 gUnknown_030006C8; +static u8 gUnknown_030006B8; +UNUSED static const s32 * gUnknown_030006BC; +static u8 gUnknown_030006C0; +static u8 gUnknown_030006C1; +static const u8 * gUnknown_030006C4; +static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) { @@ -402,7 +459,7 @@ u8 DebugMenu_8076CD4(void) u8 DebugMenu_8076CD8(void) { - SetMainCallback2(unref_sub_80524BC); + SetMainCallback2(debug_sub_80524BC); return 0; } @@ -485,5567 +542,2207 @@ void DebugMenu_8076D6C(u8 taskId) } } -__attribute__((naked)) -u8 DebugMenu_8076E18() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._67 @ DebugMenu_8076D6C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word DebugMenu_8076D6C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076E30() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._73 @ gTasks\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._69 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._70 @cond_branch\n" - " cmp r1, #0\n" - " beq ._71 @cond_branch\n" - " b ._86\n" - "._74:\n" - " .align 2, 0\n" - "._73:\n" - " .word gTasks+0x8\n" - "._70:\n" - " cmp r1, #0x2\n" - " beq ._75 @cond_branch\n" - " b ._86\n" - "._71:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78 @ Str_839BD5A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._77\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word Str_839BD5A\n" - "._69:\n" - " ldr r0, ._82 @ gMain\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._80 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " bl sub_813B79C\n" - " ldr r0, ._82 + 4 @ Str_839BD7D\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - "._77:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._86\n" - "._83:\n" - " .align 2, 0\n" - "._82:\n" - " .word gMain\n" - " .word Str_839BD7D\n" - "._80:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._86\n" - "._75:\n" - " ldr r0, ._87 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._86:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8076EDC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._89 @ DebugMenu_8076E30\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._90:\n" - " .align 2, 0\n" - "._89:\n" - " .word DebugMenu_8076E30+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076EF4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " add r3, r4, #0\n" - " bl Menu_PrintItems\n" - " mov r5, #0x0\n" - " add r4, r4, #0x4\n" - "._92:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r4\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " and r1, r1, r0\n" - " mov r0, #0xb6\n" - " cmp r1, #0\n" - " bne ._91 @cond_branch\n" - " mov r0, #0xb5\n" - "._91:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0xa\n" - " bl sub_8071F60\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x7\n" - " bls ._92 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word gUnknown_Debug_839BDC4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076F60() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._97 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " bne ._96 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_8076B68\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " b ._97\n" - "._96:\n" - " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" - " lsl r2, r2, #0x18\n" - " asr r2, r2, #0x15\n" - " add r0, r3, #4\n" - " add r0, r2, r0\n" - " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4 @ gSaveBlock2\n" - " mov r1, #0x1\n" - " and r1, r1, r4\n" - " strb r1, [r0, #0x8]\n" - " add r2, r2, r3\n" - " ldr r1, [r2]\n" - " bl StringCopy\n" - " mov r0, #0x80\n" - " and r4, r4, r0\n" - " cmp r4, #0\n" - " bne ._98 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8057508\n" - " b ._99\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gUnknown_Debug_839BDC4\n" - " .word gSaveBlock2\n" - "._98:\n" - " mov r0, #0x1\n" - " bl debug_sub_8057508\n" - "._99:\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " ldr r0, ._102 @ debug_sub_8058C00\n" - " bl SetMainCallback2\n" - "._97:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._103:\n" - " .align 2, 0\n" - "._102:\n" - " .word debug_sub_8058C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076FEC() -{ - asm( - " push {lr}\n" - " bl DebugMenu_8076EF4\n" - " ldr r0, ._104 @ DebugMenu_8076F60\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._105:\n" - " .align 2, 0\n" - "._104:\n" - " .word DebugMenu_8076F60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077004() -{ - asm( - " ldr r2, ._106 @ gUnknown_030006C4\n" - " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " bx lr\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C1 \n" - " .word gUnknown_Debug_839BB64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077020() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._109 @ gMenuCallback\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._108 @cond_branch\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._108:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gMenuCallback\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077048() -{ - asm( - " push {lr}\n" - " ldr r0, ._111 @ gMenuCallback\n" - " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" - " str r1, [r0]\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gMenuCallback\n" - " .word DebugMenu_807706C+1\n" - " .word DebugMenu_8077020+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807706C() -{ - asm( - " push {lr}\n" - " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" - " bl InitMenuWindow\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - " bl DebugMenu_80771EC\n" - " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4 @ gMenuCallback\n" - " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gWindowTemplate_81E6CE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_807709C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807709C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._120 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._115 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._115:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._116 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._116:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._117 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " mov r0, #0x7\n" - " b ._119\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gMain\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C1 \n" - "._118:\n" - " sub r0, r0, #0x1\n" - "._119:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._117:\n" - " ldr r0, ._125 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x7\n" - " bne ._123 @cond_branch\n" - " mov r0, #0x0\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gMain\n" - " .word gUnknown_030006C1 \n" - "._123:\n" - " add r0, r0, #0x1\n" - "._124:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._122:\n" - " ldr r0, ._129 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" - " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._132\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word gMain\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C4 \n" - "._127:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._131 @cond_branch\n" - " mov r0, #0x0\n" - " b ._132\n" - "._131:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._132:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807719C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133 @ gDebug0x839B9BC\n" - " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " strb r0, [r4]\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C0 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80771EC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._135 @ gStringVar4\n" - " ldr r1, ._135 + 4 @ Str_839BE04\n" - " bl StringCopy\n" - " ldr r4, ._135 + 8 @ gSaveBlock1\n" - " mov r1, #0x4\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r1, #0x5\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x13\n" - " mov r1, #0xc\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135 @ gStringVar4\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word gStringVar4\n" - " .word Str_839BE04\n" - " .word gSaveBlock1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077238() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139 @ Str_839BE07\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, sp, #0x4\n" - " mov r9, r0\n" - " ldr r1, ._139 + 4 @ Str_839BE09\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " add r1, sp, #0x8\n" - " mov sl, r1\n" - " ldr r1, ._139 + 8 @ Str_839BE0C\n" - " mov r0, sl\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " str r2, [sp, #0x14]\n" - " add r4, sp, #0x10\n" - " mov r6, sp\n" - " add r6, r6, #0x12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl PlayerGetDestCoords\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r6, r2]\n" - " bl MapGridGetZCoordAt\n" - " mov r8, r0\n" - " mov r0, r8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r6]\n" - " ldr r7, ._139 + 12 @ gStringVar4\n" - " add r0, r7, #0\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r5, sp, #0xc\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, r9\n" - " bl StringAppend\n" - " mov r0, #0x0\n" - " ldsh r1, [r6, r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, sl\n" - " bl StringAppend\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " ldrb r0, [r7]\n" - " cmp r0, #0xff\n" - " beq ._137 @cond_branch\n" - " add r1, r7, #0\n" - "._138:\n" - " ldr r0, [sp, #0x14]\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._138 @cond_branch\n" - "._137:\n" - " mov r0, #0x1c\n" - " ldr r1, [sp, #0x14]\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12 @ gStringVar4\n" - " mov r1, #0x1d\n" - " ldr r2, [sp, #0x14]\n" - " sub r1, r1, r2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word Str_839BE07\n" - " .word Str_839BE09\n" - " .word Str_839BE0C\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Exit() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSogabe() -{ - asm( - " push {lr}\n" - " bl unref_sub_814A414\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTamada() -{ - asm( - " push {lr}\n" - " bl debug_sub_8075C30\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKagaya() -{ - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_A\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMatsuda() -{ - asm( - " push {lr}\n" - " bl unref_sub_80A9B28\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNohara() -{ - asm( - " push {lr}\n" - " bl InitNoharaDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWatanabe() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._141 @ InitWatanabeDebugMenu\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word InitWatanabeDebugMenu+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EndSequenceDemo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._143 @ sub_81439D0\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word sub_81439D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HallOfFame() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl GameClear\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSizeComparison() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSizeComparison\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennNationalDex() -{ - asm( - " push {lr}\n" - " bl IsNationalPokedexEnabled\n" - " cmp r0, #0\n" - " beq ._145 @cond_branch\n" - " bl DisableNationalPokedex\n" - " b ._146\n" - "._145:\n" - " bl EnableNationalPokedex\n" - "._146:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077434() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._165 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._149 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word ._148\n" - "._148:\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - " .word ._154\n" - " .word ._155\n" - "._151:\n" - " ldr r0, ._157 @ Str_839BE0F\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0x0\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word Str_839BE0F\n" - "._152:\n" - " ldr r0, ._160 @ Str_839BE12\n" - " mov r1, #0x2\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0x0\n" - " b ._159\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_839BE12\n" - "._153:\n" - " ldr r0, ._163 @ Str_839BE16\n" - " mov r1, #0x3\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word Str_839BE16\n" - "._154:\n" - " ldr r0, ._166 @ Str_839BE1A\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xff\n" - "._162:\n" - " mov r2, #0xff\n" - "._159:\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word Str_839BE1A\n" - "._155:\n" - " ldr r0, ._168 @ Str_839BE1E\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - "._165:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word Str_839BE1E\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_807750C() -{ - asm( - " push {lr}\n" - " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._171:\n" - " .align 2, 0\n" - "._170:\n" - " .word gUnknown_Debug_839BE24\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetRamBerry() -{ - asm( - " push {lr}\n" - " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4 @ gMenuCallback\n" - " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gUnknown_Debug_839BE24\n" - " .word gMenuCallback\n" - " .word DebugMenu_807750C+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleBGM() -{ - asm( - " push {lr}\n" - " ldr r2, ._175 @ gDisableMusic\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0\n" - " bne ._174 @cond_branch\n" - " mov r1, #0x1\n" - "._174:\n" - " strb r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gDisableMusic\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleForDebug() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitBattleForDebug\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_NationalDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._178 @ 0x181\n" - "._177:\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r4, r5\n" - " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word 0x181\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r5, #0x0\n" - "._180:\n" - " add r5, r5, #0x1\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " add r0, r5, #0\n" - " bl HoennToNationalOrder\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r5, #0xc9\n" - " bls ._180 @cond_branch\n" - " ldr r1, ._181 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CreatePKMN() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitCreatePokemon\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPokemonGraphics() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeePokemonGraphics\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSeeTrainers() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeeTrainers\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMori() -{ - asm( - " push {lr}\n" - " bl InitMoriDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTomomichi() -{ - asm( - " push {lr}\n" - " bl InitTomomichiDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenAoki() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTaya() -{ - asm( - " push {lr}\n" - " bl InitTayaDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNakamura() -{ - asm( - " push {lr}\n" - " bl InitNakamuraDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenIwasawa() -{ - asm( - " push {lr}\n" - " bl debug_sub_8138CC4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Teleport() -{ - asm( - " push {lr}\n" - " bl Overworld_SetWarpDestToLastHealLoc\n" - " bl sub_8080E88\n" - " bl ScriptContext2_Enable\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EditPKMN() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl NakaGenderTest\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80776B4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._183 @ Str_839BE4C\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " lsl r3, r4, #0x1\n" - " lsl r5, r4, #0x19\n" - " lsr r5, r5, #0x18\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x19\n" - " add r1, r5, #0\n" - " mov r2, #0x1d\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " ASR r0, r4\n" - " mov r1, #0x1\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, sp\n" - " mov r1, #0x19\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word Str_839BE4C\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077704() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xffffffec\n" - " ldr r1, ._185 @ Str_839BE53\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " mov r0, #0x13\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " mov r0, sp\n" - " mov r1, #0x15\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " ldrh r0, [r0]\n" - " lsr r0, r0, #0x8\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, #0x0\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x1\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x2\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x3\n" - " bl DebugMenu_80776B4\n" - " add sp, sp, #0x14\n" - " pop {r0}\n" - " bx r0\n" - "._186:\n" - " .align 2, 0\n" - "._185:\n" - " .word Str_839BE53\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077760() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._190 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " add r5, r2, #0\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._188 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gMain\n" - " .word gUnknown_030006B8 \n" - "._188:\n" - " mov r0, #0x3\n" - "._189:\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._192 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._195 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " beq ._193 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._194\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_030006B8 \n" - "._193:\n" - " mov r0, #0x0\n" - "._194:\n" - " strb r0, [r1]\n" - "._192:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._197 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._201 @ gUnknown_030006C8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " LSL r1, r0\n" - " ldrb r0, [r4]\n" - " eor r1, r1, r0\n" - " strb r1, [r4]\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_80776B4\n" - "._197:\n" - " ldrh r2, [r5, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._198 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._199 @cond_branch\n" - "._198:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4 @ 0xf0ff\n" - " and r1, r1, r0\n" - " ldr r0, ._201 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, r0\n" - " strh r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._200\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gUnknown_030006C8 \n" - " .word 0xf0ff\n" - "._199:\n" - " mov r0, #0x0\n" - "._200:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SwitchBG() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " bl DebugMenu_8077704\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x6\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._203 @ gMenuCallback\n" - " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077760+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807786C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._205 @ Str_839BE64\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " mov r0, #0x19\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " add r0, r0, sp\n" - " mov r1, #0x1a\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word Str_839BE64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80778A8() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._211 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._207 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrb r0, [r2]\n" - " bl DebugMenu_807786C\n" - "._207:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._208 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - "._208:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._210\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gMain\n" - " .word sWildEncountersDisabled\n" - "._209:\n" - " mov r0, #0x0\n" - "._210:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ControlEncounter() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._213 @ sWildEncountersDisabled\n" - " ldrb r0, [r0]\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4 @ gMenuCallback\n" - " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word sWildEncountersDisabled\n" - " .word gMenuCallback\n" - " .word DebugMenu_80778A8+1\n" - "\n" - ); -} - -__attribute__((naked)) +u8 DebugMenu_8076E18(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076D6C, 10); + return 0; +} + +void DebugMenu_8076E30(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD5A, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + sub_813B79C(); + Menu_PrintText(Str_839BD7D, 2, 15); + PlaySE(SE_PINPON); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + } +} + +u8 DebugMenu_8076EDC(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076E30, 10); + return 0; +} + +const u8 Str_839BD90[] = _("ジュンイチ"); +const u8 Str_839BD96[] = _("ダイゴロウ"); +const u8 Str_839BD9C[] = _("テツジ"); +const u8 Str_839BDA0[] = _("バレンシア"); +const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BDAC[] = _("RAYMOND"); +const u8 Str_839BDB4[] = _("TIFFANY"); +const u8 Str_839BDBC[] = _("くまxちえ"); + +const struct { + const u8 * text; + u32 flags; +} gUnknown_Debug_839BDC4[] = { + {Str_839BD90, 0x0}, + {Str_839BD96, 0x0}, + {Str_839BDA0, 0x1}, + {Str_839BDA6, 0x1}, + {Str_839BDAC, 0x80}, + {Str_839BDB4, 0x81}, + {Str_839BD9C, 0x0}, + {Str_839BDBC, 0x1} +}; + +void DebugMenu_8076EF4(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 11, 17); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + { + sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + } + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); +} + +void DebugMenu_8076F60(u8 taskId) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + case -2: + break; + case -1: + Menu_EraseScreen(); + debug_sub_8076B68(); + DestroyTask(taskId); + break; + default: + { + u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + gSaveBlock2.playerGender = flags & 1; + StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + if ((flags & 0x80) == 0) + debug_sub_8057508(FALSE); + else + debug_sub_8057508(TRUE); + DestroyTask(taskId); + SetMainCallback2(debug_sub_8058C00); + break; + } + } +} + +void DebugMenu_8076FEC(void) +{ + DebugMenu_8076EF4(); + CreateTask(DebugMenu_8076F60, 10); +} + +void DebugMenu_8077004(void) +{ + gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; +} + +void DebugMenu_8077020(u8 taskId) +{ + if (gMenuCallback() == TRUE) + DestroyTask(taskId); +} + +void DebugMenu_8077048(void) +{ + gMenuCallback = DebugMenu_807706C; + ScriptContext2_Enable(); + CreateTask(DebugMenu_8077020, 80); +} + +u8 DebugMenu_807706C(void) +{ + InitMenuWindow(&gWindowTemplate_81E6CE4); + DebugMenu_8077004(); + DebugMenu_807719C(); + DebugMenu_80771EC(); + DebugMenu_8077238(); + gMenuCallback = DebugMenu_807709C; + return FALSE; +} + +u8 DebugMenu_807709C(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(+1); + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 0) + gUnknown_030006C1 = 7; + else + gUnknown_030006C1--; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 7) + gUnknown_030006C1 = 0; + else + gUnknown_030006C1++; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +void DebugMenu_807719C(void) +{ + Menu_DrawStdWindowFrame(0, 0, 14, 17); + Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4); + gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13); +} + +const u8 Str_839BE04[] = _("ID"); + +void DebugMenu_80771EC(void) +{ + u8 * buf = gStringVar4; + buf = StringCopy(buf, Str_839BE04); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_DrawStdWindowFrame(19, 12, 29, 15); + Menu_PrintText(gStringVar4, 20, 13); +} + +void DebugMenu_8077238(void) +{ + u8 sp00[] = _("X"); + u8 sp04[] = _(" Y"); + u8 sp08[] = _(" H"); + u8 sp0c[4]; + + s16 x; + s16 y; + u8 z; + u16 sp14 = 0; + + PlayerGetDestCoords(&x, &y); + z = MapGridGetZCoordAt(x, y); + x -= 7; + y -= 7; + + StringCopy(gStringVar4, sp00); + ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp04); + ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp08); + ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, sp0c); + + for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++) + ; + + Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19); + Menu_PrintText(gStringVar4, 29 - sp14, 17); +} + +u8 DebugMenu_Exit(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenSogabe(void) +{ + return InitSogabeDebugMenu(); +} + +u8 DebugMenu_OpenTamada(void) +{ + return debug_sub_8075C30(); +} + +u8 DebugMenu_OpenKagaya(void) +{ + return InitKagayaDebugMenu_A(); +} + +u8 DebugMenu_OpenMatsuda(void) +{ + return InitMatsudaDebugMenu(); +} + +u8 DebugMenu_OpenNohara(void) +{ + return InitNoharaDebugMenu(); +} + +u8 DebugMenu_OpenWatanabe(void) +{ + CloseMenu(); + SetMainCallback2(InitWatanabeDebugMenu); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_EndSequenceDemo(void) +{ + CloseMenu(); + SetMainCallback2(sub_81439D0); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HallOfFame(void) +{ + CloseMenu(); + GameClear(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSizeComparison(void) +{ + CloseMenu(); + InitSizeComparison(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HoennNationalDex(void) +{ + if (IsNationalPokedexEnabled()) + DisableNationalPokedex(); + else + EnableNationalPokedex(); + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE0F[] = _("HP"); +const u8 Str_839BE12[] = _("PAR"); +const u8 Str_839BE16[] = _("SLP"); +const u8 Str_839BE1A[] = _("PSN"); +const u8 Str_839BE1E[] = _("ウマイ"); + +u8 DebugMenu_8077434(void) +{ + switch (Menu_GetCursorPos()) + { + case 0: + debug_sub_80C2C18(Str_839BE0F, 1, 4); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff); + break; + case 1: + debug_sub_80C2C18(Str_839BE12, 2, 0); + debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff); + break; + case 2: + debug_sub_80C2C18(Str_839BE16, 3, 0); + debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff); + break; + case 3: + debug_sub_80C2C18(Str_839BE1A, 4, 0); + debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + case 4: + debug_sub_80C2C18(Str_839BE1E, 4, 0); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + } + CloseMenu(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BE24[] = { + {Str_839BE0F, DebugMenu_8077434}, + {Str_839BE12, DebugMenu_8077434}, + {Str_839BE16, DebugMenu_8077434}, + {Str_839BE1A, DebugMenu_8077434}, + {Str_839BE1E, DebugMenu_8077434} +}; + +u8 DebugMenu_807750C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BE24); +} + +u8 DebugMenu_SetRamBerry(void) +{ + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24)); + gMenuCallback = DebugMenu_807750C; + return FALSE; +} + +u8 DebugMenu_ToggleBGM(void) +{ + gDisableMusic = gDisableMusic ? FALSE : TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_BattleForDebug(void) +{ + CloseMenu(); + InitBattleForDebug(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_NationalDex(void) +{ + u16 i; + + for (i = 0; i < 386; i++) + { + GetSetPokedexFlag(i + 1, 2); + GetSetPokedexFlag(i + 1, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_HoennDex(void) +{ + u16 i; + + for (i = 0; i < 202; i++) + { + u16 nati = HoennToNationalOrder(i + 1); + GetSetPokedexFlag(nati, 2); + GetSetPokedexFlag(nati, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_CreatePKMN(void) +{ + CloseMenu(); + InitCreatePokemon(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_ViewPokemonGraphics(void) +{ + CloseMenu(); + InitSeePokemonGraphics(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSeeTrainers(void) +{ + CloseMenu(); + InitSeeTrainers(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenMori(void) +{ + return InitMoriDebugMenu(); +} + +u8 DebugMenu_OpenTomomichi(void) +{ + return InitTomomichiDebugWindow(); +} + +u8 DebugMenu_OpenAoki(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenTaya(void) +{ + return InitTayaDebugWindow(); +} + +u8 DebugMenu_OpenNakamura(void) +{ + return InitNakamuraDebugMenu(); +} + +u8 DebugMenu_OpenIwasawa(void) +{ + return debug_sub_8138CC4(); +} + +u8 DebugMenu_Teleport(void) +{ + Overworld_SetWarpDestToLastHealLoc(); + sub_8080E88(); + ScriptContext2_Enable(); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_EditPKMN(void) +{ + Menu_EraseScreen(); + NakaGenderTest(); + return FALSE; +} + +void DebugMenu_80776B4(u8 bgNum) +{ + u8 sp00[] = __("OFF$" + "ON$"); + Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1); + Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2); +} + +void DebugMenu_8077704(void) +{ + u8 sp00[] = _("BG0\n" + "BG1\n" + "BG2\n" + "BG3\n"); + Menu_BlankWindowRect(19, 0, 29, 8); + Menu_PrintText(sp00, 21, 0); + gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F; + DebugMenu_80776B4(0); + DebugMenu_80776B4(1); + DebugMenu_80776B4(2); + DebugMenu_80776B4(3); +} + +u8 DebugMenu_8077760(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + if (gUnknown_030006B8 != 0) + gUnknown_030006B8--; + else + gUnknown_030006B8 = 3; + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + if (gUnknown_030006B8 != 3) + gUnknown_030006B8++; + else + gUnknown_030006B8 = 0; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gUnknown_030006C8 ^= (1 << Menu_GetCursorPos()); + DebugMenu_80776B4(Menu_GetCursorPos()); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8); + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_SwitchBG(void) +{ + Menu_EraseScreen(); + DebugMenu_8077704(); + InitMenu(0, 20, 0, 4, 0, 6); + gMenuCallback = DebugMenu_8077760; + return FALSE; +} + +void DebugMenu_807786C(u8 a0) +{ + u8 sp00[] = __("ON$" + "OFF$"); + + Menu_DrawStdWindowFrame(25, 0, 29, 3); + Menu_PrintText(sp00 + 3 * a0, 26, 1); +} + +u8 DebugMenu_80778A8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gWildEncountersDisabled ^= 1; + DebugMenu_807786C(gWildEncountersDisabled); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ControlEncounter(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(gWildEncountersDisabled); + gMenuCallback = DebugMenu_80778A8; + return FALSE; +} + u8 DebugMenu_UseHM() { - asm( - " ldr r1, ._215 @ gMenuCallback\n" - " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " bx lr\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077934() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._218 @ gSaveBlock1\n" - " mov r2, #0x1\n" - "._217:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._217 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._219:\n" - " .align 2, 0\n" - "._218:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077954() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._222 @ gSaveBlock1\n" - " mov r2, #0x0\n" - "._221:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._221 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._223:\n" - " .align 2, 0\n" - "._222:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077974() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._226 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl IsRematchTrainerIn\n" - " cmp r0, #0\n" - " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4 @ gStringVar1\n" - " ldr r1, ._226 + 8 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word Str_839BE8D\n" - "._224:\n" - " ldr r0, ._230 @ gStringVar1\n" - " ldr r1, ._230 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._225:\n" - " ldr r1, ._230 + 8 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl DoesSomeoneWantRematchIn\n" - " cmp r0, #0\n" - " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12 @ gStringVar2\n" - " ldr r1, ._230 + 16 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gStringVar1\n" - " .word Str_839BE90\n" - " .word gSaveBlock1\n" - " .word gStringVar2\n" - " .word Str_839BE8D\n" - "._228:\n" - " ldr r0, ._232 @ gStringVar2\n" - " ldr r1, ._232 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._229:\n" - " ldr r0, ._232 + 8 @ Str_839BE6B\n" - " bl sub_8071F40\n" - " ldr r1, ._232 + 12 @ gMenuCallback\n" - " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word gStringVar2\n" - " .word Str_839BE90\n" - " .word Str_839BE6B\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A20() -{ - asm( - " push {lr}\n" - " ldr r0, ._234 @ gSaveBlock1\n" - " ldr r1, ._234 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0xff\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._235:\n" - " .align 2, 0\n" - "._234:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A40() -{ - asm( - " push {lr}\n" - " ldr r0, ._236 @ gSaveBlock1\n" - " ldr r1, ._236 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A60() -{ - asm( - " push {lr}\n" - " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word gUnknown_Debug_839BEE4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_RematchTrainers() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4 @ gMenuCallback\n" - " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._241:\n" - " .align 2, 0\n" - "._240:\n" - " .word gUnknown_Debug_839BEE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077A60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A9C() -{ - asm( - " push {lr}\n" - " ldr r1, ._242 @ gNumSafariBalls\n" - " mov r0, #0x1e\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AB4() -{ - asm( - " push {lr}\n" - " ldr r1, ._244 @ gNumSafariBalls\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077ACC() -{ - asm( - " push {lr}\n" - " ldr r1, ._246 @ gSafariZoneStepCounter\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AE8() -{ - asm( - " push {lr}\n" - " ldr r1, ._248 @ gSafariZoneStepCounter\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B00() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl unref_sub_80C853C\n" - " cmp r0, #0\n" - " beq ._250 @cond_branch\n" - " ldr r0, ._252 @ Str_839BF14\n" - " bl sub_8071F40\n" - " b ._251\n" - "._253:\n" - " .align 2, 0\n" - "._252:\n" - " .word Str_839BF14\n" - "._250:\n" - " ldr r0, ._254 @ Str_839BF1F\n" - " bl sub_8071F40\n" - "._251:\n" - " ldr r1, ._254 + 4 @ gMenuCallback\n" - " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word Str_839BF1F\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B3C() -{ - asm( - " push {lr}\n" - " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._257:\n" - " .align 2, 0\n" - "._256:\n" - " .word gUnknown_Debug_839BF6C\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Safari() -{ - asm( - " push {lr}\n" - " bl GetSafariZoneFlag\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" - " mov r1, #0xe\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4 @ gStringVar1\n" - " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" - " ldrh r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12 @ Str_839BF0C\n" - " bl sub_8071F40\n" - " ldr r1, ._260 + 16 @ gMenuCallback\n" - " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" - " str r0, [r1]\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x0\n" - " b ._259\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gUnknown_Debug_839BF6C\n" - " .word gStringVar1\n" - " .word gSafariZoneStepCounter\n" - " .word Str_839BF0C\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077B3C+1\n" - "._258:\n" - " bl CloseMenu\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - "._259:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BB4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80AFEE4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BC0() -{ - asm( - " push {lr}\n" - " bl debug_sub_8122080\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BCC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8120968\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BD8() -{ - asm( - " push {lr}\n" - " bl debug_sub_8130318\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BE4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80986AC\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BF4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80D93F4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C00() -{ - asm( - " push {lr}\n" - " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gUnknown_Debug_839BF94\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C14() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4 @ gMenuCallback\n" - " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gUnknown_Debug_839BF94\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C3C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov sl, r0\n" - " add r7, r1, #0\n" - " ldr r0, ._271 @ gUnknown_030006BC\n" - " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - " str r1, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " mov r3, #0x0\n" - " mov r8, r0\n" + gMenuCallback = DebugMenu_8077C14; + return FALSE; +} + +u8 DebugMenu_8077934(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 1; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_8077954(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}"); +const u8 Str_839BE8D[] = _("いる"); +const u8 Str_839BE90[] = _("いない"); + +bool8 DebugMenu_8077974(void) +{ + Menu_EraseScreen(); + if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar1, Str_839BE8D); + else + StringCopy(gStringVar1, Str_839BE90); + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar2, Str_839BE8D); + else + StringCopy(gStringVar2, Str_839BE90); + sub_8071F40(Str_839BE6B); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +bool8 DebugMenu_8077A20(void) +{ + gSaveBlock1.trainerRematchStepCounter = 255; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077A40(void) +{ + gSaveBlock1.trainerRematchStepCounter = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE94[] = _("Max num of steps"); +const u8 Str_839BEA5[] = _("Clear num of steps"); +const u8 Str_839BEB8[] = _("See trainers"); +const u8 Str_839BEC5[] = _("Flag all clear"); +const u8 Str_839BED4[] = _("Flag all set"); + +const struct MenuAction gUnknown_Debug_839BEE4[] = { + {Str_839BEB8, DebugMenu_8077974}, + {Str_839BE94, DebugMenu_8077A20}, + {Str_839BEA5, DebugMenu_8077A40}, + {Str_839BED4, DebugMenu_8077934}, + {Str_839BEC5, DebugMenu_8077954} +}; + +u8 DebugMenu_8077A60(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BEE4); +} + +u8 DebugMenu_RematchTrainers(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4)); + gMenuCallback = DebugMenu_8077A60; + return FALSE; +} + +bool8 DebugMenu_8077A9C(void) +{ + gNumSafariBalls = 30; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AB4(void) +{ + gNumSafariBalls = 1; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077ACC(void) +{ + gSafariZoneStepCounter = 500; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AE8(void) +{ + gSafariZoneStepCounter = 1; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); +const u8 Str_839BF14[] = _("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ"); +const u8 Str_839BF1F[] = _("めのまえには\n" + "キューブが ありません!"); + +bool8 DebugMenu_8077B00(void) +{ + Menu_EraseScreen(); + if (debug_sub_80C853C()) + sub_8071F40(Str_839BF14); + else + sub_8071F40(Str_839BF1F); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +const u8 Str_839BF33[] = _("ほすうをのこり1にする"); +const u8 Str_839BF3F[] = _("ボールをのこり1にする"); +const u8 Str_839BF4B[] = _("キューブおきば"); +const u8 Str_839BF53[] = _("ボールをのこり30に"); +const u8 Str_839BF5E[] = _("ほすうをのこり500に"); + +const struct MenuAction gUnknown_Debug_839BF6C[] = { + {Str_839BF4B, DebugMenu_8077B00}, + {Str_839BF5E, DebugMenu_8077ACC}, + {Str_839BF33, DebugMenu_8077AE8}, + {Str_839BF53, DebugMenu_8077A9C}, + {Str_839BF3F, DebugMenu_8077AB4} +}; + +bool8 DebugMenu_8077B3C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF6C); +} + +u8 DebugMenu_Safari(void) +{ + if (!GetSafariZoneFlag()) + { + CloseMenu(); + PlaySE(SE_BOO); + return TRUE; + } + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C)); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8071F40(Str_839BF0C); + gMenuCallback = DebugMenu_8077B3C; + ScriptContext2_Enable(); + return FALSE; +} + +bool8 DebugMenu_8077BB4(void) +{ + debug_sub_80AFEE4(); + return TRUE; +} + +bool8 DebugMenu_8077BC0(void) +{ + debug_sub_8122080(); + return TRUE; +} + +bool8 DebugMenu_8077BCC(void) +{ + debug_sub_8120968(); + return TRUE; +} + +bool8 DebugMenu_8077BD8(void) +{ + debug_sub_8130318(); + return TRUE; +} + +bool8 DebugMenu_8077BE4(void) +{ + debug_sub_80986AC(); + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077BF4(void) +{ + debug_sub_80D93F4(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BF94[] = { + {gMoveNames[MOVE_CUT], DebugMenu_8077BB4}, + {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0}, + {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC}, + {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8}, + {gMoveNames[MOVE_SURF], debug_sub_80B0770}, + {gMoveNames[MOVE_FLY], debug_sub_80B07B0}, + {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4}, + {gMoveNames[MOVE_DIVE], debug_sub_80B0800}, + {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4} +}; + +bool8 DebugMenu_8077C00(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF94); +} + +u8 DebugMenu_8077C14(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94)); + gMenuCallback = DebugMenu_8077C00; + return FALSE; +} + +const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const s32 gUnknown_Debug_839BFE8[] = { + 99, 10, 2, 23, + 99, 10, 2, 26 +}; + +#ifdef NONMATCHING +void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + // Register allocation swap + // Intended: r7 = a1, r6 = gUnknown_030006BC[2] + // Observed: r6 = a1, r7 = gUnknown_030006BC[2] + + int i; + + gUnknown_030006BC = gUnknown_Debug_839BFE8; + *a1++ = CHAR_SPACE; + *a1++ = CHAR_SPACE; + + for (i = 0; i < 2; i++, gUnknown_030006BC += 4) + { + u32 r5 = 0; + int r2; + int r4; + for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) + r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; + if (gUnknown_030006BC[0] < r5) + r5 = gUnknown_030006BC[0]; + a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); + } + a1[0] = a0[29] - 'A' + CHAR_A; + if (a1[0] > 0xf6) + a1[0] = 0xf6; + a1[1] = EOS; +} +#else +NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tsl, r0\n" + "\tadd\tr7, r1, #0\n" + "\tldr\tr0, ._271 @ gUnknown_030006BC\n" + "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" + "\tstr\tr1, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr8, r0\n" "._269:\n" - " mov r5, #0x0\n" - " ldr r1, ._271 @ gUnknown_030006BC\n" - " ldr r0, [r1]\n" - " ldr r2, [r0, #0x4]\n" - " mov r4, #0x0\n" - " ldr r1, [r0, #0x8]\n" - " add r3, r3, #0x1\n" - " mov r9, r3\n" - " cmp r5, r1\n" - " bge ._266 @cond_branch\n" - " add r3, r0, #0\n" - " add r6, r1, #0\n" + "\tmov\tr5, #0x0\n" + "\tldr\tr1, ._271 @ gUnknown_030006BC\n" + "\tldr\tr0, [r1]\n" + "\tldr\tr2, [r0, #0x4]\n" + "\tmov\tr4, #0x0\n" + "\tldr\tr1, [r0, #0x8]\n" + "\tadd\tr3, r3, #0x1\n" + "\tmov\tr9, r3\n" + "\tcmp\tr5, r1\n" + "\tbge\t._266\t@cond_branch\n" + "\tadd\tr3, r0, #0\n" + "\tadd\tr6, r1, #0\n" "._267:\n" - " ldr r0, [r3, #0xc]\n" - " add r0, r0, r4\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x30\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " add r4, r4, #0x1\n" - " add r0, r2, #0\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __divsi3\n" - " add r2, r0, #0\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " blt ._267 @cond_branch\n" + "\tldr\tr0, [r3, #0xc]\n" + "\tadd\tr0, r0, r4\n" + "\tadd r0, r0, sl\n" + "\tldrb\tr0, [r0]\n" + "\tsub\tr0, r0, #0x30\n" + "\tmul\tr0, r0, r2\n" + "\tadd\tr5, r5, r0\n" + "\tadd\tr4, r4, #0x1\n" + "\tadd\tr0, r2, #0\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__divsi3\n" + "\tadd\tr2, r0, #0\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tblt\t._267\t@cond_branch\n" "._266:\n" - " mov r0, r8\n" - " ldr r1, [r0]\n" - " ldr r0, [r1]\n" - " cmp r0, r5\n" - " bcs ._268 @cond_branch\n" - " add r5, r0, #0\n" + "\tmov\tr0, r8\n" + "\tldr\tr1, [r0]\n" + "\tldr\tr0, [r1]\n" + "\tcmp\tr0, r5\n" + "\tbcs\t._268\t@cond_branch\n" + "\tadd\tr5, r0, #0\n" "._268:\n" - " ldrb r3, [r1, #0x8]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r7, r0, #0\n" - " mov r3, r9\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x10\n" - " str r0, [r1]\n" - " cmp r3, #0x1\n" - " ble ._269 @cond_branch\n" - " mov r1, sl\n" - " ldrb r0, [r1, #0x1d]\n" - " add r0, r0, #0x7a\n" - " strb r0, [r7]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xf6\n" - " bls ._270 @cond_branch\n" - " mov r0, #0xf6\n" - " strb r0, [r7]\n" + "\tldrb\tr3, [r1, #0x8]\n" + "\tadd\tr0, r7, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x2\n" + "\tbl\tConvertIntToDecimalStringN\n" + "\tadd\tr7, r0, #0\n" + "\tmov\tr3, r9\n" + "\tmov\tr1, r8\n" + "\tldr\tr0, [r1]\n" + "\tadd\tr0, r0, #0x10\n" + "\tstr\tr0, [r1]\n" + "\tcmp\tr3, #0x1\n" + "\tble\t._269\t@cond_branch\n" + "\tmov\tr1, sl\n" + "\tldrb\tr0, [r1, #0x1d]\n" + "\tadd\tr0, r0, #0x7a\n" + "\tstrb\tr0, [r7]\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tcmp\tr0, #0xf6\n" + "\tbls\t._270\t@cond_branch\n" + "\tmov\tr0, #0xf6\n" + "\tstrb\tr0, [r7]\n" "._270:\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x1]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0x1]\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" "._272:\n" - " .align 2, 0\n" + "\t.align\t2, 0\n" "._271:\n" - " .word gUnknown_030006BC \n" - " .word gUnknown_Debug_839BFE8\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8077CF4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._273 @ BuildDateTime\n" - " ldr r6, ._273 + 4 @ gStringVar4\n" - " add r1, r6, #0\n" - " bl DebugMenu_8077C3C\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word BuildDateTime\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D24() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " bl Menu_EraseScreen\n" - " lsl r3, r5, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " sub r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " str r4, [sp, #0x4]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " add r3, r5, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D78() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._275 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._276 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._278 @ gMenuCallback\n" - " lsl r1, r4, #0x3\n" - " add r1, r1, r5\n" - " ldr r1, [r1, #0x4]\n" - " str r1, [r0]\n" - "._275:\n" - " mov r0, #0x0\n" - " b ._277\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gMenuCallback\n" - "._276:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._277:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DB4() -{ - asm( - " push {lr}\n" - " ldr r0, ._282 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._280 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._283:\n" - " .align 2, 0\n" - "._282:\n" - " .word gMain\n" - "._280:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._281:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DD8() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " add r1, r3, #0\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " b ._285\n" - "._284:\n" - " mov r0, #0x40\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " b ._287\n" - "._286:\n" - " mov r0, #0x20\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._288 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - "._285:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r5\n" - " bge ._293 @cond_branch\n" - " strh r2, [r4]\n" - " b ._293\n" - "._288:\n" - " mov r0, #0x10\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " bne ._291 @cond_branch\n" - " mov r0, #0x0\n" - " b ._292\n" - "._291:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - "._287:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r2\n" - " ble ._293 @cond_branch\n" - " strh r5, [r4]\n" - "._293:\n" - " mov r0, #0x1\n" - "._292:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077E40() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " ldr r0, ._297 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._294 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - "._294:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._302\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gMain\n" - "._295:\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._299 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " cmp r4, #0\n" - " beq ._300 @cond_branch\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x0\n" - " b ._302\n" - "._300:\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x1\n" - " b ._302\n" - "._299:\n" - " add r0, r4, #0\n" - "._302:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) + "\t.word\tgUnknown_030006BC \n" + "\t.word\tgUnknown_Debug_839BFE8\n"); +} +#endif + +void debug_sub_8077CF4(u8 x, u8 y) +{ + DebugMenu_8077C3C(BuildDateTime, gStringVar4); + Menu_PrintText(gStringVar4, x, y); +} + +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1); + Menu_PrintItems(1, 1, itemCount, menuAction); + InitMenu(0, 1, 1, itemCount, 0, width - 1); +} + +u8 DebugMenu_8077D78(const struct MenuAction *menuActions) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + Menu_EraseScreen(); + gMenuCallback = menuActions[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 DebugMenu_8077DB4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3) +{ + if (a3 & DPAD_DOWN) + { + *a0 -= 1; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_UP) + { + *a0 += 1; + if (*a0 > a2) + *a0 = a1; + } + else if (a3 & DPAD_LEFT) + { + *a0 -= 10; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_RIGHT) + { + *a0 += 10; + if (*a0 > a2) + *a0 = a1; + } + else + return FALSE; + return TRUE; +} + +int DebugMenu_8077E40(int flag) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return -1; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (flag) + { + DebugMenu_807786C(1); + return 0; + } + else + { + DebugMenu_807786C(0); + return 1; + } + } + return flag; +} + u8 DebugMenu_MakeItems() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl DebugMenu_8077EAC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EAC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._303 @ DebugMenu_8077F40\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xa]\n" - " strh r1, [r0, #0xc]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word DebugMenu_8077F40+1\n" - " .word gTasks\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EE0() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._305 @ gStringVar1\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " bl ItemId_GetName\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F40() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r0, ._307 @ gTasks\n" - " add r4, r4, r0\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4 @ gDebug0x839C008\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" - " str r0, [r4]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._308:\n" - " .align 2, 0\n" - "._307:\n" - " .word gTasks\n" - " .word gDebug0x839C008\n" - " .word DebugMenu_8077F7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F7C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._311 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r3, ._311 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._309 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8 @ Str_839C014\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" - " str r0, [r4]\n" - " b ._317\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gTasks\n" - " .word gMain\n" - " .word Str_839C014\n" - " .word DebugMenu_8077FFC+1\n" - "._309:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " ldr r0, ._315 @ DebugMenu_807806C\n" - " str r0, [r4]\n" - " b ._317\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word DebugMenu_807806C+1\n" - "._313:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xa\n" - " mov r2, #0xae\n" - " lsl r2, r2, #0x1\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x1\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._317 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._317:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077FFC() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._321 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r2, ._321 + 4 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._318 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl AddBagItem\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._320 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._320\n" - "._322:\n" - " .align 2, 0\n" - "._321:\n" - " .word gTasks\n" - " .word gMain\n" - "._318:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._323 @cond_branch\n" - "._320:\n" - " ldr r0, ._325 @ DebugMenu_8077F40\n" - " str r0, [r4]\n" - " b ._327\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word DebugMenu_8077F40+1\n" - "._323:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x1\n" - " mov r2, #0x63\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._327 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._327:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807806C() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl DebugMenu_8077048\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807808C() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff4\n" - " add r4, r0, #0\n" - " sub r0, r4, #1\n" - " cmp r0, #0xc\n" - " bls ._328 @cond_branch\n" - " mov r4, #0x1\n" - "._328:\n" - " lsl r1, r4, #0x5\n" - " ldr r0, ._331 @ gSaveBlock1\n" - " add r5, r1, r0\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4 @ Str_839C01E\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldrh r1, [r5, #0x8]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x4\n" - " bl Menu_PrintText\n" - " add r4, r5, #0\n" - " add r4, r4, #0xb\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._329 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock1+0x2ddc\n" - " .word Str_839C01E\n" - "._329:\n" - " ldr r0, ._335 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._330:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x16\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._333 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - " b ._334\n" - "._336:\n" - " .align 2, 0\n" - "._335:\n" - " .word Str_839C04D\n" - "._333:\n" - " ldr r0, ._337 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - "._334:\n" - " ldrb r1, [r5, #0xa]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " ldr r1, [r5]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x8\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word Str_839C04D\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807817C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._340 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80781A8() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._344 @ gTasks\n" - " add r5, r1, r0\n" - " ldrh r1, [r5, #0x8]\n" - " mov r2, #0x8\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._342 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r5, #0x8]\n" - " b ._343\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - "._342:\n" - " ldr r2, ._348 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._346 @cond_branch\n" - " mov r1, #0x8\n" - " ldsh r0, [r5, r1]\n" - " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" - " str r0, [r5]\n" - " b ._350\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gMain\n" - " .word DebugMenu_807817C+1\n" - "._346:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " ldrh r1, [r2, #0x30]\n" - " mov r3, #0xc0\n" - " and r3, r3, r1\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - "._343:\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._351 @ gStringVar1\n" - " mov r2, #0x8\n" - " ldsh r1, [r5, r2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - "._350:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPortraits() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._353 @ DebugMenu_80781A8\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word DebugMenu_80781A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078254() -{ - asm( - " push {lr}\n" - " bl DebugMenu_807808C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_AllBadges() -{ - asm( - " push {lr}\n" - " ldr r0, ._355 @ 0x807\n" - " bl FlagSet\n" - " ldr r0, ._355 + 4 @ 0x808\n" - " bl FlagSet\n" - " ldr r0, ._355 + 8 @ 0x809\n" - " bl FlagSet\n" - " ldr r0, ._355 + 12 @ 0x80a\n" - " bl FlagSet\n" - " ldr r0, ._355 + 16 @ 0x80b\n" - " bl FlagSet\n" - " ldr r0, ._355 + 20 @ 0x80c\n" - " bl FlagSet\n" - " ldr r0, ._355 + 24 @ 0x80d\n" - " bl FlagSet\n" - " ldr r0, ._355 + 28 @ 0x80e\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word 0x807\n" - " .word 0x808\n" - " .word 0x809\n" - " .word 0x80a\n" - " .word 0x80b\n" - " .word 0x80c\n" - " .word 0x80d\n" - " .word 0x80e\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_TimeRecords() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._357 @ debug_sub_806F9E4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word debug_sub_806F9E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_806F99C\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80782EC() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._359 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4 @ Str_839C053\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gStringVar1\n" - " .word Str_839C053\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078310() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._364 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._361 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._362 @cond_branch\n" - " b ._375\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gTasks+0x8\n" - "._361:\n" - " ldr r0, ._367 @ 0x4024\n" - " bl VarGet\n" - " strh r0, [r4, #0x2]\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._375\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word 0x4024\n" - "._362:\n" - " ldr r3, ._371 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._369 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " ldr r0, ._371 + 4 @ 0x4024\n" - " bl GetVarPointer\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " b ._370\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word gMain\n" - " .word 0x4024\n" - "._369:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._373 @cond_branch\n" - "._370:\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._375\n" - "._373:\n" - " add r0, r4, #2\n" - " ldr r2, ._376 @ 0xffff\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._375 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - "._375:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MiragaIslandRND() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._378 @ DebugMenu_8078310\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._379:\n" - " .align 2, 0\n" - "._378:\n" - " .word DebugMenu_8078310+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80783C8() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._383 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._382 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._383 + 4 @ 0x804\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._381 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " b ._382\n" - "._384:\n" - " .align 2, 0\n" - "._383:\n" - " .word gMain\n" - " .word 0x804\n" - "._381:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - "._382:\n" - " ldr r0, ._388 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._385 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - "._385:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._387\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gMain\n" - "._386:\n" - " mov r0, #0x0\n" - "._387:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleClearFlag() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._390 @ 0x804\n" - " bl FlagGet\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4 @ gMenuCallback\n" - " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word 0x804\n" - " .word gMenuCallback\n" - " .word DebugMenu_80783C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078464() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._396 @ 0x82a\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._392 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._393 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._394 @cond_branch\n" - " b ._401\n" - "._397:\n" - " .align 2, 0\n" - "._396:\n" - " .word 0x82a\n" - "._393:\n" - " cmp r1, #0x1\n" - " beq ._398 @cond_branch\n" - " b ._401\n" - "._392:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " b ._401\n" - "._398:\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._401\n" - "._394:\n" - " mov r0, #0x1\n" - " b ._402\n" - "._401:\n" - " mov r0, #0x0\n" - "._402:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWeatherEvents() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._404 @ 0x82a\n" - " bl FlagGet\n" - " mov r1, #0x0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._403 @cond_branch\n" - " mov r1, #0x1\n" - "._403:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4 @ gMenuCallback\n" - " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._405:\n" - " .align 2, 0\n" - "._404:\n" - " .word 0x82a\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078464+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80784E8() -{ - asm( - " push {lr}\n" - " bl IsMysteryGiftEnabled\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._406 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._407 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._408 @cond_branch\n" - " b ._413\n" - "._407:\n" - " cmp r1, #0x1\n" - " beq ._410 @cond_branch\n" - " b ._413\n" - "._406:\n" - " bl DisableMysteryGift\n" - " b ._413\n" - "._410:\n" - " bl EnableMysteryGift\n" - " b ._413\n" - "._408:\n" - " mov r0, #0x1\n" - " b ._414\n" - "._413:\n" - " mov r0, #0x0\n" - "._414:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMysteryEvent() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl IsMysteryGiftEnabled\n" - " mov r1, #0x0\n" - " cmp r0, #0\n" - " bne ._415 @cond_branch\n" - " mov r1, #0x1\n" - "._415:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._416 @ gMenuCallback\n" - " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._417:\n" - " .align 2, 0\n" - "._416:\n" - " .word gMenuCallback\n" - " .word DebugMenu_80784E8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078550() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " lsl r0, r6, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl GetGameStat\n" - " add r7, r0, #0\n" - " ldr r0, ._420 @ gStringVar1\n" - " add r1, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4 @ gStringVar2\n" - " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" - " lsl r4, r6, #0x3\n" - " add r1, r5, #4\n" - " add r1, r4, r1\n" - " ldr r1, [r1]\n" - " bl StringCopy\n" - " add r4, r4, r5\n" - " ldr r0, [r4]\n" - " cmp r0, #0\n" - " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12 @ gStringVar3\n" - " ldr r1, ._420 + 16 @ Str_839C085\n" - " bl StringCopy\n" - " b ._423\n" - "._421:\n" - " .align 2, 0\n" - "._420:\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gUnknown_Debug_839C26C\n" - " .word gStringVar3\n" - " .word Str_839C085\n" - "._418:\n" - " cmp r6, #0x1\n" - " beq ._422 @cond_branch\n" - " ldr r0, ._424 @ gStringVar3\n" - " add r1, r7, #0\n" - " mov r2, #0x1\n" - " mov r3, #0xa\n" - " bl ConvertIntToDecimalStringN\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gStringVar3\n" - "._422:\n" - " ldr r4, ._426 @ gStringVar3\n" - " lsr r1, r7, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r6, #0xf0\n" - " strb r6, [r4, #0x3]\n" - " add r0, r4, #4\n" - " lsr r1, r7, #0x8\n" - " mov r5, #0xff\n" - " and r1, r1, r5\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " strb r6, [r4, #0x6]\n" - " add r4, r4, #0x7\n" - " and r7, r7, r5\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - "._423:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4 @ Str_839C07C\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar3\n" - " .word Str_839C07C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807860C() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._432 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._428 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._429 @cond_branch\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " b ._447\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gTasks+0x8\n" - "._429:\n" - " cmp r0, #0x2\n" - " beq ._434 @cond_branch\n" - " b ._447\n" - "._430:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - "._441:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._447\n" - "._428:\n" - " ldr r3, ._439 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._437 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " b ._438\n" - "._440:\n" - " .align 2, 0\n" - "._439:\n" - " .word gMain\n" - "._437:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " bne ._441 @cond_branch\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._442 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x32\n" - " bne ._446 @cond_branch\n" - " strh r2, [r4, #0x2]\n" - " b ._446\n" - "._442:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._447 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._446 @cond_branch\n" - " mov r0, #0x31\n" - " strh r0, [r4, #0x2]\n" - "._446:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - " b ._447\n" - "._434:\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._447:\n" - " mov r0, #0x0\n" - "._438:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786C0() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807860C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786D0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " ldr r1, ._450 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " sub r1, r0, #1\n" - " add r0, r2, #0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._449:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._451:\n" - " .align 2, 0\n" - "._450:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078714() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " ldr r1, ._454 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " add r0, r2, #0\n" - " mov r1, #0x0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._453:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._455:\n" - " .align 2, 0\n" - "._454:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078758() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " add r0, r4, #0\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078774() -{ - asm( - " push {lr}\n" - " ldr r0, ._456 @ DebugMenu_80786C0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word DebugMenu_80786C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078788() -{ - asm( - " push {lr}\n" - " ldr r0, ._458 @ DebugMenu_80786D0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._459:\n" - " .align 2, 0\n" - "._458:\n" - " .word DebugMenu_80786D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807879C() -{ - asm( - " push {lr}\n" - " ldr r0, ._460 @ DebugMenu_8078714\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word DebugMenu_8078714+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787B0() -{ - asm( - " push {lr}\n" - " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._463:\n" - " .align 2, 0\n" - "._462:\n" - " .word gUnknown_Debug_839C3FC\n" - "\n" - ); -} - -__attribute__((naked)) + CloseMenu(); + DebugMenu_8077EAC(); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8077EAC(void) +{ + u8 taskId = CreateTask(DebugMenu_8077F40, 80); + Menu_EraseScreen(); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; +} + +void DebugMenu_8077EE0(u16 itemId, u16 quantity) +{ + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); + Menu_PrintText(ItemId_GetName(itemId), 8, 17); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 18, 17); +} + +const u8 gDebug0x839C008[] = _("Which item?"); + +void DebugMenu_8077F40(u8 taskId) +{ + struct Task *task = gTasks + taskId; + Menu_DisplayDialogueFrame(); + Menu_PrintText(gDebug0x839C008, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077F7C; +} + +const u8 Str_839C014[] = _("How many?"); + +void DebugMenu_8077F7C(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C014, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077FFC; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_807806C; + } + else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_8077FFC(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + if (AddBagItem(task->data[1], task->data[2]) == TRUE) + PlaySE(SE_SELECT); + task->func = DebugMenu_8077F40; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_8077F40; + } + else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_807806C(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + DebugMenu_8077048(); +} + +const u8 Str_839C01E[] = _("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう"); +const u8 Str_839C04D[] = _("データなし"); + +void DebugMenu_807808C(u32 a0) +{ + u8 strbuf[11]; + struct ContestWinner *winner; + + if (a0 == 0 || a0 > 13) + a0 = 1; + winner = gSaveBlock1.contestWinners + a0 - 1; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 17); + Menu_PrintText(Str_839C01E, 2, 2); + + ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 2); + + ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 4); + + if (StringLength(winner->nickname) <= 11) + Menu_PrintText(winner->nickname, 11, 6); + else + Menu_PrintText(Str_839C04D, 11, 6); + + if (StringLength(winner->trainerName) <= 11) + Menu_PrintText(winner->trainerName, 11, 8); + else + Menu_PrintText(Str_839C04D, 11, 8); + + ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 10); + + ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8); + Menu_PrintText(strbuf, 11, 12); +} + +void DebugMenu_807817C(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } +} + +void DebugMenu_80781A8(u8 taskId) +{ + struct Task *task = gTasks + taskId; + + if (task->data[0] == 0) + task->data[0]++; + else if (gMain.newKeys & A_BUTTON) + { + DebugMenu_807808C(task->data[0]); + task->func = DebugMenu_807817C; + return; + } + else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + return; + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +u8 DebugMenu_ViewPortraits(void) +{ + CloseMenu(); + CreateTask(DebugMenu_80781A8, 80); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8078254(u32 a0) +{ + DebugMenu_807808C(a0); +} + +u8 DebugMenu_AllBadges(void) +{ + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_TimeRecords(void) +{ + CloseMenu(); + CreateTask(debug_sub_806F9E4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_SetTime(void) +{ + CloseMenu(); + debug_sub_806F99C(); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C053[] = _("Miracle Island emerged\n" + "Random numbers:{STR_VAR_1}"); + +void DebugMenu_80782EC(u16 rnums) +{ + ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4); + sub_8071F40(Str_839C053); +} + +void DebugMenu_8078310(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = VarGet(VAR_MIRAGE_RND_H); + DebugMenu_80782EC(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + *GetVarPointer(VAR_MIRAGE_RND_H) = data[1]; + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_80782EC(data[1]); + break; + } +} + +u8 DebugMenu_MiragaIslandRND(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078310, 80); + ScriptContext2_Enable(); + return TRUE; +} + +bool8 DebugMenu_80783C8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (!FlagGet(FLAG_SYS_GAME_CLEAR)) + { + FlagSet(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(0); + } + else + { + FlagClear(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(1); + } + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ToggleClearFlag(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1); + gMenuCallback = DebugMenu_80783C8; + return FALSE; +} + +bool8 DebugMenu_8078464(void) +{ + switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL))) + { + case 0: + FlagClear(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case 1: + FlagSet(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenWeatherEvents(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE); + gMenuCallback = DebugMenu_8078464; + return FALSE; +} + +bool8 DebugMenu_80784E8(void) +{ + switch (DebugMenu_8077E40(IsMysteryGiftEnabled())) + { + case 0: + DisableMysteryGift(); + return FALSE; + case 1: + EnableMysteryGift(); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenMysteryEvent(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE); + gMenuCallback = DebugMenu_80784E8; + return FALSE; +} + +const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" + "{STR_VAR_3}"); +const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C08E[] = _("Confirmation"); +const u8 Str_839C09B[] = _("Max-1 set"); +const u8 Str_839C0A5[] = _("Zero clear"); +const u8 Str_839C0B0[] = _("レポート"); +const u8 Str_839C0B5[] = _("クリア じかん"); +const u8 Str_839C0BD[] = _("りゅうこう さくせい"); +const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); +const u8 Str_839C0D5[] = _("じてんしゃこうかん"); +const u8 Str_839C0DF[] = _("ほすう"); +const u8 Str_839C0E3[] = _("インタビュー"); +const u8 Str_839C0EA[] = _("バトル"); +const u8 Str_839C0EE[] = _("やせいバトル"); +const u8 Str_839C0F5[] = _("トレーナーバトル"); +const u8 Str_839C0FE[] = _("でんどういり"); +const u8 Str_839C105[] = _("ポケモンほかく"); +const u8 Str_839C10D[] = _("つった かいすう"); +const u8 Str_839C116[] = _("タマゴかえった"); +const u8 Str_839C11E[] = _("しんかした"); +const u8 Str_839C124[] = _("ポケセン かいふく"); +const u8 Str_839C12E[] = _("じたく かいふく"); +const u8 Str_839C137[] = _("サファリ りよう"); +const u8 Str_839C140[] = _("ひでん:いあいぎり"); +const u8 Str_839C14A[] = _("ひでん:いわくだき"); +const u8 Str_839C154[] = _("きち ひっこし"); +const u8 Str_839C15C[] = _("つうしんこうかん"); +const u8 Str_839C165[] = _("つうしんたいせん"); +const u8 Str_839C16E[] = _("つうしん かち"); +const u8 Str_839C176[] = _("つうしん まけ"); +const u8 Str_839C17E[] = _("つうしん ひきわけ"); +const u8 Str_839C188[] = _("わざ:はねる"); +const u8 Str_839C18F[] = _("わざ:わるあがき"); +const u8 Str_839C198[] = _("スロットおおあたりかいすう"); +const u8 Str_839C1A6[] = _("ルーレット れんしょう"); +const u8 Str_839C1B2[] = _("バトルタワー"); +const u8 Str_839C1B9[] = _("バトルタワーかち"); +const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); +const u8 Str_839C1CE[] = _("ポロックさくせい"); +const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); +const u8 Str_839C1E5[] = _("つうしんコンテストかち"); +const u8 Str_839C1F1[] = _("CPUコンテストさんか"); +const u8 Str_839C1FD[] = _("CPUコンテストかち"); +const u8 Str_839C208[] = _("かいもの"); +const u8 Str_839C20D[] = _("ダウジングマシン"); +const u8 Str_839C216[] = _("あめふり"); +const u8 Str_839C21B[] = _("ずかんをみた"); +const u8 Str_839C222[] = _("リボン もらった"); +const u8 Str_839C22B[] = _("だんさ とびおり"); +const u8 Str_839C234[] = _("TVを みた"); +const u8 Str_839C23B[] = _("とけいを みた"); +const u8 Str_839C243[] = _("くじが あたった"); +const u8 Str_839C24C[] = _("ポケモンあずけた"); +const u8 Str_839C255[] = _("ロープウェイりよう"); +const u8 Str_839C25F[] = _("おんせん はいった"); + +const struct { + u32 maxVal; + const u8 * name; +} gUnknown_Debug_839C26C[] = { + {0xFFFFFF, Str_839C0B0}, + {65485627, Str_839C0B5}, + {0xFFFFFF, Str_839C0BD}, + {0xFFFFFF, Str_839C0C8}, + {0xFFFFFF, Str_839C0D5}, + {0xFFFFFF, Str_839C0DF}, + {0xFFFFFF, Str_839C0E3}, + {0xFFFFFF, Str_839C0EA}, + {0xFFFFFF, Str_839C0EE}, + {0xFFFFFF, Str_839C0F5}, + {999, Str_839C0FE}, + {0xFFFFFF, Str_839C105}, + {0xFFFFFF, Str_839C10D}, + {0xFFFFFF, Str_839C116}, + {0xFFFFFF, Str_839C11E}, + {0xFFFFFF, Str_839C124}, + {0xFFFFFF, Str_839C12E}, + {0xFFFFFF, Str_839C137}, + {0xFFFFFF, Str_839C140}, + {0xFFFFFF, Str_839C14A}, + {0xFFFFFF, Str_839C154}, + {0xFFFFFF, Str_839C15C}, + {0xFFFFFF, Str_839C165}, + {9999, Str_839C16E}, + {9999, Str_839C176}, + {9999, Str_839C17E}, + {0xFFFFFF, Str_839C188}, + {0xFFFFFF, Str_839C18F}, + {0xFFFFFF, Str_839C198}, + {0xFFFFFF, Str_839C1A6}, + {0xFFFFFF, Str_839C1B2}, + {0x0, Str_839C1B9}, + {0x0, Str_839C1C2}, + {0xFFFFFF, Str_839C1CE}, + {0xFFFFFF, Str_839C1D7}, + {0xFFFFFF, Str_839C1E5}, + {0xFFFFFF, Str_839C1F1}, + {0xFFFFFF, Str_839C1FD}, + {0xFFFFFF, Str_839C208}, + {0xFFFFFF, Str_839C20D}, + {0xFFFFFF, Str_839C216}, + {0xFFFFFF, Str_839C21B}, + {0xFFFFFF, Str_839C222}, + {0xFFFFFF, Str_839C22B}, + {0xFFFFFF, Str_839C234}, + {0xFFFFFF, Str_839C23B}, + {0xFFFFFF, Str_839C243}, + {0xFFFFFF, Str_839C24C}, + {0xFFFFFF, Str_839C255}, + {0xFFFFFF, Str_839C25F} +}; + +void DebugMenu_8078550(u16 gameStat) +{ + u32 value = GetGameStat(gameStat); + + ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name); + if (gUnknown_Debug_839C26C[gameStat].maxVal == 0) + StringCopy(gStringVar3, Str_839C085); + else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME) + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10); + else + { + ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3); + gStringVar3[3] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + gStringVar3[6] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + } + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C07C, 2, 15); +} + +bool32 DebugMenu_807860C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078550(data[1]); + data[0]++; + return FALSE; + case 1: + if (gMain.newKeys & A_BUTTON) + { + data[0]--; + return TRUE; + } + if (gMain.newKeys & B_BUTTON) + { + data[0]++; + return FALSE; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + data[1]++; + if (data[1] == NUM_GAME_STATS) + data[1] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + data[1]--; + if (data[1] < 0) + data[1] = NUM_GAME_STATS - 1; + } + else + return FALSE; + DebugMenu_8078550(data[1]); + return FALSE; + case 2: + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + return FALSE; + } + return FALSE; +} + +void DebugMenu_80786C0(u8 taskId) +{ + DebugMenu_807860C(taskId); +} + +void DebugMenu_80786D0(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1); + PlaySE(SE_PIN); + } + } +} + +void DebugMenu_8078714(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, 0); + PlaySE(SE_PIN); + } + } +} + +bool8 DebugMenu_8078758(TaskFunc func) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(func, 80); + return TRUE; +} + +bool8 DebugMenu_8078774(void) +{ + return DebugMenu_8078758(DebugMenu_80786C0); +} + +bool8 DebugMenu_8078788(void) +{ + return DebugMenu_8078758(DebugMenu_80786D0); +} + +bool8 DebugMenu_807879C() +{ + return DebugMenu_8078758(DebugMenu_8078714); +} + +const struct MenuAction gUnknown_Debug_839C3FC[] = { + {Str_839C08E, DebugMenu_8078774}, + {Str_839C09B, DebugMenu_8078788}, + {Str_839C0A5, DebugMenu_807879C} +}; + +bool8 DebugMenu_80787B0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C3FC); +} + u8 DebugMenu_OpenLegendsRecord() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4 @ gMenuCallback\n" - " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_839C3FC\n" - " .word gMenuCallback\n" - " .word DebugMenu_80787B0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787EC() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r5, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466 @ gSpecialVar_Result\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 4 @ gStringVar1\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileIdAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 8 @ gStringVar2\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 12 @ gStringVar3\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16 @ gStringVar4\n" - " ldr r1, ._466 + 20 @ Str_839C414\n" - " bl StringExpandPlaceholders\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._467:\n" - " .align 2, 0\n" - "._466:\n" - " .word gSpecialVar_Result\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gStringVar3\n" - " .word gStringVar4\n" - " .word Str_839C414\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078880() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._472 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._468 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._469 @cond_branch\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " b ._480\n" - "._473:\n" - " .align 2, 0\n" - "._472:\n" - " .word gTasks\n" - "._469:\n" - " cmp r0, #0x2\n" - " beq ._474 @cond_branch\n" - " b ._480\n" - "._470:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._476\n" - "._468:\n" - " ldr r0, ._478 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._476:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._480\n" - "._479:\n" - " .align 2, 0\n" - "._478:\n" - " .word gStringVar4\n" - "._474:\n" - " ldr r0, ._481 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._480 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._480:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CellInfo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._483 @ DebugMenu_8078880\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl DebugMenu_80787EC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word DebugMenu_8078880+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenBerryInfo() -{ - asm( - " push {r4, lr}\n" - " bl DebugOpenBerryInfo\n" - " add r4, r0, #0\n" - " cmp r4, #0\n" - " bne ._485 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._486\n" - "._485:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._487 @ gMenuCallback\n" - " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - "._486:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078950() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489 @ Str_839C42E\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word Str_839C42E\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078968() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._493 @ gStringVar1\n" - " mov r1, #0x32\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._492\n" - "._494:\n" - " .align 2, 0\n" - "._493:\n" - " .word gStringVar1\n" - "._491:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x64\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - "._492:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789A4() -{ - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._497 @ gStringVar1\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._498:\n" - " .align 2, 0\n" - "._497:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789CC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._499 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r0, ._499 + 4 @ gSaveBlock2\n" - " ldr r1, ._499 + 8 @ 0x55c\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r5, #0x2]\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r5]\n" - " bl DebugMenu_8078968\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078A14() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r4, r1, #0x3\n" - " ldr r5, ._504 @ gTasks\n" - " add r2, r4, r5\n" - " ldr r0, ._504 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xc0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._501 @cond_branch\n" - " mov r1, #0x0\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " cmp r0, #0\n" - " bne ._502 @cond_branch\n" - " mov r1, #0x1\n" - "._502:\n" - " strh r1, [r2]\n" - " ldrh r0, [r2]\n" - " bl DebugMenu_8078968\n" - " b ._510\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._501:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._506 @cond_branch\n" - " ldr r1, ._508 @ gSaveBlock2\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4 @ 0x55c\n" - " add r1, r1, r3\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x2]\n" - " ldrh r0, [r2, #0x2]\n" - " bl DebugMenu_80789A4\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" - " b ._507\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078AA4+1\n" - "._506:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._510 @cond_branch\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._511 @ DebugMenu_8078B38\n" - "._507:\n" - " str r1, [r0]\n" - "._510:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word DebugMenu_8078B38+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078AA4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r7, ._515 @ gTasks\n" - " add r4, r5, r7\n" - " add r0, r4, #2\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4 @ gMain\n" - " ldrh r3, [r6, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._513 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80789A4\n" - " b ._521\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._513:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._517 @cond_branch\n" - " ldr r1, ._519 @ gSaveBlock2\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4 @ 0x55c\n" - " add r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" - " b ._518\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078B38+1\n" - "._517:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._521 @cond_branch\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r4]\n" - " bl DebugMenu_8078968\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._522 @ DebugMenu_8078A14\n" - "._518:\n" - " str r1, [r0]\n" - "._521:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B38() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleTowerStages() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._524 @ DebugMenu_80789CC\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._525:\n" - " .align 2, 0\n" - "._524:\n" - " .word DebugMenu_80789CC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B70() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._526 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4 @ Str_839C438\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gStringVar1\n" - " .word Str_839C438\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B94() -{ - asm( - " push {r4, r5, lr}\n" - " mov r3, #0x0\n" - " ldr r1, ._531 @ gUnknown_Debug_839C444\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4 @ gSaveBlock1\n" - " add r4, r1, #0\n" - "._530:\n" - " lsl r0, r3, #0x3\n" - " add r2, r0, r5\n" - " add r0, r0, r4\n" - " ldr r1, [r0, #0x4]\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x27\n" - " bhi ._529 @cond_branch\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._530 @cond_branch\n" - "._529:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word gUnknown_Debug_839C444\n" - " .word gSaveBlock1+0x7f8\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078BD4() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._536 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._533 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._534 @cond_branch\n" - " b ._545\n" - "._537:\n" - " .align 2, 0\n" - "._536:\n" - " .word gTasks+0x8\n" - "._533:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._545\n" - "._534:\n" - " ldr r2, ._541 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " bl DebugMenu_8078B94\n" - " b ._545\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMain\n" - "._539:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._543 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._545\n" - "._543:\n" - " add r0, r4, #2\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x0\n" - " mov r2, #0x4\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._545 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - "._545:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC)); + gMenuCallback = DebugMenu_80787B0; + return FALSE; +} + +const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" + "CODE:{STR_VAR_2}"); + +void DebugMenu_80787EC(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y); + ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetMetatileIdAt(x, y); + ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetZCoordAt(x, y); + ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, Str_839C414); +} + +void DebugMenu_8078880(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gStringVar4, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_CellInfo(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078880, 80); + DebugMenu_80787EC(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenBerryInfo(void) +{ + const u8 * berryInfo = DebugOpenBerryInfo(); + if (berryInfo != NULL) + { + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintText(berryInfo, 1, 1); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; + } + CloseMenu(); + return TRUE; +} + +const u8 Str_839C42E[] = _("レベル ステージ"); + +void DebugMenu_8078950(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C42E, 4, 15); +} + +void DebugMenu_8078968(u16 flag) +{ + if (flag == 0) + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3); + else + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +void DebugMenu_80789A4(u16 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_80789CC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + data[0] = 0; + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0]; + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; +} + +void DebugMenu_8078A14(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (gMain.newKeys & (DPAD_UP | DPAD_DOWN)) + { + data[0] = data[0] == 0 ? 1 : 0; + DebugMenu_8078968(data[0]); + } + else if (gMain.newKeys & A_BUTTON) + { + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]]; + DebugMenu_80789A4(data[1]); + gTasks[taskId].func = DebugMenu_8078AA4; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8078B38; + } +} + +void DebugMenu_8078AA4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_80789A4(data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8078B38; + } + else if (gMain.newKeys & B_BUTTON) + { + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; + } +} + +void DebugMenu_8078B38(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_BattleTowerStages(void) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(DebugMenu_80789CC, 80); + return TRUE; +} + +const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); + +void DebugMenu_8078B70(u16 value) +{ + ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + sub_8071F40(Str_839C438); +} + +const struct Pokeblock gUnknown_Debug_839C444[] = { + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {} +}; + +void DebugMenu_8078B94(void) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++) + { + if (gUnknown_Debug_839C444[i].color == 0) + break; + gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i]; + } +} + +void DebugMenu_8078BD4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078B70(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + DebugMenu_8078B94(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8078B70(data[1]); + } + break; + } +} + u8 DebugMenu_CheckPKBLCK() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._546 @ DebugMenu_8078BD4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._547:\n" - " .align 2, 0\n" - "._546:\n" - " .word DebugMenu_8078BD4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078C80() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548 @ Str_839C5A4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._548 + 4 @ gMenuCallback\n" - " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._549:\n" - " .align 2, 0\n" - "._548:\n" - " .word Str_839C5A4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CA8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CA8() -{ - asm( - " push {lr}\n" - " ldr r0, ._552 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4 @ gMenuCallback\n" - " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " b ._555\n" - "._553:\n" - " .align 2, 0\n" - "._552:\n" - " .word gMain\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CE4+1\n" - "._550:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._554 @cond_branch\n" - " mov r0, #0x0\n" - " b ._555\n" - "._554:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._555:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CE4() -{ - asm( - " push {lr}\n" - " ldr r1, ._558 @ \n" - " mov r2, #0x80\n" - " lsl r2, r2, #0xa\n" - " mov r0, #0x0\n" - " bl DebugMenu_8078E40\n" - " cmp r0, #0x1\n" - " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4 @ \n" - " ldr r1, ._558 + 8 @ \n" - " bl StringCopy\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5CC\n" - "._556:\n" - " ldr r0, ._560 @ gStringVar4\n" - " ldr r1, ._560 + 4 @ Str_839C5DF\n" - " bl StringCopy\n" - "._557:\n" - " ldr r1, ._560 + 8 @ gMenuCallback\n" - " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gStringVar4\n" - " .word Str_839C5DF\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D30() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r5, ._563 @ \n" - " mov r4, #0x0\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x5\n" - "._562:\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E68\n" - " add r5, r5, r6\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x1f\n" - " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4 @ \n" - " ldr r1, ._563 + 8 @ \n" - " bl StringCopy\n" - " ldr r1, ._563 + 12 @ \n" - " ldr r0, ._563 + 16 @ \n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5D6\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D7C() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._565 + 4 @ gMenuCallback\n" - " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gStringVar4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DA4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._569 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._567 @cond_branch\n" - " mov r0, #0x0\n" - " b ._568\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gMain\n" - "._567:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._568:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MeTooBackupMan() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._571 @ gUnknown_Debug_839C594\n" - " mov r1, #0xc\n" - " mov r2, #0x2\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4 @ gMenuCallback\n" - " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_839C594\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DF0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DF0() -{ - asm( - " push {lr}\n" - " ldr r0, ._573 @ gUnknown_Debug_839C594\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._574:\n" - " .align 2, 0\n" - "._573:\n" - " .word gUnknown_Debug_839C594\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E04() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._575\n" - "._577:\n" - " ldr r0, ._579 @ 0xfffff000\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._575:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._576 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._577 @cond_branch\n" - " mov r0, #0x1\n" - " b ._578\n" - "._580:\n" - " .align 2, 0\n" - "._579:\n" - " .word 0xfffff000\n" - "._576:\n" - " mov r0, #0x0\n" - "._578:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E40() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E04\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E68() -{ - asm( - " push {r4, lr}\n" - " add r4, r1, #0\n" - " add r3, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl ReadFlash\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E80() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " mov r0, #0x2\n" - " mov r1, #0xf\n" - " mov r2, #0x16\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x4]\n" - " mov r0, #0xd0\n" - " mov r2, #0xf\n" - " bl sub_8071F60\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078EB0() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " ldr r4, ._583 @ gStringVar1\n" - " mov r0, #0x2\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x4\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x6\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._584:\n" - " .align 2, 0\n" - "._583:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F1C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._585 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._585 + 4 @ gSaveBlock2\n" - " ldrh r0, [r1, #0xe]\n" - " strh r0, [r5, #0x2]\n" - " ldrb r0, [r1, #0x10]\n" - " strh r0, [r5, #0x4]\n" - " ldrb r0, [r1, #0x11]\n" - " strh r0, [r5, #0x6]\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078EB0\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078E80\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._586:\n" - " .align 2, 0\n" - "._585:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word DebugMenu_8078F68+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F68() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r6, ._589 @ gTasks\n" - " add r4, r5, r6\n" - " ldr r3, ._589 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8 @ gSaveBlock2\n" - " ldrh r0, [r4, #0x2]\n" - " strh r0, [r1, #0xe]\n" - " ldrh r0, [r4, #0x4]\n" - " strb r0, [r1, #0x10]\n" - " ldrh r0, [r4, #0x6]\n" - " strb r0, [r1, #0x11]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - " .word gSaveBlock2\n" - "._587:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._591 @cond_branch\n" - "._588:\n" - " add r0, r6, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._593 @ DebugMenu_8079020\n" - " str r1, [r0]\n" - " b ._601\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word DebugMenu_8079020+1\n" - "._591:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " beq ._601 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._597\n" - "._595:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._598 @cond_branch\n" - " ldrh r0, [r4]\n" - " cmp r0, #0x1\n" - " bhi ._601 @cond_branch\n" - " add r0, r0, #0x1\n" - "._597:\n" - " strh r0, [r4]\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078E80\n" - " b ._601\n" - "._598:\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r2, r2, #0x3\n" - " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" - " add r2, r2, r0\n" - " ldrb r0, [r2, #0x5]\n" - " lsl r0, r0, #0x1\n" - " add r0, r4, r0\n" - " ldrh r1, [r2]\n" - " ldrh r2, [r2, #0x2]\n" - " ldrh r3, [r3, #0x30]\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._601 @cond_branch\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078EB0\n" - "._601:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._603:\n" - " .align 2, 0\n" - "._602:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079020() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_PTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._604 @ DebugMenu_8078F1C\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word DebugMenu_8078F1C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079058() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._610 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._606 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._607 @cond_branch\n" - " cmp r1, #0\n" - " beq ._608 @cond_branch\n" - " b ._620\n" - "._611:\n" - " .align 2, 0\n" - "._610:\n" - " .word gTasks\n" - "._607:\n" - " cmp r1, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._620\n" - "._608:\n" - " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" - " str r1, [r0]\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._614\n" - "._616:\n" - " .align 2, 0\n" - "._615:\n" - " .word gUnknown_Debug_03004BD0\n" - "._606:\n" - " ldr r0, ._618 @ gDebug0x839C60C\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x14\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - "._614:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._620\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gDebug0x839C60C\n" - "._612:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._620 @cond_branch\n" - " cmp r1, #0\n" - " bne ._621 @cond_branch\n" - " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x1\n" - " b ._622\n" - "._624:\n" - " .align 2, 0\n" - "._623:\n" - " .word gUnknown_Debug_03004BD0\n" - "._621:\n" - " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x0\n" - "._622:\n" - " str r0, [r1]\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._620:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._626:\n" - " .align 2, 0\n" - "._625:\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMurakawa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._627 @ DebugMenu_8079058\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._628:\n" - " .align 2, 0\n" - "._627:\n" - " .word DebugMenu_8079058+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079110() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._633 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._629 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._630 @cond_branch\n" - " cmp r0, #0\n" - " beq ._631 @cond_branch\n" - " b ._642\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word gTasks\n" - "._630:\n" - " cmp r0, #0x2\n" - " beq ._635 @cond_branch\n" - " b ._642\n" - "._631:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._637\n" - "._629:\n" - " ldr r0, ._639 @ Str_839C61A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - "._637:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._642\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word Str_839C61A\n" - "._635:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r0, ._643 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._642:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._644:\n" - " .align 2, 0\n" - "._643:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKiwa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._645 @ DebugMenu_8079110\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r1}\n" - " bx r1\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word DebugMenu_8079110+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078BD4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C574[] = _("write to flash"); +const u8 Str_839C583[] = _("read from flash"); + +const struct MenuAction gUnknown_Debug_839C594[] = { + {Str_839C574, DebugMenu_8078C80}, + {Str_839C583, DebugMenu_8078D30} +}; + +const u8 Str_839C5A4[] = _("Press A, begin to write\n" + "Press B, cancel"); + +bool8 DebugMenu_8078C80(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C5A4, 2, 15); + gMenuCallback = DebugMenu_8078CA8; + return FALSE; +} + +bool8 DebugMenu_8078CA8(void) +{ + if (gMain.newKeys & A_BUTTON) + { + gMenuCallback = DebugMenu_8078CE4; + return FALSE; + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +const u8 Str_839C5CC[] =_("かきこみ せいこう"); +const u8 Str_839C5D6[] =_("よみこみせいこう"); +const u8 Str_839C5DF[] =_("かきこみ しっぱい"); +const u8 Str_839C5E9[] =_("よみこみ しっぱい"); + +bool8 DebugMenu_8078CE4(void) +{ + if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE) + StringCopy(gStringVar4, Str_839C5CC); + else + StringCopy(gStringVar4, Str_839C5DF); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D30(void) +{ + u8 * data = gSharedMem; + u8 i; + + for (i = 0; i < 32; i++) + { + DebugMenu_8078E68(i, data, 0x1000); + data += 0x1000; + } + StringCopy(gStringVar4, Str_839C5D6); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D7C(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 2, 15); + gMenuCallback = DebugMenu_8078DA4; + return FALSE; +} + +bool8 DebugMenu_8078DA4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_MeTooBackupMan(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594)); + gMenuCallback = DebugMenu_8078DF0; + return FALSE; +} + +bool8 DebugMenu_8078DF0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C594); +} + +bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) +{ + while (1) + { + if (ProgramFlashSectorAndVerify(a0, a1)) + return FALSE; + if (a2 <= 0x1000) + break; + a2 -= 0x1000; + a1 += 0x1000; + a0++; + } + return TRUE; +} + +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) +{ + bool32 result; + m4aSoundVSyncOff(); + result = DebugMenu_8078E04(a0, a1, a2); + m4aSoundVSyncOn(); + return result; +} + +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) +{ + ReadFlash(a0, 0, a1, a2); +} + +struct GameTimeDebugMenuStruct { + u16 unk0; + u16 unk2; + u8 unk4; + u8 unk5; +}; + +const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = { + {0, 999, 2, 1}, + {0, 59, 6, 2}, + {0, 59, 9, 3} +}; + +void DebugMenu_8078E80(s16 * a0) +{ + Menu_BlankWindowRect(2, 15, 22, 16); + sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15); +} + +void DebugMenu_8078EB0(s16 * a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 17); + sub_8071F60(0xf0, 5, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 6, 17); + sub_8071F60(0xf0, 8, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_8078F1C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0] = 0; + data[1] = gSaveBlock2.playTimeHours; + data[2] = gSaveBlock2.playTimeMinutes; + data[3] = gSaveBlock2.playTimeSeconds; + + Menu_DisplayDialogueFrame(); + DebugMenu_8078EB0(data); + DebugMenu_8078E80(data); + gTasks[taskId].func = DebugMenu_8078F68; +} + +void DebugMenu_8078F68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.playTimeHours = data[1]; + gSaveBlock2.playTimeMinutes = data[2]; + gSaveBlock2.playTimeSeconds = data[3]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & DPAD_LEFT) + { + if ((u16)data[0] > 0) + { + data[0]--; + DebugMenu_8078E80(data); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if ((u16)data[0] < 2) + { + data[0]++; + DebugMenu_8078E80(data); + } + } + else + { + const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0]; + if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_8078EB0(data); + } +} + +void DebugMenu_8079020(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_PTime(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078F1C, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 gDebug0x839C60C[] = _("Set FLASH ERR"); + +void DebugMenu_8079058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gUnknown_Debug_03004BD0 = 0; + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gDebug0x839C60C, 4, 15); + DisplayYesNoMenu(20, 8, 1); + gTasks[taskId].data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrap_()) + { + case -2: + return; + case 0: + gUnknown_Debug_03004BD0 = 1; + break; + default: + gUnknown_Debug_03004BD0 = 0; + break; + } + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +u8 DebugMenu_OpenMurakawa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079058, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p" + "Tableaux des verbes du 2{SUPER_E} groupe.\p" + "La1{SUPER_RE} chose à apprendre c’est de lire.\p" + "Tableaux des verbes du 1{SUPER_ER} groupe.\p" + "“あいうえおかきくけコさしすせそたちつてとな”\n" + "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" + "をんゃゅょアイウエオカキクケサシスルレロワ,"); + +void DebugMenu_8079110(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + MenuPrintMessage(Str_839C61A, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_OpenKiwa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079110, 80); + ScriptContext2_Enable(); + // return TRUE; } #endif diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 3d4637746..40df600fa 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -4161,7 +4161,7 @@ static void PicTest_Redraw(u8 a0) } } #else -__attribute__((naked)) void PicTest_Redraw(u8 a0) +NAKED void PicTest_Redraw(u8 a0) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" "\tmov\tr7, r8\n" diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index ef3e0e66c..787e456d2 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -30,7 +30,7 @@ const struct MenuAction gUnknown_0842C29C[] = { {UnknownString_8thRound, sub_814A4B8} }; -int unref_sub_814A414(void) +int InitSogabeDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); diff --git a/src/decoration.c b/src/decoration.c index 477414993..b00a51ef0 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1856,7 +1856,7 @@ void sub_80FECE0(u8 decoCat) sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); } #elif GERMAN -__attribute__((naked)) +NAKED void sub_80FECE0(u8 decoCat) { asm(".syntax unified\n\ @@ -2575,7 +2575,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) { asm(".syntax unified\n" @@ -4036,7 +4036,7 @@ void sub_8101460(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_8101460(u8 taskId) { asm(".syntax unified\n" diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index ed6a97ba2..01290daba 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2133,7 +2133,7 @@ u16 sub_80EAE88(u8 group) } #if GERMAN -__attribute__((naked)) +NAKED void sub_80EAECC(void) { asm(".syntax unified\n\ diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 5bba69f86..43dfa6864 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -317,7 +317,7 @@ static bool8 sub_8042ABC(void* a, u8 b) } #else -__attribute__((naked)) +NAKED static bool8 sub_8042ABC(void* a, u8 b) { asm(".syntax unified\n\ diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 155ce33f5..3fb611433 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8145,7 +8145,7 @@ void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) +NAKED void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/evolution_scene.c b/src/evolution_scene.c index a3a5dbcec..4fdbeb60f 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -1511,7 +1511,7 @@ void unref_sub_8113B50(u8 *a, u8 *b) #undef sp4 } */ -__attribute__((naked)) +NAKED void unref_sub_8113B50() { asm(".syntax unified\n\ @@ -2436,7 +2436,7 @@ void sub_811430C(u32 a, u32 b) sEvoInfo.unk90C4[b][a] = r7 * 16; } -__attribute__((naked)) +NAKED void unref_sub_81143CC() { asm(".syntax unified\n\ @@ -3688,7 +3688,7 @@ void sub_8114DF0(u32 a, u8 b) } } -__attribute__((naked)) +NAKED void sub_8114E48() { asm(".syntax unified\n\ diff --git a/src/field_effect.c b/src/field_effect.c index f85bc520e..ae0acf1a0 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -601,7 +601,7 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) gPlttBufferFaded[i] = RGB(curRed, curGreen, curBlue); } #else -__attribute__((naked)) +NAKED void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -676,7 +676,7 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) ".syntax divided"); } -__attribute__((naked)) +NAKED void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -2607,7 +2607,7 @@ bool8 sub_8088708(struct Task *task) return FALSE; } #else -__attribute__((naked)) +NAKED bool8 sub_8088708(struct Task *task) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index bc4a1770e..216f39d62 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1024,7 +1024,7 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +NAKED static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -1496,7 +1496,7 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) } } #else -__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) { asm_unified("\tpush {r4-r7,lr}\n" "\tadds r6, r0, 0\n" diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index a7087be0f..4a4122641 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -512,7 +512,7 @@ void sub_80810DC(void) #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80888D8() { asm("\ diff --git a/src/field_specials.c b/src/field_specials.c index 715086f00..eff623548 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1172,7 +1172,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1630,7 +1630,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_tasks.c b/src/field_tasks.c index ce5fc6c0e..e4f1aadf2 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -213,7 +213,7 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 } } #else -__attribute__((naked)) +NAKED void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/item.c b/src/item.c index 41cbb7a1e..e6294884b 100644 --- a/src/item.c +++ b/src/item.c @@ -239,7 +239,7 @@ bool8 AddBagItem(u16 itemId, u16 count) return TRUE; } //#else -//__attribute__((naked)) +//NAKED //bool8 AddBagItem(u16 itemId, u16 count) //{ // asm(".syntax unified\n\ diff --git a/src/item_menu.c b/src/item_menu.c index 981f42282..a5748cdab 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1278,7 +1278,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) } } #else -__attribute__((naked)) +NAKED static void sub_80A4548(u16 a, int b, int c, int d) { asm(".syntax unified\n\ @@ -2102,7 +2102,7 @@ static void sub_80A5414(u8 taskId) } } #else -__attribute__((naked)) +NAKED static void sub_80A5414(u8 taskId) { asm(".syntax unified\n\ @@ -2337,7 +2337,7 @@ _080A55FA:\n\ } #endif -__attribute__((naked)) +NAKED static void sub_80A5600(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/item_use.c b/src/item_use.c index a14abbe3e..19c298850 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -439,7 +439,7 @@ void sub_80C9720(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80C9720(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/mauville_man.c b/src/mauville_man.c index a68d5071d..088085851 100644 --- a/src/mauville_man.c +++ b/src/mauville_man.c @@ -557,7 +557,7 @@ static const u16 gUnknown_083E53C8[][2] = {0x15, 0}, }; -__attribute__((naked)) +NAKED static void sub_80F7DC0(void) { asm(".syntax unified\n\ diff --git a/src/menu.c b/src/menu.c index 86e20d0eb..9abcf66d1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -581,20 +581,20 @@ u8 Menu_GetColumnXCoord(u8 column) return gMenu.columnXCoords[column]; } -void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) +void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const void * menuItems) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[i].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[i].text, left, top + 2 * i); } -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[order[i]].text, left, top + 2 * i); } void InitYesNoMenu(u8 left, u8 top, u8 a3) @@ -644,7 +644,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); } #elif GERMAN -__attribute__((naked)) +NAKED int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { asm(".syntax unified\n\ diff --git a/src/menu_cursor.c b/src/menu_cursor.c index f2eb31f16..32578d1a4 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -236,7 +236,7 @@ void sub_814A958(u8 a) SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7); } #else -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ @@ -419,7 +419,7 @@ _0814AAB8: .4byte gUnknown_0203A3D1\n\ } #endif #elif GERMAN -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ diff --git a/src/money.c b/src/money.c index 3b7268dbc..1081d5063 100644 --- a/src/money.c +++ b/src/money.c @@ -176,7 +176,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) #endif } -__attribute__((naked)) +NAKED void Draw10000Sprite(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 56801ff53..1ea177f2e 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -15,6 +15,7 @@ #include "text.h" #include "title_screen.h" #include "ewram.h" +#include "debug.h" static EWRAM_DATA u8 gUnknown_02039338 = 0; @@ -347,8 +348,6 @@ static const u8 Str_843DA84[] = _("LR: select A: send。"); static const u8 Str_843DA98[] = _("sending。。。"); static const u8 Str_843DAA3[] = _("completed。"); -extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[]; -extern const u8 gUnknown_Debug_842E350; void debug_sub_815D1D8(); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 6fcad66ac..58f7f8627 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -114,8 +114,9 @@ static void SetWord(u8 *ptr, u32 val) ptr[3] = val >> 24; } -bool8 unref_sub_81261B4(u8 *a1, int a2) +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; @@ -128,8 +129,9 @@ bool8 unref_sub_81261B4(u8 *a1, int a2) return FALSE; } -bool8 unref_sub_812620C(u8 *a1, int a2) +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; diff --git a/src/option_menu.c b/src/option_menu.c index a2d32ffb6..8a46e48d9 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -463,7 +463,7 @@ static void FrameType_DrawChoices(u8 selection) Menu_PrintText(text, 18, 15); } #elif GERMAN -__attribute__((naked)) +NAKED static void FrameType_DrawChoices(u8 selection) { asm(".syntax unified\n\ diff --git a/src/party_menu.c b/src/party_menu.c index 9caaa05b9..b9d3796f1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1007,7 +1007,7 @@ void sub_806B908(void) ewram1B000.unk261 = 2; } #else -__attribute__((naked)) +NAKED void sub_806B908(void) { asm(".syntax unified\n\ @@ -1326,7 +1326,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId) return gMain.newAndRepeatedKeys; } #else -__attribute__((naked)) +NAKED u16 HandleDefaultPartyMenuInput(u8 taskId) { asm(".syntax unified\n\ @@ -1810,7 +1810,7 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire } #else -__attribute__((naked)) +NAKED void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) { asm(".syntax unified\n\ @@ -2408,7 +2408,7 @@ void sub_806CF04(void) gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; } #else -__attribute__((naked)) +NAKED void sub_806CF04(void) { asm(".syntax unified\n\ @@ -2986,7 +2986,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); } #else -__attribute__((naked)) +NAKED void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) { asm(".syntax unified\n\ @@ -3172,7 +3172,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex) } } #else -__attribute__((naked)) +NAKED void SetHeldItemIconVisibility(u8 a, u8 monIndex) { asm(".syntax unified\n\ @@ -5111,7 +5111,7 @@ u8 GetItemEffectType(u16 item) } } #else -__attribute__((naked)) +NAKED u8 GetItemEffectType(u16 item) { asm(".syntax unified\n\ diff --git a/src/pokedex.c b/src/pokedex.c index d90b73178..61f2bfbba 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3522,7 +3522,7 @@ static void sub_8090584(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090584(u8 a, u16 b) { asm(".syntax unified\n\ @@ -3666,7 +3666,7 @@ static void sub_8090644(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090644(u8 a, u16 b) { asm(".syntax unified\n\ @@ -5120,7 +5120,7 @@ void sub_8092810(u8 a, u8 b, u8 c, u8 d) } } #else -__attribute__((naked)) +NAKED void sub_8092810(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 1ea8bc205..770b69813 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -405,7 +405,7 @@ void ResetPokemonStorageSystem(void) } #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80A3904(void) { asm("\ diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 0331abf3e..0905c185b 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -1564,7 +1564,7 @@ const struct SpriteTemplate gSpriteTemplate_83B6DDC = { 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -__attribute__((naked)) void sub_80980D4(void) +NAKED void sub_80980D4(void) { asm_unified("\tpush {r4,r5,lr}\n" "\tsub sp, 0x28\n" diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 2f9f79a54..2383ac46c 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -519,7 +519,7 @@ void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) } } #else -__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) +NAKED void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -808,7 +808,7 @@ void sub_809A14C(u16 *vdest) } } #else -__attribute__((naked)) void sub_809A14C(u16 *vdest) +NAKED void sub_809A14C(u16 *vdest) { asm_unified("\tpush {r4-r6,lr}\n" "\tadds r2, r0, 0\n" @@ -2214,7 +2214,7 @@ u8 sub_809C464(void) return r9; } #else -__attribute__((naked)) u8 sub_809C464(void) +NAKED u8 sub_809C464(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -2584,7 +2584,7 @@ u8 sub_809C664(void) return r8; } #else -__attribute__((naked)) u8 sub_809C664(void) +NAKED u8 sub_809C664(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 75ddb52d0..f8f075296 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1227,7 +1227,7 @@ static void sub_809E83C(u8 taskId, s8 b) sub_80A2078(taskId); } -__attribute__((naked)) +NAKED static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/) { asm(".syntax unified\n\ @@ -1766,7 +1766,7 @@ static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) } } #else -__attribute__((naked)) +NAKED static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) { asm(".syntax unified\n\ @@ -1897,7 +1897,7 @@ s8 sub_809F284(s8 a) } } #else -__attribute__((naked)) +NAKED s8 sub_809F284(s8 a) { asm(".syntax unified\n\ @@ -2316,7 +2316,7 @@ u8 sub_809FA30(void) // vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80; // vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81; // } -__attribute__((naked)) +NAKED void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ @@ -2840,7 +2840,7 @@ static void sub_80A057C(u16 move) } } #else -__attribute__((naked)) +NAKED static void sub_80A057C(u16 move) { asm(".syntax unified\n\ @@ -3463,7 +3463,7 @@ static void DrawSummaryScreenNavigationDots(void) DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } #else -__attribute__((naked)) +NAKED static void DrawSummaryScreenNavigationDots(void) { asm(".syntax unified\n\ @@ -3646,7 +3646,7 @@ _080A1044: .4byte 0x0600e056\n\ } #endif // NONMATCHING -__attribute__((naked)) +NAKED void sub_80A1048(u8 taskId) { asm(".syntax unified\n\ @@ -4049,7 +4049,7 @@ static void sub_80A12D0(s8 a) // DestroyTask(taskId); // } // } -__attribute__((naked)) +NAKED static void sub_80A1334(u8 taskId) { asm(".syntax unified\n\ @@ -4245,7 +4245,7 @@ static void sub_80A1488(s8 a, u8 b) gTasks[taskId].data[3] = b; } -__attribute__((naked)) +NAKED static void sub_80A1500(u8 taskId) { asm(".syntax unified\n\ @@ -4487,7 +4487,7 @@ static void sub_80A16CC(u8 a) } } #else -__attribute__((naked)) +NAKED static void sub_80A16CC(u8 a) { asm(".syntax unified\n\ @@ -4884,7 +4884,7 @@ void sub_80A1D18(void) StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2); } #else -__attribute__((naked)) +NAKED void sub_80A1D18(void) { asm(".syntax unified\n\ diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 55cf05790..8684f2155 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -1793,7 +1793,7 @@ label2: } #else #if DEBUG -__attribute__((naked)) +NAKED void sub_80ED858() { asm("\ @@ -2216,7 +2216,7 @@ void sub_80ED858() .word 0xfbd"); } #else -__attribute__((naked)) +NAKED void sub_80ED858() { asm_unified("push {r4,r5,lr}\n\ @@ -3277,7 +3277,7 @@ bool8 sub_80EEA0C() { } } #else -__attribute__((naked)) +NAKED bool8 sub_80EEA0C() { asm_unified( "push {r4,lr}\n\ @@ -3969,7 +3969,7 @@ void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) } } #else -__attribute__((naked)) +NAKED void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) { asm(".syntax unified\n\ @@ -4713,7 +4713,7 @@ bool8 sub_80F02A0(void) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80F02A0(void) { asm(".syntax unified\n\ diff --git a/src/record_mixing.c b/src/record_mixing.c index a2660bf82..0eb13899e 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -635,7 +635,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) SeedRng(sp40); } #else -__attribute__((naked)) +NAKED void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) { asm(".syntax unified\n\ diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 69f655a65..f5e8fa99a 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -923,7 +923,7 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) return 1; } #else -__attribute__((naked)) +NAKED static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ diff --git a/src/roulette.c b/src/roulette.c index 5e7517d79..b278521b1 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -2733,7 +2733,7 @@ void sub_811952C(struct Sprite *sprite) sprite->callback = sub_8118CEC; } #else -__attribute__((naked)) +NAKED void sub_811952C(struct Sprite *sprite) { asm_unified("push {r4-r7,lr}\n" diff --git a/src/safari_zone.c b/src/safari_zone.c index f371b08b3..7cc8e16a0 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -236,7 +236,7 @@ static void DecrementFeederStepCounters(void) } } -bool8 unref_sub_80C853C(void) +bool32 debug_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); diff --git a/src/save.c b/src/save.c index 0b7a3dd79..0df83200a 100644 --- a/src/save.c +++ b/src/save.c @@ -927,3 +927,6 @@ u8 unref_sub_8126080(u8 sector, u8 *data) ReadFlash(sector, 0, data, sizeof(struct SaveSector)); return 1; } + +asm(".section .rodata\n" + "\t.align 2"); diff --git a/src/script_menu.c b/src/script_menu.c index 9d901a03c..615004be3 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -930,7 +930,7 @@ void ScriptMenu_CreatePCMenu(void) StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } #elif GERMAN -__attribute__((naked)) +NAKED void ScriptMenu_CreatePCMenu(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/secret_base.c b/src/secret_base.c index 210d49835..3c4028dca 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -694,7 +694,7 @@ void sub_80BC300(void) } } #else -__attribute__((naked)) +NAKED void sub_80BC300(void) { asm(".syntax unified\n\ diff --git a/src/shop.c b/src/shop.c index 42cda5e2e..96b417b68 100644 --- a/src/shop.c +++ b/src/shop.c @@ -811,7 +811,7 @@ static void Shop_MoveItemListUp(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ @@ -950,7 +950,7 @@ static void Shop_MoveItemListDown(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ diff --git a/src/starter_choose.c b/src/starter_choose.c index 418488774..ff8c706b8 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -548,7 +548,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) REG_WIN0V = WIN_RANGE(labelTop, labelBottom); } #elif GERMAN -__attribute__((naked)) +NAKED static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { asm(".syntax unified\n\ diff --git a/src/title_screen.c b/src/title_screen.c index a1c8e081d..30ba7191e 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -437,7 +437,7 @@ static void CreatePressStartBanner(s16 x, s16 y) } } #elif GERMAN -__attribute__((naked)) +NAKED static void CreatePressStartBanner(s16 x, s16 y) { asm(".syntax unified\n\ diff --git a/src/trade.c b/src/trade.c index a05bddee4..3245ec5b0 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1492,7 +1492,7 @@ static void sub_8048B0C(u8 a0) #pragma pop_macro("BLOCKSIZE") #else asm(".include \"constants/gba_constants.inc\""); -__attribute__((naked)) +NAKED static void sub_8048B0C(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -2488,7 +2488,7 @@ static void sub_8049ED4(u8 a0) } } #else -__attribute__((naked)) +NAKED static void sub_8049ED4(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3055,7 +3055,7 @@ static void sub_804A41C(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A41C(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3250,7 +3250,7 @@ static void sub_804A6DC(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A6DC(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3561,7 +3561,7 @@ static void sub_804ACF4(u8 who) } } #else -static __attribute__((naked)) void sub_804ACF4(u8 who) +static NAKED void sub_804ACF4(u8 who) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -3869,7 +3869,7 @@ static void sub_804B1BC(void) } } #else -__attribute__((naked)) static void sub_804B1BC(void) +NAKED static void sub_804B1BC(void) { asm_unified("\tpush {lr}\n" "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n" @@ -4113,7 +4113,7 @@ static void sub_804B41C(void) UpdatePaletteFade(); } #else -static __attribute__((naked)) void sub_804B41C(void) +static NAKED void sub_804B41C(void) { asm_unified("\tpush {r4-r6,lr}\n" "\tsub sp, 0x4\n" diff --git a/src/trainer_card.c b/src/trainer_card.c index 8d16aa9bf..599479f16 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -864,7 +864,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) } */ -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { asm(".syntax unified\n\ @@ -1028,7 +1028,7 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task) return TRUE; } -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { asm(".syntax unified\n\ @@ -2435,7 +2435,7 @@ void sub_80C01D4(void) } } #else -__attribute__((naked)) +NAKED void sub_80C01D4(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c index 4b190bdaa..df0a35e7c 100644 --- a/src/unk_text_8095904.c +++ b/src/unk_text_8095904.c @@ -64,7 +64,7 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b } } #else -__attribute__((naked)) void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) +NAKED void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 8ea93aab8..8205f4f70 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -697,7 +697,7 @@ static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) } } #else -__attribute__((naked)) +NAKED static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" diff --git a/src/util.c b/src/util.c index 582b9f806..2e76cf4de 100644 --- a/src/util.c +++ b/src/util.c @@ -231,7 +231,7 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) #else -__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +NAKED void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { asm("\n" " .syntax unified\n" @@ -490,7 +490,7 @@ int CountTrailingZeroBits(u32 value) return 0; } -u16 CalcCRC16(u8 *data, int length) +u16 CalcCRC16(const u8 *data, int length) { u16 i, j; u16 crc = 0x1121; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index ddad43a56..7e5dac594 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -3698,7 +3698,7 @@ const u16 gRoute119WaterTileData[] = extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; -EWRAM_DATA u8 sWildEncountersDisabled = 0; +EWRAM_DATA u8 gWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; #define NUM_FEEBAS_SPOTS 6 @@ -3712,7 +3712,7 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate); void DisableWildEncounters(bool8 disabled) { - sWildEncountersDisabled = disabled; + gWildEncountersDisabled = disabled; } static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) @@ -4110,7 +4110,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) u16 headerNum; struct Roamer *roamer; - if (sWildEncountersDisabled == TRUE) + if (gWildEncountersDisabled == TRUE) return 0; else { diff --git a/sym_common.txt b/sym_common.txt index 07ab0629f..42e4a8114 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -204,8 +204,7 @@ SYMBOL(gPokemonItemUseCallback, 4) SYMBOL(gMenuCallback, 4) #if DEBUG -gUnknown_Debug_03004BD0 = .; -. += 0x4; +SYMBOL(gUnknown_Debug_03004BD0, 4) #endif // sound.c |