diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index c93371aec..74f61f5e9 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -3,1894 +3,6 @@ .section .text .balign 4, 0 - .extern MOD59_021D7730 - .extern MOD59_021D7A68 - .extern MOD59_021D7BEC - .extern MOD59_TilemapChangePalette - .extern MOD59_021D7C44 - .extern MOD59_021D7D7C - .extern MOD59_021D7ECC - .extern MOD59_021D80FC - .extern MOD59_021D8140 - .extern MOD59_021D8234 - .extern MOD59_021D82A0 - .extern MOD59_021D83F8 - .extern MOD59_021D8460 - .extern MOD59_021D84E8 - .extern MOD59_021D8504 - .extern MOD59_DisableBlend - .extern MOD59_021D8624 - .extern MOD59_021D8634 - .extern MOD59_021D86BC - .extern MOD59_021D8914 - - thumb_func_start MOD59_021D8920 -MOD59_021D8920: ; 0x021D8920 - push {r4, r5, r6, lr} - sub sp, #0x30 - add r4, r0, #0 - ldr r1, [r4, #0xc] - mov r5, #0 - cmp r1, #0x6d - bls _021D8932 - bl _021D985C -_021D8932: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D893E: ; jump table - .short _021D8A1A - _021D893E - 2 ; case 0 - .short _021D8A5A - _021D893E - 2 ; case 1 - .short _021D8A76 - _021D893E - 2 ; case 2 - .short _021D8A92 - _021D893E - 2 ; case 3 - .short _021D8ADE - _021D893E - 2 ; case 4 - .short _021D8AEE - _021D893E - 2 ; case 5 - .short _021D8B02 - _021D893E - 2 ; case 6 - .short _021D8B16 - _021D893E - 2 ; case 7 - .short _021D8B60 - _021D893E - 2 ; case 8 - .short _021D8B80 - _021D893E - 2 ; case 9 - .short _021D8BA0 - _021D893E - 2 ; case 10 - .short _021D8BD8 - _021D893E - 2 ; case 11 - .short _021D8BE8 - _021D893E - 2 ; case 12 - .short _021D8C02 - _021D893E - 2 ; case 13 - .short _021D8C16 - _021D893E - 2 ; case 14 - .short _021D8C30 - _021D893E - 2 ; case 15 - .short _021D8C44 - _021D893E - 2 ; case 16 - .short _021D8C5E - _021D893E - 2 ; case 17 - .short _021D8C72 - _021D893E - 2 ; case 18 - .short _021D8C98 - _021D893E - 2 ; case 19 - .short _021D8CA8 - _021D893E - 2 ; case 20 - .short _021D8CBC - _021D893E - 2 ; case 21 - .short _021D8CF8 - _021D893E - 2 ; case 22 - .short _021D8D1C - _021D893E - 2 ; case 23 - .short _021D8D3E - _021D893E - 2 ; case 24 - .short _021D8D7C - _021D893E - 2 ; case 25 - .short _021D8D94 - _021D893E - 2 ; case 26 - .short _021D8DD6 - _021D893E - 2 ; case 27 - .short _021D8DEA - _021D893E - 2 ; case 28 - .short _021D8E34 - _021D893E - 2 ; case 29 - .short _021D8E44 - _021D893E - 2 ; case 30 - .short _021D8E58 - _021D893E - 2 ; case 31 - .short _021D8E90 - _021D893E - 2 ; case 32 - .short _021D8EA0 - _021D893E - 2 ; case 33 - .short _021D8EBE - _021D893E - 2 ; case 34 - .short _021D8ED6 - _021D893E - 2 ; case 35 - .short _021D8EF0 - _021D893E - 2 ; case 36 - .short _021D8F0A - _021D893E - 2 ; case 37 - .short _021D8F24 - _021D893E - 2 ; case 38 - .short _021D8F3E - _021D893E - 2 ; case 39 - .short _021D8F5E - _021D893E - 2 ; case 40 - .short _021D8F7E - _021D893E - 2 ; case 41 - .short _021D8F92 - _021D893E - 2 ; case 42 - .short _021D8FA6 - _021D893E - 2 ; case 43 - .short _021D8FC6 - _021D893E - 2 ; case 44 - .short _021D900C - _021D893E - 2 ; case 45 - .short _021D901C - _021D893E - 2 ; case 46 - .short _021D9030 - _021D893E - 2 ; case 47 - .short _021D9062 - _021D893E - 2 ; case 48 - .short _021D90CE - _021D893E - 2 ; case 49 - .short _021D90E2 - _021D893E - 2 ; case 50 - .short _021D9106 - _021D893E - 2 ; case 51 - .short _021D913E - _021D893E - 2 ; case 52 - .short _021D9178 - _021D893E - 2 ; case 53 - .short _021D9192 - _021D893E - 2 ; case 54 - .short _021D91E4 - _021D893E - 2 ; case 55 - .short _021D9208 - _021D893E - 2 ; case 56 - .short _021D921A - _021D893E - 2 ; case 57 - .short _021D922A - _021D893E - 2 ; case 58 - .short _021D9244 - _021D893E - 2 ; case 59 - .short _021D925C - _021D893E - 2 ; case 60 - .short _021D926C - _021D893E - 2 ; case 61 - .short _021D927E - _021D893E - 2 ; case 62 - .short _021D9290 - _021D893E - 2 ; case 63 - .short _021D92CA - _021D893E - 2 ; case 64 - .short _021D92DC - _021D893E - 2 ; case 65 - .short _021D92EE - _021D893E - 2 ; case 66 - .short _021D930A - _021D893E - 2 ; case 67 - .short _021D9384 - _021D893E - 2 ; case 68 - .short _021D9396 - _021D893E - 2 ; case 69 - .short _021D93AE - _021D893E - 2 ; case 70 - .short _021D93C0 - _021D893E - 2 ; case 71 - .short _021D93D8 - _021D893E - 2 ; case 72 - .short _021D93F8 - _021D893E - 2 ; case 73 - .short _021D942A - _021D893E - 2 ; case 74 - .short _021D944A - _021D893E - 2 ; case 75 - .short _021D945C - _021D893E - 2 ; case 76 - .short _021D9476 - _021D893E - 2 ; case 77 - .short _021D94DE - _021D893E - 2 ; case 78 - .short _021D94EC - _021D893E - 2 ; case 79 - .short _021D950C - _021D893E - 2 ; case 80 - .short _021D954E - _021D893E - 2 ; case 81 - .short _021D956E - _021D893E - 2 ; case 82 - .short _021D9586 - _021D893E - 2 ; case 83 - .short _021D9598 - _021D893E - 2 ; case 84 - .short _021D95AA - _021D893E - 2 ; case 85 - .short _021D95BC - _021D893E - 2 ; case 86 - .short _021D95D4 - _021D893E - 2 ; case 87 - .short _021D95E6 - _021D893E - 2 ; case 88 - .short _021D95F8 - _021D893E - 2 ; case 89 - .short _021D960A - _021D893E - 2 ; case 90 - .short _021D9672 - _021D893E - 2 ; case 91 - .short _021D9684 - _021D893E - 2 ; case 92 - .short _021D9696 - _021D893E - 2 ; case 93 - .short _021D96DE - _021D893E - 2 ; case 94 - .short _021D96EC - _021D893E - 2 ; case 95 - .short _021D96FE - _021D893E - 2 ; case 96 - .short _021D9738 - _021D893E - 2 ; case 97 - .short _021D974C - _021D893E - 2 ; case 98 - .short _021D9764 - _021D893E - 2 ; case 99 - .short _021D9788 - _021D893E - 2 ; case 100 - .short _021D9798 - _021D893E - 2 ; case 101 - .short _021D97B2 - _021D893E - 2 ; case 102 - .short _021D97CC - _021D893E - 2 ; case 103 - .short _021D97DC - _021D893E - 2 ; case 104 - .short _021D9812 - _021D893E - 2 ; case 105 - .short _021D982A - _021D893E - 2 ; case 106 - .short _021D983A - _021D893E - 2 ; case 107 - .short _021D9848 - _021D893E - 2 ; case 108 - .short _021D985A - _021D893E - 2 ; case 109 -_021D8A1A: - ldr r1, _021D8D70 ; =0x00000405 - mov r0, #2 - mov r2, #1 - bl FUN_0200433C - ldr r0, _021D8D70 ; =0x00000405 - add r1, r5, #0 - bl FUN_02005350 - add r0, r5, #0 - mov r1, #1 - bl ToggleBgLayer - mov r0, #7 - mov r1, #1 - bl ToggleBgLayer - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #0xc] - bl _021D985C -_021D8A5A: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - add r0, r4, #0 - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D8B22 - mov r0, #2 - str r0, [r4, #0xc] - bl _021D985C -_021D8A76: - add r1, r5, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #3 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - bl _021D985C -_021D8A92: - ldr r0, _021D8D70 ; =0x00000405 - bl FUN_0200521C - add r0, r4, #0 - mov r1, #1 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - mov r0, #3 - mov r1, #1 - bl ToggleBgLayer - mov r0, #1 - add r1, r0, #0 - bl ToggleBgLayer - mov r0, #0x10 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4] - mov r1, #1 - str r0, [sp, #8] - mov r0, #3 - add r2, r1, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #4 - str r0, [r4, #0xc] - bl _021D985C -_021D8ADE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - mov r0, #5 - str r0, [r4, #0xc] - bl _021D985C -_021D8AEE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8B02: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8B22 - mov r0, #7 - str r0, [r4, #0xc] - bl _021D985C -_021D8B16: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D8B26 -_021D8B22: - bl _021D985C -_021D8B26: - ldr r0, [r4, #0x48] - cmp r0, #1 - beq _021D8B38 - cmp r0, #2 - beq _021D8B44 - cmp r0, #3 - beq _021D8B58 - bl _021D985C -_021D8B38: - mov r0, #0xa - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - bl _021D985C -_021D8B44: - mov r0, #0x1f - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - bl _021D985C -_021D8B58: - mov r0, #0x29 - str r0, [r4, #0xc] - bl _021D985C -_021D8B60: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #9 - str r0, [r4, #0xc] - bl _021D985C -_021D8B80: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #1 - add r1, r5, #0 - bl ToggleBgLayer - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - bl _021D985C -_021D8BA0: - add r1, r4, #0 - mov r2, #1 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0xb - str r0, [r4, #0xc] - bl _021D985C -_021D8BD8: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8BE8: - mov r1, #0x12 - str r1, [sp] - mov r1, #2 - add r2, r5, #0 - mov r3, #3 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xd - str r0, [r4, #0xc] - bl _021D985C -_021D8C02: - add r1, r4, #0 - mov r2, #2 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0xe - str r0, [r4, #0xc] - bl _021D985C -_021D8C16: - mov r1, #0xc - str r1, [sp] - mov r1, #3 - add r2, r5, #0 - mov r3, #7 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xf - str r0, [r4, #0xc] - bl _021D985C -_021D8C30: - add r1, r4, #0 - mov r2, #3 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0x10 - str r0, [r4, #0xc] - bl _021D985C -_021D8C44: - mov r1, #0xc - str r1, [sp] - mov r1, #4 - add r2, r5, #0 - add r3, r1, #0 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0x11 - str r0, [r4, #0xc] - bl _021D985C -_021D8C5E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8C84 - mov r0, #0x12 - str r0, [r4, #0xc] - bl _021D985C -_021D8C72: - mov r1, #0xa - str r1, [sp] - mov r1, #5 - add r2, r5, #0 - mov r3, #4 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8C88 -_021D8C84: - bl _021D985C -_021D8C88: - mov r0, #0x13 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - bl _021D985C -_021D8C98: - add r0, r5, #0 - mov r1, #1 - bl ToggleBgLayer - mov r0, #0x14 - str r0, [r4, #0xc] - bl _021D985C -_021D8CA8: - mov r1, #7 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8DA0 - mov r0, #0x15 - str r0, [r4, #0xc] - bl _021D985C -_021D8CBC: - ldr r6, _021D8D74 ; =0x021D9E44 - add r3, sp, #0x1c - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r2, #0 - str r0, [r3] - ldr r0, [r4, #0x18] - str r0, [sp, #0x1c] - ldr r0, [r4, #0x68] - bl FUN_020145C8 - mov r0, #6 - mov r1, #1 - bl ToggleBgLayer - add r0, r4, #0 - mov r1, #3 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8CF8: - ldr r0, _021D8D78 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D8D08 - mov r0, #0x1b - str r0, [r4, #0xc] - bl _021D985C -_021D8D08: - ldr r0, [r4, #0x68] - bl FUN_02014630 - sub r0, r0, #3 - cmp r0, #1 - bhi _021D8DA0 - mov r0, #0x17 - str r0, [r4, #0xc] - bl _021D985C -_021D8D1C: - ldr r0, [r4, #0x68] - bl FUN_02014630 - cmp r0, #1 - beq _021D8D2E - cmp r0, #2 - beq _021D8D36 - bl _021D985C -_021D8D2E: - mov r0, #0x18 - str r0, [r4, #0xc] - bl _021D985C -_021D8D36: - mov r0, #0x1a - str r0, [r4, #0xc] - bl _021D985C -_021D8D3E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x68] - bl FUN_020146C4 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r5, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x19 - str r0, [r4, #0xc] - bl _021D985C - .align 2, 0 -_021D8D70: .word 0x00000405 -_021D8D74: .word MOD59_021D9E44 -_021D8D78: .word gMain -_021D8D7C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8D94: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D8DA4 -_021D8DA0: - bl _021D985C -_021D8DA4: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - ldr r0, [r4, #0x68] - bl FUN_020146C4 - add r0, r4, #0 - mov r1, #1 - add r0, #0x88 - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8DD6: - mov r1, #8 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8DEA: - add r1, r4, #0 - add r1, #0x88 - strb r5, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - add r1, r0, #0 - bl ToggleBgLayer - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl BgSetPosTextAndCommit - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x1d - str r0, [r4, #0xc] - bl _021D985C -_021D8E34: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x1e - str r0, [r4, #0xc] - bl _021D985C -_021D8E44: - mov r1, #9 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8E58: - add r1, r4, #0 - mov r2, #4 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #2 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x20 - str r0, [r4, #0xc] - bl _021D985C -_021D8E90: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x21 - str r0, [r4, #0xc] - bl _021D985C -_021D8EA0: - mov r1, #6 - str r1, [sp] - mov r1, #0xa - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8EB6 -_021D8EB2: - bl _021D985C -_021D8EB6: - mov r0, #0x22 - str r0, [r4, #0xc] - bl _021D985C -_021D8EBE: - mov r3, #8 - mov r1, #0xb - mov r2, #1 - str r3, [sp] - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x23 - str r0, [r4, #0xc] - bl _021D985C -_021D8ED6: - mov r1, #6 - str r1, [sp] - mov r1, #0xc - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x24 - str r0, [r4, #0xc] - bl _021D985C -_021D8EF0: - mov r1, #0xe - str r1, [sp] - mov r1, #0xd - mov r2, #1 - mov r3, #5 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x25 - str r0, [r4, #0xc] - bl _021D985C -_021D8F0A: - mov r1, #4 - str r1, [sp] - mov r1, #0xe - mov r2, #1 - mov r3, #0xa - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x26 - str r0, [r4, #0xc] - bl _021D985C -_021D8F24: - mov r1, #0xc - str r1, [sp] - mov r1, #0xf - mov r2, #1 - mov r3, #6 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x27 - str r0, [r4, #0xc] - bl _021D985C -_021D8F3E: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x28 - str r0, [r4, #0xc] - bl _021D985C -_021D8F5E: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8FCE - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - add r0, r5, #0 - mov r1, #1 - bl ToggleBgLayer - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8F7E: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2a - str r0, [r4, #0xc] - bl _021D985C -_021D8F92: - mov r1, #0x10 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2b - str r0, [r4, #0xc] - bl _021D985C -_021D8FA6: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - mov r0, #4 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2c - str r0, [r4, #0xc] - bl _021D985C -_021D8FC6: - bl FUN_0200E308 - cmp r0, #1 - beq _021D8FD2 -_021D8FCE: - bl _021D985C -_021D8FD2: - add r0, r4, #0 - bl MOD59_021D83F8 - add r0, r4, #0 - mov r1, #4 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - bl ToggleBgLayer - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #4 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2d - str r0, [r4, #0xc] - bl _021D985C -_021D900C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2e - str r0, [r4, #0xc] - bl _021D985C -_021D901C: - mov r1, #0x11 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2f - str r0, [r4, #0xc] - bl _021D985C -_021D9030: - bl MOD59_021D7730 - cmp r0, #1 - bne _021D9054 - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r0, r4, #0 - add r0, #0x98 - str r1, [r0] - ldr r0, [r4, #0x18] - bl BgClearTilemapBufferAndCommit - mov r0, #0x30 - str r0, [r4, #0xc] - bl _021D985C -_021D9054: - ldr r0, _021D9370 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D90DA - mov r0, #0x31 - str r0, [r4, #0xc] - b _021D985C -_021D9062: - add r0, #0x98 - ldr r0, [r0] - cmp r0, #0 - beq _021D9078 - add r0, r4, #0 - add r0, #0x98 - ldr r0, [r0] - add r4, #0x98 - sub r0, r0, #1 - str r0, [r4] - b _021D985C -_021D9078: - ldr r6, _021D9374 ; =0x021D9DC0 - add r3, sp, #0x10 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r6] - str r0, [r3] - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - lsl r0, r0, #2 - ldr r1, [r2, r0] - ldr r0, _021D9378 ; =0x0000FFFF - cmp r1, r0 - bne _021D90A2 - ldr r0, _021D937C ; =0x00000706 - bl PlaySE - mov r0, #0x32 - str r0, [r4, #0xc] - b _021D985C -_021D90A2: - mov r0, #0x20 - str r0, [sp] - str r5, [sp, #4] - str r5, [sp, #8] - ldr r0, [r4] - mov r3, #6 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - bl GfGfxLoader_LoadCharData - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x94 - str r1, [r0] - mov r0, #4 - add r4, #0x98 - str r0, [r4] - b _021D985C -_021D90CE: - mov r1, #0x12 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D90DC -_021D90DA: - b _021D985C -_021D90DC: - mov r0, #0x2f - str r0, [r4, #0xc] - b _021D985C -_021D90E2: - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - str r0, [sp] - bl StartBrightnessTransition - mov r0, #2 - str r0, [sp] - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl StartBrightnessTransition - mov r0, #0x33 - str r0, [r4, #0xc] - b _021D985C -_021D9106: - mov r0, #1 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xb - str r0, [sp] - bl StartBrightnessTransition - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xd - bl StartBrightnessTransition - mov r0, #0x34 - str r0, [r4, #0xc] - b _021D985C -_021D913E: - mov r0, #1 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - bl StartBrightnessTransition - mov r0, #2 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl StartBrightnessTransition - mov r0, #0x35 - str r0, [r4, #0xc] - b _021D985C -_021D9178: - mov r0, #1 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D91F6 - mov r0, #0x36 - str r0, [r4, #0xc] - b _021D985C -_021D9192: - bl MOD59_021D82A0 - mov r0, #6 - add r1, r5, #0 - bl ToggleBgLayer - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r1, r4, #0 - add r0, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xb - bl StartBrightnessTransition - mov r0, #2 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xd - bl StartBrightnessTransition - mov r0, #0x37 - str r0, [r4, #0xc] - b _021D985C -_021D91E4: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - mov r0, #1 - bl IsBrightnessTransitionActive - cmp r0, #1 - beq _021D91F8 -_021D91F6: - b _021D985C -_021D91F8: - mov r0, #2 - bl IsBrightnessTransitionActive - cmp r0, #1 - bne _021D92FA - mov r0, #0x38 - str r0, [r4, #0xc] - b _021D985C -_021D9208: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - cmp r0, #1 - bne _021D92FA - mov r0, #0x39 - str r0, [r4, #0xc] - b _021D985C -_021D921A: - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3a - str r0, [r4, #0xc] - b _021D985C -_021D922A: - mov r1, #0x13 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #0x3b - str r0, [r4, #0xc] - b _021D985C -_021D9244: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - add r0, r4, #0 - bl MOD59_021D8914 - mov r0, #0x3c - str r0, [r4, #0xc] - b _021D985C -_021D925C: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3d - str r0, [r4, #0xc] - b _021D985C -_021D926C: - mov r1, #0x14 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3e - str r0, [r4, #0xc] - b _021D985C -_021D927E: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D9290: - bl MOD59_021D84E8 - add r0, r4, #0 - mov r1, #2 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - mov r1, #6 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - add r2, r5, #0 - add r3, r2, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - sub r3, #0x30 - bl BgSetPosTextAndCommit - ldr r0, [r4, #0x18] - mov r1, #2 - add r2, r5, #0 - mov r3, #0x30 - bl BgSetPosTextAndCommit - mov r0, #0x40 - str r0, [r4, #0xc] - b _021D985C -_021D92CA: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x41 - str r0, [r4, #0xc] - b _021D985C -_021D92DC: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x42 - str r0, [r4, #0xc] - b _021D985C -_021D92EE: - mov r1, #0x15 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D92FC -_021D92FA: - b _021D985C -_021D92FC: - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x84 - str r1, [r0] - mov r0, #0x43 - str r0, [r4, #0xc] - b _021D985C -_021D930A: - ldr r0, _021D9370 ; =gMain - mov r1, #1 - ldr r0, [r0, #0x48] - and r1, r0 - cmp r1, #1 - bne _021D933C - mov r0, #6 - str r0, [r4, #0x7c] - add r0, r4, #0 - mov r1, #0xa - add r0, #0x80 - str r1, [r0] - mov r0, #2 - str r0, [r4, #0x78] - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9336 - mov r0, #0x44 - str r0, [r4, #0xc] - b _021D985C -_021D9336: - mov r0, #0x46 - str r0, [r4, #0xc] - b _021D985C -_021D933C: - mov r1, #0x20 - and r1, r0 - cmp r1, #0x20 - beq _021D934C - mov r1, #0x10 - and r0, r1 - cmp r0, #0x10 - bne _021D9368 -_021D934C: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D935A - mov r1, #1 - b _021D935C -_021D935A: - mov r1, #0 -_021D935C: - add r0, r4, #0 - add r0, #0x84 - str r1, [r0] - ldr r0, _021D9380 ; =0x000005DC - bl PlaySE -_021D9368: - add r0, r4, #0 - bl MOD59_021D8504 - b _021D985C - .align 2, 0 -_021D9370: .word gMain -_021D9374: .word MOD59_021D9DC0 -_021D9378: .word 0x0000FFFF -_021D937C: .word 0x00000706 -_021D9380: .word 0x000005DC -_021D9384: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x45 - str r0, [r4, #0xc] - b _021D985C -_021D9396: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_DisableBlend - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93AE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x47 - str r0, [r4, #0xc] - b _021D985C -_021D93C0: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_DisableBlend - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93D8: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D93E4 - mov r1, #0x16 - b _021D93E6 -_021D93E4: - mov r1, #0x17 -_021D93E6: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9414 - mov r0, #0x49 - str r0, [r4, #0xc] - b _021D985C -_021D93F8: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9414 - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D941C - cmp r1, #1 - beq _021D9416 - cmp r1, #2 - beq _021D941C -_021D9414: - b _021D985C -_021D9416: - mov r0, #0x4b - str r0, [r4, #0xc] - b _021D985C -_021D941C: - ldr r0, [r4, #0x18] - mov r1, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #0x4a - str r0, [r4, #0xc] - b _021D985C -_021D942A: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9436 - mov r1, #1 - b _021D9438 -_021D9436: - mov r1, #2 -_021D9438: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9530 - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D944A: - mov r1, #0x18 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4c - str r0, [r4, #0xc] - b _021D985C -_021D945C: - add r0, #0x84 - ldr r1, [r0] - ldr r0, [r4, #0x70] - str r1, [r0, #4] - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x70] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x4d - str r0, [r4, #0xc] - b _021D985C -_021D9476: - add r0, r5, #0 - mov r1, #1 - bl ToggleBgLayer - mov r0, #3 - mov r1, #1 - bl ToggleBgLayer - mov r0, #7 - mov r1, #1 - bl ToggleBgLayer - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94AE - mov r0, #1 - add r1, r0, #0 - bl ToggleBgLayer - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl BgSetPosTextAndCommit - b _021D94C2 -_021D94AE: - mov r0, #2 - mov r1, #1 - bl ToggleBgLayer - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #2 - add r3, r2, #0 - bl BgSetPosTextAndCommit -_021D94C2: - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x4e - str r0, [r4, #0xc] - b _021D985C -_021D94DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4f - str r0, [r4, #0xc] - b _021D985C -_021D94EC: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94F8 - mov r1, #0x19 - b _021D94FA -_021D94F8: - mov r1, #0x1a -_021D94FA: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x50 - str r0, [r4, #0xc] - b _021D985C -_021D950C: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9530 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D953C - cmp r1, #1 - beq _021D9532 - cmp r1, #2 - beq _021D953C -_021D9530: - b _021D985C -_021D9532: - mov r0, #0x52 - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D953C: - ldr r0, [r4, #0x70] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x3f - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D954E: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D955A - mov r1, #1 - b _021D955C -_021D955A: - mov r1, #2 -_021D955C: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - b _021D985C -_021D956E: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x53 - str r0, [r4, #0xc] - b _021D985C -_021D9586: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x54 - str r0, [r4, #0xc] - b _021D985C -_021D9598: - mov r1, #0x1b - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x55 - str r0, [r4, #0xc] - b _021D985C -_021D95AA: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x56 - str r0, [r4, #0xc] - b _021D985C -_021D95BC: - add r1, r4, #0 - mov r2, #0xa - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x57 - str r0, [r4, #0xc] - b _021D985C -_021D95D4: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D95E6: - mov r1, #0x1c - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x59 - str r0, [r4, #0xc] - b _021D985C -_021D95F8: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9616 - mov r0, #0x5a - str r0, [r4, #0xc] - b _021D985C -_021D960A: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D9618 -_021D9616: - b _021D985C -_021D9618: - ldr r0, [r4, #0x48] - cmp r0, #5 - bhi _021D971A - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D962A: ; jump table - .short _021D985C - _021D962A - 2 ; case 0 - .short _021D9636 - _021D962A - 2 ; case 1 - .short _021D963C - _021D962A - 2 ; case 2 - .short _021D963C - _021D962A - 2 ; case 3 - .short _021D963C - _021D962A - 2 ; case 4 - .short _021D963C - _021D962A - 2 ; case 5 -_021D9636: - mov r0, #0x5c - str r0, [r4, #0xc] - b _021D985C -_021D963C: - ldr r1, _021D977C ; =gGameVersion - ldrb r1, [r1] - cmp r1, #0xa - bne _021D964C - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9780 ; =0x021D9F40 - b _021D9652 -_021D964C: - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9784 ; =0x021D9F68 -_021D9652: - ldr r1, [r0, r1] - ldr r0, [r4, #0x4c] - bl NewString_ReadMsgData - add r6, r0, #0 - ldr r0, [r4, #0x74] - add r1, r6, #0 - ldr r0, [r0, #0x18] - bl StringCopy - add r0, r6, #0 - bl String_dtor - mov r0, #0x5b - str r0, [r4, #0xc] - b _021D985C -_021D9672: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D9684: - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x74] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x5d - str r0, [r4, #0xc] - b _021D985C -_021D9696: - add r0, r5, #0 - mov r1, #1 - bl ToggleBgLayer - mov r0, #3 - mov r1, #1 - bl ToggleBgLayer - mov r0, #7 - mov r1, #1 - bl ToggleBgLayer - mov r0, #1 - add r1, r0, #0 - bl ToggleBgLayer - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl BgSetPosTextAndCommit - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x5e - str r0, [r4, #0xc] - b _021D985C -_021D96DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D96EC: - mov r1, #0x1d - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D971A - mov r0, #0x60 - str r0, [r4, #0xc] - b _021D985C -_021D96FE: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D971A - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D972A - cmp r1, #1 - beq _021D971C - cmp r1, #2 - beq _021D972A -_021D971A: - b _021D985C -_021D971C: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #0x61 - str r0, [r4, #0xc] - b _021D985C -_021D972A: - ldr r0, [r4, #0x74] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D9738: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D9746 - b _021D985C -_021D9746: - mov r0, #0x62 - str r0, [r4, #0xc] - b _021D985C -_021D974C: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x63 - str r0, [r4, #0xc] - b _021D985C -_021D9764: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - mov r0, #0x64 - str r0, [r4, #0xc] - b _021D985C - nop -_021D9778: .word UNK_020FA5FC -_021D977C: .word gGameVersion -_021D9780: .word MOD59_021D9F40 -_021D9784: .word MOD59_021D9F68 -_021D9788: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x65 - str r0, [r4, #0xc] - b _021D985C -_021D9798: - mov r1, #0x1e - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D985C - add r0, r5, #0 - mov r1, #0x32 - bl FUN_020053CC - mov r0, #0x66 - str r0, [r4, #0xc] - b _021D985C -_021D97B2: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl BgClearTilemapBufferAndCommit - mov r0, #0x67 - str r0, [r4, #0xc] - b _021D985C -_021D97CC: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x68 - str r0, [r4, #0xc] - b _021D985C -_021D97DC: - add r1, r4, #0 - add r1, #0x84 - ldr r1, [r1] - cmp r1, #0 - bne _021D97FA - add r1, r4, #0 - mov r2, #2 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - b _021D980C -_021D97FA: - add r1, r4, #0 - mov r2, #6 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 -_021D980C: - mov r0, #0x69 - str r0, [r4, #0xc] - b _021D985C -_021D9812: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - add r0, r4, #0 - bl MOD59_021D8624 - mov r0, #0x6a - str r0, [r4, #0xc] - b _021D985C -_021D982A: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x6b - str r0, [r4, #0xc] - b _021D985C -_021D983A: - bl MOD59_021D8634 - cmp r0, #1 - bne _021D985C - mov r0, #0x6c - str r0, [r4, #0xc] - b _021D985C -_021D9848: - ldr r0, _021D9864 ; =0x021D9DDC - ldr r2, [r4] - add r1, r5, #0 - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x6d - str r0, [r4, #0xc] - b _021D985C -_021D985A: - mov r5, #1 -_021D985C: - add r0, r5, #0 - add sp, #0x30 - pop {r4, r5, r6, pc} - nop -_021D9864: .word MOD59_021D9DDC - thumb_func_end MOD59_021D8920 - .rodata .global MOD59_021D9D90 diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h index 3bafa65a8..ecf440476 100644 --- a/arm9/modules/59/include/mod59_021D74E0.h +++ b/arm9/modules/59/include/mod59_021D74E0.h @@ -115,9 +115,10 @@ void MOD59_021D7A5C(MOD59_OverlayData *data); BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2); BOOL MOD59_021D7BEC(MOD59_OverlayData *data, s32 param1); void MOD59_TilemapChangePalette(MOD59_OverlayData *data, u32 layer, u32 paletteNum); -BOOL MOD59_021D7C44(MOD59_OverlayData *data, u32 msgNo, u32 param2); +BOOL MOD59_DisplayMessage(MOD59_OverlayData *data, u32 msgNo, u32 param2); void MOD59_021D7D68(struct ListMenu *list, s32 index, u8 onInit); -BOOL MOD59_021D7D7C(MOD59_OverlayData *data, u32 param1, u32 param2, u32 param3); +BOOL MOD59_CreateListWithText(MOD59_OverlayData *data, u32 param1, u32 param2); +BOOL MOD59_DisplayControlAdventureMessage(MOD59_OverlayData *data, u32 msgNo, u32 param2, u32 tilemapTop, u32 height); void MOD59_021D8058(MOD59_OverlayData *data); void MOD59_021D80FC(MOD59_OverlayData *data); void MOD59_021D8140(MOD59_OverlayData *data); @@ -127,10 +128,11 @@ void MOD59_021D83F8(MOD59_OverlayData *data); BOOL MOD59_021D8460(MOD59_OverlayData *data, u32 layer, u32 param2); void MOD59_021D84E8(MOD59_OverlayData *data); void MOD59_021D8504(MOD59_OverlayData *data); -void MOD59_DisableBlend(void); +void MOD59_DisableBlend(MOD59_OverlayData *data); void MOD59_021D8624(MOD59_OverlayData *data); BOOL MOD59_021D8634(MOD59_OverlayData *data); BOOL MOD59_021D86BC(MOD59_OverlayData *data, u32 *param1); -void MOD59_021D8914(void); +void MOD59_021D8914(MOD59_OverlayData *data); +BOOL MOD59_MasterController(MOD59_OverlayData *data); #endif //POKEDIAMOND_MOD59_021D74E0_H diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c index 007c0704d..a4d2dd958 100644 --- a/arm9/modules/59/src/mod59_021D74E0_src.c +++ b/arm9/modules/59/src/mod59_021D74E0_src.c @@ -1,25 +1,28 @@ #include "global.h" -#include "GX_layers.h" #include "bg_window.h" +#include "brightness.h" #include "constants/sndseq.h" +#include "demo/intro/intro.naix" #include "game_init.h" +#include "gf_gfx_loader.h" +#include "GX_layers.h" #include "heap.h" +#include "list_menu_items.h" #include "mod59_021D74E0.h" #include "module_52.h" #include "msgdata.h" #include "msgdata/msg.naix" #include "overlay_manager.h" +#include "PAD_pad.h" #include "player_data.h" +#include "pokemon.h" #include "render_text.h" #include "render_window.h" #include "script_buffers.h" #include "text.h" +#include "unk_020040F4.h" #include "unk_020051F4.h" #include "unk_02024E64.h" -#include "list_menu_items.h" -#include "gf_gfx_loader.h" -#include "demo/intro/intro.naix" -#include "pokemon.h" extern void *FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options); @@ -59,8 +62,6 @@ extern const struct MOD59_CharStruct021D9E70 MOD59_021D9E88; extern u32 MOD59_021D9E1C[5]; -extern u32 MOD59_021D8920(MOD59_OverlayData *data); - extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id); extern u32 FUN_0200E308(void); @@ -75,6 +76,16 @@ extern void FUN_020145A8(u32 param0); extern u32 *FUN_0201244C(u16 param0, u16 param1, u32 heap_id); extern u32 *FUN_02012470(u16 param0, u16 param1, u32 heap_id); +extern u32 MOD59_021D9E44[5]; +extern u32 MOD59_021D9DC0[3]; + +extern const struct Unk21DBE18 UNK_020FA5FC; +extern const struct Unk21DBE18 MOD59_021D9DDC; + +extern void FUN_020145C8(u32 param0, u32 param1[5]); +extern u32 FUN_02014630(u32 param0); +extern void FUN_020146C4(u32 param0); + FS_EXTERN_OVERLAY(MODULE_52); THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0) @@ -134,7 +145,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) break; case 1: - if (MOD59_021D8920(data) == 1) + if (MOD59_MasterController(data) == TRUE) { FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); *param1 = 2; @@ -377,38 +388,38 @@ THUMB_FUNC void MOD59_021D7A5C(MOD59_OverlayData *data) //MOD59_Destroy... somet FUN_020145A8(data->unk68); } -THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) +THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 bgId, u32 param2) { - BOOL var0; + BOOL subScreen; s32 var1; BOOL ret = FALSE; - switch (param1) + switch (bgId) { - case 0: - case 3: + case GF_BG_LYR_MAIN_0: + case GF_BG_LYR_MAIN_3: default: var1 = 1; - var0 = FALSE; + subScreen = FALSE; break; - case 1: + case GF_BG_LYR_MAIN_1: var1 = 2; - var0 = FALSE; + subScreen = FALSE; break; - case 2: + case GF_BG_LYR_MAIN_2: var1 = 4; - var0 = FALSE; + subScreen = FALSE; break; - case 4: + case GF_BG_LYR_SUB_0: var1 = 1; - var0 = TRUE; + subScreen = TRUE; break; - case 5: + case GF_BG_LYR_SUB_1: var1 = 2; - var0 = TRUE; + subScreen = TRUE; break; - case 6: + case GF_BG_LYR_SUB_2: var1 = 4; - var0 = TRUE; + subScreen = TRUE; break; } switch(data->unk78) @@ -419,7 +430,7 @@ THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) data->unk7C = 0; data->unk80 = 16; data->unk78 = 1; - if (!var0) + if (!subScreen) { G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); } @@ -427,7 +438,7 @@ THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) { G2x_SetBlendAlpha_(®_G2S_DB_BLEND, var1, 14, data->unk7C, data->unk80); } - ToggleBgLayer((u8)param1, GX_LAYER_TOGGLE_ON); + ToggleBgLayer((u8)bgId, GX_LAYER_TOGGLE_ON); } else { @@ -441,7 +452,7 @@ THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) { data->unk7C++; data->unk80--; - if (!var0) + if (!subScreen) { G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); } @@ -460,7 +471,7 @@ THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) { data->unk7C--; data->unk80++; - if (!var0) + if (!subScreen) { G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); } @@ -472,7 +483,7 @@ THUMB_FUNC BOOL MOD59_021D7A68(MOD59_OverlayData *data, u32 param1, u32 param2) else { data->unk78 = 3; - ToggleBgLayer((u8)param1, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer((u8)bgId, GX_LAYER_TOGGLE_OFF); } break; case 3: @@ -506,7 +517,7 @@ THUMB_FUNC void MOD59_TilemapChangePalette(MOD59_OverlayData *data, u32 layer, u BgCommitTilemapBufferToVram(data->bgConfig, (u8)layer); } -THUMB_FUNC BOOL MOD59_021D7C44(MOD59_OverlayData *data, u32 msgNo, u32 param2) +THUMB_FUNC BOOL MOD59_DisplayMessage(MOD59_OverlayData *data, u32 msgNo, u32 param2) { BOOL ret = FALSE; switch(data->unk50) @@ -540,7 +551,7 @@ THUMB_FUNC BOOL MOD59_021D7C44(MOD59_OverlayData *data, u32 msgNo, u32 param2) data->unk50 = 2; break; case 2: - if (param2 != 0 || (gMain.newKeys & 1) == 1) + if (param2 != 0 || (gMain.newKeys & PAD_BUTTON_A) == 1) { RemoveWindow(&data->window); data->unk50 = 0; @@ -559,7 +570,7 @@ THUMB_FUNC void MOD59_021D7D68(struct ListMenu *list, s32 index, u8 onInit) } } -THUMB_FUNC BOOL MOD59_021D7D7C(MOD59_OverlayData *data, u32 param1, u32 param2, u32 param3) +THUMB_FUNC BOOL MOD59_CreateListWithText(MOD59_OverlayData *data, u32 param1, u32 param2) { BOOL ret = FALSE; const struct WindowTemplate *windowTemplate; @@ -630,7 +641,7 @@ THUMB_FUNC BOOL MOD59_021D7D7C(MOD59_OverlayData *data, u32 param1, u32 param2, return ret; } -THUMB_FUNC BOOL MOD59_021D7ECC(MOD59_OverlayData *data, u32 msgNo, u32 param2, u32 tilemapTop, u32 height) +THUMB_FUNC BOOL MOD59_DisplayControlAdventureMessage(MOD59_OverlayData *data, u32 msgNo, u32 param2, u32 tilemapTop, u32 height) { BOOL ret = 0; switch (data->unk54) @@ -667,13 +678,13 @@ THUMB_FUNC BOOL MOD59_021D7ECC(MOD59_OverlayData *data, u32 msgNo, u32 param2, u data->unk54 = 2; break; case 2: - if (MOD59_021D7A68(data, 0, 0) == TRUE) + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_0, 0) == TRUE) { data->unk54 = 3; } break; case 3: - if((gMain.newKeys & 1) != 1 && (gMain.newKeys & 2) != 2) + if((gMain.newKeys & PAD_BUTTON_A) != 1 && (gMain.newKeys & PAD_BUTTON_B) != 2) { break; } @@ -681,14 +692,14 @@ THUMB_FUNC BOOL MOD59_021D7ECC(MOD59_OverlayData *data, u32 msgNo, u32 param2, u data->unk54 = 4; break; case 4: - if (MOD59_021D7A68(data, 0, 1) == TRUE) + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_0, 1) == TRUE) { data->unk54 = 5; } break; case 5: RemoveWindow(&data->window); - BgClearTilemapBufferAndCommit(data->bgConfig, 0); + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); data->unk54 = 0; ret = TRUE; } @@ -982,11 +993,11 @@ THUMB_FUNC BOOL MOD59_021D8460(MOD59_OverlayData *data, u32 layer, u32 param2) { if (xPos > 0) { - BgSetPosTextAndCommit(data->bgConfig, (u8)layer, 2, 4); + BgSetPosTextAndCommit(data->bgConfig, (u8)layer, BG_POS_OP_SUB_X, 4); } else { - BgSetPosTextAndCommit(data->bgConfig, (u8)layer, 1, 4); + BgSetPosTextAndCommit(data->bgConfig, (u8)layer, BG_POS_OP_ADD_X, 4); } } else @@ -999,7 +1010,7 @@ THUMB_FUNC BOOL MOD59_021D8460(MOD59_OverlayData *data, u32 layer, u32 param2) fx32 xPos = Bg_GetXpos(data->bgConfig, layer); if (xPos != -48) { - BgSetPosTextAndCommit(data->bgConfig, (u8)layer, 2, 4); + BgSetPosTextAndCommit(data->bgConfig, (u8)layer, BG_POS_OP_SUB_X, 4); } else { @@ -1011,7 +1022,7 @@ THUMB_FUNC BOOL MOD59_021D8460(MOD59_OverlayData *data, u32 layer, u32 param2) fx32 xPos = Bg_GetXpos(data->bgConfig, layer); if (xPos != 0) { - BgSetPosTextAndCommit(data->bgConfig, (u8)layer, 1, 4); + BgSetPosTextAndCommit(data->bgConfig, (u8)layer, BG_POS_OP_ADD_X, 4); } else { @@ -1068,8 +1079,9 @@ THUMB_FUNC void MOD59_021D8504(MOD59_OverlayData *data) } } -THUMB_FUNC void MOD59_DisableBlend(void) +THUMB_FUNC void MOD59_DisableBlend(MOD59_OverlayData *data) { +#pragma unused(data) reg_G2_BLDCNT = 0; } @@ -1540,7 +1552,1096 @@ _021D890A: } #endif -THUMB_FUNC void MOD59_021D8914(void) +THUMB_FUNC void MOD59_021D8914(MOD59_OverlayData *data) { +#pragma unused (data) SetBgPriority(GF_BG_LYR_MAIN_2, 1); } + +THUMB_FUNC BOOL MOD59_MasterController(MOD59_OverlayData *data) +{ + BOOL ret = FALSE; + switch (data->unk0C) + { + case 0: //load + FUN_0200433C(2, SEQ_OPENING, 1); + FUN_02005350(SEQ_OPENING, 0); + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_ON); + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 1; + break; + + case 1: //some kinda of wait/fade? + if (FUN_0200E308() != 1) + { + break; + } + if (MOD59_021D7BEC(data, 40) != TRUE) + { + break; + } + data->unk0C = 2; + break; + + case 2: //Hello there! It’s so very nice to meet you! + if(MOD59_DisplayMessage(data, 0, 1) != TRUE) + { + break; + } + data->unk0C = 3; + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + break; + + case 3: //play SE, make rowan visible + FUN_0200521C(SEQ_OPENING); + data->unk89 = 1; + data->unk8A = 0; + MOD59_021D8140(data); + ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_ON); + FUN_0200E1D0(3, 1, 1, 0, 16, 4, data->heap_id); + data->unk0C = 4; + break; + + case 4: //?? + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 5; + break; + + case 5: //My name is Rowan. However, everyone just calls me the Pokémon Professor. + if (MOD59_DisplayMessage(data, 1, 1) != TRUE) + { + break; + } + data->unk0C = 6; + break; + + case 6: //move rowan to the right + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 7; + break; + + case 7: //help menu input handler + if (MOD59_CreateListWithText(data, 1, 1) != TRUE) + { + break; + } + switch (data->listMenuInput) //may be chain of ifs + { + case 1: //Control Info + data->unk10 = 10; + data->unk0C = 8; + break; + + case 2: //Adventure Info + data->unk10 = 31; + data->unk0C = 8; + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + break; + + case 3: //No Info Needed + data->unk0C = 41; + break; + } + break; + + case 8: //graphics adjust? + FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); + data->unk0C = 9; + break; + + case 9: //Clear screen of rowan + if (FUN_0200E308() != 1) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_OFF); + data->unk0C = data->unk10; + break; + + case 10: //load screen and palette data + data->unk88 = 1; + MOD59_021D80FC(data); + data->unk8B = 1; + MOD59_021D8234(data); + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 11; + break; + + case 11: //?? + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 12; + break; + + case 12: //Moves the main character. Also used to choose various headings and selections. + if (MOD59_DisplayControlAdventureMessage(data, 2, 0, 3, 18) != TRUE) + { + break; + } + data->unk0C = 13; + break; + + case 13: //load screen data + data->unk88 = 2; + MOD59_021D80FC(data); + data->unk0C = 14; + break; + + case 14: //Press to open the menu. Press to use an item, + if (MOD59_DisplayControlAdventureMessage(data, 3, 0, 7, 12) != TRUE) + { + break; + } + data->unk0C = 15; + break; + + case 15: //load screen data + data->unk88 = 3; + MOD59_021D80FC(data); + data->unk0C = 16; + break; + + case 16: //The lower screen is called the Touch Screen. + if (MOD59_DisplayControlAdventureMessage(data, 4, 0, 4, 12) != TRUE) + { + break; + } + data->unk0C = 17; + break; + + case 17: //Use DisplayMessage to create the flashing toucscreen icon ({YESNO 0}) + if (MOD59_DisplayMessage(data, 6, 1) != TRUE) + { + break; + } + data->unk0C = 18; + break; + + case 18: //If this mark is shown in the message window + if (MOD59_DisplayControlAdventureMessage(data, 5, 0, 4, 10) != TRUE) + { + break; + } + data->unk0C = 19; + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + break; + + case 19: //toggle layer 0 (no idea whats in here) + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_ON); + data->unk0C = 20; + break; + + case 20: //Do you understand everything so far?{YESNO 0} + if (MOD59_DisplayMessage(data, 7, 1) != TRUE) + { + break; + } + data->unk0C = 21; + break; + + case 21: //Display Yes/No touchscreen buttons +#ifdef __MWERKS__ + u32 arr[5]; + arr = MOD59_021D9E44; +#else + u32 arr[5] = {}; + for (int i = 0; i < 5; i++) + { + arr[i] = MOD59_021D9E44[i]; + } +#endif + arr[0] = (u32)data->bgConfig; + FUN_020145C8(data->unk68, arr); + ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_ON); + data->unk8B = 3; + MOD59_021D8234(data); + data->unk0C = 22; + break; + + case 22: //check input + if (gMain.newKeys != 0) + { + data->unk0C = 27; + break; + } + else + { + if ((FUN_02014630(data->unk68) - 3) > 1) + { + break; + } + data->unk0C = 23; + break; + } + + case 23: //check whether yes or no + switch (FUN_02014630(data->unk68)) + { + case 1: + data->unk0C = 24; + break; + + case 2: + data->unk0C = 26; + break; + } + break; + + case 24: //cleanup control info + if (MOD59_021D7A68(data, GF_BG_LYR_SUB_2, 1) != TRUE) + { + break; + } + FUN_020146C4(data->unk68); + FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); + data->unk0C = 25; + break; + + case 25: //graphics adjust + if (FUN_0200E308() != 1) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 28; + break; + + case 26: //reload initial screen data for help + if (MOD59_021D7A68(data, GF_BG_LYR_SUB_2, 1) != TRUE) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + FUN_020146C4(data->unk68); + data->unk88 = 1; + MOD59_021D80FC(data); + data->unk8B = 1; + MOD59_021D8234(data); + data->unk0C = 12; + break; + + case 27: //Please touch a button on the Touch Screen below.{YESNO 0} + if (MOD59_DisplayMessage(data, 8, 1) != TRUE) + { + break; + } + data->unk0C = 22; + break; + + case 28: //redisplay rowan + data->unk88 = 0; + MOD59_021D80FC(data); + data->unk8B = 0; + MOD59_021D8234(data); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_ON); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, 0); + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 29; + break; + + case 29: //graphics adjust + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 30; + break; + + case 30: //Would you like to know more about anything else? + if (MOD59_DisplayMessage(data, 9, 1) != TRUE) + { + break; + } + data->unk0C = 6; + break; + + case 31: + data->unk88 = 4; + MOD59_021D80FC(data); + data->unk8B = 2; + MOD59_021D8234(data); + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 32; + break; + + case 32: + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 33; + break; + + case 33: + if (MOD59_DisplayControlAdventureMessage(data, 10, 1, 9, 6) != TRUE) + { + break; + } + data->unk0C = 34; + break; + + case 34: + if (MOD59_DisplayControlAdventureMessage(data, 11, 1, 8, 8) != TRUE) + { + break; + } + data->unk0C = 35; + break; + + case 35: + if (MOD59_DisplayControlAdventureMessage(data, 12, 1, 9, 6) != TRUE) + { + break; + } + data->unk0C = 36; + break; + + case 36: + if (MOD59_DisplayControlAdventureMessage(data, 13, 1, 5, 14) != TRUE) + { + break; + } + data->unk0C = 37; + break; + + case 37: + if (MOD59_DisplayControlAdventureMessage(data, 14, 1, 10, 4) != TRUE) + { + break; + } + data->unk0C = 38; + break; + + case 38: + if (MOD59_DisplayControlAdventureMessage(data, 15, 1, 6, 12) != TRUE) + { + break; + } + data->unk0C = 39; + break; + + case 39: + FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); + data->unk0C = 40; + break; + + case 40: + if (FUN_0200E308() != 1) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_ON); + data->unk0C = 28; + break; + + case 41: + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_1, 2) != TRUE) + { + break; + } + data->unk0C = 42; + break; + + case 42: //This world is widely inhabited by creatures known as Pokémon. + if (MOD59_DisplayMessage(data, 16, 1) != TRUE) + { + break; + } + data->unk0C = 43; + break; + + case 43: //graphics adjust + FUN_0200E1D0(4, 0, 0, 0, 6, 1, data->heap_id); + data->unk0C = 44; + break; + + case 44: + if (FUN_0200E308() != 1) + { + break; + } + MOD59_021D83F8(data); // load button? + data->unk8B = 4; + MOD59_021D8234(data); + ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_ON); + FUN_0200E1D0(4, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 45; + break; + + case 45: + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 46; + break; + + case 46:// Here, I have a Poké Ball. Touch the button on the middle + if (MOD59_DisplayMessage(data, 17, 1) != TRUE) + { + break; + } + data->unk0C = 47; + break; + + case 47: //test touch location + if (MOD59_021D7730() == TRUE) + { + data->unk94 = 0; + data->unk98 = 0; + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 48; + } + else + { + if (gMain.newKeys == 0) + { + break; + } + data->unk0C = 49; + } + break; + + case 48: //load graphics + if (data->unk98 != 0) + { + data->unk98--; + break; + } +#ifdef __MWERKS__ + u32 arr2[3]; + arr2 = MOD59_021D9DC0; +#else + u32 arr2[3] = {}; + for (int i = 0; i < 3; i++) + { + arr2[i] = MOD59_021D9DC0[i]; + } +#endif + if (arr2[data->unk94] == 0xFFFF) + { + PlaySE(SEQ_SE_DP_BOWA2); + data->unk0C = 50; + } + else + { + GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO, arr2[data->unk94], data->bgConfig, GF_BG_LYR_SUB_2, 32, 0, FALSE, data->heap_id); + data->unk94++; + data->unk98 = 4; + } + break; + + case 49: //No, no! Not that button! The button on the Poké Ball.{YESNO 0} + if (MOD59_DisplayMessage(data, 18, 1) != TRUE) + { + break; + } + data->unk0C = 47; + break; + + case 50: //flash + StartBrightnessTransition(1, 16, 0, 11, 1); //main screen + StartBrightnessTransition(1, 16, 0, 13, 2); //sub screen (should be a mask enum) + data->unk0C = 51; + break; + + case 51: //unflash + if (IsBrightnessTransitionActive(1) != TRUE || IsBrightnessTransitionActive(2) != TRUE) + { + break; + } + StartBrightnessTransition(1, 0, 16, 11, 1); //main screen + StartBrightnessTransition(1, 0, 16, 13, 2); //sub screen + data->unk0C = 52; + break; + + case 52: //flash + if (IsBrightnessTransitionActive(1) != TRUE || IsBrightnessTransitionActive(2) != TRUE) + { + break; + } + StartBrightnessTransition(4, 16, 0, 11, 1); //main screen + StartBrightnessTransition(4, 16, 0, 13, 2); //sub screen + data->unk0C = 53; + break; + + case 53: //wait for transition + if (IsBrightnessTransitionActive(1) != TRUE || IsBrightnessTransitionActive(2) != TRUE) + { + break; + } + data->unk0C = 54; + break; + + case 54: //spawn munchlax and unflash + MOD59_021D82A0(data); + ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_OFF); + data->unk94 = 0; + MOD59_021D86BC(data, &data->unk94); + data->unk8B = 0; + MOD59_021D8234(data); + StartBrightnessTransition(16, 0, 16, 11, 1); //main screen + StartBrightnessTransition(16, 0, 16, 13, 2); //sub screen + data->unk0C = 55; + break; + + case 55: //movement and wait for transition + MOD59_021D86BC(data, &data->unk94); + if (IsBrightnessTransitionActive(1) != TRUE || IsBrightnessTransitionActive(2) != TRUE) + { + break; + } + data->unk0C = 56; + break; + + case 56: //finish movement + if (MOD59_021D86BC(data, &data->unk94) != TRUE) + { + break; + } + data->unk0C = 57; + break; + + case 57: //wait + if (MOD59_021D7BEC(data, 40) != TRUE) + { + break; + } + data->unk0C = 58; + break; + + case 58: // We humans live alongside Pokémon as friends. At times we play together, + if (MOD59_DisplayMessage(data, 19, 1) != TRUE) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 59; + break; + + case 59: //adjust BG priority + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_2, 1) != TRUE) + { + break; + } + MOD59_021D8914(data); + data->unk0C = 60; + break; + + case 60: //wait + if (MOD59_021D7BEC(data, 30) != TRUE) + { + break; + } + data->unk0C = 61; + break; + + case 61: //Now, why don’t you tell me a little bit about yourself? + if (MOD59_DisplayMessage(data, 20, 1) != TRUE) + { + break; + } + data->unk0C = 62; + break; + + case 62: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 63; + break; + + case 63: //load and setup boy/girl frontsprites + MOD59_021D84E8(data); + data->unk89 = 2; + data->unk8A = 6; + MOD59_021D8140(data); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, -48); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_X, 48); + data->unk0C = 64; + break; + + case 64: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + data->unk0C = 65; + break; + + case 65: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_2, 0) != TRUE) + { + break; + } + data->unk0C = 66; + break; + + case 66: //Are you a boy? Or are you a girl? + if (MOD59_DisplayMessage(data, 21, 1) != TRUE) + { + break; + } + data->unk84 = 0; + data->unk0C = 67; + break; + + case 67: //handle gender selection + animation + if ((gMain.newKeys & PAD_BUTTON_A) == 1) + { + data->unk7C = 6; + data->unk80 = 10; + data->unk78 = 2; + if (data->unk84 == 0) + { + data->unk0C = 68; + } + else + { + data->unk0C = 70; + } + break; + } + if ((gMain.newKeys & PAD_KEY_LEFT) == 0x20 || (gMain.newKeys & PAD_KEY_RIGHT) == 0x10) + { + data->unk84 = (data->unk84 == 0 ? 1 : 0); + PlaySE(SEQ_SE_DP_SELECT); + } + MOD59_021D8504(data); //animate sprite + break; + + case 68: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_2, 1) != TRUE) + { + break; + } + data->unk0C = 69; + break; + + case 69: //move sprite to centre + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + MOD59_DisableBlend(data); + data->unk0C = 72; + break; + + case 70: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 71; + break; + + case 71: //move sprite to centre + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_2, 0) != TRUE) + { + break; + } + MOD59_DisableBlend(data); + data->unk0C = 72; + break; + + case 72: //All right, so you’re a boy/girl? + u32 msgNo = data->unk84 == 0 ? 22 : 23; + if (MOD59_DisplayMessage(data, msgNo, 1) != TRUE) + { + break; + } + data->unk0C = 73; + break; + + case 73: //YES/NO + if (MOD59_CreateListWithText(data, 0, 0) != TRUE) + { + break; + } + switch (data->listMenuInput) + { + case 1: + data->unk0C = 75; + break; + + case -2: + case 2: + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 74; + break; + } + break; + + case 74: //reset blend + enum GFBgLayer layer = ((data->unk84 == 0) ? GF_BG_LYR_MAIN_1 : GF_BG_LYR_MAIN_2); + if (MOD59_021D7A68(data, layer, 1) != TRUE) + { + break; + } + data->unk0C = 63; + break; + + case 75: //Tell me, what is your name? + if (MOD59_DisplayMessage(data, 24, 1) != TRUE) + { + break; + } + data->unk0C = 76; + break; + + case 76: //load keyboard overlay (except this is not an overlay at all) + data->playerStruct->gender = data->unk84; + data->unk14 = OverlayManager_new(&UNK_020FA5FC, (s32 *)data->playerStruct, data->heap_id); + data->unk0C = 77; + break; + + case 77: //toggle bg layers and position + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_ON); + if (data->unk84 == 0) + { + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_ON); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, 0); + } + else + { + ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_ON); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_X, 0); + } + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 78; + break; + + case 78: //graphics adjust + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 79; + break; + + case 79: //Your name is {STRVAR_1 3, 0}? + u32 messageNumber = (data->unk84 == 0 ? 25 : 26); //no idea why these are different strings, they contain the same thing + if (MOD59_DisplayMessage(data, messageNumber, 1) != TRUE) + { + break; + } + data->unk0C = 80; + break; + + case 80: //YES/NO + if (MOD59_CreateListWithText(data, 0, 0) != TRUE) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + switch (data->listMenuInput) + { + case 1: + data->unk10 = 82; + data->unk0C = 81; + break; + + case -2: + case 2: + StringSetEmpty(data->playerStruct->name); + data->unk10 = 63; + data->unk0C = 81; + break; + } + break; + + case 81: //blend adjust + enum GFBgLayer layer2 = ((data->unk84 == 0) ? GF_BG_LYR_MAIN_1 : GF_BG_LYR_MAIN_2); + if (MOD59_021D7A68(data, layer2, 1) != TRUE) + { + break; + } + data->unk0C = data->unk10; + break; + + case 82: //load sprite + data->unk89 = 1; + data->unk8A = 0; + MOD59_021D8140(data); + data->unk0C = 83; + break; + + case 83: //blend adjust + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + data->unk0C = 84; + break; + + case 84: // OK... So, you’re {STRVAR_1 3, 0}? A fine name that is! + if (MOD59_DisplayMessage(data, 27, 1) != TRUE) + { + break; + } + data->unk0C = 85; + break; + + case 85: //blend adjust + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 86; + break; + + case 86: + data->unk89 = 10; + data->unk8A = 0; + MOD59_021D8140(data); + data->unk0C = 87; + break; + + case 87: //blend adjust + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + data->unk0C = 88; + break; + + case 88: //What might his name be? + if (MOD59_DisplayMessage(data, 28, 1) != TRUE) + { + break; + } + data->unk0C = 89; + break; + + case 89: //move sprite + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 90; + break; + + case 90: //rival name list + if (MOD59_CreateListWithText(data, 2, 1) != TRUE) + { + break; + } + const struct MOD59_ListStruct021D9E0C *nameList; + switch (data->listMenuInput) + { + case 0: + break; + + case 1: //New Name! + data->unk0C = 92; + break; + + case 2: //Barry/Clint + case 3: //Damion/Ralph + case 4: //Tyson/Lewis + case 5: //Markus/Tommy + u32 index; + u32 msgNo; + if ((u8)gGameVersion == VERSION_DIAMOND) + { + index = data->listMenuInput - 1; + nameList = &MOD59_021D9F40; + msgNo = nameList[index].msgNo; + } + else + { + index = data->listMenuInput - 1; + nameList = &MOD59_021D9F68; + msgNo = nameList[index].msgNo; + } + struct String *name = NewString_ReadMsgData(data->msgData, msgNo); + StringCopy(data->rivalStruct->name, name); + String_dtor(name); + data->unk0C = 91; + break; + } + break; + + case 91: //move sprite + if (MOD59_021D8460(data, GF_BG_LYR_MAIN_1, 2) != TRUE) + { + break; + } + data->unk0C = 95; + break; + + case 92: //load keyboard + data->unk14 = OverlayManager_new(&UNK_020FA5FC, (s32 *)data->rivalStruct, data->heap_id); + data->unk0C = 93; + break; + + case 93: //toggle layers and position + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_ON); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_ON); + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, 0); + FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id); + data->unk0C = 94; + break; + + case 94: //graphics adjust + if (FUN_0200E308() != 1) + { + break; + } + data->unk0C = 95; + break; + + case 95: //{STRVAR_1 3, 1}, is it? That’s your friend’s name? + if (MOD59_DisplayMessage(data, 29, 1) != TRUE) + { + break; + } + data->unk0C = 96; + break; + + case 96: //YES/NO + if (MOD59_CreateListWithText(data, 0, 0) != TRUE) + { + break; + } + switch (data->listMenuInput) + { + case 1: + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 97; + break; + + case -2: + case 2: + StringSetEmpty(data->rivalStruct->name); + data->unk0C = 88; + break; + } + break; + + case 97: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + data->unk0C = 98; + break; + + case 98: //load sprite + data->unk89 = 1; + data->unk8A = 0; + MOD59_021D8140(data); + data->unk0C = 99; + break; + + case 99: //send blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + data->unk0C = 100; + break; + + case 100: //wait + if (MOD59_021D7BEC(data, 30) != TRUE) + { + break; + } + data->unk0C = 101; + break; + + case 101: //All right, {STRVAR_1 3, 0}, the time has come. Your very own tale of grand... + if (MOD59_DisplayMessage(data, 30, 1) != TRUE) + { + break; + } + FUN_020053CC(0, 50); //fade music + data->unk0C = 102; + break; + + case 102: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 1) != TRUE) + { + break; + } + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + data->unk0C = 103; + break; + + case 103: //wait + if (MOD59_021D7BEC(data, 30) != TRUE) + { + break; + } + data->unk0C = 104; + break; + + case 104: //load sprite + if (data->unk84 == 0) + { + data->unk89 = 2; + data->unk8A = 0; + MOD59_021D8140(data); + } + else + { + data->unk89 = 6; + data->unk8A = 0; + MOD59_021D8140(data); + } + data->unk0C = 105; + break; + + case 105: //set blend + if (MOD59_021D7A68(data, GF_BG_LYR_MAIN_1, 0) != TRUE) + { + break; + } + MOD59_021D8624(data); + data->unk0C = 106; + break; + + case 106: //wait + if (MOD59_021D7BEC(data, 30) != TRUE) + { + break; + } + data->unk0C = 107; + break; + + case 107: //load sprites + if (MOD59_021D8634(data) != TRUE) + { + break; + } + data->unk0C = 108; + break; + + case 108: //load overaly 59 pt 2 + data->unk14 = OverlayManager_new(&MOD59_021D9DDC, 0, data->heap_id); + data->unk0C = 109; + break; + + case 109: + ret = TRUE; + break; + } + return ret; +} diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c index f76f09b17..5937794ce 100644 --- a/arm9/src/bg_window.c +++ b/arm9/src/bg_window.c @@ -663,7 +663,7 @@ THUMB_FUNC void ToggleBgLayer(u32 bgId, GX_LayerToggle toggle) } } -THUMB_FUNC void BgSetPosTextAndCommit(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 val) +THUMB_FUNC void BgSetPosTextAndCommit(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 val) //seems to apply to more than just text? name? { Bg_SetPosText(&bgConfig->bgs[bgId], op, val);