diff options
40 files changed, 2346 insertions, 4973 deletions
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s deleted file mode 100644 index 21092fe4b..000000000 --- a/asm/nakamura_debug_menu.s +++ /dev/null @@ -1,4686 +0,0 @@ -.if DEBUG - - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .text - - thumb_func_start debug_sub_815F1B8 -debug_sub_815F1B8: - push {lr} - add sp, sp, #0xfffffff8 - bl Menu_EraseScreen - mov r0, #0xe - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r3, ._1 @ _843E3DC - mov r0, #0x10 - mov r1, #0x1 - mov r2, #0x9 - bl Menu_PrintItems - mov r0, #0x0 - str r0, [sp] - mov r0, #0xe - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0xf - mov r2, #0x1 - mov r3, #0x9 - bl InitMenu - add sp, sp, #0x8 - pop {r0} - bx r0 -._2: - .align 2, 0 -._1: - .word _843E3DC - - thumb_func_end debug_sub_815F1B8 - - thumb_func_start InitNakamuraDebugMenu -InitNakamuraDebugMenu: - push {lr} - bl debug_sub_815F1B8 - ldr r1, ._3 @ gMenuCallback - ldr r0, ._3 + 4 @ debug_sub_815F214 - str r0, [r1] - mov r0, #0x0 - pop {r1} - bx r1 -._4: - .align 2, 0 -._3: - .word gMenuCallback - .word debug_sub_815F214+1 - - thumb_func_end InitNakamuraDebugMenu - - thumb_func_start debug_sub_815F214 -debug_sub_815F214: - push {r4, lr} - ldr r4, ._9 @ gMain - ldrh r1, [r4, #0x2e] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._5 @cond_branch - mov r0, #0x1 - neg r0, r0 - bl Menu_MoveCursor -._5: - ldrh r1, [r4, #0x2e] - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._6 @cond_branch - mov r0, #0x1 - bl Menu_MoveCursor -._6: - ldrh r1, [r4, #0x2e] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._7 @cond_branch - ldr r4, ._9 + 4 @ _843E3DC - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - lsr r0, r0, #0x15 - add r4, r4, #0x4 - add r0, r0, r4 - ldr r4, [r0] - bl Menu_DestroyCursor - bl _call_via_r4 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - b ._12 -._10: - .align 2, 0 -._9: - .word gMain - .word _843E3DC -._7: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - bne ._11 @cond_branch - mov r0, #0x0 - b ._12 -._11: - bl CloseMenu - mov r0, #0x1 -._12: - pop {r4} - pop {r1} - bx r1 - - thumb_func_end debug_sub_815F214 - - thumb_func_start debug_sub_815F284 -debug_sub_815F284: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, ._14 @ gPaletteFade - ldrb r1, [r0, #0x7] - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - bne ._13 @cond_branch - bl debug_sub_81381B4 - mov r0, #0x5 - mov r1, #0x0 - bl OpenPartyMenu - add r0, r4, #0 - bl DestroyTask -._13: - pop {r4} - pop {r0} - bx r0 -._15: - .align 2, 0 -._14: - .word gPaletteFade - - thumb_func_end debug_sub_815F284 - - thumb_func_start debug_sub_815F2B4 -debug_sub_815F2B4: - push {lr} - add sp, sp, #0xfffffffc - bl CloseMenu - bl Menu_EraseScreen - ldr r1, ._16 @ gMain - ldr r0, ._16 + 4 @ sub_805469C - str r0, [r1, #0x8] - ldr r0, ._16 + 8 @ debug_sub_815F284 - mov r1, #0x0 - bl CreateTask - mov r0, #0x1 - neg r0, r0 - mov r1, #0x0 - str r1, [sp] - mov r2, #0x0 - mov r3, #0x10 - bl BeginNormalPaletteFade - mov r0, #0x1 - add sp, sp, #0x4 - pop {r1} - bx r1 -._17: - .align 2, 0 -._16: - .word gMain - .word sub_805469C+1 - .word debug_sub_815F284+1 - - thumb_func_end debug_sub_815F2B4 - - thumb_func_start debug_sub_815F2F4 -debug_sub_815F2F4: - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - add sp, sp, #0xfffffffc - bl CloseMenu - mov r7, #0x1 -._34: - lsl r1, r7, #0x2 - add r0, r1, r7 - lsl r2, r0, #0x5 - ldr r3, ._24 @ gSaveBlock1 - add r0, r2, r3 - ldr r5, ._24 + 4 @ 0x1a08 - add r0, r0, r5 - ldrb r0, [r0] - mov r9, r1 - add r1, r7, #1 - str r1, [sp] - cmp r0, #0 - beq ._18 @cond_branch - b ._19 -._18: - mov r5, #0x0 - ldr r6, ._24 + 8 @ gSaveBlock2 - add r4, r7, #0 - sub r4, r4, #0x46 - ldr r3, ._24 + 12 @ gSaveBlock1 -._21: - add r1, r5, r2 - add r1, r1, r3 - add r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0xff - beq ._20 @cond_branch - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x6 - bls ._21 @cond_branch -._20: - cmp r5, #0x7 - bne ._22 @cond_branch - add r0, r2, #6 - b ._23 -._25: - .align 2, 0 -._24: - .word gSaveBlock1 - .word 0x1a08 - .word gSaveBlock2 - .word gSaveBlock1+0x1a0a -._22: - add r0, r5, r2 -._23: - add r0, r0, r3 - strb r4, [r0] - ldr r1, ._35 @ gSaveBlock1 - ldr r2, ._35 + 4 @ 0x1a08 - add r2, r2, r1 - mov sl, r2 - mov r3, r9 - add r0, r3, r7 - lsl r6, r0, #0x5 - add r1, r6, r1 - ldr r5, ._35 + 4 @ 0x1a08 - add r5, r5, r1 - mov r8, r5 -._30: - bl Random - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x4b - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r0, r0, #0xe - ldr r1, ._35 + 8 @ _843E424 - add r0, r0, r1 - ldrb r0, [r0] - mov r2, r8 - strb r0, [r2] - mov r5, #0x0 - cmp r5, r7 - bcs ._28 @cond_branch - mov r3, sl - ldrb r3, [r3] - cmp r0, r3 - beq ._28 @cond_branch - ldr r4, ._35 @ gSaveBlock1 - add r0, r6, r4 - ldr r2, ._35 + 4 @ 0x1a08 - add r3, r0, r2 -._29: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r7 - bcs ._28 @cond_branch - lsl r0, r5, #0x2 - add r0, r0, r5 - lsl r0, r0, #0x5 - add r0, r0, r4 - add r0, r0, r2 - ldrb r1, [r3] - ldrb r0, [r0] - cmp r1, r0 - bne ._29 @cond_branch -._28: - cmp r5, r7 - bne ._30 @cond_branch - bl Random - mov r5, r9 - add r4, r5, r7 - lsl r4, r4, #0x5 - ldr r1, ._35 @ gSaveBlock1 - add r3, r4, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x1 - ldr r2, ._35 + 12 @ 0x1a09 - add r3, r3, r2 - and r0, r0, r1 - lsl r0, r0, #0x4 - ldrb r1, [r3] - mov r5, #0x11 - neg r5, r5 - add r2, r5, #0 - and r1, r1, r2 - orr r1, r1, r0 - strb r1, [r3] - mov r5, #0x0 - ldr r6, ._35 + 16 @ gSaveBlock1 -._31: - bl Random - add r1, r5, r4 - add r1, r1, r6 - strb r0, [r1] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x3 - bls ._31 @cond_branch - mov r5, #0x0 - mov r1, r9 - add r0, r1, r7 - lsl r4, r0, #0x5 - ldr r3, ._35 + 20 @ gSaveBlock1 - mov r2, #0x0 - add r6, r3, #0 - add r6, r6, #0x10 -._32: - add r1, r5, r4 - add r0, r1, r3 - strb r2, [r0] - add r1, r1, r6 - strb r2, [r1] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0xf - bls ._32 @cond_branch - add r0, r7, #0 - bl unref_sub_80BCD7C -._19: - ldr r2, [sp] - lsl r0, r2, #0x18 - lsr r7, r0, #0x18 - cmp r7, #0x13 - bhi ._33 @cond_branch - b ._34 -._33: - mov r0, #0x1 - add sp, sp, #0x4 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._36: - .align 2, 0 -._35: - .word gSaveBlock1 - .word 0x1a08 - .word _843E424 - .word 0x1a09 - .word gSaveBlock1+0x1a11 - .word gSaveBlock1+0x1a1a - - thumb_func_end debug_sub_815F2F4 - - thumb_func_start debug_sub_815F470 -debug_sub_815F470: - push {r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - mov ip, r2 - ldr r2, ._39 @ gSaveBlock1 - ldr r0, ._39 + 4 @ _nakamuraData0 - ldrb r1, [r0] - lsl r0, r1, #0x2 - add r0, r0, r1 - lsl r0, r0, #0x5 - add r0, r0, r2 - ldr r1, ._39 + 8 @ 0x1a08 - add r0, r0, r1 - ldrb r4, [r0] - mov r2, #0x0 - ldr r3, ._39 + 12 @ _843E424 - add r5, r3, #0 -._41: - lsl r1, r2, #0x2 - add r0, r1, r5 - ldrb r0, [r0] - cmp r0, r4 - bne ._37 @cond_branch - add r0, r1, #1 - add r0, r0, r3 - ldrb r0, [r0] - strb r0, [r6] - add r0, r1, #2 - add r0, r0, r3 - ldrb r0, [r0] - strb r0, [r7] - add r0, r1, #3 - add r0, r0, r3 - ldrb r0, [r0] - mov r1, ip - strb r0, [r1] - b ._38 -._40: - .align 2, 0 -._39: - .word gSaveBlock1 - .word _nakamuraData0 - .word 0x1a08 - .word _843E424 -._37: - add r0, r2, #1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - cmp r2, #0x4a - bls ._41 @cond_branch -._38: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_end debug_sub_815F470 - - thumb_func_start debug_sub_815F4D8 -debug_sub_815F4D8: - push {r4, r5, r6, r7, lr} - add sp, sp, #0xfffffffc - mov r0, #0x1 - mov r1, #0x1 - mov r2, #0xa - mov r3, #0xa - bl Menu_BlankWindowRect - ldr r6, ._43 @ gStringVar1 - ldr r7, ._43 + 4 @ _nakamuraData0 - ldrb r1, [r7] - add r0, r6, #0 - mov r2, #0x0 - mov r3, #0x2 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - ldr r2, ._43 + 8 @ gSaveBlock1 - ldrb r1, [r7] - lsl r0, r1, #0x2 - add r0, r0, r1 - lsl r0, r0, #0x5 - add r0, r0, r2 - ldr r1, ._43 + 12 @ 0x1a08 - add r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq ._42 @cond_branch - mov r4, sp - add r4, r4, #0x1 - mov r5, sp - add r5, r5, #0x2 - mov r0, sp - add r1, r4, #0 - add r2, r5, #0 - bl debug_sub_815F470 - ldrb r1, [r7] - add r0, r6, #0 - bl sub_80BC190 - add r0, r6, #0 - mov r1, #0x1 - mov r2, #0x3 - bl Menu_PrintText - ldr r0, ._43 + 16 @ Str_843E550 - mov r1, #0x1 - mov r2, #0x5 - bl Menu_PrintText - mov r0, sp - ldrb r1, [r0] - add r0, r6, #0 - mov r2, #0x0 - mov r3, #0x3 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x2 - mov r2, #0x5 - bl Menu_PrintText - ldr r0, ._43 + 20 @ Str_843E552 - mov r1, #0x1 - mov r2, #0x7 - bl Menu_PrintText - ldrb r1, [r4] - add r0, r6, #0 - mov r2, #0x0 - mov r3, #0x3 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x3 - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._43 + 24 @ Str_843E554 - mov r1, #0x1 - mov r2, #0x9 - bl Menu_PrintText - ldrb r1, [r5] - add r0, r6, #0 - mov r2, #0x0 - mov r3, #0x3 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x3 - mov r2, #0x9 - bl Menu_PrintText -._42: - add sp, sp, #0x4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._44: - .align 2, 0 -._43: - .word gStringVar1 - .word _nakamuraData0 - .word gSaveBlock1 - .word 0x1a08 - .word Str_843E550 - .word Str_843E552 - .word Str_843E554 - - thumb_func_end debug_sub_815F4D8 - - thumb_func_start debug_sub_815F5C4 -debug_sub_815F5C4: - push {lr} - ldr r0, ._48 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x20 - and r0, r0, r1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - cmp r2, #0 - beq ._45 @cond_branch - ldr r1, ._48 + 4 @ _nakamuraData0 - ldrb r0, [r1] - cmp r0, #0 - bne ._46 @cond_branch - mov r0, #0x13 - b ._50 -._49: - .align 2, 0 -._48: - .word gMain - .word _nakamuraData0 -._46: - sub r0, r0, #0x1 - b ._50 -._45: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._51 @cond_branch - ldr r1, ._54 @ _nakamuraData0 - ldrb r0, [r1] - cmp r0, #0x13 - bne ._52 @cond_branch - strb r2, [r1] - b ._53 -._55: - .align 2, 0 -._54: - .word _nakamuraData0 -._52: - add r0, r0, #0x1 -._50: - strb r0, [r1] -._53: - bl debug_sub_815F4D8 - mov r0, #0x0 - b ._58 -._51: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - bne ._57 @cond_branch - mov r0, #0x0 - b ._58 -._57: - bl CloseMenu - mov r0, #0x1 -._58: - pop {r1} - bx r1 - - thumb_func_end debug_sub_815F5C4 - - thumb_func_start debug_sub_815F62C -debug_sub_815F62C: - push {lr} - ldr r1, ._59 @ _nakamuraData0 - mov r0, #0x0 - strb r0, [r1] - ldr r1, ._59 + 4 @ gMenuCallback - ldr r0, ._59 + 8 @ debug_sub_815F5C4 - str r0, [r1] - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xb - mov r3, #0xb - bl Menu_DrawStdWindowFrame - bl debug_sub_815F4D8 - mov r0, #0x0 - pop {r1} - bx r1 -._60: - .align 2, 0 -._59: - .word _nakamuraData0 - .word gMenuCallback - .word debug_sub_815F5C4+1 - - thumb_func_end debug_sub_815F62C - - thumb_func_start debug_sub_815F668 -debug_sub_815F668: - push {r4, r5, r6, lr} - ldr r0, ._61 @ _nakamuraData0 - ldrb r0, [r0] - lsl r1, r0, #0x2 - add r1, r1, r0 - lsl r1, r1, #0x5 - ldr r0, ._61 + 4 @ gSaveBlock1 - add r1, r1, r0 - ldrb r4, [r1, #0x3] - lsl r4, r4, #0x18 - ldrb r0, [r1, #0x2] - lsl r0, r0, #0x10 - orr r4, r4, r0 - ldrb r0, [r1, #0x1] - lsl r0, r0, #0x8 - orr r4, r4, r0 - ldrb r0, [r1] - orr r4, r4, r0 - ldr r5, ._61 + 8 @ gStringVar1 - ldr r6, ._61 + 12 @ 0x186a0 - add r0, r4, #0 - add r1, r6, #0 - bl __udivsi3 - add r1, r0, #0 - add r0, r5, #0 - mov r2, #0x2 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r5, #0 - mov r1, #0x2 - mov r2, #0x7 - bl Menu_PrintText - add r0, r4, #0 - add r1, r6, #0 - bl __umodsi3 - add r1, r0, #0 - add r0, r5, #0 - mov r2, #0x2 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r5, #0 - mov r1, #0x7 - mov r2, #0x7 - bl Menu_PrintText - pop {r4, r5, r6} - pop {r0} - bx r0 -._62: - .align 2, 0 -._61: - .word _nakamuraData0 - .word gSaveBlock1+0x1a11 - .word gStringVar1 - .word 0x186a0 - - thumb_func_end debug_sub_815F668 - - thumb_func_start debug_sub_815F6E4 -debug_sub_815F6E4: - push {r4, lr} - mov r0, #0x2 - mov r1, #0x3 - mov r2, #0xb - mov r3, #0x4 - bl Menu_BlankWindowRect - ldr r4, ._63 @ gStringVar1 - ldr r0, ._63 + 4 @ _nakamuraData0 - ldrb r0, [r0] - lsl r1, r0, #0x2 - add r1, r1, r0 - lsl r1, r1, #0x5 - ldr r0, ._63 + 8 @ gSaveBlock1 - add r1, r1, r0 - add r0, r4, #0 - mov r2, #0x7 - bl StringCopyN - mov r1, #0xff - strb r1, [r0] - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - pop {r4} - pop {r0} - bx r0 -._64: - .align 2, 0 -._63: - .word gStringVar1 - .word _nakamuraData0 - .word gSaveBlock1+0x1a0a - - thumb_func_end debug_sub_815F6E4 - - thumb_func_start debug_sub_815F72C -debug_sub_815F72C: - push {r4, r5, lr} - mov r0, #0x2 - mov r1, #0x1 - mov r2, #0xb - mov r3, #0xa - bl Menu_BlankWindowRect - ldr r4, ._66 @ gStringVar1 - ldr r5, ._66 + 4 @ _nakamuraData0 - ldrb r1, [r5] - add r0, r4, #0 - mov r2, #0x0 - mov r3, #0x2 - bl ConvertIntToDecimalStringN - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x1 - bl Menu_PrintText - ldr r2, ._66 + 8 @ gSaveBlock1 - ldrb r1, [r5] - lsl r0, r1, #0x2 - add r0, r0, r1 - lsl r0, r0, #0x5 - add r0, r0, r2 - ldr r1, ._66 + 12 @ 0x1a08 - add r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq ._65 @cond_branch - bl debug_sub_815F6E4 - bl debug_sub_815F668 -._65: - pop {r4, r5} - pop {r0} - bx r0 -._67: - .align 2, 0 -._66: - .word gStringVar1 - .word _nakamuraData0 - .word gSaveBlock1 - .word 0x1a08 - - thumb_func_end debug_sub_815F72C - - thumb_func_start debug_sub_815F788 -debug_sub_815F788: - push {lr} - mov r0, #0x2 - mov r1, #0x5 - mov r2, #0xb - mov r3, #0x6 - bl Menu_BlankWindowRect - ldr r0, ._68 @ Str_843E574 - ldr r1, ._68 + 4 @ _nakamuraData2 - ldrb r1, [r1] - add r1, r1, #0x2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - mov r2, #0x5 - bl Menu_PrintText - pop {r0} - bx r0 -._69: - .align 2, 0 -._68: - .word Str_843E574 - .word _nakamuraData2 - - thumb_func_end debug_sub_815F788 - - thumb_func_start debug_sub_815F7B4 -debug_sub_815F7B4: - push {lr} - ldr r0, ._72 @ _nakamuraData1 - ldrb r0, [r0] - cmp r0, #0 - beq ._70 @cond_branch - mov r0, #0xb - mov r1, #0x1 - mov r2, #0xb - mov r3, #0x2 - bl Menu_BlankWindowRect - b ._71 -._73: - .align 2, 0 -._72: - .word _nakamuraData1 -._70: - ldr r0, ._74 @ _nakamuraData3 - ldrb r0, [r0] - lsl r0, r0, #0x1 - ldr r1, ._74 + 4 @ Str_843E576 - add r0, r0, r1 - mov r1, #0xb - mov r2, #0x1 - bl Menu_PrintText -._71: - pop {r0} - bx r0 -._75: - .align 2, 0 -._74: - .word _nakamuraData3 - .word Str_843E576 - - thumb_func_end debug_sub_815F7B4 - - thumb_func_start debug_sub_815F7F0 -debug_sub_815F7F0: - push {r4, r5, lr} - ldr r1, ._78 @ _nakamuraData0 - ldrb r2, [r1] - lsl r1, r2, #0x2 - add r1, r1, r2 - lsl r1, r1, #0x5 - ldr r2, ._78 + 4 @ gSaveBlock1 - add r3, r1, r2 - ldrb r1, [r3, #0x3] - lsl r2, r1, #0x18 - ldrb r1, [r3, #0x2] - lsl r1, r1, #0x10 - orr r2, r2, r1 - ldrb r1, [r3, #0x1] - lsl r1, r1, #0x8 - orr r2, r2, r1 - ldrb r1, [r3] - orr r2, r2, r1 - lsl r0, r0, #0x18 - asr r1, r0, #0x18 - mov r4, #0x9 - ldr r0, ._78 + 8 @ _nakamuraData2 - ldrb r0, [r0] - cmp r4, r0 - ble ._76 @cond_branch - add r5, r0, #0 -._77: - lsl r0, r1, #0x2 - add r0, r0, r1 - lsl r1, r0, #0x1 - lsl r0, r4, #0x18 - mov r4, #0xff - lsl r4, r4, #0x18 - add r0, r0, r4 - lsr r4, r0, #0x18 - asr r0, r0, #0x18 - cmp r0, r5 - bgt ._77 @cond_branch -._76: - add r2, r2, r1 - lsr r0, r2, #0x18 - strb r0, [r3, #0x3] - mov r0, #0xff - lsl r0, r0, #0x10 - and r0, r0, r2 - lsr r0, r0, #0x10 - strb r0, [r3, #0x2] - mov r0, #0xff - lsl r0, r0, #0x8 - and r0, r0, r2 - lsr r0, r0, #0x8 - strb r0, [r3, #0x1] - strb r2, [r3] - bl debug_sub_815F668 - pop {r4, r5} - pop {r0} - bx r0 -._79: - .align 2, 0 -._78: - .word _nakamuraData0 - .word gSaveBlock1+0x1a11 - .word _nakamuraData2 - - thumb_func_end debug_sub_815F7F0 - - thumb_func_start debug_sub_815F86C -debug_sub_815F86C: - push {r4, r5, r6, lr} - lsl r0, r0, #0x18 - ldr r1, ._84 @ _nakamuraData0 - ldrb r2, [r1] - lsl r1, r2, #0x2 - add r1, r1, r2 - lsl r1, r1, #0x5 - ldr r2, ._84 + 4 @ gSaveBlock1 - add r5, r1, r2 - mov r2, #0x0 - mov r3, #0x0 - lsr r6, r0, #0x18 - asr r0, r0, #0x18 - cmp r0, #0x64 - bne ._80 @cond_branch - ldr r0, ._84 + 8 @ _nakamuraData2 - ldrb r1, [r0] - cmp r1, #0x6 - bhi ._100 @cond_branch - mov r2, #0xff -._82: - add r0, r5, r1 - strb r2, [r0] - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - cmp r1, #0x6 - bls ._82 @cond_branch - b ._100 -._85: - .align 2, 0 -._84: - .word _nakamuraData0 - .word gSaveBlock1+0x1a0a - .word _nakamuraData2 -._80: - ldr r0, ._87 @ _nakamuraData3 - ldrb r0, [r0] - cmp r0, #0x4 - bhi ._98 @cond_branch - lsl r0, r0, #0x2 - ldr r1, ._87 + 4 @ - add r0, r0, r1 - ldr r0, [r0] - mov pc, r0 -._88: - .align 2, 0 -._87: - .word _nakamuraData3 - .word ._89 -._89: - .word ._90 - .word ._91 - .word ._92 - .word ._93 - .word ._94 -._90: - mov r3, #0x1 - mov r2, #0x50 - b ._98 -._91: - mov r3, #0x51 - mov r2, #0xa0 - b ._98 -._92: - mov r3, #0xbb - mov r2, #0xd4 - b ._98 -._93: - mov r3, #0xd5 - mov r2, #0xee - b ._98 -._94: - mov r3, #0xa1 - mov r2, #0xaa -._98: - ldr r4, ._101 @ _nakamuraData2 - ldrb r1, [r4] - add r1, r5, r1 - ldrb r0, [r1] - add r0, r0, r6 - strb r0, [r1] - ldrb r0, [r4] - add r1, r5, r0 - ldrb r0, [r1] - cmp r0, r3 - bcs ._99 @cond_branch - strb r2, [r1] -._99: - ldrb r0, [r4] - add r1, r5, r0 - ldrb r0, [r1] - cmp r0, r2 - bls ._100 @cond_branch - strb r3, [r1] -._100: - bl debug_sub_815F6E4 - pop {r4, r5, r6} - pop {r0} - bx r0 -._102: - .align 2, 0 -._101: - .word _nakamuraData2 - - thumb_func_end debug_sub_815F86C - - thumb_func_start debug_sub_815F930 -debug_sub_815F930: - push {r4, r5, lr} - ldr r0, ._107 @ _nakamuraData1 - ldrb r2, [r0] - mov r4, #0xa - cmp r2, #0 - bne ._103 @cond_branch - mov r4, #0x7 -._103: - ldr r5, ._107 + 4 @ gMain - ldrh r1, [r5, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._104 @cond_branch - cmp r2, #0 - beq ._105 @cond_branch - mov r0, #0x1 - bl debug_sub_815F7F0 - b ._136 -._108: - .align 2, 0 -._107: - .word _nakamuraData1 - .word gMain -._105: - mov r0, #0x1 - b ._113 -._104: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._110 @cond_branch - cmp r2, #0 - beq ._111 @cond_branch - mov r0, #0x1 - neg r0, r0 - bl debug_sub_815F7F0 - b ._136 -._111: - mov r0, #0x1 - neg r0, r0 - b ._113 -._110: - mov r0, #0x20 - and r0, r0, r1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - cmp r3, #0 - beq ._114 @cond_branch - ldr r1, ._117 @ _nakamuraData2 - ldrb r0, [r1] - cmp r0, #0 - bne ._115 @cond_branch - sub r0, r4, #1 - b ._116 -._118: - .align 2, 0 -._117: - .word _nakamuraData2 -._115: - sub r0, r0, #0x1 -._116: - strb r0, [r1] -._125: - bl debug_sub_815F788 - b ._136 -._114: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._120 @cond_branch - ldr r2, ._123 @ _nakamuraData2 - ldrb r1, [r2] - sub r0, r4, #1 - cmp r1, r0 - bne ._121 @cond_branch - strb r3, [r2] - b ._125 -._124: - .align 2, 0 -._123: - .word _nakamuraData2 -._121: - add r0, r1, #1 - strb r0, [r2] - b ._125 -._120: - ldrh r1, [r5, #0x2e] - mov r0, #0x4 - and r0, r0, r1 - cmp r0, #0 - beq ._126 @cond_branch - cmp r2, #0 - bne ._127 @cond_branch - ldr r4, ._129 @ _nakamuraData3 - ldrb r0, [r4] - add r0, r0, #0x1 - mov r1, #0x5 - bl __modsi3 - strb r0, [r4] -._127: - bl debug_sub_815F7B4 - b ._136 -._130: - .align 2, 0 -._129: - .word _nakamuraData3 -._126: - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._131 @cond_branch - mov r0, #0x2 - mov r1, #0x5 - mov r2, #0xb - mov r3, #0x6 - bl Menu_BlankWindowRect - mov r0, #0xb - mov r1, #0x1 - mov r2, #0xb - mov r3, #0x2 - bl Menu_BlankWindowRect - ldr r1, ._133 @ gMenuCallback - ldr r0, ._133 + 4 @ debug_sub_815FA38 - str r0, [r1] - b ._136 -._134: - .align 2, 0 -._133: - .word gMenuCallback - .word debug_sub_815FA38+1 -._131: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._136 @cond_branch - cmp r2, #0 - bne ._136 @cond_branch - mov r0, #0x64 -._113: - bl debug_sub_815F86C -._136: - mov r0, #0x0 - pop {r4, r5} - pop {r1} - bx r1 - - thumb_func_end debug_sub_815F930 - - thumb_func_start debug_sub_815FA38 -debug_sub_815FA38: - push {r4, lr} - ldr r0, ._139 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._137 @cond_branch - mov r0, #0x2 - neg r0, r0 - b ._138 -._140: - .align 2, 0 -._139: - .word gMain -._137: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._141 @cond_branch - mov r0, #0x2 -._138: - bl Menu_MoveCursor -._161: - mov r0, #0x0 - b ._142 -._141: - mov r0, #0x20 - and r0, r0, r1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - cmp r2, #0 - beq ._143 @cond_branch - ldr r1, ._146 @ _nakamuraData0 - ldrb r0, [r1] - cmp r0, #0 - bne ._144 @cond_branch - mov r0, #0x13 - b ._148 -._147: - .align 2, 0 -._146: - .word _nakamuraData0 -._144: - sub r0, r0, #0x1 - b ._148 -._143: - mov r0, #0x10 - and r0, r0, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #0 - beq ._149 @cond_branch - ldr r1, ._152 @ _nakamuraData0 - ldrb r0, [r1] - cmp r0, #0x13 - bne ._150 @cond_branch - strb r2, [r1] - b ._151 -._153: - .align 2, 0 -._152: - .word _nakamuraData0 -._150: - add r0, r0, #0x1 -._148: - strb r0, [r1] -._151: - bl debug_sub_815F72C - b ._161 -._149: - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._155 @cond_branch - ldr r1, ._159 @ _nakamuraData0 - ldrb r0, [r1] - cmp r0, #0 - beq ._161 @cond_branch - ldr r2, ._159 + 4 @ gSaveBlock1 - add r1, r0, #0 - lsl r0, r1, #0x2 - add r0, r0, r1 - lsl r0, r0, #0x5 - add r0, r0, r2 - ldr r1, ._159 + 8 @ 0x1a08 - add r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq ._161 @cond_branch - bl Menu_GetCursorPos - ldr r1, ._159 + 12 @ _nakamuraData1 - strb r0, [r1] - ldr r0, ._159 + 16 @ _nakamuraData2 - strb r4, [r0] - bl debug_sub_815F788 - bl debug_sub_815F7B4 - ldr r1, ._159 + 20 @ gMenuCallback - ldr r0, ._159 + 24 @ debug_sub_815F930 - str r0, [r1] - b ._161 -._160: - .align 2, 0 -._159: - .word _nakamuraData0 - .word gSaveBlock1 - .word 0x1a08 - .word _nakamuraData1 - .word _nakamuraData2 - .word gMenuCallback - .word debug_sub_815F930+1 -._155: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._161 @cond_branch - bl CloseMenu - mov r0, #0x1 -._142: - pop {r4} - pop {r1} - bx r1 - - thumb_func_end debug_sub_815FA38 - - thumb_func_start debug_sub_815FB1C -debug_sub_815FB1C: - push {lr} - add sp, sp, #0xfffffff8 - ldr r0, ._162 @ _nakamuraData0 - mov r1, #0x0 - strb r1, [r0] - ldr r0, ._162 + 4 @ _nakamuraData3 - strb r1, [r0] - ldr r1, ._162 + 8 @ gMenuCallback - ldr r0, ._162 + 12 @ debug_sub_815FA38 - str r0, [r1] - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xc - mov r3, #0xb - bl Menu_DrawStdWindowFrame - bl debug_sub_815F72C - mov r0, #0x0 - str r0, [sp] - mov r0, #0xb - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x3 - mov r3, #0x3 - bl InitMenu - mov r0, #0x0 - add sp, sp, #0x8 - pop {r1} - bx r1 -._163: - .align 2, 0 -._162: - .word _nakamuraData0 - .word _nakamuraData3 - .word gMenuCallback - .word debug_sub_815FA38+1 - - thumb_func_end debug_sub_815FB1C - - thumb_func_start debug_sub_815FB78 -debug_sub_815FB78: - push {lr} - ldr r0, ._166 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._164 @cond_branch - mov r0, #0x1 - neg r0, r0 - b ._165 -._167: - .align 2, 0 -._166: - .word gMain -._164: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._168 @cond_branch - mov r0, #0x1 -._165: - bl Menu_MoveCursor - mov r0, #0x0 - b ._177 -._168: - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._170 @cond_branch - bl CloseMenu - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0 - beq ._171 @cond_branch - cmp r0, #0x1 - beq ._172 @cond_branch - b ._175 -._171: - bl debug_sub_814A714 - b ._175 -._172: - bl ClearRoamerData - bl ClearRoamerLocationData - b ._175 -._170: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - bne ._176 @cond_branch - mov r0, #0x0 - b ._177 -._176: - bl CloseMenu -._175: - mov r0, #0x1 -._177: - pop {r1} - bx r1 - - thumb_func_end debug_sub_815FB78 - - thumb_func_start debug_sub_815FBE8 -debug_sub_815FBE8: - push {r4, lr} - add sp, sp, #0xfffffff8 - ldr r1, ._178 @ gMenuCallback - ldr r0, ._178 + 4 @ debug_sub_815FB78 - str r0, [r1] - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - ldr r4, ._178 + 8 @ gStringVar1 - add r0, r4, #0 - bl debug_sub_814A73C - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xb - mov r3, #0x9 - bl Menu_DrawStdWindowFrame - add r0, r4, #0 - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - ldr r0, ._178 + 12 @ Str_843E580 - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - mov r0, #0x0 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x3 - mov r3, #0x3 - bl InitMenu - mov r0, #0x0 - add sp, sp, #0x8 - pop {r4} - pop {r1} - bx r1 -._179: - .align 2, 0 -._178: - .word gMenuCallback - .word debug_sub_815FB78+1 - .word gStringVar1 - .word Str_843E580 - - thumb_func_end debug_sub_815FBE8 - - thumb_func_start debug_sub_815FC54 -debug_sub_815FC54: - push {r4, r5, r6, r7, lr} - mov r3, #0x0 - ldr r7, ._181 @ gSaveBlock1 - mov r6, #0xe8 - lsl r6, r6, #0x3 - ldr r5, ._181 + 4 @ 0x3e7 - ldr r4, ._181 + 8 @ 0x742 -._180: - lsl r1, r3, #0x2 - add r1, r1, r7 - add r2, r3, #0 - add r2, r2, #0x85 - add r0, r1, r6 - strh r2, [r0] - add r1, r1, r4 - strh r5, [r1] - add r0, r3, #1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - cmp r3, #0x2a - bls ._180 @cond_branch - bl CloseMenu - mov r0, #0x1 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._182: - .align 2, 0 -._181: - .word gSaveBlock1 - .word 0x3e7 - .word 0x742 - - thumb_func_end debug_sub_815FC54 - - thumb_func_start debug_sub_815FC94 -debug_sub_815FC94: - push {lr} - bl ClearDecorationInventories - bl debug_sub_814A3A8 - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 - pop {r1} - bx r1 - - thumb_func_end debug_sub_815FC94 - - thumb_func_start debug_sub_815FCB4 -debug_sub_815FCB4: - push {r4, r5, r6, r7, lr} - mov r7, r9 - mov r6, r8 - push {r6, r7} - add r4, r0, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - mov r7, #0x0 - ldr r5, ._188 @ gMapHeader - ldr r0, [r5] - ldr r0, [r0, #0x4] - mov r1, #0x3 - bl __divsi3 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r0, #0 - mul r1, r1, r4 - lsl r1, r1, #0x10 - lsr r6, r1, #0x10 - add r0, r6, r0 - mov r9, r5 - cmp r6, r0 - bge ._183 @cond_branch - mov r8, r0 -._187: - mov r4, #0x0 - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0] - add r5, r6, #1 - cmp r4, r0 - bge ._184 @cond_branch - ldr r0, ._188 @ gMapHeader - mov r9, r0 -._186: - add r0, r4, #7 - add r1, r6, #7 - bl MapGridGetMetatileBehaviorAt - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_805759C - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x1 - bne ._185 @cond_branch - add r0, r7, #1 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 -._185: - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, ._188 @ gMapHeader - ldr r0, [r0] - ldr r0, [r0] - cmp r4, r0 - blt ._186 @cond_branch -._184: - lsl r0, r5, #0x10 - lsr r6, r0, #0x10 - cmp r6, r8 - blt ._187 @cond_branch -._183: - add r0, r7, #0 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._189: - .align 2, 0 -._188: - .word gMapHeader - - thumb_func_end debug_sub_815FCB4 - - thumb_func_start debug_sub_815FD40 -debug_sub_815FD40: - push {r4, r5, r6, r7, lr} - add sp, sp, #0xfffffffc - mov r6, #0x0 - mov r4, sp - add r4, r4, #0x2 - mov r0, sp - add r1, r4, #0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - sub r0, r0, #0x7 - strh r0, [r1] - ldrh r0, [r4] - sub r0, r0, #0x7 - strh r0, [r4] - mov r5, #0x0 - ldr r1, ._192 @ gMapHeader - ldr r0, [r1] - ldr r0, [r0, #0x4] - add r7, r4, #0 - cmp r6, r0 - bge ._190 @cond_branch -._199: - mov r4, #0x0 - ldr r0, [r1] - b ._191 -._193: - .align 2, 0 -._192: - .word gMapHeader -._198: - add r0, r4, #7 - add r1, r5, #7 - bl MapGridGetMetatileBehaviorAt - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_805759C - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x1 - bne ._196 @cond_branch - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - mov r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, r4 - bne ._196 @cond_branch - mov r1, #0x0 - ldsh r0, [r7, r1] - cmp r0, r5 - bne ._196 @cond_branch - add r0, r6, #0 - b ._197 -._196: - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, ._200 @ gMapHeader - ldr r0, [r0] -._191: - ldr r0, [r0] - cmp r4, r0 - blt ._198 @cond_branch - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - ldr r1, ._200 @ gMapHeader - ldr r0, [r1] - ldr r0, [r0, #0x4] - cmp r5, r0 - blt ._199 @cond_branch -._190: - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 -._197: - add sp, sp, #0x4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._201: - .align 2, 0 -._200: - .word gMapHeader - - thumb_func_end debug_sub_815FD40 - - thumb_func_start debug_sub_815FDE4 -debug_sub_815FDE4: - push {lr} - ldr r0, ._205 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - bne ._202 @cond_branch - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._203 @cond_branch -._202: - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 - b ._204 -._206: - .align 2, 0 -._205: - .word gMain -._203: - mov r0, #0x0 -._204: - pop {r1} - bx r1 - - thumb_func_end debug_sub_815FDE4 - - thumb_func_start debug_sub_815FE1C -debug_sub_815FE1C: - push {r4, r5, r6, r7, lr} - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x10 - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r0, ._210 @ Str_843E58D - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - ldr r6, ._210 + 4 @ gStringVar1 - mov r0, #0x0 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x3 - bl Menu_PrintText - mov r0, #0x1 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x5 - bl Menu_PrintText - mov r0, #0x2 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x7 - bl Menu_PrintText - mov r0, #0x0 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x3 - bl Menu_PrintText - mov r0, #0x1 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x5 - bl Menu_PrintText - mov r0, #0x2 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._210 + 8 @ gSaveBlock1 - ldr r1, ._210 + 12 @ 0x2dd6 - add r0, r0, r1 - ldrh r0, [r0] - bl FeebasSeedRng - mov r0, #0x0 - bl debug_sub_815FCB4 - add r4, r0, #0 - mov r0, #0x1 - bl debug_sub_815FCB4 - add r5, r0, #0 - mov r0, #0x2 - bl debug_sub_815FCB4 - add r4, r4, r5 - add r0, r0, r4 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - mov r5, #0x0 -._209: - bl FeebasRandom - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r7, #0 - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - cmp r1, #0 - bne ._207 @cond_branch - add r1, r7, #0 -._207: - sub r0, r1, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x2 - bls ._208 @cond_branch - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x4 - bl ConvertIntToDecimalStringN - add r0, r5, #0 - mov r1, #0x3 - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r4, r0, #0x2 - add r4, r4, r0 - add r4, r4, #0x2 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - add r0, r5, #0 - mov r1, #0x3 - bl __udivsi3 - add r2, r0, #0 - lsl r2, r2, #0x19 - mov r0, #0xb0 - lsl r0, r0, #0x14 - add r2, r2, r0 - lsr r2, r2, #0x18 - add r0, r6, #0 - add r1, r4, #0 - bl Menu_PrintText - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -._208: - cmp r5, #0x6 - bne ._209 @cond_branch - ldr r4, ._210 + 4 @ gStringVar1 - bl debug_sub_815FD40 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r4, #0 - mov r2, #0x1 - mov r3, #0x4 - bl ConvertIntToDecimalStringN - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x11 - bl Menu_PrintText - ldr r1, ._210 + 16 @ gMenuCallback - ldr r0, ._210 + 20 @ debug_sub_815FDE4 - str r0, [r1] - mov r0, #0x0 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._211: - .align 2, 0 -._210: - .word Str_843E58D - .word gStringVar1 - .word gSaveBlock1 - .word 0x2dd6 - .word gMenuCallback - .word debug_sub_815FDE4+1 - - thumb_func_end debug_sub_815FE1C - - thumb_func_start debug_sub_815FFDC -debug_sub_815FFDC: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r0, #0xe - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0xd - bl Menu_DrawStdWindowFrame - mov r0, #0x0 - mov r1, #0xe - mov r2, #0x1d - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r0, ._214 @ Str_843E5D4 - mov r1, #0x1 - mov r2, #0xf - bl Menu_PrintText - mov r5, #0x0 - ldr r0, ._214 + 4 @ _nakamuraStatic0 - mov r8, r0 -._216: - mov r0, #0x64 - add r1, r5, #0 - mul r1, r1, r0 - ldr r0, ._214 + 8 @ gPlayerParty - add r6, r1, r0 - add r0, r6, #0 - mov r1, #0xb - bl GetMonData - lsl r1, r5, #0x2 - mov r2, r8 - add r4, r1, r2 - strh r0, [r4] - lsl r0, r0, #0x10 - add r7, r1, #0 - cmp r0, #0 - beq ._212 @cond_branch - add r0, r6, #0 - mov r1, #0x38 - bl GetMonData - strb r0, [r4, #0x2] - add r0, r5, #0 - bl debug_sub_816009C - add r0, r5, #0 - bl debug_sub_81600D0 - add r0, r5, #0 - bl debug_sub_816013C - b ._213 -._215: - .align 2, 0 -._214: - .word Str_843E5D4 - .word _nakamuraStatic0 - .word gPlayerParty -._212: - mov r0, #0x1 - strb r0, [r4, #0x2] -._213: - mov r0, r8 - add r1, r7, r0 - mov r0, #0x0 - strb r0, [r1, #0x3] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x5 - bls ._216 @cond_branch - ldr r1, ._217 @ _nakamuraData4 - mov r0, #0x0 - strb r0, [r1] - mov r0, #0xf - mov r1, #0x1 - mov r2, #0xff - bl PrintTriangleCursorWithPalette - ldr r1, ._217 + 4 @ gMenuCallback - ldr r0, ._217 + 8 @ debug_sub_8160498 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._218: - .align 2, 0 -._217: - .word _nakamuraData4 - .word gMenuCallback - .word debug_sub_8160498+1 - - thumb_func_end debug_sub_815FFDC - - thumb_func_start debug_sub_816009C -debug_sub_816009C: - push {lr} - add r2, r0, #0 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - ldr r1, ._219 @ _nakamuraStatic0 - lsl r0, r2, #0x2 - add r0, r0, r1 - mov r3, #0x0 - ldsh r1, [r0, r3] - mov r0, #0xb - mul r0, r0, r1 - ldr r1, ._219 + 4 @ gSpeciesNames - add r0, r0, r1 - lsl r2, r2, #0x1 - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r1, #0x10 - bl Menu_PrintText - pop {r0} - bx r0 -._220: - .align 2, 0 -._219: - .word _nakamuraStatic0 - .word gSpeciesNames - - thumb_func_end debug_sub_816009C - - thumb_func_start debug_sub_81600D0 -debug_sub_81600D0: - push {r4, r5, lr} - add sp, sp, #0xfffffffc - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r5, r4, #0 - ldr r1, ._223 @ Str_843E5F0 - mov r0, sp - mov r2, #0x2 - bl memcpy - mov r0, #0x64 - mul r0, r0, r4 - ldr r1, ._223 + 4 @ gPlayerParty - add r0, r0, r1 - bl GetMonGender - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0 - bne ._221 @cond_branch - ldr r0, ._223 + 8 @ gOtherText_MaleSymbol2 - b ._222 -._224: - .align 2, 0 -._223: - .word Str_843E5F0 - .word gPlayerParty - .word gOtherText_MaleSymbol2 -._221: - cmp r0, #0xfe - bne ._225 @cond_branch - ldr r0, ._227 @ gOtherText_FemaleSymbolAndLv -._222: - lsl r2, r4, #0x1 - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r1, #0x17 - bl Menu_PrintText - b ._226 -._228: - .align 2, 0 -._227: - .word gOtherText_FemaleSymbolAndLv -._225: - lsl r2, r5, #0x1 - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r0, sp - mov r1, #0x17 - bl Menu_PrintText -._226: - add sp, sp, #0x4 - pop {r4, r5} - pop {r0} - bx r0 - - thumb_func_end debug_sub_81600D0 - - thumb_func_start debug_sub_816013C -debug_sub_816013C: - push {r4, r5, lr} - add r4, r0, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - ldr r5, ._229 @ gStringVar1 - ldr r1, ._229 + 4 @ _nakamuraStatic0 - lsl r0, r4, #0x2 - add r0, r0, r1 - mov r1, #0x2 - ldrsb r1, [r0, r1] - add r0, r5, #0 - mov r2, #0x1 - mov r3, #0x3 - bl ConvertIntToDecimalStringN - lsl r4, r4, #0x1 - add r4, r4, #0x1 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - add r0, r5, #0 - mov r1, #0x1a - add r2, r4, #0 - bl Menu_PrintText - pop {r4, r5} - pop {r0} - bx r0 -._230: - .align 2, 0 -._229: - .word gStringVar1 - .word _nakamuraStatic0 - - thumb_func_end debug_sub_816013C - - thumb_func_start debug_sub_816017C -debug_sub_816017C: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - lsl r3, r4, #0x1 - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r3, r3, #0x2 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - mov r0, #0x10 - mov r2, #0x1c - bl Menu_BlankWindowRect - ldr r1, ._232 @ _nakamuraStatic0 - lsl r0, r4, #0x2 - add r0, r0, r1 - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0 - beq ._231 @cond_branch - add r0, r4, #0 - bl debug_sub_816009C - add r0, r4, #0 - bl debug_sub_81600D0 - add r0, r4, #0 - bl debug_sub_816013C -._231: - mov r0, #0x5 - bl debug_sub_81603B8 - pop {r4} - pop {r0} - bx r0 -._233: - .align 2, 0 -._232: - .word _nakamuraStatic0 - - thumb_func_end debug_sub_816017C - - thumb_func_start debug_sub_81601C8 -debug_sub_81601C8: - push {r4, r5, lr} - add sp, sp, #0xfffffff0 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - ldr r1, ._239 @ _nakamuraStatic0 - lsl r0, r5, #0x2 - add r2, r0, r1 - mov r4, #0x0 - ldsh r0, [r2, r4] - cmp r0, #0 - bne ._236 @cond_branch - ldrb r0, [r2, #0x3] - cmp r0, #0 - bne ._236 @cond_branch - cmp r3, #0x1 - bne ._236 @cond_branch - mov r0, #0x8a - lsl r0, r0, #0x1 - strh r0, [r2] -._236: - lsl r0, r5, #0x2 - add r4, r0, r1 - lsl r0, r3, #0x18 - asr r0, r0, #0x18 - ldrh r1, [r4] - add r2, r0, r1 - mov r3, #0x0 - strh r2, [r4] - lsl r1, r2, #0x10 - mov r0, #0xcd - lsl r0, r0, #0x11 - cmp r1, r0 - ble ._237 @cond_branch - ldr r1, ._239 + 4 @ 0xfffffe65 - add r0, r2, r1 - strh r0, [r4] -._237: - ldrh r1, [r4] - mov r2, #0x0 - ldsh r0, [r4, r2] - cmp r0, #0 - bge ._238 @cond_branch - ldr r2, ._239 + 8 @ 0x19b - add r0, r1, r2 - strh r0, [r4] -._238: - mov r0, #0x64 - mul r0, r0, r5 - ldr r1, ._239 + 12 @ gPlayerParty - add r0, r0, r1 - ldrh r1, [r4] - ldrb r2, [r4, #0x2] - str r3, [sp] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - str r3, [sp, #0xc] - mov r3, #0x20 - bl CreateMon - mov r0, #0x1 - strb r0, [r4, #0x3] - add sp, sp, #0x10 - pop {r4, r5} - pop {r0} - bx r0 -._240: - .align 2, 0 -._239: - .word _nakamuraStatic0 - .word 0xfffffe65 - .word 0x19b - .word gPlayerParty - - thumb_func_end debug_sub_81601C8 - - thumb_func_start debug_sub_8160258 -debug_sub_8160258: - push {lr} - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - ldr r1, ._242 @ _nakamuraStatic0 - lsl r0, r2, #0x2 - add r0, r0, r1 - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0 - beq ._241 @cond_branch - add r0, r2, #0 - bl debug_sub_816062C -._241: - pop {r0} - bx r0 -._243: - .align 2, 0 -._242: - .word _nakamuraStatic0 - - thumb_func_end debug_sub_8160258 - - thumb_func_start debug_sub_816027C -debug_sub_816027C: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r4, r0, #0 - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - ldr r1, ._247 @ _nakamuraStatic0 - lsl r0, r4, #0x2 - add r3, r0, r1 - mov r1, #0x0 - ldsh r0, [r3, r1] - cmp r0, #0 - beq ._244 @cond_branch - lsl r0, r2, #0x18 - asr r0, r0, #0x18 - ldrb r1, [r3, #0x2] - add r0, r0, r1 - strb r0, [r3, #0x2] - lsl r0, r0, #0x18 - asr r0, r0, #0x18 - cmp r0, #0x64 - ble ._245 @cond_branch - mov r0, #0x1 - strb r0, [r3, #0x2] -._245: - mov r0, #0x2 - ldrsb r0, [r3, r0] - cmp r0, #0 - bgt ._246 @cond_branch - mov r0, #0x64 - strb r0, [r3, #0x2] -._246: - mov r0, #0x64 - mul r4, r4, r0 - ldr r0, ._247 + 4 @ gPlayerParty - add r4, r4, r0 - ldr r2, ._247 + 8 @ gBaseStats - mov r0, #0x0 - ldsh r1, [r3, r0] - lsl r0, r1, #0x3 - sub r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r2 - ldrb r1, [r0, #0x13] - mov r0, #0xca - lsl r0, r0, #0x1 - add r2, r1, #0 - mul r2, r2, r0 - mov r0, #0x2 - ldrsb r0, [r3, r0] - lsl r0, r0, #0x2 - ldr r1, ._247 + 12 @ gExperienceTables - add r0, r0, r1 - add r2, r2, r0 - add r0, r4, #0 - mov r1, #0x19 - bl SetMonData - add r0, r4, #0 - bl debug_sub_803F55C -._244: - pop {r4} - pop {r0} - bx r0 -._248: - .align 2, 0 -._247: - .word _nakamuraStatic0 - .word gPlayerParty - .word gBaseStats - .word gExperienceTables - - thumb_func_end debug_sub_816027C - - thumb_func_start debug_sub_8160308 -debug_sub_8160308: - push {r4, r5, r6, r7, lr} - mov r7, r9 - mov r6, r8 - push {r6, r7} - add sp, sp, #0xffffff8c - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - mov r2, #0x0 -._252: - add r1, r2, #1 - lsl r0, r1, #0x18 - lsr r5, r0, #0x18 - mov r8, r1 - cmp r5, #0x5 - bhi ._249 @cond_branch - mov r0, #0x64 - mov r9, r0 - mov r0, r9 - mul r0, r0, r2 - ldr r7, ._254 @ gPlayerParty - add r6, r0, r7 -._251: - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x0 - bl GetMonData - cmp r0, #0 - bne ._250 @cond_branch - add r0, sp, #0x10 - add r1, r6, #0 - mov r2, #0x64 - bl memcpy - mov r4, r9 - mul r4, r4, r5 - add r4, r4, r7 - add r0, r6, #0 - add r1, r4, #0 - mov r2, #0x64 - bl memcpy - add r0, r4, #0 - add r1, sp, #0x10 - mov r2, #0x64 - bl memcpy -._250: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x5 - bls ._251 @cond_branch -._249: - mov r1, r8 - lsl r0, r1, #0x18 - lsr r2, r0, #0x18 - cmp r2, #0x4 - bls ._252 @cond_branch - bl CalculatePlayerPartyCount - ldr r4, ._254 + 4 @ gPlayerPartyCount - ldrb r1, [r4] - cmp r1, #0 - bne ._253 @cond_branch - ldr r0, ._254 @ gPlayerParty - str r1, [sp] - str r1, [sp, #0x4] - str r1, [sp, #0x8] - str r1, [sp, #0xc] - mov r1, #0x1 - mov r2, #0xa - mov r3, #0x20 - bl CreateMon - mov r0, #0x1 - strb r0, [r4] -._253: - add sp, sp, #0x74 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._255: - .align 2, 0 -._254: - .word gPlayerParty - .word gPlayerPartyCount - - thumb_func_end debug_sub_8160308 - - thumb_func_start debug_sub_81603B8 -debug_sub_81603B8: - push {r4, r5, r6, r7, lr} - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - mov r0, #0x5 - bl PlaySE - ldr r7, ._259 @ _nakamuraData4 - ldrb r4, [r7] - add r0, r4, #0 - mov r1, #0x6 - bl __udivsi3 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - add r0, r4, #0 - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, ._259 + 4 @ _843E5D1 - add r0, r5, r0 - ldrb r2, [r0] - lsl r3, r4, #0x1 - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r3, r3, #0x2 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - add r0, r2, #0 - bl Menu_BlankWindowRect - cmp r6, #0 - bne ._256 @cond_branch - cmp r4, #0 - beq ._257 @cond_branch - ldrb r0, [r7] - sub r0, r0, #0x1 - b ._258 -._260: - .align 2, 0 -._259: - .word _nakamuraData4 - .word _843E5D1 -._257: - lsl r0, r5, #0x1 - add r0, r0, r5 - lsl r0, r0, #0x1 - add r0, r0, #0x5 -._258: - strb r0, [r7] -._256: - ldr r1, ._264 @ _nakamuraData4 - cmp r6, #0x1 - bne ._261 @cond_branch - cmp r4, #0x5 - beq ._262 @cond_branch - ldrb r0, [r1] - add r0, r0, #0x1 - b ._263 -._265: - .align 2, 0 -._264: - .word _nakamuraData4 -._262: - lsl r0, r5, #0x1 - add r0, r0, r5 - lsl r0, r0, #0x1 -._263: - strb r0, [r1] -._261: - cmp r6, #0x2 - bne ._266 @cond_branch - cmp r5, #0 - beq ._267 @cond_branch - ldrb r0, [r1] - sub r0, r0, #0x6 - b ._268 -._267: - add r0, r4, #0 - add r0, r0, #0xc -._268: - strb r0, [r1] -._266: - cmp r6, #0x3 - bne ._271 @cond_branch - cmp r5, #0x2 - beq ._270 @cond_branch - ldrb r0, [r1] - add r0, r0, #0x6 - strb r0, [r1] - b ._271 -._270: - strb r4, [r1] -._271: - ldrb r4, [r1] - add r0, r4, #0 - mov r1, #0x6 - bl __udivsi3 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - add r0, r4, #0 - mov r1, #0x6 - bl __umodsi3 - add r1, r0, #0 - lsl r1, r1, #0x18 - ldr r0, ._272 @ _843E5D1 - add r0, r5, r0 - ldrb r0, [r0] - lsr r1, r1, #0x17 - add r1, r1, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - mov r2, #0xff - bl PrintTriangleCursorWithPalette - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._273: - .align 2, 0 -._272: - .word _843E5D1 - - thumb_func_end debug_sub_81603B8 - - thumb_func_start debug_sub_8160498 -debug_sub_8160498: - push {r4, lr} - ldr r1, ._276 @ gMain - ldrh r2, [r1, #0x2e] - mov r0, #0x40 - and r0, r0, r2 - cmp r0, #0 - beq ._274 @cond_branch - mov r0, #0x0 - b ._281 -._277: - .align 2, 0 -._276: - .word gMain -._274: - mov r0, #0x80 - and r0, r0, r2 - cmp r0, #0 - beq ._278 @cond_branch - mov r0, #0x1 - b ._281 -._278: - mov r0, #0x20 - and r0, r0, r2 - cmp r0, #0 - beq ._280 @cond_branch - mov r0, #0x2 - b ._281 -._280: - mov r0, #0x10 - and r0, r0, r2 - cmp r0, #0 - beq ._282 @cond_branch - mov r0, #0x3 -._281: - bl debug_sub_81603B8 - mov r0, #0x0 - b ._311 -._282: - ldrh r1, [r1, #0x30] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._284 @cond_branch - ldr r4, ._289 @ _nakamuraData4 - ldrb r0, [r4] - cmp r0, #0x5 - bhi ._285 @cond_branch - mov r1, #0x1 - bl debug_sub_81601C8 -._285: - ldrb r0, [r4] - sub r0, r0, #0x6 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._286 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl debug_sub_8160258 -._286: - ldrb r0, [r4] - sub r0, r0, #0xc - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._306 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - b ._300 -._290: - .align 2, 0 -._289: - .word _nakamuraData4 -._284: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._291 @cond_branch - ldr r4, ._294 @ _nakamuraData4 - ldrb r0, [r4] - cmp r0, #0x5 - bhi ._304 @cond_branch - mov r1, #0x1 - neg r1, r1 - b ._293 -._295: - .align 2, 0 -._294: - .word _nakamuraData4 -._291: - mov r0, #0x80 - lsl r0, r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._296 @cond_branch - ldr r4, ._301 @ _nakamuraData4 - ldrb r0, [r4] - cmp r0, #0x5 - bhi ._297 @cond_branch - mov r1, #0xa - bl debug_sub_81601C8 -._297: - ldrb r0, [r4] - sub r0, r0, #0x6 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._298 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl debug_sub_8160258 -._298: - ldrb r0, [r4] - sub r0, r0, #0xc - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._306 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - b ._300 -._302: - .align 2, 0 -._301: - .word _nakamuraData4 -._296: - mov r0, #0x80 - lsl r0, r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._303 @cond_branch - ldr r4, ._308 @ _nakamuraData4 - ldrb r0, [r4] - cmp r0, #0x5 - bhi ._304 @cond_branch - mov r1, #0xa - neg r1, r1 -._293: - bl debug_sub_81601C8 -._304: - ldrb r0, [r4] - sub r0, r0, #0x6 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._305 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl debug_sub_8160258 -._305: - ldrb r0, [r4] - sub r0, r0, #0xc - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x5 - bhi ._306 @cond_branch - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - neg r1, r1 -._300: - bl debug_sub_816027C -._306: - ldrb r0, [r4] - mov r1, #0x6 - bl __umodsi3 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl debug_sub_816017C - mov r0, #0x0 - b ._311 -._309: - .align 2, 0 -._308: - .word _nakamuraData4 -._303: - mov r0, #0x8 - and r0, r0, r2 - cmp r0, #0 - bne ._310 @cond_branch - mov r0, #0x0 - b ._311 -._310: - bl debug_sub_8160308 - bl CloseMenu - mov r0, #0x1 -._311: - pop {r4} - pop {r1} - bx r1 - - thumb_func_end debug_sub_8160498 - - thumb_func_start debug_sub_816062C -debug_sub_816062C: - push {r4, r5, r6, r7, lr} - mov r7, r9 - mov r6, r8 - push {r6, r7} - add sp, sp, #0xfffffff0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r8, r0 - mov r0, #0x64 - mov r4, r8 - mul r4, r4, r0 - ldr r0, ._316 @ gPlayerParty - add r4, r4, r0 - add r0, r4, #0 - mov r1, #0xb - bl GetMonData - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - add r0, r4, #0 - bl GetMonGender - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - ldr r1, ._316 + 4 @ gBaseStats - lsl r0, r7, #0x3 - sub r0, r0, r7 - lsl r0, r0, #0x2 - add r0, r0, r1 - ldrb r6, [r0, #0x10] - cmp r6, #0 - beq ._313 @cond_branch - cmp r6, #0xfe - beq ._313 @cond_branch - cmp r6, #0xff - bne ._314 @cond_branch -._313: - mov r0, #0x64 - mov r1, r8 - mul r1, r1, r0 - add r0, r1, #0 - ldr r1, ._316 @ gPlayerParty - add r0, r0, r1 - bl GetMonGender - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - b ._320 -._317: - .align 2, 0 -._316: - .word gPlayerParty - .word gBaseStats -._314: - cmp r2, #0 - beq ._318 @cond_branch - cmp r2, #0xfe - beq ._319 @cond_branch - mov r0, #0x0 - b ._320 -._318: - mov r6, #0xfe - b ._321 -._319: - mov r6, #0x0 -._321: - mov r0, r8 - lsl r0, r0, #0x2 - mov r9, r0 -._322: - bl Random - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - bl Random - lsl r0, r0, #0x10 - orr r5, r5, r0 - add r0, r7, #0 - add r1, r5, #0 - bl GetGenderFromSpeciesAndPersonality - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, r6 - bne ._322 @cond_branch - mov r0, #0x64 - mov r4, r8 - mul r4, r4, r0 - ldr r0, ._323 @ gPlayerParty - add r4, r4, r0 - add r0, r4, #0 - mov r1, #0x42 - bl GetMonData - ldr r0, ._323 + 4 @ _nakamuraStatic0 - add r0, r0, r9 - ldrh r1, [r0] - ldrb r2, [r0, #0x2] - mov r0, #0x1 - str r0, [sp] - str r5, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r4, #0 - mov r3, #0x20 - bl CreateMon - add r0, r6, #0 -._320: - add sp, sp, #0x10 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._324: - .align 2, 0 -._323: - .word gPlayerParty - .word _nakamuraStatic0 - - thumb_func_end debug_sub_816062C - - thumb_func_start debug_sub_8160714 -debug_sub_8160714: - push {r4, r5, r6, r7, lr} - mov r7, r9 - mov r6, r8 - push {r6, r7} - add sp, sp, #0xfffffff0 - add r6, r0, #0 - mov r9, r1 - mov r7, #0x0 - mov r0, #0x0 - mov r8, r0 - mov r2, #0x0 - mov r5, #0x0 -._329: - add r4, r5, #1 - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - mov r0, r9 - str r2, [sp, #0xc] - bl GetPokeblockData - add r1, r0, #0 - lsl r0, r5, #0x1 - add r0, r0, sp - strh r1, [r0] - ldr r2, [sp, #0xc] - cmp r5, #0x5 - beq ._328 @cond_branch - lsl r0, r1, #0x10 - asr r1, r0, #0x10 - cmp r1, #0 - ble ._326 @cond_branch - add r0, r7, #1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 -._326: - cmp r1, #0 - bge ._327 @cond_branch - mov r0, r8 - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r8, r0 -._327: - cmp r1, #0 - bne ._328 @cond_branch - add r0, r2, #1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 -._328: - lsl r0, r4, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x5 - bls ._329 @cond_branch - mov r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0x31 - bgt ._333 @cond_branch - mov r0, sp - ldrh r0, [r0, #0x2] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - cmp r0, #0x31 - bgt ._333 @cond_branch - mov r0, sp - mov r4, #0x4 - ldsh r0, [r0, r4] - cmp r0, #0x31 - bgt ._333 @cond_branch - mov r0, sp - mov r1, #0x6 - ldsh r0, [r0, r1] - cmp r0, #0x31 - bgt ._333 @cond_branch - mov r0, sp - mov r4, #0x8 - ldsh r0, [r0, r4] - cmp r0, #0x31 - ble ._334 @cond_branch -._333: - ldr r1, ._336 @ ContestStatsText_GoldPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0xe - b ._400 -._337: - .align 2, 0 -._336: - .word ContestStatsText_GoldPokeBlock -._334: - cmp r7, #0x4 - bne ._338 @cond_branch - ldr r1, ._340 @ ContestStatsText_WhitePokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0xd - b ._400 -._341: - .align 2, 0 -._340: - .word ContestStatsText_WhitePokeBlock -._338: - mov r3, #0x0 - mov r5, #0x0 -._343: - lsl r0, r5, #0x1 - add r0, r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0x2 - bne ._342 @cond_branch - add r0, r3, #1 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 -._342: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x4 - bls ._343 @cond_branch - cmp r3, #0x3 - beq ._345 @cond_branch - cmp r2, #0x5 - beq ._345 @cond_branch - mov r4, r8 - cmp r4, #0x4 - bne ._346 @cond_branch -._345: - ldr r1, ._348 @ ContestStatsText_BlackPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0xc - b ._400 -._349: - .align 2, 0 -._348: - .word ContestStatsText_BlackPokeBlock -._346: - cmp r7, #0x3 - bne ._350 @cond_branch - ldr r1, ._352 @ ContestStatsText_GrayPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0xb - b ._400 -._353: - .align 2, 0 -._352: - .word ContestStatsText_GrayPokeBlock -._350: - cmp r7, #0x2 - beq ._354 @cond_branch - mov r0, r8 - cmp r0, #0x2 - bne ._377 @cond_branch -._354: - mov r3, #0x6 - mov r2, #0x0 - mov r5, #0x0 -._359: - lsl r0, r5, #0x1 - add r0, r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0 - beq ._358 @cond_branch - cmp r3, #0x6 - bne ._357 @cond_branch - add r3, r5, #0 - b ._358 -._357: - add r2, r5, #0 -._358: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x4 - bls ._359 @cond_branch - lsl r0, r3, #0x1 - mov r4, sp - add r1, r4, r0 - lsl r0, r2, #0x1 - add r0, r0, sp - mov r4, #0x0 - ldsh r1, [r1, r4] - mov r4, #0x0 - ldsh r0, [r0, r4] - cmp r1, r0 - blt ._360 @cond_branch - add r2, r3, #0 -._360: - cmp r2, #0 - bne ._361 @cond_branch - ldr r1, ._363 @ ContestStatsText_PurplePokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x6 - b ._400 -._364: - .align 2, 0 -._363: - .word ContestStatsText_PurplePokeBlock -._361: - cmp r2, #0x1 - bne ._365 @cond_branch - ldr r1, ._367 @ ContestStatsText_IndigoPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x7 - b ._400 -._368: - .align 2, 0 -._367: - .word ContestStatsText_IndigoPokeBlock -._365: - cmp r2, #0x2 - bne ._369 @cond_branch - ldr r1, ._371 @ ContestStatsText_BrownPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x8 - b ._400 -._372: - .align 2, 0 -._371: - .word ContestStatsText_BrownPokeBlock -._369: - cmp r2, #0x3 - bne ._373 @cond_branch - ldr r1, ._375 @ ContestStatsText_LiteBluePokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x9 - b ._400 -._376: - .align 2, 0 -._375: - .word ContestStatsText_LiteBluePokeBlock -._373: - cmp r2, #0x4 - bne ._377 @cond_branch - ldr r1, ._379 @ ContestStatsText_OlivePokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0xa - b ._400 -._380: - .align 2, 0 -._379: - .word ContestStatsText_OlivePokeBlock -._377: - cmp r7, #0x1 - beq ._381 @cond_branch - mov r0, r8 - cmp r0, #0x1 - bne ._399 @cond_branch -._381: - mov r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, #0 - beq ._383 @cond_branch - ldr r1, ._385 @ ContestStatsText_RedPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x1 - b ._400 -._386: - .align 2, 0 -._385: - .word ContestStatsText_RedPokeBlock -._383: - mov r0, sp - ldrh r0, [r0, #0x2] - cmp r0, #0 - beq ._387 @cond_branch - ldr r1, ._389 @ ContestStatsText_BluePokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x2 - b ._400 -._390: - .align 2, 0 -._389: - .word ContestStatsText_BluePokeBlock -._387: - mov r0, sp - mov r4, #0x4 - ldsh r0, [r0, r4] - cmp r0, #0 - beq ._391 @cond_branch - ldr r1, ._393 @ ContestStatsText_PinkPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x3 - b ._400 -._394: - .align 2, 0 -._393: - .word ContestStatsText_PinkPokeBlock -._391: - mov r0, sp - mov r1, #0x6 - ldsh r0, [r0, r1] - cmp r0, #0 - beq ._395 @cond_branch - ldr r1, ._397 @ ContestStatsText_GreenPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x4 - b ._400 -._398: - .align 2, 0 -._397: - .word ContestStatsText_GreenPokeBlock -._395: - mov r0, sp - mov r4, #0x8 - ldsh r0, [r0, r4] - cmp r0, #0 - beq ._399 @cond_branch - ldr r1, ._401 @ ContestStatsText_YellowPokeBlock - add r0, r6, #0 - bl StringCopy - mov r0, #0x5 - b ._400 -._402: - .align 2, 0 -._401: - .word ContestStatsText_YellowPokeBlock -._399: - ldr r1, ._403 @ gOtherText_FiveQuestions - add r0, r6, #0 - bl StringCopy - mov r0, #0x0 -._400: - add sp, sp, #0x10 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._404: - .align 2, 0 -._403: - .word gOtherText_FiveQuestions - - thumb_func_end debug_sub_8160714 - - thumb_func_start debug_sub_816097C -debug_sub_816097C: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - add r7, r0, #0 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 - mov r6, #0x0 - mov r1, #0x0 -._405: - add r0, r7, r6 - strb r1, [r0] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x3 - bls ._405 @cond_branch - mov r0, #0xff - strb r0, [r7, #0x4] - lsl r0, r5, #0x10 - asr r0, r0, #0x10 - cmp r0, #0 - bne ._406 @cond_branch - mov r0, #0xa1 - strb r0, [r7, #0x3] - b ._414 -._406: - cmp r0, #0 - ble ._408 @cond_branch - mov r4, #0x64 - mov r0, #0x0 - mov r8, r0 - mov r6, #0x0 -._412: - lsl r5, r5, #0x10 - asr r0, r5, #0x10 - lsl r4, r4, #0x10 - asr r1, r4, #0x10 - bl __divsi3 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r1, r8 - cmp r1, #0 - bne ._410 @cond_branch - cmp r6, #0x2 - beq ._410 @cond_branch - cmp r2, #0 - beq ._411 @cond_branch -._410: - add r1, r6, r7 - add r0, r2, #0 - sub r0, r0, #0x5f - strb r0, [r1, #0x1] - mov r0, #0x1 - mov r8, r0 -._411: - asr r0, r5, #0x10 - asr r4, r4, #0x10 - add r1, r4, #0 - bl __modsi3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - mov r1, #0xa - bl __divsi3 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls ._412 @cond_branch - b ._414 -._408: - cmp r0, #0 - bge ._414 @cond_branch - neg r0, r0 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - mov r4, #0x64 - mov r1, #0x0 - mov r8, r1 - mov r6, #0x0 -._419: - lsl r5, r5, #0x10 - asr r0, r5, #0x10 - lsl r4, r4, #0x10 - asr r1, r4, #0x10 - bl __divsi3 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r1, r8 - lsl r0, r1, #0x10 - add r3, r0, #0 - cmp r3, #0 - bne ._416 @cond_branch - cmp r6, #0x2 - beq ._416 @cond_branch - cmp r2, #0 - beq ._417 @cond_branch -._416: - add r1, r6, r7 - add r0, r2, #0 - sub r0, r0, #0x5f - strb r0, [r1, #0x1] - cmp r3, #0 - bne ._418 @cond_branch - mov r0, #0xae - strb r0, [r1] -._418: - mov r0, #0x1 - mov r8, r0 -._417: - asr r0, r5, #0x10 - asr r4, r4, #0x10 - add r1, r4, #0 - bl __modsi3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - mov r1, #0xa - bl __divsi3 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls ._419 @cond_branch -._414: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_end debug_sub_816097C - - thumb_func_start debug_sub_8160A80 -debug_sub_8160A80: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r2, r0, #0 - ldr r1, ._422 @ _nakamuraStatic18 - cmp r0, #0 - bne ._420 @cond_branch - ldr r4, ._422 + 4 @ gStringVar1 - ldrb r1, [r1, #0x1] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x3 - bl Menu_PrintText - b ._440 -._423: - .align 2, 0 -._422: - .word _nakamuraStatic18 - .word gStringVar1 -._420: - cmp r0, #0x1 - bne ._424 @cond_branch - ldr r4, ._426 @ gStringVar1 - ldrb r1, [r1, #0x2] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x5 - bl Menu_PrintText - b ._440 -._427: - .align 2, 0 -._426: - .word gStringVar1 -._424: - cmp r0, #0x2 - bne ._428 @cond_branch - ldr r4, ._430 @ gStringVar1 - ldrb r1, [r1, #0x3] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x7 - bl Menu_PrintText - b ._440 -._431: - .align 2, 0 -._430: - .word gStringVar1 -._428: - cmp r0, #0x3 - bne ._432 @cond_branch - ldr r4, ._434 @ gStringVar1 - ldrb r1, [r1, #0x4] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x9 - bl Menu_PrintText - b ._440 -._435: - .align 2, 0 -._434: - .word gStringVar1 -._432: - cmp r0, #0x4 - bne ._436 @cond_branch - ldr r4, ._438 @ gStringVar1 - ldrb r1, [r1, #0x5] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0xb - bl Menu_PrintText - b ._440 -._439: - .align 2, 0 -._438: - .word gStringVar1 -._436: - cmp r2, #0x5 - bne ._440 @cond_branch - ldr r4, ._441 @ gStringVar1 - ldrb r1, [r1, #0x6] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0xd - bl Menu_PrintText -._440: - pop {r4} - pop {r0} - bx r0 -._442: - .align 2, 0 -._441: - .word gStringVar1 - - thumb_func_end debug_sub_8160A80 - - thumb_func_start debug_sub_8160B50 -debug_sub_8160B50: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r3, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r4, r1, #0 - ldr r2, ._445 @ _nakamuraStatic18 - cmp r0, #0 - bne ._443 @cond_branch - ldrb r0, [r2, #0x1] - add r0, r0, r1 - strb r0, [r2, #0x1] - b ._455 -._446: - .align 2, 0 -._445: - .word _nakamuraStatic18 -._443: - cmp r0, #0x1 - bne ._447 @cond_branch - ldrb r0, [r2, #0x2] - add r0, r0, r1 - strb r0, [r2, #0x2] - b ._455 -._447: - cmp r0, #0x2 - bne ._449 @cond_branch - ldrb r0, [r2, #0x3] - add r0, r0, r1 - strb r0, [r2, #0x3] - b ._455 -._449: - cmp r0, #0x3 - bne ._451 @cond_branch - ldrb r0, [r2, #0x4] - add r0, r0, r1 - strb r0, [r2, #0x4] - b ._455 -._451: - cmp r0, #0x4 - bne ._453 @cond_branch - ldrb r0, [r2, #0x5] - add r0, r0, r1 - strb r0, [r2, #0x5] - b ._455 -._453: - cmp r3, #0x5 - bne ._455 @cond_branch - ldrb r0, [r2, #0x6] - add r0, r0, r4 - strb r0, [r2, #0x6] -._455: - pop {r4} - pop {r0} - bx r0 - - thumb_func_end debug_sub_8160B50 - - thumb_func_start debug_sub_8160BB0 -debug_sub_8160BB0: - push {r4, r5, lr} - ldr r5, ._456 @ gStringVar1 - ldr r4, ._456 + 4 @ _nakamuraStatic18 - add r0, r5, #0 - add r1, r4, #0 - bl debug_sub_8160714 - strb r0, [r4] - mov r0, #0x1 - mov r1, #0x1 - mov r2, #0x8 - mov r3, #0x2 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - pop {r4, r5} - pop {r0} - bx r0 -._457: - .align 2, 0 -._456: - .word gStringVar1 - .word _nakamuraStatic18 - - thumb_func_end debug_sub_8160BB0 - - thumb_func_start debug_sub_8160BE4 -debug_sub_8160BE4: - push {r4, lr} - add sp, sp, #0xfffffff8 - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xc - mov r3, #0xf - bl Menu_DrawStdWindowFrame - bl debug_sub_8160BB0 - ldr r0, ._459 @ gContestStatsText_Spicy - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - ldr r0, ._459 + 4 @ gContestStatsText_Dry - mov r1, #0x2 - mov r2, #0x5 - bl Menu_PrintText - ldr r0, ._459 + 8 @ gContestStatsText_Sweet - mov r1, #0x2 - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._459 + 12 @ gContestStatsText_Bitter - mov r1, #0x2 - mov r2, #0x9 - bl Menu_PrintText - ldr r0, ._459 + 16 @ gContestStatsText_Sour - mov r1, #0x2 - mov r2, #0xb - bl Menu_PrintText - ldr r0, ._459 + 20 @ gContestStatsText_Tasty - mov r1, #0x2 - mov r2, #0xd - bl Menu_PrintText - mov r4, #0x0 -._458: - add r0, r4, #0 - bl debug_sub_8160A80 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._458 @cond_branch - mov r0, #0x0 - str r0, [sp] - mov r0, #0xb - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x3 - mov r3, #0x6 - bl InitMenu - add sp, sp, #0x8 - pop {r4} - pop {r0} - bx r0 -._460: - .align 2, 0 -._459: - .word gContestStatsText_Spicy - .word gContestStatsText_Dry - .word gContestStatsText_Sweet - .word gContestStatsText_Bitter - .word gContestStatsText_Sour - .word gContestStatsText_Tasty - - thumb_func_end debug_sub_8160BE4 - - thumb_func_start debug_sub_8160C7C -debug_sub_8160C7C: - push {r4, lr} - ldr r2, ._469 @ _nakamuraStatic18 - mov r1, #0x0 - ldrb r0, [r2] - cmp r0, #0xc - bne ._467 @cond_branch - ldrb r0, [r2, #0x1] - cmp r0, #0x2 - bne ._462 @cond_branch - mov r1, #0x1 -._462: - ldrb r0, [r2, #0x3] - cmp r0, #0x2 - bne ._463 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._463: - ldrb r0, [r2, #0x4] - cmp r0, #0x2 - bne ._464 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._464: - ldrb r0, [r2, #0x2] - cmp r0, #0x2 - bne ._465 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._465: - ldrb r0, [r2, #0x5] - cmp r0, #0x2 - bne ._466 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._466: - cmp r1, #0x3 - beq ._467 @cond_branch - mov r0, #0x2 - strb r0, [r2, #0x1] - strb r0, [r2, #0x3] - strb r0, [r2, #0x4] -._467: - add r0, r2, #0 - bl sub_810CA34 - bl debug_sub_8160BB0 - mov r4, #0x0 -._468: - add r0, r4, #0 - bl debug_sub_8160A80 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._468 @cond_branch - pop {r4} - pop {r0} - bx r0 -._470: - .align 2, 0 -._469: - .word _nakamuraStatic18 - - thumb_func_end debug_sub_8160C7C - - thumb_func_start debug_sub_8160CF4 -debug_sub_8160CF4: - push {lr} - ldr r2, ._473 @ gMain - ldrh r1, [r2, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._471 @cond_branch - mov r0, #0x1 - neg r0, r0 - b ._472 -._474: - .align 2, 0 -._473: - .word gMain -._471: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._475 @cond_branch - mov r0, #0x1 -._472: - bl Menu_MoveCursor - mov r0, #0x0 - b ._484 -._475: - mov r0, #0x20 - and r0, r0, r1 - cmp r0, #0 - beq ._477 @cond_branch - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - neg r1, r1 - b ._478 -._477: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._479 @cond_branch - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 -._478: - bl debug_sub_8160B50 - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl debug_sub_8160A80 - bl debug_sub_8160BB0 - mov r0, #0x0 - b ._484 -._479: - ldrh r1, [r2, #0x2e] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._481 @cond_branch - bl debug_sub_8160C7C - mov r0, #0x5 - bl PlaySE - mov r0, #0x0 - b ._484 -._481: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - bne ._483 @cond_branch - mov r0, #0x0 - b ._484 -._483: - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 -._484: - pop {r1} - bx r1 - - thumb_func_end debug_sub_8160CF4 - - thumb_func_start debug_sub_8160D98 -debug_sub_8160D98: - push {lr} - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl debug_sub_8160BE4 - ldr r1, ._485 @ gMenuCallback - ldr r0, ._485 + 4 @ debug_sub_8160CF4 - str r0, [r1] - mov r0, #0x0 - pop {r1} - bx r1 -._486: - .align 2, 0 -._485: - .word gMenuCallback - .word debug_sub_8160CF4+1 - - thumb_func_end debug_sub_8160D98 - - thumb_func_start debug_sub_8160DC0 -debug_sub_8160DC0: - push {lr} - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x16 - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r0, ._487 @ gOtherText_Slash - mov r1, #0xb - mov r2, #0x1 - bl Menu_PrintText - ldr r0, ._487 + 4 @ Str_843E5F2 - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - ldr r0, ._487 + 8 @ Str_843E5FB - mov r1, #0x2 - mov r2, #0x5 - bl Menu_PrintText - ldr r0, ._487 + 12 @ Str_843E606 - mov r1, #0x2 - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._487 + 16 @ Str_843E611 - mov r1, #0x2 - mov r2, #0x9 - bl Menu_PrintText - ldr r0, ._487 + 20 @ Str_843E61C - mov r1, #0x2 - mov r2, #0xb - bl Menu_PrintText - ldr r0, ._487 + 24 @ Str_843E627 - mov r1, #0x2 - mov r2, #0xd - bl Menu_PrintText - ldr r0, ._487 + 28 @ Str_843E637 - mov r1, #0x2 - mov r2, #0xf - bl Menu_PrintText - ldr r0, ._487 + 32 @ Str_843E632 - mov r1, #0x2 - mov r2, #0x11 - bl Menu_PrintText - pop {r0} - bx r0 -._488: - .align 2, 0 -._487: - .word gOtherText_Slash - .word Str_843E5F2 - .word Str_843E5FB - .word Str_843E606 - .word Str_843E611 - .word Str_843E61C - .word Str_843E627 - .word Str_843E637 - .word Str_843E632 - - thumb_func_end debug_sub_8160DC0 - - thumb_func_start debug_sub_8160E50 -debug_sub_8160E50: - push {r4, r5, r6, lr} - add r6, r0, #0 - mov r0, #0x1 - mov r1, #0x1 - mov r2, #0xa - mov r3, #0x2 - bl Menu_BlankWindowRect - ldr r5, ._489 @ gStringVar1 - add r0, r6, #0 - mov r1, #0x2 - add r2, r5, #0 - bl GetMonData - add r0, r5, #0 - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - mov r0, #0xc - mov r1, #0x1 - mov r2, #0x15 - mov r3, #0x2 - bl Menu_BlankWindowRect - add r0, r6, #0 - mov r1, #0xb - bl GetMonData - mov r1, #0xb - mul r0, r0, r1 - ldr r1, ._489 + 4 @ gSpeciesNames - add r0, r0, r1 - mov r1, #0xc - mov r2, #0x1 - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1a - bl GetMonData - add r4, r0, #0 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0x3 - mov r2, #0x11 - mov r3, #0x4 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0x3 - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1b - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r4, r4, r1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0x5 - mov r2, #0x11 - mov r3, #0x6 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0x5 - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1c - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r4, r4, r1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0x7 - mov r2, #0x11 - mov r3, #0x8 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0x7 - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1d - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r4, r4, r1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0x9 - mov r2, #0x11 - mov r3, #0xa - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0x9 - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1e - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r4, r4, r1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0xb - mov r2, #0x11 - mov r3, #0xc - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0xb - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x1f - bl GetMonData - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r4, r4, r1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0xd - mov r2, #0x11 - mov r3, #0xe - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0xd - bl Menu_PrintText - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0xf - mov r2, #0x11 - mov r3, #0x10 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0xf - bl Menu_PrintText - add r0, r6, #0 - mov r1, #0x20 - bl GetMonData - add r1, r0, #0 - add r0, r5, #0 - mov r2, #0x0 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - mov r0, #0xd - mov r1, #0x11 - mov r2, #0x11 - mov r3, #0x12 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0xd - mov r2, #0x11 - bl Menu_PrintText - pop {r4, r5, r6} - pop {r0} - bx r0 -._490: - .align 2, 0 -._489: - .word gStringVar1 - .word gSpeciesNames - - thumb_func_end debug_sub_8160E50 - - thumb_func_start debug_sub_8161028 -debug_sub_8161028: - push {r4, r5, r6, lr} - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - asr r1, r0, #0x18 - mov r0, #0x1 - neg r0, r0 - cmp r1, r0 - bne ._491 @cond_branch - ldr r0, ._496 @ _nakamuraData5 - ldrb r0, [r0] - cmp r0, #0 - bne ._492 @cond_branch - mov r5, #0x5 -._494: - lsl r0, r5, #0x10 - asr r4, r0, #0x10 - mov r0, #0x64 - mul r0, r0, r4 - ldr r1, ._496 + 4 @ gPlayerParty - add r0, r0, r1 - mov r1, #0xb - bl GetMonData - cmp r0, #0 - bne ._493 @cond_branch - sub r0, r4, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r0, #0 - bge ._494 @cond_branch -._492: - ldr r1, ._496 @ _nakamuraData5 - ldrb r0, [r1] - add r0, r0, r6 - strb r0, [r1] - b ._506 -._497: - .align 2, 0 -._496: - .word _nakamuraData5 - .word gPlayerParty -._491: - cmp r1, #0x1 - bne ._506 @cond_branch - ldr r4, ._501 @ _nakamuraData5 - ldrb r0, [r4] - add r0, r0, r6 - strb r0, [r4] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x6 - bne ._499 @cond_branch - mov r0, #0x0 - b ._500 -._502: - .align 2, 0 -._501: - .word _nakamuraData5 -._493: - ldr r0, ._504 @ _nakamuraData5 - strb r5, [r0] - b ._506 -._505: - .align 2, 0 -._504: - .word _nakamuraData5 -._499: - ldrb r1, [r4] - mov r0, #0x64 - mul r0, r0, r1 - ldr r1, ._507 @ gPlayerParty - add r0, r0, r1 - mov r1, #0xb - bl GetMonData - cmp r0, #0 - bne ._506 @cond_branch -._500: - strb r0, [r4] -._506: - pop {r4, r5, r6} - pop {r0} - bx r0 -._508: - .align 2, 0 -._507: - .word gPlayerParty - - thumb_func_end debug_sub_8161028 - - thumb_func_start debug_sub_81610BC -debug_sub_81610BC: - push {lr} - ldr r0, ._511 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x20 - and r0, r0, r1 - cmp r0, #0 - beq ._509 @cond_branch - mov r0, #0x1 - neg r0, r0 - b ._510 -._512: - .align 2, 0 -._511: - .word gMain -._509: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._513 @cond_branch - mov r0, #0x1 -._510: - bl debug_sub_8161028 - ldr r0, ._515 @ _nakamuraData5 - ldrb r1, [r0] - mov r0, #0x64 - mul r0, r0, r1 - ldr r1, ._515 + 4 @ gPlayerParty - add r0, r0, r1 - bl debug_sub_8160E50 - mov r0, #0x0 - b ._518 -._516: - .align 2, 0 -._515: - .word _nakamuraData5 - .word gPlayerParty -._513: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - bne ._517 @cond_branch - mov r0, #0x0 - b ._518 -._517: - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 -._518: - pop {r1} - bx r1 - - thumb_func_end debug_sub_81610BC - - thumb_func_start DebugMenu_EffortValues -DebugMenu_EffortValues: - push {lr} - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - ldr r1, ._519 @ _nakamuraData5 - mov r0, #0x0 - strb r0, [r1] - bl debug_sub_8160DC0 - ldr r0, ._519 + 4 @ gPlayerParty - bl debug_sub_8160E50 - ldr r1, ._519 + 8 @ gMenuCallback - ldr r0, ._519 + 12 @ debug_sub_81610BC - str r0, [r1] - mov r0, #0x0 - pop {r1} - bx r1 -._520: - .align 2, 0 -._519: - .word _nakamuraData5 - .word gPlayerParty - .word gMenuCallback - .word debug_sub_81610BC+1 - - thumb_func_end DebugMenu_EffortValues - - thumb_func_start debug_sub_8161160 -debug_sub_8161160: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r7, #0x0 - ldr r2, ._523 @ _nakamuraData6 - ldr r1, ._523 + 4 @ _nakamuraData8 - ldrh r0, [r2] - ldrh r3, [r1] - cmp r0, r3 - bhi ._521 @cond_branch - add r6, r0, #0 - ldrh r5, [r1] - b ._522 -._524: - .align 2, 0 -._523: - .word _nakamuraData6 - .word _nakamuraData8 -._521: - ldrh r6, [r1] - ldrh r5, [r2] -._522: - mov r4, #0x0 - ldr r0, ._529 @ _nakamuraDataA - ldrh r0, [r0] - cmp r4, r0 - bcs ._525 @cond_branch - ldr r0, ._529 + 4 @ _nakamuraDataC - mov r8, r0 -._528: - bl Random - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r2, r8 - ldrh r1, [r2] - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, r6 - bcc ._527 @cond_branch - cmp r0, r5 - bhi ._527 @cond_branch - add r0, r7, #1 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 -._527: - add r4, r4, #0x1 - ldr r0, ._529 @ _nakamuraDataA - ldrh r0, [r0] - cmp r4, r0 - bcc ._528 @cond_branch -._525: - add r0, r7, #0 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._530: - .align 2, 0 -._529: - .word _nakamuraDataA - .word _nakamuraDataC - - thumb_func_end debug_sub_8161160 - - thumb_func_start debug_sub_81611D8 -debug_sub_81611D8: - push {r4, lr} - add sp, sp, #0xfffffff8 - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xf - mov r3, #0xb - bl Menu_DrawStdWindowFrame - ldr r0, ._531 @ Str_843E642 - mov r1, #0x2 - mov r2, #0x1 - bl Menu_PrintText - ldr r0, ._531 + 4 @ Str_843E647 - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - ldr r0, ._531 + 8 @ Str_843E65A - mov r1, #0x2 - mov r2, #0x5 - bl Menu_PrintText - ldr r0, ._531 + 12 @ Str_843E64C - mov r1, #0x2 - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._531 + 16 @ Str_843E651 - mov r1, #0x2 - mov r2, #0x9 - bl Menu_PrintText - ldr r0, ._531 + 20 @ Str_843E655 - mov r1, #0xd - mov r2, #0x9 - bl Menu_PrintText - ldr r4, ._531 + 24 @ Str_843E658 - add r0, r4, #0 - mov r1, #0xc - mov r2, #0x1 - bl Menu_PrintText - add r0, r4, #0 - mov r1, #0xc - mov r2, #0x3 - bl Menu_PrintText - add r0, r4, #0 - mov r1, #0xc - mov r2, #0x5 - bl Menu_PrintText - add r0, r4, #0 - mov r1, #0xc - mov r2, #0x7 - bl Menu_PrintText - add r0, r4, #0 - mov r1, #0xc - mov r2, #0x9 - bl Menu_PrintText - mov r0, #0x0 - str r0, [sp] - mov r0, #0xe - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x1 - mov r3, #0x4 - bl InitMenu - add sp, sp, #0x8 - pop {r4} - pop {r0} - bx r0 -._532: - .align 2, 0 -._531: - .word Str_843E642 - .word Str_843E647 - .word Str_843E65A - .word Str_843E64C - .word Str_843E651 - .word Str_843E655 - .word Str_843E658 - - thumb_func_end debug_sub_81611D8 - - thumb_func_start debug_sub_8161290 -debug_sub_8161290: - push {r4, lr} - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - ldr r4, ._533 @ gStringVar1 - add r0, r4, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x9 - bl Menu_PrintText - pop {r4} - pop {r0} - bx r0 -._534: - .align 2, 0 -._533: - .word gStringVar1 - - thumb_func_end debug_sub_8161290 - - thumb_func_start debug_sub_81612B8 -debug_sub_81612B8: - push {r4, r5, lr} - add r4, r2, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - lsl r1, r1, #0x18 - asr r1, r1, #0x18 - ldrh r2, [r0] - add r1, r1, r2 - strh r1, [r0] - ldr r5, ._535 @ gStringVar1 - ldrh r1, [r0] - add r0, r5, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r5, #0 - mov r1, #0x8 - add r2, r4, #0 - bl Menu_PrintText - pop {r4, r5} - pop {r0} - bx r0 -._536: - .align 2, 0 -._535: - .word gStringVar1 - - thumb_func_end debug_sub_81612B8 - - thumb_func_start debug_sub_81612EC -debug_sub_81612EC: - push {r4, r5, lr} - ldr r2, ._540 @ gMain - ldrh r1, [r2, #0x2c] - mov r0, #0x80 - lsl r0, r0, #0x1 - and r0, r0, r1 - mov r5, #0x1 - cmp r0, #0 - beq ._537 @cond_branch - mov r5, #0x64 -._537: - ldrh r1, [r2, #0x30] - mov r0, #0x40 - and r0, r0, r1 - cmp r0, #0 - beq ._538 @cond_branch - mov r0, #0x1 - neg r0, r0 - b ._539 -._541: - .align 2, 0 -._540: - .word gMain -._538: - mov r0, #0x80 - and r0, r0, r1 - cmp r0, #0 - beq ._542 @cond_branch - mov r0, #0x1 -._539: - bl Menu_MoveCursor -._565: - mov r0, #0x0 - b ._543 -._542: - mov r0, #0x20 - and r0, r0, r1 - cmp r0, #0 - beq ._544 @cond_branch - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - asr r4, r0, #0x18 - cmp r4, #0 - bne ._545 @cond_branch - ldr r0, ._550 @ _nakamuraData6 - neg r1, r5 - mov r2, #0x1 - bl debug_sub_81612B8 -._545: - cmp r4, #0x1 - bne ._546 @cond_branch - ldr r0, ._550 + 4 @ _nakamuraData8 - neg r1, r5 - mov r2, #0x3 - bl debug_sub_81612B8 -._546: - cmp r4, #0x2 - bne ._547 @cond_branch - ldr r0, ._550 + 8 @ _nakamuraDataC - neg r1, r5 - mov r2, #0x5 - bl debug_sub_81612B8 -._547: - cmp r4, #0x3 - bne ._565 @cond_branch - ldr r0, ._550 + 12 @ _nakamuraDataA - neg r1, r5 - mov r2, #0x7 - bl debug_sub_81612B8 - b ._565 -._551: - .align 2, 0 -._550: - .word _nakamuraData6 - .word _nakamuraData8 - .word _nakamuraDataC - .word _nakamuraDataA -._544: - mov r0, #0x10 - and r0, r0, r1 - cmp r0, #0 - beq ._552 @cond_branch - bl Menu_GetCursorPos - lsl r0, r0, #0x18 - asr r4, r0, #0x18 - cmp r4, #0 - bne ._553 @cond_branch - ldr r0, ._558 @ _nakamuraData6 - add r1, r5, #0 - mov r2, #0x1 - bl debug_sub_81612B8 -._553: - cmp r4, #0x1 - bne ._554 @cond_branch - ldr r0, ._558 + 4 @ _nakamuraData8 - add r1, r5, #0 - mov r2, #0x3 - bl debug_sub_81612B8 -._554: - cmp r4, #0x2 - bne ._555 @cond_branch - ldr r0, ._558 + 8 @ _nakamuraDataC - add r1, r5, #0 - mov r2, #0x5 - bl debug_sub_81612B8 -._555: - cmp r4, #0x3 - bne ._565 @cond_branch - ldr r0, ._558 + 12 @ _nakamuraDataA - add r1, r5, #0 - mov r2, #0x7 - bl debug_sub_81612B8 - b ._565 -._559: - .align 2, 0 -._558: - .word _nakamuraData6 - .word _nakamuraData8 - .word _nakamuraDataC - .word _nakamuraDataA -._552: - ldrh r1, [r2, #0x2e] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - beq ._560 @cond_branch - ldr r0, ._563 @ _nakamuraDataC - ldrh r0, [r0] - cmp r0, #0 - beq ._565 @cond_branch - mov r0, #0x5 - bl PlaySE - bl debug_sub_8161160 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl debug_sub_8161290 - b ._565 -._564: - .align 2, 0 -._563: - .word _nakamuraDataC -._560: - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._565 @cond_branch - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 -._543: - pop {r4, r5} - pop {r1} - bx r1 - - thumb_func_end debug_sub_81612EC - - thumb_func_start DebugMenu_RandomNumberTest -DebugMenu_RandomNumberTest: - push {lr} - ldr r0, ._566 @ _nakamuraData6 - mov r1, #0x0 - strh r1, [r0] - ldr r0, ._566 + 4 @ _nakamuraData8 - strh r1, [r0] - ldr r0, ._566 + 8 @ _nakamuraDataC - strh r1, [r0] - ldr r0, ._566 + 12 @ _nakamuraDataA - strh r1, [r0] - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl debug_sub_81611D8 - ldr r1, ._566 + 16 @ gMenuCallback - ldr r0, ._566 + 20 @ debug_sub_81612EC - str r0, [r1] - mov r0, #0x0 - pop {r1} - bx r1 -._567: - .align 2, 0 -._566: - .word _nakamuraData6 - .word _nakamuraData8 - .word _nakamuraDataC - .word _nakamuraDataA - .word gMenuCallback - .word debug_sub_81612EC+1 - - thumb_func_end DebugMenu_RandomNumberTest - - .align 2, 0 - -.endif diff --git a/include/choose_party.h b/include/choose_party.h index 853202a89..9aacef27d 100644 --- a/include/choose_party.h +++ b/include/choose_party.h @@ -9,5 +9,8 @@ bool8 SetupLinkMultiBattlePartyMenu(void); void HandleLinkMultiBattlePartyMenu(u8 taskId); void HandleDaycarePartyMenu(u8 taskId); void sub_8123138(u8 taskId); +#if DEBUG +void Debug_CopyLastThreePartyMonsToMultiPartnerParty(void); +#endif #endif // GUARD_CHOOSE_PARTY_H diff --git a/include/debug.h b/include/debug.h index 2136dbfb8..469560b9e 100644 --- a/include/debug.h +++ b/include/debug.h @@ -14,4 +14,7 @@ void debug_nullsub_66(void); // sound_check_menu void CB2_StartSoundCheckMenu(void); +// nakamura_debug_menu +void NakaGenderTest(void); + #endif // GUARD_DEBUG_H diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h index e59a23008..e2e31bee9 100644 --- a/include/decoration_inventory.h +++ b/include/decoration_inventory.h @@ -4,9 +4,12 @@ void ClearDecorationInventories(void); s8 sub_8133F9C(u8); u8 sub_8133FE4(u8); -u8 IsThereStorageSpaceForDecoration(u8); +u8 GiveDecoration(u8); u8 sub_8134074(u8); s8 sub_81340A8(u8); u8 sub_8134194(u8); +#if DEBUG +void Debug_GiveAllDecorations(void); +#endif // DEBUG #endif // GUARD_DECORATION_INVENTORY_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index cd0cb6eab..64e922651 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -13,7 +13,7 @@ void sub_8080A3C(void); void sub_8080AC4(void); void mapldr_default(); void sub_8080B60(void); -void atk17_seteffectsecondary(void); +void sub_8080DEC(void); void sub_8080E28(void); void sub_8080E44(void); bool32 sub_8080E70(void); diff --git a/include/global.h b/include/global.h index 0949c87cb..4437b7feb 100644 --- a/include/global.h +++ b/include/global.h @@ -1,6 +1,8 @@ #ifndef GUARD_GLOBAL_H #define GUARD_GLOBAL_H +#include <string.h> +#include <stdlib.h> #include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" @@ -14,10 +16,6 @@ #define INCBIN_S8 {0} #define INCBIN_S16 {0} #define INCBIN_S32 {0} -void *memcpy (void *, const void *, size_t); -void *memset (void *, int, size_t); -int strcmp (const char *, const char *); -#define abs(a) ((a) >= 0 ? (a) : -(a)) #endif // Prevent cross-jump optimization. diff --git a/include/menu.h b/include/menu.h index 3295cd5c5..523037839 100644 --- a/include/menu.h +++ b/include/menu.h @@ -4,10 +4,12 @@ #include "task.h" #include "text.h" +typedef bool8 (*MenuFunc)(); + struct MenuAction { const u8 *text; - u8 (*func)(); + MenuFunc func; }; struct MenuAction2 diff --git a/include/menu_helpers.h b/include/menu_helpers.h index a1c872c73..fb50ae724 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -50,5 +50,8 @@ void StartVerticalScrollIndicators(u8); void sub_80F98DC(u8); void PauseVerticalScrollIndicator(u8); void SetVerticalScrollIndicatorPriority(u8, u8); +#if DEBUG +void PrintTriangleCursorWithPalette(u8, u8, u8); +#endif // DEBUG #endif // GUARD_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h index dc393cc63..b18027933 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -138,7 +138,7 @@ void c2_exit_to_overworld_2_switch(void); void c2_exit_to_overworld_2_local(void); void c2_exit_to_overworld_2_link(void); // sub_805465C -void sub_805469C(void); +void c2_exit_to_overworld_1_sub_8080DEC(void); // sub_80546B8 void c2_exit_to_overworld_1_continue_scripts_restart_music(void); void sub_80546F0(void); diff --git a/include/pokeblock.h b/include/pokeblock.h index a606a32ad..f674666ff 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -42,7 +42,7 @@ s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); void CB2_PreparePokeblockFeedScene(void); -bool8 sub_810CA34(const struct Pokeblock *); +bool8 GivePokeblock(const struct Pokeblock *); #include "main.h" diff --git a/include/pokemon.h b/include/pokemon.h index a6bd7d0c6..8864aee8a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -634,4 +634,8 @@ void BoxMonRestorePP(struct BoxPokemon *); bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); +#if DEBUG +void Nakamura_NakaGenderTest_RecalcStats(struct Pokemon *); +#endif // DEBUG + #endif // GUARD_POKEMON_H diff --git a/include/roamer.h b/include/roamer.h index 86908bd00..6f0813eb8 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -10,4 +10,9 @@ u8 TryStartRoamerEncounter(void); void UpdateRoamerHPStatus(struct Pokemon *mon); void SetRoamerInactive(void); -#endif +#if DEBUG +void Debug_CreateRoamer(void); +void Debug_GetRoamerLocation(u8 *); +#endif // DEBUG + +#endif // GUARD_ROAMER_H diff --git a/include/secret_base.h b/include/secret_base.h index a3fa22c05..450850155 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -20,5 +20,9 @@ u8 sub_80BCCA4(u8 secretBaseIndex); const u8 *GetSecretBaseTrainerLoseText(void); void sub_80BCF1C(u8 taskId); void sub_80BD674(void *playerRecords, u32 size, u8 c); +#if DEBUG +void unref_sub_80BCD7C(u8 secretBaseIndex); +u8 *sub_80BC190(u8 *dest, u8 arg1); +#endif #endif // GUARD_SECRET_BASE_H diff --git a/include/strings.h b/include/strings.h index 91c5c5344..240e212ac 100644 --- a/include/strings.h +++ b/include/strings.h @@ -165,6 +165,7 @@ extern const u8 gOtherText_None[]; extern const u8 gOtherText_ThreeQuestions2[]; extern const u8 gOtherText_FiveQuestions[]; +extern const u8 gOtherText_Slash[]; extern const u8 gOtherText_OneDash[]; extern const u8 gOtherText_TwoDashes[]; @@ -250,6 +251,7 @@ extern const u8 gContestStatsText_Dry[]; extern const u8 gContestStatsText_Sweet[]; extern const u8 gContestStatsText_Bitter[]; extern const u8 gContestStatsText_Sour[]; +extern const u8 gContestStatsText_Tasty[]; extern const u8 gContestStatsText_StowCase[]; extern const u8 gContestStatsText_ThrowAwayPrompt[]; diff --git a/include/wild_encounter.h b/include/wild_encounter.h index c9d7c3fa1..41ca31835 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -35,5 +35,10 @@ void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); +#if DEBUG +u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0); +void FeebasSeedRng(u16 seed); +u16 FeebasRandom(void); +#endif // DEBUG #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index 03ad9105c..c0fd24b80 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -393,7 +393,6 @@ SECTIONS { src/pokeblock_feed.o(.text); src/clear_save_data_menu.o(.text); src/debug/nakamura_debug_menu.o(.text); - asm/nakamura_debug_menu.o(.text); src/intro_credits_graphics.o(.text); src/evolution_graphics.o(.text); src/bard_music.o(.text); diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 8e727f00f..096bd878f 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -82,7 +82,7 @@ extern const u8 gUnknown_Debug_821F7F3[]; extern const u8 BattleText_YesNo[]; extern u8 gStatStageRatios[][2]; extern u8 gActionsByTurnOrder[4]; -extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern struct UnknownPokemonStruct2 gMultiPartnerParty[]; extern u8 gBattleBufferB[][0x200]; extern u8 gActiveBattler; extern u32 gBattleExecBuffer; @@ -576,23 +576,23 @@ void sub_800F02C(void) for (i = 0; i < 3; i++) { - u8 *nickname = gUnknown_02023A00[i].nickname; + u8 *nickname = gMultiPartnerParty[i].nickname; - gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); - gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); + gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nickname); - gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); - gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); - gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); - gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); - gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]); + gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[i]); Text_StripExtCtrlCodes(nickname); - gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE); - if (gUnknown_02023A00[i].language != 1) + gMultiPartnerParty[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE); + if (gMultiPartnerParty[i].language != 1) PadNameString(nickname, 0); } - memcpy(gSharedMem, gUnknown_02023A00, 0x60); + memcpy(gSharedMem, gMultiPartnerParty, 0x60); } void sub_800F104(void) @@ -646,7 +646,7 @@ void sub_800F104(void) { if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) - memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60); + memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 0x60); } } gBattleCommunication[0]++; @@ -2442,7 +2442,7 @@ void debug_sub_801174C(void) AddBagItem(ITEM_POKE_DOLL, 99); for (i = 0; i < 15; i++) - sub_810CA34(&gUnknown_Debug_821F5AC[i]); + GivePokeblock(&gUnknown_Debug_821F5AC[i]); } void debug_sub_8011D40(void) diff --git a/src/berry_blender.c b/src/berry_blender.c index bf634a49f..5d40ea321 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1921,14 +1921,14 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN r6++; } if (r6 == 5 || a3 > 3) - return 12; + return PBLOCK_CLR_BLACK; for (i = 0; i < playersNo; i++) { for (r6 = 0; r6 < playersNo; r6++) { if (berries[i].itemID == berries[r6].itemID && i != r6 && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) - return 12; + return PBLOCK_CLR_BLACK; } } r2 = 0; @@ -1938,24 +1938,24 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN r2++; } if (r2 > 3) - return 13; + return PBLOCK_CLR_WHITE; if (r2 == 3) - return 11; + return PBLOCK_CLR_GRAY; for (i = 0; i < 5; i++) { if (vars[i] > 50) - return 14; + return PBLOCK_CLR_GOLD; } if (r2 == 1 && vars[0] > 0) - return 1; + return PBLOCK_CLR_RED; if (r2 == 1 && vars[1] > 0) - return 2; + return PBLOCK_CLR_BLUE; if (r2 == 1 && vars[2] > 0) - return 3; + return PBLOCK_CLR_PINK; if (r2 == 1 && vars[3] > 0) - return 4; + return PBLOCK_CLR_GREEN; if (r2 == 1 && vars[4] > 0) - return 5; + return PBLOCK_CLR_YELLOW; if (r2 == 2) { s32 var = 0; @@ -1967,28 +1967,28 @@ u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersN if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]]) { if (gUnknown_03000520[0] == 0) - return (gUnknown_03000520[1] << 16) | 6; + return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_PURPLE; if (gUnknown_03000520[0] == 1) - return (gUnknown_03000520[1] << 16) | 7; + return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_INDIGO; if (gUnknown_03000520[0] == 2) - return (gUnknown_03000520[1] << 16) | 8; + return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_BROWN; if (gUnknown_03000520[0] == 3) - return (gUnknown_03000520[1] << 16) | 9; + return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_LITEBLUE; if (gUnknown_03000520[0] == 4) - return (gUnknown_03000520[1] << 16) | 10; + return (gUnknown_03000520[1] << 16) | PBLOCK_CLR_OLIVE; } else { if (gUnknown_03000520[1] == 0) - return (gUnknown_03000520[0] << 16) | 6; + return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_PURPLE; if (gUnknown_03000520[1] == 1) - return (gUnknown_03000520[0] << 16) | 7; + return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_INDIGO; if (gUnknown_03000520[1] == 2) - return (gUnknown_03000520[0] << 16) | 8; + return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_BROWN; if (gUnknown_03000520[1] == 3) - return (gUnknown_03000520[0] << 16) | 9; + return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_LITEBLUE; if (gUnknown_03000520[1] == 4) - return (gUnknown_03000520[0] << 16) | 10; + return (gUnknown_03000520[0] << 16) | PBLOCK_CLR_OLIVE; } } return 0; @@ -3108,7 +3108,7 @@ bool8 Blender_PrintBlendingResults(void) #endif MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); RemoveBagItem(gSpecialVar_ItemId, 1); - sub_810CA34(&pokeblock); + GivePokeblock(&pokeblock); gBerryBlenderData->field_0++; break; case 6: diff --git a/src/choose_party.c b/src/choose_party.c index 4766b2fbb..b4920dedd 100644 --- a/src/choose_party.c +++ b/src/choose_party.c @@ -23,7 +23,7 @@ extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_020384F0; -extern struct UnknownPokemonStruct2 gUnknown_02023A00[3]; +extern struct UnknownPokemonStruct2 gMultiPartnerParty[3]; extern u8 gUnknown_0202E8F6; extern struct Pokemon gUnknown_030042FC[]; extern const u16 gBattleTowerBannedSpecies[]; @@ -530,26 +530,26 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId) #if DEBUG -void debug_sub_81381B4(void) +void Debug_CopyLastThreePartyMonsToMultiPartnerParty(void) { u8 i; - memset(gUnknown_02023A00, 0, sizeof(gUnknown_02023A00)); + memset(gMultiPartnerParty, 0, sizeof(gMultiPartnerParty)); for (i = 0; i < 3; i++) { - gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2); - if (gUnknown_02023A00[i].species != 0) + gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2); + if (gMultiPartnerParty[i].species != 0) { - gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL); - gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP); - gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP); - gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS); - gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM); - gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY); - gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[3 + i]); - GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gUnknown_02023A00[i].nickname); - Text_StripExtCtrlCodes(gUnknown_02023A00[i].nickname); - gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE); + gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL); + gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP); + gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP); + gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS); + gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM); + gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY); + gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[3 + i]); + GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname); + Text_StripExtCtrlCodes(gMultiPartnerParty[i].nickname); + gMultiPartnerParty[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE); } } } @@ -591,9 +591,9 @@ static void sub_81228E8(u8 a) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]); - if (gUnknown_02023A00[i].species != 0) + if (gMultiPartnerParty[i].species != 0) { - CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gUnknown_02023A00[i]); + CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gMultiPartnerParty[i]); sub_806D50C(a, i + 3); } } @@ -611,8 +611,8 @@ static void sub_8122950(u8 a) CreateHeldItemIcon_806DCD4(a, i, item); } - if (gUnknown_02023A00[i].species != 0) - CreateHeldItemIcon_806DCD4(a, i + 3, gUnknown_02023A00[i].heldItem); + if (gMultiPartnerParty[i].species != 0) + CreateHeldItemIcon_806DCD4(a, i + 3, gMultiPartnerParty[i].heldItem); } } @@ -644,9 +644,9 @@ void HandleLinkMultiBattlePartyMenu(u8 taskId) if (!gPaletteFade.active) { gTasks[taskId].data[0] = 30; - sub_806D4AC(taskId, gUnknown_02023A00[0].species, 0); - sub_806D4AC(taskId, gUnknown_02023A00[1].species, 1); - sub_806D4AC(taskId, gUnknown_02023A00[2].species, 2); + sub_806D4AC(taskId, gMultiPartnerParty[0].species, 0); + sub_806D4AC(taskId, gMultiPartnerParty[1].species, 1); + sub_806D4AC(taskId, gMultiPartnerParty[2].species, 2); gTasks[taskId].func = sub_8122AB8; ewram1B000.unk261 = 1; } @@ -654,7 +654,7 @@ void HandleLinkMultiBattlePartyMenu(u8 taskId) static void sub_8122AB8(u8 taskId) { - sub_806D3B4(taskId, gUnknown_02023A00[1].species, gUnknown_02023A00[2].species); + sub_806D3B4(taskId, gMultiPartnerParty[1].species, gMultiPartnerParty[2].species); if (gTasks[taskId].data[0] == 0) { gTasks[taskId].func = sub_8122B10; @@ -669,25 +669,25 @@ static void sub_8122B10(u8 taskId) for (i = 0; i < 3; i++) { - if (gUnknown_02023A00[i].species != 0) + if (gMultiPartnerParty[i].species != 0) { u8 r2; - PartyMenuDoPrintHP(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); - if (gUnknown_02023A00[i].hp == 0) + PartyMenuDoPrintHP(i + 3, 3, gMultiPartnerParty[i].hp, gMultiPartnerParty[i].maxhp); + if (gMultiPartnerParty[i].hp == 0) r2 = 7; else - r2 = pokemon_ailments_get_primary(gUnknown_02023A00[i].status); + r2 = pokemon_ailments_get_primary(gMultiPartnerParty[i].status); if (r2 != 0) PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1); else - PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level); - PartyMenuDoPrintGenderIcon(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname); - StringCopy(gStringVar1, gUnknown_02023A00[i].nickname); + PartyMenuDoPrintLevel(i + 3, 3, gMultiPartnerParty[i].level); + PartyMenuDoPrintGenderIcon(gMultiPartnerParty[i].species, gMultiPartnerParty[i].gender, 3, i + 3, gMultiPartnerParty[i].nickname); + StringCopy(gStringVar1, gMultiPartnerParty[i].nickname); StringGetEnd10(gStringVar1); SanitizeNameString(gStringVar1); PartyMenuDoPrintMonNickname(i + 3, 3, gStringVar1); - PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); + PartyMenuDoDrawHPBar(i + 3, 3, gMultiPartnerParty[i].hp, gMultiPartnerParty[i].maxhp); } } gTasks[taskId].func = sub_8122C18; diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 3cb36ce0c..83736ba4d 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -83,7 +83,7 @@ u8 debug_sub_80B068C(void) { if (!UpdatePaletteFade()) { - debug_sub_80A0710(sub_805469C); + debug_sub_80A0710(c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; @@ -102,7 +102,7 @@ u8 debug_sub_80B06E0(void) { if (!UpdatePaletteFade()) { - debug_sub_80A073C(sub_805469C); + debug_sub_80A073C(c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; @@ -121,7 +121,7 @@ u8 Kagaya_80B0734(void) { if (!UpdatePaletteFade()) { - debug_sub_811609C(Random() % 6, sub_805469C); + debug_sub_811609C(Random() % 6, c2_exit_to_overworld_1_sub_8080DEC); CloseMenu(); ScriptContext2_Enable(); return 1; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index c8f80eb50..7a66ded57 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -473,7 +473,7 @@ static void sub_80AA064(void) RunTasks(); UpdatePaletteFade(); if (gMain.newKeys == 4) - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); } static void sub_80AA090(void) @@ -891,7 +891,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2) SetDebugMonForContest(); for (i = 0; i < 4; i++) gUnknown_02038670[i] = sub_80AE770(i, gSpecialVar_ContestCategory); - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); } } diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 550ac7bbd..3880c7b7b 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1,189 +1,2217 @@ #if DEBUG #include "global.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/songs.h" +#include "sound.h" +#include "data2.h" +#include "strings.h" +#include "random.h" +#include "palette.h" +#include "main.h" +#include "string_util.h" +#include "overworld.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "metatile_behavior.h" +#include "start_menu.h" +#include "party_menu.h" +#include "choose_party.h" +#include "secret_base.h" +#include "roamer.h" +#include "decoration_inventory.h" +#include "wild_encounter.h" #include "menu.h" +#include "menu_helpers.h" +#include "pokeblock.h" -EWRAM_DATA u8 _nakamuraData0 = 0; -EWRAM_DATA u8 _nakamuraData1 = 0; -EWRAM_DATA u8 _nakamuraData2 = 0; -EWRAM_DATA u8 _nakamuraData3 = 0; -EWRAM_DATA u8 _nakamuraData4 = 0; -EWRAM_DATA u8 _nakamuraData5 = 0; -EWRAM_DATA u16 _nakamuraData6 = 0; -EWRAM_DATA u16 _nakamuraData8 = 0; -EWRAM_DATA u16 _nakamuraDataA = 0; -EWRAM_DATA u16 _nakamuraDataC = 0; - -__attribute__((unused)) static u8 _nakamuraStatic0[0x18]; -__attribute__((unused)) static u8 _nakamuraStatic18; -__attribute__((unused)) static u8 gDebugFiller3000814[4]; - -asm(".global _nakamuraStatic0"); -asm(".global _nakamuraStatic18"); - -u8 debug_sub_815FC54(); -u8 debug_sub_815F2B4(); -u8 debug_sub_815FC94(); -u8 debug_sub_815FB1C(); -u8 debug_sub_815F2F4(); -u8 debug_sub_815F62C(); -u8 debug_sub_815FBE8(); -u8 debug_sub_815FE1C(); -u8 debug_sub_8160D98(); - -const u8 Str_843E36C[] = _("Berries"); -const u8 Str_843E374[] = _("Goods"); -const u8 Str_843E37A[] = _("{PKMN} list"); -const u8 Str_843E382[] = _("トラップ"); -const u8 Str_843E387[] = _("Move your base"); -const u8 Str_843E396[] = _("Moving {PKMN}"); -const u8 Str_843E3A0[] = _("Fishing points"); -const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); -const u8 Str_843E3B9[] = _("Make bases(to max)"); -const u8 Str_843E3CC[] = _("Base location"); - -const struct MenuAction _843E3DC[] = { - { Str_843E36C, debug_sub_815FC54 }, - { Str_843E37A, debug_sub_815F2B4 }, - { Str_843E374, debug_sub_815FC94 }, - { Str_843E387, debug_sub_815FB1C }, - { Str_843E3B9, debug_sub_815F2F4 }, - { Str_843E3CC, debug_sub_815F62C }, - { Str_843E396, debug_sub_815FBE8 }, - { Str_843E3A0, debug_sub_815FE1C }, - { Str_843E3AF, debug_sub_8160D98 }, +static bool8 TopMenu_HandleJoypad(void); +static bool8 SwitchToPkmnListMenu(void); +static bool8 MakeBasesToMax(void); +static bool8 BaseLocation(void); +static bool8 MoveYourBase_JoypadAction(void); +static bool8 SwitchToMoveYourBaseSubmenu(void); +static bool8 MovingPKMN(void); +static bool8 Give999OfAllBerries(void); +static bool8 GiveAllDecorations(void); +static bool8 FishingPoints(void); +static void NakaGenderTest_PrintSpeciesName(u8); +static void NakaGenderTest_PrintSpeciesGender(u8); +static void NakaGenderTest_PrintSpeciesLevel(u8); +static void NakaGenderTest_JoypadAction(u8); +static bool8 NakaGenderTest_HandleJoypad(void); +static u8 NakaGenderTest_ForceRerollPokemon(u8); +static bool8 SetPokeblock(void); + +// ======================================================= +// TOP MENU +// ======================================================= + +static const u8 Str_843E36C[] = _("Berries"); +static const u8 Str_843E374[] = _("Goods"); +static const u8 Str_843E37A[] = _("{PKMN} list"); +static const u8 Str_843E382[] = _("トラップ"); +static const u8 Str_843E387[] = _("Move your base"); +static const u8 Str_843E396[] = _("Moving {PKMN}"); +static const u8 Str_843E3A0[] = _("Fishing points"); +static const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); +static const u8 Str_843E3B9[] = _("Make bases(to max)"); +static const u8 Str_843E3CC[] = _("Base location"); + +static const struct MenuAction sNakamuraTopMenuActions[] = { + { Str_843E36C, Give999OfAllBerries }, + { Str_843E37A, SwitchToPkmnListMenu }, + { Str_843E374, GiveAllDecorations }, + { Str_843E387, SwitchToMoveYourBaseSubmenu }, + { Str_843E3B9, MakeBasesToMax }, + { Str_843E3CC, BaseLocation }, + { Str_843E396, MovingPKMN }, + { Str_843E3A0, FishingPoints }, + { Str_843E3AF, SetPokeblock }, }; -const u8 _843E424[][4] = { - { 1, 118, 47, 14 }, - { 2, 125, 53, 10 }, - { 3, 113, 49, 8 }, - { 0xB, 118, 67, 6 }, - { 0xC, 121, 40, 11 }, - { 0xD, 111, 35, 1 }, - { 0x15, 115, 20, 53 }, - { 0x16, 121, 18, 13 }, - { 0x17, 119, 26, 81 }, - { 0x1F, 127, 59, 67 }, - { 0x20, 125, 55, 11 }, - { 0x21, 111, 27, 27 }, - { 0x29, 114, 9, 47 }, - { 0x2A, 115, 32, 39 }, - { 0x2B, 115, 23, 8 }, - { 0x33, 114, 30, 51 }, - { 0x34, 115, 26, 15 }, - { 0x35, 115, 32, 46 }, - { 0x3D, 114, 11, 62 }, - { 0x3E, 115, 21, 18 }, - { 0x3F, 115, 25, 24 }, - { 0x47, 114, 19, 70 }, - { 0x48, 115, 32, 6 }, - { 0x49, 114, 32, 57 }, - { 0x51, 116, 71, 4 }, - { 0x52, 123, 47, 3 }, - { 0x53, 123, 57, 5 }, - { 0x5B, 116, 79, 11 }, - { 0x5C, 123, 49, 3 }, - { 0x5D, 120, 18, 12 }, - { 0x65, 120, 28, 62 }, - { 0x66, 116, 56, 6 }, - { 0x67, 119, 16, 81 }, - { 0x6F, 120, 30, 62 }, - { 0x70, 116, 55, 15 }, - { 0x71, 119, 16, 28 }, - { 0x79, 111, 33, 34 }, - { 0x7A, 118, 29, 5 }, - { 0x7B, 127, 45, 24 }, - { 0x83, 111, 24, 36 }, - { 0x84, 125, 7, 25 }, - { 0x85, 115, 8, 30 }, - { 0x8D, 111, 34, 50 }, - { 0x8E, 127, 59, 72 }, - { 0x8F, 127, 61, 21 }, - { 0x97, 127, 67, 63 }, - { 0x98, 125, 24, 32 }, - { 0x99, 111, 35, 31 }, - { 0xA1, 111, 13, 19 }, - { 0xA2, 121, 43, 7 }, - { 0xA3, 118, 47, 5 }, - { 0xA4, 111, 14, 19 }, - { 0xAB, 118, 46, 5 }, - { 0xAC, 121, 42, 7 }, - { 0xAD, 119, 19, 76 }, - { 0xAE, 115, 7, 20 }, - { 0xB5, 110, 16, 25 }, - { 0xB6, 114, 11, 27 }, - { 0xB7, 115, 8, 20 }, - { 0xBF, 110, 17, 25 }, - { 0xC0, 114, 12, 27 }, - { 0xC1, 119, 18, 76 }, - { 0xC9, 119, 5, 2 }, - { 0xCA, 119, 4, 89 }, - { 0xCB, 120, 38, 54 }, - { 0xCC, 120, 5, 76 }, - { 0xD3, 119, 5, 15 }, - { 0xD4, 119, 7, 101 }, - { 0xD5, 120, 31, 23 }, - { 0xDD, 119, 34, 24 }, - { 0xDE, 120, 26, 10 }, - { 0xDF, 119, 4, 15 }, - { 0xE7, 119, 31, 73 }, - { 0xE8, 120, 29, 85 }, - { 0xE9, 119, 6, 2 }, +static void DrawNakamuraDebugMenu(void) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(14, 0, 29, 19); + Menu_PrintItems(16, 1, ARRAY_COUNT(sNakamuraTopMenuActions), sNakamuraTopMenuActions); + InitMenu(0, 15, 1, ARRAY_COUNT(sNakamuraTopMenuActions), 0, 14); +} + +bool8 InitNakamuraDebugMenu(void) +{ + DrawNakamuraDebugMenu(); + gMenuCallback = TopMenu_HandleJoypad; + return FALSE; +} + +static bool8 TopMenu_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + } + + if (gMain.newKeys & A_BUTTON) + { + MenuFunc func = sNakamuraTopMenuActions[Menu_GetCursorPos()].func; + Menu_DestroyCursor(); + return func(); + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +// ======================================================= +// PKMN LIST +// ======================================================= + +static void Task_SwitchToPkmnListMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + Debug_CopyLastThreePartyMonsToMultiPartnerParty(); + OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0); + DestroyTask(taskId); + } +} + +static bool8 SwitchToPkmnListMenu(void) +{ + CloseMenu(); + Menu_EraseScreen(); + gMain.savedCallback = c2_exit_to_overworld_1_sub_8080DEC; + CreateTask(Task_SwitchToPkmnListMenu, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + return TRUE; +} + +// ======================================================= +// MAKE BASES TO MAX and BASE LOCATION +// ======================================================= + +EWRAM_DATA u8 sSecretBaseIdx = 0; + +static const u8 sSecretBaseTemplates[] = { + // ID, Route, X, Y + 0x01, 118, 47, 14 , + 0x02, 125, 53, 10 , + 0x03, 113, 49, 8 , + 0x0B, 118, 67, 6 , + 0x0C, 121, 40, 11 , + 0x0D, 111, 35, 1 , + 0x15, 115, 20, 53 , + 0x16, 121, 18, 13 , + 0x17, 119, 26, 81 , + 0x1F, 127, 59, 67 , + 0x20, 125, 55, 11 , + 0x21, 111, 27, 27 , + 0x29, 114, 9, 47 , + 0x2A, 115, 32, 39 , + 0x2B, 115, 23, 8 , + 0x33, 114, 30, 51 , + 0x34, 115, 26, 15 , + 0x35, 115, 32, 46 , + 0x3D, 114, 11, 62 , + 0x3E, 115, 21, 18 , + 0x3F, 115, 25, 24 , + 0x47, 114, 19, 70 , + 0x48, 115, 32, 6 , + 0x49, 114, 32, 57 , + 0x51, 116, 71, 4 , + 0x52, 123, 47, 3 , + 0x53, 123, 57, 5 , + 0x5B, 116, 79, 11 , + 0x5C, 123, 49, 3 , + 0x5D, 120, 18, 12 , + 0x65, 120, 28, 62 , + 0x66, 116, 56, 6 , + 0x67, 119, 16, 81 , + 0x6F, 120, 30, 62 , + 0x70, 116, 55, 15 , + 0x71, 119, 16, 28 , + 0x79, 111, 33, 34 , + 0x7A, 118, 29, 5 , + 0x7B, 127, 45, 24 , + 0x83, 111, 24, 36 , + 0x84, 125, 7, 25 , + 0x85, 115, 8, 30 , + 0x8D, 111, 34, 50 , + 0x8E, 127, 59, 72 , + 0x8F, 127, 61, 21 , + 0x97, 127, 67, 63 , + 0x98, 125, 24, 32 , + 0x99, 111, 35, 31 , + 0xA1, 111, 13, 19 , + 0xA2, 121, 43, 7 , + 0xA3, 118, 47, 5 , + 0xA4, 111, 14, 19 , + 0xAB, 118, 46, 5 , + 0xAC, 121, 42, 7 , + 0xAD, 119, 19, 76 , + 0xAE, 115, 7, 20 , + 0xB5, 110, 16, 25 , + 0xB6, 114, 11, 27 , + 0xB7, 115, 8, 20 , + 0xBF, 110, 17, 25 , + 0xC0, 114, 12, 27 , + 0xC1, 119, 18, 76 , + 0xC9, 119, 5, 2 , + 0xCA, 119, 4, 89 , + 0xCB, 120, 38, 54 , + 0xCC, 120, 5, 76 , + 0xD3, 119, 5, 15 , + 0xD4, 119, 7, 101 , + 0xD5, 120, 31, 23 , + 0xDD, 119, 34, 24 , + 0xDE, 120, 26, 10 , + 0xDF, 119, 4, 15 , + 0xE7, 119, 31, 73 , + 0xE8, 120, 29, 85 , + 0xE9, 119, 6, 2 , }; -const u8 Str_843E550[] = _("R"); -const u8 Str_843E552[] = _("X"); -const u8 Str_843E554[] = _("Y"); -const u8 Str_843E556[] = _( - "♂1\n" - "♂2\n" - "♂3\n" - "♂4\n" - "♂5\n" - "♀1\n" - "♀2\n" - "♀3\n" - "♀4\n" - "♀5"); -const u8 Str_843E574[] = _("ー"); -const u8 Str_843E576[] = _("あ"); -const u8 Str_843E578[] = _("ア"); -const u8 Str_843E57A[] = _("A"); -const u8 Str_843E57C[] = _("a"); -const u8 Str_843E57E[] = _("0"); -const u8 Str_843E580[] = _( - "ADD\n" - "DEL\n" - "EXIT"); -const u8 Str_843E58D[] = _( - "Fishing location R119\n" - " Y1\n" - " Y2\n" - " Y3\n" - "Encounter location\n" - "\n" - "\n" - "front of you"); -const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; -const u8 Str_843E5D4[] = _( - "Aボタン {ESCAPE}\p" - " Bボタン ー\n" - "START けってい"); -const u8 Str_843E5F0[] = _("?"); -const u8 Str_843E5F2[] = _("HP どりょくち"); -const u8 Str_843E5FB[] = _("こうげき どりょくち"); -const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); -const u8 Str_843E611[] = _("すばやさ どりょくち"); -const u8 Str_843E61C[] = _("とくこう どりょくち"); -const u8 Str_843E627[] = _("とくぼう どりょくち"); -const u8 Str_843E632[] = _("なつきど"); -const u8 Str_843E637[] = _("どりょくち ごうけい"); -const u8 Str_843E642[] = _("ここから"); -const u8 Str_843E647[] = _("ここまで"); -const u8 Str_843E64C[] = _("かいすう"); -const u8 Str_843E651[] = _("けっか"); -const u8 Str_843E655[] = _("かい"); -const u8 Str_843E658[] = _("0"); -const u8 Str_843E65A[] = _("はんい"); +static const u8 Str_843E550[] = _("R"); +static const u8 Str_843E552[] = _("X"); +static const u8 Str_843E554[] = _("Y"); +static const u8 Str_843E556[] = _( + "♂1\n" + "♂2\n" + "♂3\n" + "♂4\n" + "♂5\n" + "♀1\n" + "♀2\n" + "♀3\n" + "♀4\n" + "♀5"); + +static bool8 MakeBasesToMax(void) +{ + u8 i; + CloseMenu(); + + for (i = 1; i < 20; i++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == 0) + { + u8 j; + + for (j = 0; j < 7; j++) + { + gSaveBlock1.secretBases[i].playerName[j] = gSaveBlock2.playerName[j]; + if (gSaveBlock1.secretBases[i].playerName[j] == EOS) + break; + } + + if (j == 7) + gSaveBlock1.secretBases[i].playerName[j - 1] = CHAR_A + i - 1; + else + gSaveBlock1.secretBases[i].playerName[j] = CHAR_A + i - 1; + + do + { + gSaveBlock1.secretBases[i].secretBaseId = sSecretBaseTemplates[(Random() % (ARRAY_COUNT(sSecretBaseTemplates) / 4)) * 4]; + + for (j = 0; j < i; j++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == gSaveBlock1.secretBases[j].secretBaseId) + break; + } + } while (j != i); + + gSaveBlock1.secretBases[i].gender = Random() % 2; + + for (j = 0; j < 4; j++) + { + gSaveBlock1.secretBases[i].trainerId[j] = Random(); + } + + for (j = 0; j < 16; j++) + { + gSaveBlock1.secretBases[i].decorations[j] = 0; + gSaveBlock1.secretBases[i].decorationPos[j] = 0; + } + + unref_sub_80BCD7C(i); + } + } + + return TRUE; +} + +static void BaseLocation_GetCurSecretBaseData(u8 * R, u8 * X, u8 * Y) +{ + u8 i; + u8 sbId = gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId; + + for (i = 0; i < ARRAY_COUNT(sSecretBaseTemplates) / 4; i++) + { + if (sSecretBaseTemplates[i * 4] == sbId) + { + *R = sSecretBaseTemplates[i * 4 + 1]; + *X = sSecretBaseTemplates[i * 4 + 2]; + *Y = sSecretBaseTemplates[i * 4 + 3]; + break; + } + } +} + +static void BaseLocation_Redraw(void) +{ + Menu_BlankWindowRect(1, 1, 10, 10); + ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 1, 1); + + if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + u8 R; + u8 X; + u8 Y; + BaseLocation_GetCurSecretBaseData(&R, &X, &Y); + + sub_80BC190(gStringVar1, sSecretBaseIdx); + Menu_PrintText(gStringVar1, 1, 3); + + Menu_PrintText(Str_843E550, 1, 5); + ConvertIntToDecimalStringN(gStringVar1, R, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 5); + + Menu_PrintText(Str_843E552, 1, 7); + ConvertIntToDecimalStringN(gStringVar1, X, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 3, 7); + + Menu_PrintText(Str_843E554, 1, 9); + ConvertIntToDecimalStringN(gStringVar1, Y, STR_CONV_MODE_LEFT_ALIGN, 3); + Menu_PrintText(gStringVar1, 3, 9); + } +} + +static bool8 BaseLocation_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_LEFT) + { + if (sSecretBaseIdx == 0) + sSecretBaseIdx = 19; + else + sSecretBaseIdx--; + BaseLocation_Redraw(); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + if (sSecretBaseIdx == 19) + sSecretBaseIdx = 0; + else + sSecretBaseIdx++; + BaseLocation_Redraw(); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 BaseLocation(void) +{ + sSecretBaseIdx = 0; + gMenuCallback = BaseLocation_HandleJoypad; + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 11, 11); + BaseLocation_Redraw(); + return FALSE; +} + +// ======================================================= +// MOVE YOUR BASE +// ======================================================= + +EWRAM_DATA u8 sMoveYourBase_CursorPos = 0; +EWRAM_DATA u8 sMoveYourBase_XCursorPos = 0; +EWRAM_DATA u8 sSecretBaseNameCharGroup = 0; + +static const u8 Str_843E574[] = _("ー"); +static const u8 Str_843E576[][2] = { + _("あ"), + _("ア"), + _("A"), + _("a"), + _("0") +}; + +static void MoveYourBase_PrintSBOwnerID(void) +{ + u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId; + u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0); + ConvertIntToDecimalStringN(gStringVar1, otId / 100000, STR_CONV_MODE_LEADING_ZEROS, 5); + Menu_PrintText(gStringVar1, 2, 7); + ConvertIntToDecimalStringN(gStringVar1, otId % 100000, STR_CONV_MODE_LEADING_ZEROS, 5); + Menu_PrintText(gStringVar1, 7, 7); +} + +static void MoveYourBase_PrintSBOwnerName(void) +{ + Menu_BlankWindowRect(2, 3, 11, 4); + *StringCopyN(gStringVar1, gSaveBlock1.secretBases[sSecretBaseIdx].playerName, 7) = EOS; + Menu_PrintText(gStringVar1, 2, 3); +} + +static void MoveYourBase_Redraw(void) +{ + Menu_BlankWindowRect(2, 1, 11, 10); + + ConvertIntToDecimalStringN(gStringVar1, sSecretBaseIdx, STR_CONV_MODE_LEFT_ALIGN, 2); + Menu_PrintText(gStringVar1, 2, 1); + + if (gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + MoveYourBase_PrintSBOwnerName(); + MoveYourBase_PrintSBOwnerID(); + } +} + +static void MoveYourBase_UpdateXCursorPosition(void) +{ + Menu_BlankWindowRect(2, 5, 11, 6); + Menu_PrintText(Str_843E574, sMoveYourBase_XCursorPos + 2, 5); +} + +static void MoveYourBase_PrintCharacterSetName(void) +{ + if (sMoveYourBase_CursorPos) + Menu_BlankWindowRect(11, 1, 11, 2); + else + Menu_PrintText(Str_843E576[sSecretBaseNameCharGroup], 11, 1); +} + +static void MoveYourBase_EditOwnerID(s8 direction) +{ + u8 * otIdPtr = gSaveBlock1.secretBases[sSecretBaseIdx].trainerId; + u32 otId = (otIdPtr[3] << 24) | (otIdPtr[2] << 16) | (otIdPtr[1] << 8) | (otIdPtr[0] << 0); + s8 digit; + int r1 = direction; + + for (digit = 9; digit > sMoveYourBase_XCursorPos; digit--) + r1 *= 10; + + otId += r1; + otIdPtr[3] = (otId & 0xFF000000) >> 24; + otIdPtr[2] = (otId & 0x00FF0000) >> 16; + otIdPtr[1] = (otId & 0x0000FF00) >> 8; + otIdPtr[0] = (otId & 0x000000FF) >> 0; + MoveYourBase_PrintSBOwnerID(); +} + +static void MoveYourBase_EditOwnerNameChar(s8 a0) +{ + u8 * namePtr = gSaveBlock1.secretBases[sSecretBaseIdx].playerName; + u8 r2 = 0; + u8 r3 = 0; + u8 i; + + if (a0 == 100) + { + for (i = sMoveYourBase_XCursorPos; i < 7; i++) + { + namePtr[i] = EOS; + } + } + else + { + switch (sSecretBaseNameCharGroup) + { + case 0: // HIRA + r3 = 1; + r2 = 80; + break; + case 1: // KATA + r3 = 81; + r2 = 160; + break; + case 2: // A-Z + r3 = CHAR_A; + r2 = CHAR_Z; + break; + case 3: // a-z + r3 = CHAR_a; + r2 = CHAR_z; + break; + case 4: // 0-9 + r3 = CHAR_0; + r2 = CHAR_0 + 9; + break; + } + + namePtr[sMoveYourBase_XCursorPos] += a0; + if (namePtr[sMoveYourBase_XCursorPos] < r3) + namePtr[sMoveYourBase_XCursorPos] = r2; + if (namePtr[sMoveYourBase_XCursorPos] > r2) + namePtr[sMoveYourBase_XCursorPos] = r3; + } + MoveYourBase_PrintSBOwnerName(); +} + +static bool8 MoveYourBase_HandleJoypad_2(void) +{ + u32 r4 = sMoveYourBase_CursorPos == 0 ? 7 : 10; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sMoveYourBase_CursorPos) + MoveYourBase_EditOwnerID(1); + else + MoveYourBase_EditOwnerNameChar(1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sMoveYourBase_CursorPos) + MoveYourBase_EditOwnerID(-1); + else + MoveYourBase_EditOwnerNameChar(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (sMoveYourBase_XCursorPos == 0) + sMoveYourBase_XCursorPos = r4 - 1; + else + sMoveYourBase_XCursorPos--; + MoveYourBase_UpdateXCursorPosition(); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (sMoveYourBase_XCursorPos == r4 - 1) + sMoveYourBase_XCursorPos = 0; + else + sMoveYourBase_XCursorPos++; + MoveYourBase_UpdateXCursorPosition(); + return FALSE; + } + + if (gMain.newKeys & SELECT_BUTTON) + { + if (sMoveYourBase_CursorPos == 0) + sSecretBaseNameCharGroup = (sSecretBaseNameCharGroup + 1) % 5; + MoveYourBase_PrintCharacterSetName(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + Menu_BlankWindowRect(2, 5, 11, 6); + Menu_BlankWindowRect(11, 1, 11, 2); + gMenuCallback = MoveYourBase_JoypadAction; + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + if (sMoveYourBase_CursorPos == 0) + MoveYourBase_EditOwnerNameChar(100); + return FALSE; + } + + return FALSE; +} + +static bool8 MoveYourBase_JoypadAction(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-2); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+2); + return FALSE; + } + + if (gMain.newKeys & DPAD_LEFT) + { + if (sSecretBaseIdx == 0) + sSecretBaseIdx = 19; + else + sSecretBaseIdx--; + MoveYourBase_Redraw(); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + if (sSecretBaseIdx == 19) + sSecretBaseIdx = 0; + else + sSecretBaseIdx++; + MoveYourBase_Redraw(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + if (sSecretBaseIdx != 0 && gSaveBlock1.secretBases[sSecretBaseIdx].secretBaseId != 0) + { + sMoveYourBase_CursorPos = Menu_GetCursorPos(); + sMoveYourBase_XCursorPos = 0; + MoveYourBase_UpdateXCursorPosition(); + MoveYourBase_PrintCharacterSetName(); + gMenuCallback = MoveYourBase_HandleJoypad_2; + } + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 SwitchToMoveYourBaseSubmenu(void) +{ + sSecretBaseIdx = 0; + sSecretBaseNameCharGroup = 0; + gMenuCallback = MoveYourBase_JoypadAction; + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 12, 11); + MoveYourBase_Redraw(); + InitMenu(0, 1, 3, 3, 0, 11); + return FALSE; +} + +// ======================================================= +// MOVING PKMN (aka Roamers) +// ======================================================= + +static const u8 Str_843E580[] = _( + "ADD\n" + "DEL\n" + "EXIT"); + +static bool8 MovingPKMN_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + switch (Menu_GetCursorPos()) + { + case 0: + Debug_CreateRoamer(); + break; + case 1: + ClearRoamerData(); + ClearRoamerLocationData(); + break; + } + return TRUE; + } + + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 MovingPKMN(void) +{ + gMenuCallback = MovingPKMN_HandleJoypad; + Menu_EraseWindowRect(0, 0, 29, 19); + Debug_GetRoamerLocation(gStringVar1); + Menu_DrawStdWindowFrame(0, 0, 11, 9); + Menu_PrintText(gStringVar1, 1, 1); + Menu_PrintText(Str_843E580, 2, 3); + InitMenu(0, 1, 3, 3, 0, 10); + return FALSE; +} + +// ======================================================= +// GIVE ALL BERRIES +// ======================================================= + +static bool8 Give999OfAllBerries(void) +{ + u16 i; + + for (i = 0; i < 43; i++) + { + gSaveBlock1.bagPocket_Berries[i].itemId = ITEM_CHERI_BERRY + i; + gSaveBlock1.bagPocket_Berries[i].quantity = 999; + } + + CloseMenu(); + return TRUE; +} + +// ======================================================= +// GIVE ALL DECORATIONS +// ======================================================= + +static bool8 GiveAllDecorations(void) +{ + ClearDecorationInventories(); + Debug_GiveAllDecorations(); + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; +} + +// ======================================================= +// FISHING POINTS (Feebas) +// ======================================================= + +static const u8 Str_843E58D[] = _( + "Fishing location R119\n" + " Y1\n" + " Y2\n" + " Y3\n" + "Encounter location\n" + "\n" + "\n" + "front of you"); + +static u16 FishingPoints_CountFishingTilesInMapThird(u8 a0) +{ + u16 retval = 0; + u16 height = gMapHeader.mapData->height / 3; + u16 y; + u16 x; + u16 start = height * a0; + + for (y = start; y < start + height; y++) + { + for (x = 0; x < gMapHeader.mapData->width; x++) + { + if (sub_805759C(MapGridGetMetatileBehaviorAt(x + 7, y + 7)) == TRUE) + { + retval++; + } + } + } + + return retval; +} + +static u16 FishingPoints_GetIndexOfCurrentFishingSpot(void) +{ + u16 retval = 0; + s16 x; + s16 y; + u16 xx; + u16 yy; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + x -= 7; + y -= 7; + + for (yy = 0; yy < gMapHeader.mapData->height; yy++) + { + for (xx = 0; xx < gMapHeader.mapData->width; xx++) + { + if (sub_805759C(MapGridGetMetatileBehaviorAt(xx + 7, yy + 7)) == TRUE) + { + retval++; + if (x == xx && y == yy) + return retval; + } + } + } + return retval + 1; +} + +static bool8 FishingPoints_HandleJoypad(void) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 FishingPoints(void) +{ + u16 nWaterTiles; + u16 nFeebas; + + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 16, 19); + Menu_PrintText(Str_843E58D, 1, 1); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 3); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 5); + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_CountFishingTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 7); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 3); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 5); + + ConvertIntToDecimalStringN(gStringVar1, FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 7); + + FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2); + nWaterTiles = FishingPoints_CountFishingTilesInMapThird(0) + FishingPoints_CountFishingTilesInMapThird(1) + FishingPoints_CountFishingTilesInMapThird(2); + nFeebas = 0; + + while (nFeebas != 6) + { + u16 randTile = FeebasRandom() % nWaterTiles; + if (randTile == 0) + randTile = nWaterTiles; + if (randTile == 0 || randTile > 3) + { + ConvertIntToDecimalStringN(gStringVar1, randTile, STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, (nFeebas % 3) * 5 + 2, (nFeebas / 3) * 2 + 11); + nFeebas++; + } + } + + ConvertIntToDecimalStringN(gStringVar1, FishingPoints_GetIndexOfCurrentFishingSpot(), STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, 2, 17); + + gMenuCallback = FishingPoints_HandleJoypad; + + return FALSE; +} + +// ======================================================= +// GENDER TEST? +// ======================================================= + +static struct { + s16 species; + s8 level; + u8 unk3; +} sNakaGenderTestData[PARTY_SIZE]; + +EWRAM_DATA u8 sNakaGenderTest_CursorPosition = 0; +static const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; +static const u8 Str_843E5D4[] = _( + "Aボタン {ESCAPE}\p" + " Bボタン ー\n" + "START けってい"); + +void NakaGenderTest(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(14, 0, 29, 13); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(Str_843E5D4, 1, 15); + + for (i = 0; i < PARTY_SIZE; i++) + { + sNakaGenderTestData[i].species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + sNakaGenderTestData[i].level = GetMonData(gPlayerParty + i, MON_DATA_LEVEL); + NakaGenderTest_PrintSpeciesName(i); + NakaGenderTest_PrintSpeciesGender(i); + NakaGenderTest_PrintSpeciesLevel(i); + } + else + sNakaGenderTestData[i].level = 1; + sNakaGenderTestData[i].unk3 = 0; + } + + sNakaGenderTest_CursorPosition = 0; + PrintTriangleCursorWithPalette(15, 1, 0xFF); + gMenuCallback = NakaGenderTest_HandleJoypad; +} + +static void NakaGenderTest_PrintSpeciesName(u8 i) +{ + Menu_PrintText(gSpeciesNames[sNakaGenderTestData[i].species], 16, 2 * i + 1); +} + +static void NakaGenderTest_PrintSpeciesGender(u8 i) +{ + u8 sp0[] = _("?"); + u8 gender; + + gender = GetMonGender(gPlayerParty + i); + if (gender == MON_MALE) + Menu_PrintText(gOtherText_MaleSymbol2, 23, 2 * i + 1); + else if (gender == MON_FEMALE) + Menu_PrintText(gOtherText_FemaleSymbolAndLv, 23, 2 * i + 1); + else + Menu_PrintText(sp0, 23, 2 * i + 1); +} + +static void NakaGenderTest_PrintSpeciesLevel(u8 i) +{ + ConvertIntToDecimalStringN(gStringVar1, sNakaGenderTestData[i].level, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 26, 2 * i + 1); +} + +static void NakaGenderTest_RedrawCurrent(u8 i) +{ + Menu_BlankWindowRect(16, 2 * i + 1, 28, 2 * i + 2); + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + NakaGenderTest_PrintSpeciesName(i); + NakaGenderTest_PrintSpeciesGender(i); + NakaGenderTest_PrintSpeciesLevel(i); + } + NakaGenderTest_JoypadAction(5); +} + +static void NakaGenderTest_AdjustSpecies(u8 i, s8 dirn) +{ + if (sNakaGenderTestData[i].species == SPECIES_NONE && sNakaGenderTestData[i].unk3 == 0 && dirn == 1) + sNakaGenderTestData[i].species = SPECIES_TREECKO - 1; + sNakaGenderTestData[i].species += dirn; + if (sNakaGenderTestData[i].species >= SPECIES_CHIMECHO) + sNakaGenderTestData[i].species -= SPECIES_CHIMECHO; + if (sNakaGenderTestData[i].species < 0) + sNakaGenderTestData[i].species += SPECIES_CHIMECHO; + CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, FALSE, 0, FALSE, 0); + sNakaGenderTestData[i].unk3 = 1; +} + +static void NakaGenderTest_RerollPokemon(u8 i) +{ + if (sNakaGenderTestData[i].species != SPECIES_NONE) + NakaGenderTest_ForceRerollPokemon(i); +} + +static void NakaGenderTest_AdjustLevel(u8 i, s8 dirn) +{ + if (sNakaGenderTestData[i].species != SPECIES_NONE) + { + sNakaGenderTestData[i].level += dirn; + if (sNakaGenderTestData[i].level > 100) + sNakaGenderTestData[i].level = 1; + if (sNakaGenderTestData[i].level < 1) + sNakaGenderTestData[i].level = 100; + SetMonData(gPlayerParty + i, MON_DATA_EXP, gExperienceTables[gBaseStats[sNakaGenderTestData[i].species].growthRate] + sNakaGenderTestData[i].level); + Nakamura_NakaGenderTest_RecalcStats(gPlayerParty + i); + } +} + +static void NakaGenderTest_PartyCompactionEnsureAtLeastOne(void) +{ + u8 i; + u8 j; + + Menu_EraseWindowRect(0, 0, 29, 19); + for (i = 0; i < 5; i++) + { + for (j = i + 1; j < 6; j++) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE) + { + struct Pokemon tmp = gPlayerParty[i]; + gPlayerParty[i] = gPlayerParty[j]; + gPlayerParty[j] = tmp; + } + } + } + CalculatePlayerPartyCount(); + if (gPlayerPartyCount == 0) + { + CreateMon(gPlayerParty + 0, SPECIES_BULBASAUR, 10, 0x20, FALSE, 0, FALSE, 0); + gPlayerPartyCount = 1; + } +} + +static void NakaGenderTest_JoypadAction(u8 i) +{ + u8 q; + u8 r; + PlaySE(SE_SELECT); + q = sNakaGenderTest_CursorPosition / 6; + r = sNakaGenderTest_CursorPosition % 6; + Menu_BlankWindowRect(_843E5D1[q], r * 2 + 1, _843E5D1[q], r * 2 + 2); + + if (i == 0) + { + if (r != 0) + sNakaGenderTest_CursorPosition--; + else + sNakaGenderTest_CursorPosition = q * 6 + 5; + } + + if (i == 1) + { + if (r != 5) + sNakaGenderTest_CursorPosition++; + else + sNakaGenderTest_CursorPosition = q * 6; + } + + if (i == 2) + { + if (q != 0) + sNakaGenderTest_CursorPosition -= 6; + else + sNakaGenderTest_CursorPosition = 12 + r; + } + + if (i == 3) + { + if (q != 2) + sNakaGenderTest_CursorPosition += 6; + else + sNakaGenderTest_CursorPosition = r; + } + + q = sNakaGenderTest_CursorPosition / 6; + r = sNakaGenderTest_CursorPosition % 6; + PrintTriangleCursorWithPalette(_843E5D1[q], r * 2 + 1, 0xFF); +} + +static bool8 NakaGenderTest_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_UP) + { + NakaGenderTest_JoypadAction(0); + return FALSE; + } + + if (gMain.newKeys & DPAD_DOWN) + { + NakaGenderTest_JoypadAction(1); + return FALSE; + } + + if (gMain.newKeys & DPAD_LEFT) + { + NakaGenderTest_JoypadAction(2); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + NakaGenderTest_JoypadAction(3); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & A_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +1); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & B_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -1); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, +10); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, +1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (sNakaGenderTest_CursorPosition < 6) + NakaGenderTest_AdjustSpecies(sNakaGenderTest_CursorPosition, -10); + if (sNakaGenderTest_CursorPosition >= 6 && sNakaGenderTest_CursorPosition < 12) + NakaGenderTest_RerollPokemon(sNakaGenderTest_CursorPosition % 6); + if (sNakaGenderTest_CursorPosition >= 12 && sNakaGenderTest_CursorPosition < 18) + NakaGenderTest_AdjustLevel(sNakaGenderTest_CursorPosition % 6, -1); + NakaGenderTest_RedrawCurrent(sNakaGenderTest_CursorPosition % 6); + return FALSE; + } + + if (gMain.newKeys & START_BUTTON) + { + NakaGenderTest_PartyCompactionEnsureAtLeastOne(); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static u8 NakaGenderTest_ForceRerollPokemon(u8 i) +{ + u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + u8 gender = GetMonGender(gPlayerParty + i); + u8 ratio = gBaseStats[species].genderRatio; + u32 personality; + + if (ratio == MON_MALE || ratio == MON_FEMALE || ratio == MON_GENDERLESS) + return GetMonGender(gPlayerParty + i); + + switch (gender) + { + default: + return MON_MALE; + case MON_MALE: + ratio = MON_FEMALE; + break; + case MON_FEMALE: + ratio = MON_MALE; + break; + } + + do + { + personality = Random(); + personality |= (Random() << 16); + } while (GetGenderFromSpeciesAndPersonality(species, personality) != ratio); + + GetMonData(gPlayerParty + i, MON_DATA_IVS); + CreateMon(gPlayerParty + i, sNakaGenderTestData[i].species, sNakaGenderTestData[i].level, 0x20, TRUE, personality, FALSE, 0); + return ratio; +} + +// ======================================================= +// SET POKEBLOCK +// ======================================================= + +static struct Pokeblock sPokeblock; + +#ifdef NONMATCHING +static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) +{ + u8 numGoodFlavors = 0; + u8 numBadFlavors = 0; + u8 numNeutralFlavors = 0; + u8 i; + u8 numLowFlavors; + s16 pkblk[6]; + + for (i = 0; i < 6; i++) + { + pkblk[i] = GetPokeblockData(pokeblock, i + PBLOCK_SPICY); + if (i != PBLOCK_FEEL - 1) + { + if (pkblk[i] > 0) + numGoodFlavors++; + if (pkblk[i] < 0) + numBadFlavors++; + if (pkblk[i] == 0) + numNeutralFlavors++; + } + } + + if (pkblk[0] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[1] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[2] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[3] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (pkblk[4] >= 50) + { + StringCopy(dest, ContestStatsText_GoldPokeBlock); + return PBLOCK_CLR_GOLD; + } + + if (numGoodFlavors == 4) + { + StringCopy(dest, ContestStatsText_WhitePokeBlock); + return PBLOCK_CLR_WHITE; + } + + numLowFlavors = 0; + for (i = 0; i < 5; i++) + { + if (pkblk[i] == 2) + numLowFlavors++; + } + if (numLowFlavors == 3 || numNeutralFlavors == 5 || numBadFlavors == 4) + { + StringCopy(dest, ContestStatsText_BlackPokeBlock); + return PBLOCK_CLR_BLACK; + } + + if (numGoodFlavors == 3) + { + StringCopy(dest, ContestStatsText_GrayPokeBlock); + return PBLOCK_CLR_GRAY; + } + + if (numGoodFlavors == 2 || numBadFlavors == 2) + { + u8 firstNonzeroFlavor = 6; + u8 lastNonzeroFlavor = 0; + for (i = 0; i < 5; i++) + { + if (pkblk[i] != 0) + { + if (firstNonzeroFlavor == 6) + firstNonzeroFlavor = i; + else + lastNonzeroFlavor = i; + } + } + if (pkblk[firstNonzeroFlavor] >= pkblk[lastNonzeroFlavor]) + lastNonzeroFlavor = firstNonzeroFlavor; + + if (lastNonzeroFlavor == 0) + { + StringCopy(dest, ContestStatsText_PurplePokeBlock); + return PBLOCK_CLR_PURPLE; + } + + if (lastNonzeroFlavor == 1) + { + StringCopy(dest, ContestStatsText_IndigoPokeBlock); + return PBLOCK_CLR_INDIGO; + } + + if (lastNonzeroFlavor == 2) + { + StringCopy(dest, ContestStatsText_BrownPokeBlock); + return PBLOCK_CLR_BROWN; + } + + if (lastNonzeroFlavor == 3) + { + StringCopy(dest, ContestStatsText_LiteBluePokeBlock); + return PBLOCK_CLR_LITEBLUE; + } + + if (lastNonzeroFlavor == 4) + { + StringCopy(dest, ContestStatsText_OlivePokeBlock); + return PBLOCK_CLR_OLIVE; + } + } + + if (numGoodFlavors == 1 || numBadFlavors == 1) + { + if (pkblk[0] != 0) + { + StringCopy(dest, ContestStatsText_RedPokeBlock); + return PBLOCK_CLR_RED; + } + + if (pkblk[1] != 0) + { + StringCopy(dest, ContestStatsText_BluePokeBlock); + return PBLOCK_CLR_BLUE; + } + + if (pkblk[2] != 0) + { + StringCopy(dest, ContestStatsText_PinkPokeBlock); + return PBLOCK_CLR_PINK; + } + + if (pkblk[3] != 0) + { + StringCopy(dest, ContestStatsText_GreenPokeBlock); + return PBLOCK_CLR_GREEN; + } + + if (pkblk[4] != 0) + { + StringCopy(dest, ContestStatsText_YellowPokeBlock); + return PBLOCK_CLR_YELLOW; + } + } + + StringCopy(dest, gOtherText_FiveQuestions); + return 0; // PBLOCK_CLR_UNKNOWN +} +#else +__attribute__((naked)) +static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, r9\n" + "\tmov\tr6, r8\n" + "\tpush\t{r6, r7}\n" + "\tadd\tsp, sp, #0xfffffff0\n" + "\tadd\tr6, r0, #0\n" + "\tmov\tr9, r1\n" + "\tmov\tr7, #0x0\n" + "\tmov\tr0, #0x0\n" + "\tmov\tr8, r0\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr5, #0x0\n" + "._329:\n" + "\tadd\tr4, r5, #1\n" + "\tlsl\tr1, r4, #0x18\n" + "\tlsr\tr1, r1, #0x18\n" + "\tmov\tr0, r9\n" + "\tstr\tr2, [sp, #0xc]\n" + "\tbl\tGetPokeblockData\n" + "\tadd\tr1, r0, #0\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tstrh\tr1, [r0]\n" + "\tldr\tr2, [sp, #0xc]\n" + "\tcmp\tr5, #0x5\n" + "\tbeq\t._328\t@cond_branch\n" + "\tlsl\tr0, r1, #0x10\n" + "\tasr\tr1, r0, #0x10\n" + "\tcmp\tr1, #0\n" + "\tble\t._326\t@cond_branch\n" + "\tadd\tr0, r7, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr7, r0, #0x18\n" + "._326:\n" + "\tcmp\tr1, #0\n" + "\tbge\t._327\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tadd\tr0, r0, #0x1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tmov\tr8, r0\n" + "._327:\n" + "\tcmp\tr1, #0\n" + "\tbne\t._328\t@cond_branch\n" + "\tadd\tr0, r2, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr2, r0, #0x18\n" + "._328:\n" + "\tlsl\tr0, r4, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x5\n" + "\tbls\t._329\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tldrh\tr0, [r0, #0x2]\n" + "\tlsl\tr0, r0, #0x10\n" + "\tasr\tr0, r0, #0x10\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x4\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x6\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x31\n" + "\tbgt\t._333\t@cond_branch\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x8\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0x31\n" + "\tble\t._334\t@cond_branch\n" + "._333:\n" + "\tldr\tr1, ._336 @ ContestStatsText_GoldPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xe\n" + "\tb\t._400\n" + "._337:\n" + "\t.align\t2, 0\n" + "._336:\n" + "\t.word\tContestStatsText_GoldPokeBlock\n" + "._334:\n" + "\tcmp\tr7, #0x4\n" + "\tbne\t._338\t@cond_branch\n" + "\tldr\tr1, ._340 @ ContestStatsText_WhitePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xd\n" + "\tb\t._400\n" + "._341:\n" + "\t.align\t2, 0\n" + "._340:\n" + "\t.word\tContestStatsText_WhitePokeBlock\n" + "._338:\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr5, #0x0\n" + "._343:\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0x2\n" + "\tbne\t._342\t@cond_branch\n" + "\tadd\tr0, r3, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr3, r0, #0x18\n" + "._342:\n" + "\tadd\tr0, r5, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x4\n" + "\tbls\t._343\t@cond_branch\n" + "\tcmp\tr3, #0x3\n" + "\tbeq\t._345\t@cond_branch\n" + "\tcmp\tr2, #0x5\n" + "\tbeq\t._345\t@cond_branch\n" + "\tmov\tr4, r8\n" + "\tcmp\tr4, #0x4\n" + "\tbne\t._346\t@cond_branch\n" + "._345:\n" + "\tldr\tr1, ._348 @ ContestStatsText_BlackPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xc\n" + "\tb\t._400\n" + "._349:\n" + "\t.align\t2, 0\n" + "._348:\n" + "\t.word\tContestStatsText_BlackPokeBlock\n" + "._346:\n" + "\tcmp\tr7, #0x3\n" + "\tbne\t._350\t@cond_branch\n" + "\tldr\tr1, ._352 @ ContestStatsText_GrayPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xb\n" + "\tb\t._400\n" + "._353:\n" + "\t.align\t2, 0\n" + "._352:\n" + "\t.word\tContestStatsText_GrayPokeBlock\n" + "._350:\n" + "\tcmp\tr7, #0x2\n" + "\tbeq\t._354\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tcmp\tr0, #0x2\n" + "\tbne\t._377\t@cond_branch\n" + "._354:\n" + "\tmov\tr3, #0x6\n" + "\tmov\tr2, #0x0\n" + "\tmov\tr5, #0x0\n" + "._359:\n" + "\tlsl\tr0, r5, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._358\t@cond_branch\n" + "\tcmp\tr3, #0x6\n" + "\tbne\t._357\t@cond_branch\n" + "\tadd\tr3, r5, #0\n" + "\tb\t._358\n" + "._357:\n" + "\tadd\tr2, r5, #0\n" + "._358:\n" + "\tadd\tr0, r5, #1\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr5, r0, #0x18\n" + "\tcmp\tr5, #0x4\n" + "\tbls\t._359\t@cond_branch\n" + "\tlsl\tr0, r3, #0x1\n" + "\tmov\tr4, sp\n" + "\tadd\tr1, r4, r0\n" + "\tlsl\tr0, r2, #0x1\n" + "\tadd r0, r0, sp\n" + "\tmov\tr4, #0x0\n" + "\tldsh\tr1, [r1, r4]\n" + "\tmov\tr4, #0x0\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr1, r0\n" + "\tblt\t._360\t@cond_branch\n" + "\tadd\tr2, r3, #0\n" + "._360:\n" + "\tcmp\tr2, #0\n" + "\tbne\t._361\t@cond_branch\n" + "\tldr\tr1, ._363 @ ContestStatsText_PurplePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x6\n" + "\tb\t._400\n" + "._364:\n" + "\t.align\t2, 0\n" + "._363:\n" + "\t.word\tContestStatsText_PurplePokeBlock\n" + "._361:\n" + "\tcmp\tr2, #0x1\n" + "\tbne\t._365\t@cond_branch\n" + "\tldr\tr1, ._367 @ ContestStatsText_IndigoPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x7\n" + "\tb\t._400\n" + "._368:\n" + "\t.align\t2, 0\n" + "._367:\n" + "\t.word\tContestStatsText_IndigoPokeBlock\n" + "._365:\n" + "\tcmp\tr2, #0x2\n" + "\tbne\t._369\t@cond_branch\n" + "\tldr\tr1, ._371 @ ContestStatsText_BrownPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x8\n" + "\tb\t._400\n" + "._372:\n" + "\t.align\t2, 0\n" + "._371:\n" + "\t.word\tContestStatsText_BrownPokeBlock\n" + "._369:\n" + "\tcmp\tr2, #0x3\n" + "\tbne\t._373\t@cond_branch\n" + "\tldr\tr1, ._375 @ ContestStatsText_LiteBluePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x9\n" + "\tb\t._400\n" + "._376:\n" + "\t.align\t2, 0\n" + "._375:\n" + "\t.word\tContestStatsText_LiteBluePokeBlock\n" + "._373:\n" + "\tcmp\tr2, #0x4\n" + "\tbne\t._377\t@cond_branch\n" + "\tldr\tr1, ._379 @ ContestStatsText_OlivePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0xa\n" + "\tb\t._400\n" + "._380:\n" + "\t.align\t2, 0\n" + "._379:\n" + "\t.word\tContestStatsText_OlivePokeBlock\n" + "._377:\n" + "\tcmp\tr7, #0x1\n" + "\tbeq\t._381\t@cond_branch\n" + "\tmov\tr0, r8\n" + "\tcmp\tr0, #0x1\n" + "\tbne\t._399\t@cond_branch\n" + "._381:\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x0\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._383\t@cond_branch\n" + "\tldr\tr1, ._385 @ ContestStatsText_RedPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x1\n" + "\tb\t._400\n" + "._386:\n" + "\t.align\t2, 0\n" + "._385:\n" + "\t.word\tContestStatsText_RedPokeBlock\n" + "._383:\n" + "\tmov\tr0, sp\n" + "\tldrh\tr0, [r0, #0x2]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._387\t@cond_branch\n" + "\tldr\tr1, ._389 @ ContestStatsText_BluePokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x2\n" + "\tb\t._400\n" + "._390:\n" + "\t.align\t2, 0\n" + "._389:\n" + "\t.word\tContestStatsText_BluePokeBlock\n" + "._387:\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x4\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._391\t@cond_branch\n" + "\tldr\tr1, ._393 @ ContestStatsText_PinkPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x3\n" + "\tb\t._400\n" + "._394:\n" + "\t.align\t2, 0\n" + "._393:\n" + "\t.word\tContestStatsText_PinkPokeBlock\n" + "._391:\n" + "\tmov\tr0, sp\n" + "\tmov\tr1, #0x6\n" + "\tldsh\tr0, [r0, r1]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._395\t@cond_branch\n" + "\tldr\tr1, ._397 @ ContestStatsText_GreenPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x4\n" + "\tb\t._400\n" + "._398:\n" + "\t.align\t2, 0\n" + "._397:\n" + "\t.word\tContestStatsText_GreenPokeBlock\n" + "._395:\n" + "\tmov\tr0, sp\n" + "\tmov\tr4, #0x8\n" + "\tldsh\tr0, [r0, r4]\n" + "\tcmp\tr0, #0\n" + "\tbeq\t._399\t@cond_branch\n" + "\tldr\tr1, ._401 @ ContestStatsText_YellowPokeBlock\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x5\n" + "\tb\t._400\n" + "._402:\n" + "\t.align\t2, 0\n" + "._401:\n" + "\t.word\tContestStatsText_YellowPokeBlock\n" + "._399:\n" + "\tldr\tr1, ._403 @ gOtherText_FiveQuestions\n" + "\tadd\tr0, r6, #0\n" + "\tbl\tStringCopy\n" + "\tmov\tr0, #0x0\n" + "._400:\n" + "\tadd\tsp, sp, #0x10\n" + "\tpop\t{r3, r4}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r1}\n" + "\tbx\tr1\n" + "._404:\n" + "\t.align\t2, 0\n" + "._403:\n" + "\t.word\tgOtherText_FiveQuestions"); +} +#endif // NONMATCHING + +static void NakaDebug_PrintNum3Chars(u8 * buff, s16 a1) +{ + u8 i; + s16 divisor; + s16 quot; + s16 printZero; + + for (i = 0; i < 4; i++) + buff[i] = CHAR_SPACE; + buff[4] = EOS; + + if (a1 == 0) + buff[3] = CHAR_0; + else if (a1 > 0) + { + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } + else if (a1 < 0) + { + a1 = -a1; + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + if (!printZero) + buff[i] = CHAR_HYPHEN; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } +} + +static void SetPokeblock_PrintFlavorValue(u8 a0) +{ + struct Pokeblock *pkblk = &sPokeblock; + + if (a0 == 0) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->spicy); + Menu_PrintText(gStringVar1, 8, 3); + } + else if (a0 == 1) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->dry); + Menu_PrintText(gStringVar1, 8, 5); + } + else if (a0 == 2) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sweet); + Menu_PrintText(gStringVar1, 8, 7); + } + else if (a0 == 3) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->bitter); + Menu_PrintText(gStringVar1, 8, 9); + } + else if (a0 == 4) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->sour); + Menu_PrintText(gStringVar1, 8, 11); + } + else if (a0 == 5) + { + NakaDebug_PrintNum3Chars(gStringVar1, pkblk->feel); + Menu_PrintText(gStringVar1, 8, 13); + } +} + +static void SetPokeblock_AdjustFlavor(u8 a0, s8 a1) +{ + struct Pokeblock *pkblk = &sPokeblock; + + if (a0 == 0) + pkblk->spicy += a1; + else if (a0 == 1) + pkblk->dry += a1; + else if (a0 == 2) + pkblk->sweet += a1; + else if (a0 == 3) + pkblk->bitter += a1; + else if (a0 == 4) + pkblk->sour += a1; + else if (a0 == 5) + pkblk->feel += a1; +} + +static void SetPokeblock_RecomputeAndPrintColor(void) +{ + sPokeblock.color = SetPokeblock_CalcColor(gStringVar1, &sPokeblock); + Menu_BlankWindowRect(1, 1, 8, 2); + Menu_PrintText(gStringVar1, 1, 1); +} + +static void SetPokeblock_Init(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 12, 15); + SetPokeblock_RecomputeAndPrintColor(); + Menu_PrintText(gContestStatsText_Spicy, 2, 3); + Menu_PrintText(gContestStatsText_Dry, 2, 5); + Menu_PrintText(gContestStatsText_Sweet, 2, 7); + Menu_PrintText(gContestStatsText_Bitter, 2, 9); + Menu_PrintText(gContestStatsText_Sour, 2, 11); + Menu_PrintText(gContestStatsText_Tasty, 2, 13); + + for (i = 0; i < 6; i++) + SetPokeblock_PrintFlavorValue(i); + + InitMenu(0, 1, 3, 6, 0, 11); +} + +static void SetPokeblock_GivePokeblock(void) +{ + struct Pokeblock * pkblk = &sPokeblock; + u8 rval = 0; + u8 i; + + if (pkblk->color == PBLOCK_CLR_BLACK) + { + if (pkblk->spicy == 2) + rval++; + + if (pkblk->sweet == 2) + rval++; + + if (pkblk->bitter == 2) + rval++; + + if (pkblk->dry == 2) + rval++; + + if (pkblk->sour == 2) + rval++; + + if (rval != 3) + { + pkblk->spicy = 2; + pkblk->sweet = 2; + pkblk->bitter = 2; + } + } + + GivePokeblock(pkblk); + SetPokeblock_RecomputeAndPrintColor(); + + for (i = 0; i < 6; i++) + SetPokeblock_PrintFlavorValue(i); +} + +static bool8 SetPokeblock_HandleJoypad(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), -1); + SetPokeblock_PrintFlavorValue(Menu_GetCursorPos()); + SetPokeblock_RecomputeAndPrintColor(); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + SetPokeblock_AdjustFlavor(Menu_GetCursorPos(), +1); + SetPokeblock_PrintFlavorValue(Menu_GetCursorPos()); + SetPokeblock_RecomputeAndPrintColor(); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + SetPokeblock_GivePokeblock(); + PlaySE(SE_SELECT); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +static bool8 SetPokeblock(void) +{ + Menu_EraseWindowRect(0, 0, 29, 19); + SetPokeblock_Init(); + gMenuCallback = SetPokeblock_HandleJoypad; + return FALSE; +} + +// ======================================================= +// EFFORT VALUES +// ======================================================= + +EWRAM_DATA u8 sEVTest_CursorPosition = 0; + +static const u8 Str_843E5F2[] = _("HP どりょくち"); +static const u8 Str_843E5FB[] = _("こうげき どりょくち"); +static const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); +static const u8 Str_843E611[] = _("すばやさ どりょくち"); +static const u8 Str_843E61C[] = _("とくこう どりょくち"); +static const u8 Str_843E627[] = _("とくぼう どりょくち"); +static const u8 Str_843E632[] = _("なつきど"); +static const u8 Str_843E637[] = _("どりょくち ごうけい"); + +static void EVTest_Init(void) +{ + Menu_DrawStdWindowFrame(0, 0, 22, 19); + Menu_PrintText(gOtherText_Slash, 11, 1); + Menu_PrintText(Str_843E5F2, 2, 3); + Menu_PrintText(Str_843E5FB, 2, 5); + Menu_PrintText(Str_843E606, 2, 7); + Menu_PrintText(Str_843E611, 2, 9); + Menu_PrintText(Str_843E61C, 2, 11); + Menu_PrintText(Str_843E627, 2, 13); + Menu_PrintText(Str_843E637, 2, 15); + Menu_PrintText(Str_843E632, 2, 17); +} + +static void EVTest_PrintMonData(struct Pokemon *pokemon) +{ + u16 evTotal; + u16 curEv; + + Menu_BlankWindowRect(1, 1, 10, 2); + GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); + Menu_PrintText(gStringVar1, 1, 1); + + Menu_BlankWindowRect(12, 1, 21, 2); + Menu_PrintText(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES)], 12, 1); + + curEv = GetMonData(pokemon, MON_DATA_HP_EV); + evTotal = curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 3, 17, 4); + Menu_PrintText(gStringVar1, 13, 3); + + curEv = GetMonData(pokemon, MON_DATA_ATK_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 5, 17, 6); + Menu_PrintText(gStringVar1, 13, 5); + + curEv = GetMonData(pokemon, MON_DATA_DEF_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 7, 17, 8); + Menu_PrintText(gStringVar1, 13, 7); + + curEv = GetMonData(pokemon, MON_DATA_SPEED_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 9, 17, 10); + Menu_PrintText(gStringVar1, 13, 9); + + curEv = GetMonData(pokemon, MON_DATA_SPATK_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 11, 17, 12); + Menu_PrintText(gStringVar1, 13, 11); + + curEv = GetMonData(pokemon, MON_DATA_SPDEF_EV); + evTotal += curEv; + ConvertIntToDecimalStringN(gStringVar1, curEv, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 13, 17, 14); + Menu_PrintText(gStringVar1, 13, 13); + + ConvertIntToDecimalStringN(gStringVar1, evTotal, STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 15, 17, 16); + Menu_PrintText(gStringVar1, 13, 15); + + ConvertIntToDecimalStringN(gStringVar1, GetMonData(pokemon, MON_DATA_FRIENDSHIP), STR_CONV_MODE_LEFT_ALIGN, 5); + Menu_BlankWindowRect(13, 17, 17, 18); + Menu_PrintText(gStringVar1, 13, 17); +} + +static void EVTest_MovePartyCursor(s8 a0) +{ + s16 i; + if (a0 == -1) + { + if (sEVTest_CursorPosition == 0) + { + for (i = 5; i >= 0; i--) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE) + { + sEVTest_CursorPosition = i; + return; + } + } + } + sEVTest_CursorPosition += a0; + return; + } + + if (a0 == 1) + { + sEVTest_CursorPosition += a0; + if (sEVTest_CursorPosition == 6) + sEVTest_CursorPosition = 0; + else if (GetMonData(gPlayerParty + sEVTest_CursorPosition, MON_DATA_SPECIES) == SPECIES_NONE) + sEVTest_CursorPosition = 0; + } +} + +static bool8 EVTest_HandleJoypad(void) +{ + if (gMain.newKeys & DPAD_LEFT) + { + EVTest_MovePartyCursor(-1); + EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition); + return FALSE; + } + + if (gMain.newKeys & DPAD_RIGHT) + { + EVTest_MovePartyCursor(+1); + EVTest_PrintMonData(gPlayerParty + sEVTest_CursorPosition); + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 DebugMenu_EffortValues(void) +{ + Menu_EraseWindowRect(0, 0, 29, 19); + sEVTest_CursorPosition = 0; + EVTest_Init(); + EVTest_PrintMonData(gPlayerParty + 0); + gMenuCallback = EVTest_HandleJoypad; + return FALSE; +} + +// ======================================================= +// RNG Test +// ======================================================= + +EWRAM_DATA u16 sRngLeft = 0; +EWRAM_DATA u16 sRngRight = 0; +EWRAM_DATA u16 sNumSamples = 0; +EWRAM_DATA u16 sRngMax = 0; + +static const u8 Str_843E642[] = _("ここから"); +static const u8 Str_843E647[] = _("ここまで"); +static const u8 Str_843E64C[] = _("かいすう"); +static const u8 Str_843E651[] = _("けっか"); +static const u8 Str_843E655[] = _("かい"); +static const u8 Str_843E658[] = _("0"); +static const u8 Str_843E65A[] = _("はんい"); + +static u16 EVTest_GetDiscreteUniformRandomSamples(void) +{ + u16 sampCount = 0; + u16 left; + u16 right; + u32 i; + + if (sRngLeft <= sRngRight) + { + left = sRngLeft; + right = sRngRight; + } + else + { + left = sRngRight; + right = sRngLeft; + } + + for (i = 0; i < sNumSamples; i++) + { + u16 r0 = Random() % sRngMax; + if (r0 >= left && r0 <= right) + sampCount++; + } + + return sampCount; +} + +static void RNGTest_Init(void) +{ + Menu_DrawStdWindowFrame(0, 0, 15, 11); + Menu_PrintText(Str_843E642, 2, 1); + Menu_PrintText(Str_843E647, 2, 3); + Menu_PrintText(Str_843E65A, 2, 5); + Menu_PrintText(Str_843E64C, 2, 7); + Menu_PrintText(Str_843E651, 2, 9); + Menu_PrintText(Str_843E655, 13, 9); + Menu_PrintText(Str_843E658, 12, 1); + Menu_PrintText(Str_843E658, 12, 3); + Menu_PrintText(Str_843E658, 12, 5); + Menu_PrintText(Str_843E658, 12, 7); + Menu_PrintText(Str_843E658, 12, 9); + InitMenu(0, 1, 1, 4, 0, 14); +} + +static void RNGTest_PrintNum(u16 a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 8, 9); +} + +static void RNGTest_AdjustAndPrintNumAtLine(u16 * a0, s8 a1, u8 a2) +{ + *a0 += a1; + ConvertIntToDecimalStringN(gStringVar1, *a0, STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 8, a2); +} + +static bool8 RNGTest_HandleJoypad(void) +{ + s8 r5 = gMain.heldKeys & R_BUTTON ? 100 : 1; + s8 r4; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + Menu_MoveCursor(-1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + Menu_MoveCursor(+1); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + r4 = Menu_GetCursorPos(); + if (r4 == 0) + RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, -r5, 1); + if (r4 == 1) + RNGTest_AdjustAndPrintNumAtLine(&sRngRight, -r5, 3); + if (r4 == 2) + RNGTest_AdjustAndPrintNumAtLine(&sRngMax, -r5, 5); + if (r4 == 3) + RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, -r5, 7); + return FALSE; + } + + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + r4 = Menu_GetCursorPos(); + if (r4 == 0) + RNGTest_AdjustAndPrintNumAtLine(&sRngLeft, r5, 1); + if (r4 == 1) + RNGTest_AdjustAndPrintNumAtLine(&sRngRight, r5, 3); + if (r4 == 2) + RNGTest_AdjustAndPrintNumAtLine(&sRngMax, r5, 5); + if (r4 == 3) + RNGTest_AdjustAndPrintNumAtLine(&sNumSamples, r5, 7); + return FALSE; + } + + if (gMain.newKeys & A_BUTTON) + { + if (sRngMax != 0) + { + PlaySE(SE_SELECT); + RNGTest_PrintNum(EVTest_GetDiscreteUniformRandomSamples()); + } + return FALSE; + } + + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 DebugMenu_RandomNumberTest(void) +{ + sRngLeft = 0; + sRngRight = 0; + sRngMax = 0; + sNumSamples = 0; + Menu_EraseWindowRect(0, 0, 29, 19); + RNGTest_Init(); + gMenuCallback = RNGTest_HandleJoypad; + return FALSE; +} #endif // DEBUG diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 9b12c1cc1..340ef2f17 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1830,7 +1830,7 @@ u8 DebugMenu_EditPKMN() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " bl debug_sub_815FFDC\n" + " bl NakaGenderTest\n" " mov r0, #0x0\n" " pop {r1}\n" " bx r1\n" diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c index 8f7f5eb92..d4ef2d589 100644 --- a/src/decoration_inventory.c +++ b/src/decoration_inventory.c @@ -64,7 +64,7 @@ bool8 sub_8133FE4(u8 decorIdx) return FALSE; } -bool8 IsThereStorageSpaceForDecoration(u8 decorIdx) +bool8 GiveDecoration(u8 decorIdx) { u8 invIdx; s8 invSlot; @@ -167,11 +167,11 @@ u8 sub_81341D4(void) #if DEBUG -void debug_sub_814A3A8(void) +void Debug_GiveAllDecorations(void) { u8 decor; for (decor = 0; decor < DECOR_COUNT; decor++) - IsThereStorageSpaceForDecoration(decor); + GiveDecoration(decor); } #endif diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 35ea3952a..a7087be0f 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -326,7 +326,7 @@ void sub_8080DC4(u8 taskId) } } -void atk17_seteffectsecondary(void) +void sub_8080DEC(void) { pal_fill_black(); CreateStartMenuTask(sub_8080DC4); diff --git a/src/item_menu.c b/src/item_menu.c index 32b14e021..981f42282 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2616,8 +2616,8 @@ static void sub_80A5888(u8 taskId) static void OnBagClose_Field0(u8 taskId) { - gTasks[taskId].data[8] = (u32)sub_805469C >> 16; - gTasks[taskId].data[9] = (u32)sub_805469C; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_1_sub_8080DEC >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_1_sub_8080DEC; gLastFieldPokeMenuOpened = 0; sub_80A5AE4(taskId); } diff --git a/src/overworld.c b/src/overworld.c index 6376aa1af..e98e5a6a1 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1415,10 +1415,10 @@ void sub_805465C(void) c2_exit_to_overworld_2_switch(); } -void sub_805469C(void) +void c2_exit_to_overworld_1_sub_8080DEC(void) { FieldClearVBlankHBlankCallbacks(); - gFieldCallback = atk17_seteffectsecondary; + gFieldCallback = sub_8080DEC; c2_exit_to_overworld_2_switch(); } diff --git a/src/pokeblock.c b/src/pokeblock.c index 6804f55d6..228d563cf 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -1070,7 +1070,7 @@ s8 GetFirstFreePokeblockSlot(void) return -1; } -bool8 sub_810CA34(const struct Pokeblock *pokeblock) +bool8 GivePokeblock(const struct Pokeblock *pokeblock) { s8 idx = GetFirstFreePokeblockSlot(); if (idx == -1) diff --git a/src/pokedex.c b/src/pokedex.c index f7baced63..d90b73178 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1694,7 +1694,7 @@ static void Task_ClosePokedex(u8 taskId) gSaveBlock2.pokedex.unknown1 = 0; gSaveBlock2.pokedex.order = gPokedexView->dexOrder; DestroyTask(taskId); - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); } } diff --git a/src/pokemon_1.c b/src/pokemon_1.c index a23bb3324..0622ec614 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -525,7 +525,7 @@ void CalculateMonStats(struct Pokemon *mon) } #if DEBUG -void debug_sub_803F55C(struct Pokemon *mon) +void Nakamura_NakaGenderTest_RecalcStats(struct Pokemon *mon) { s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c index 532340ce4..60757b7d4 100644 --- a/src/pokemon_menu.c +++ b/src/pokemon_menu.c @@ -309,7 +309,7 @@ static void sub_8089E4C(u8 taskID) if (!gPaletteFade.active) { gLastFieldPokeMenuOpened = 0; - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); DestroyTask(taskID); } } diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 4f7eb66b4..55cf05790 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3239,7 +3239,7 @@ void sub_80EE96C() if (!gPaletteFade.active) { sub_80F5BDC(); - sub_805469C(); + c2_exit_to_overworld_1_sub_8080DEC(); } } } diff --git a/src/region_map.c b/src/region_map.c index e40fb7752..b4ed2c558 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1912,7 +1912,7 @@ void debug_sub_8110D84(void) break; case 3: if (!UpdatePaletteFade()) - SetMainCallback2(sub_805469C); + SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); break; case 4: if (sub_80FAB60() != 0) diff --git a/src/roamer.c b/src/roamer.c index 6ed5b6c89..459082e42 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -228,7 +228,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) } #if DEBUG -void debug_sub_814A714(void) +void Debug_CreateRoamer(void) { if (gSaveBlock1.location.mapGroup == 0) { @@ -238,7 +238,7 @@ void debug_sub_814A714(void) } } -void debug_sub_814A73C(u8* str) +void Debug_GetRoamerLocation(u8* str) { GetMapSectionName(str, sRoamerLocation[1], 0); } diff --git a/src/scrcmd.c b/src/scrcmd.c index e5272bc9c..29c1f982e 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -548,7 +548,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = IsThereStorageSpaceForDecoration(decoration); + gSpecialVar_Result = GiveDecoration(decoration); return FALSE; } diff --git a/src/shop.c b/src/shop.c index 87dbbeb97..42cda5e2e 100644 --- a/src/shop.c +++ b/src/shop.c @@ -691,7 +691,7 @@ static void Task_DoItemPurchase(u8 taskId) } else // a normal mart is only type 0, so types 1 and 2 are decoration marts. { - if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) + if (GiveDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) { if (gMartInfo.martType == MART_TYPE_1) DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, Shop_DoItemTransaction, 0xC3E1); diff --git a/src/start_menu.c b/src/start_menu.c index f2d53eb7f..f63408689 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -503,7 +503,7 @@ static u8 StartMenu_PlayerCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - TrainerCard_ShowPlayerCard(sub_805469C); + TrainerCard_ShowPlayerCard(c2_exit_to_overworld_1_sub_8080DEC); return 1; } return 0; @@ -524,7 +524,7 @@ static u8 StartMenu_OptionCallback(void) { PlayRainSoundEffect(); SetMainCallback2(CB2_InitOptionMenu); - gMain.savedCallback = sub_805469C; + gMain.savedCallback = c2_exit_to_overworld_1_sub_8080DEC; return 1; } return 0; @@ -551,7 +551,7 @@ static u8 StartMenu_PlayerLinkCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - TrainerCard_ShowLinkCard(gUnknown_03004860, sub_805469C); + TrainerCard_ShowLinkCard(gUnknown_03004860, c2_exit_to_overworld_1_sub_8080DEC); return 1; } return 0; diff --git a/src/trader.c b/src/trader.c index 885557d5a..e8fe743f8 100644 --- a/src/trader.c +++ b/src/trader.c @@ -249,7 +249,7 @@ void ScrSpecial_TraderDoDecorationTrade(void) struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; sub_81340A8(gSpecialVar_0x8006); - IsThereStorageSpaceForDecoration(gSpecialVar_0x8004); + GiveDecoration(gSpecialVar_0x8004); StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName); trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; sub_810993C(); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 19778e29b..ddad43a56 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -3803,7 +3803,7 @@ void FeebasSeedRng(u16 seed) } #if DEBUG -u16 debug_sub_8092344(u8 arg0) +u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0) { if (arg0 == 0) return 131; diff --git a/sym_ewram.txt b/sym_ewram.txt index 2ee302108..de0d1b1aa 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -23,7 +23,7 @@ gBattleTypeFlags = .; /* 20239F8 */ gUnknown_020239FC = .; /* 20239FC */ . += 0x4; -gUnknown_02023A00 = .; /* 2023A00 */ +gMultiPartnerParty = .; /* 2023A00 */ . += 0x4; gUnknown_02023A04 = .; /* 2023A04 */ |