diff options
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/modules/61/asm/module_61.s | 1907 | ||||
-rw-r--r-- | pokediamond.lcf | 176 |
4 files changed, 2021 insertions, 92 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index d6086176..42ea31f6 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2446,12 +2446,23 @@ SECTIONS { SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START; } >> MODULE_60 - .MODULE_61: { + .MODULE_61 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_61_ID = 61; SDK_OVERLAY.MODULE_61.ID = 61; SDK_OVERLAY.MODULE_61.START = .; - FILE_2ADA00.o (.text) /* 0x2A9A00 */ + module_61.o (.text) + module_61.o (.rodata) + module_61.o (.init) + SDK_OVERLAY.MODULE_61.SINIT_START = .; + module_61.o (.ctor) + module_61.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_61.SINIT_END = .; + . = ALIGN(32); + module_61.o (.sdata) + module_61.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_61.END = .; SDK_OVERLAY.MODULE_61.SIZE = SDK_OVERLAY.MODULE_61.END - SDK_OVERLAY.MODULE_61.START; @@ -2461,7 +2472,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_61.BSS_START = .; - FILE_2ADA00.o (.bss) + module_61.o (.bss) + module_61.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_61.BSS_END = .; SDK_OVERLAY.MODULE_61.BSS_SIZE = SDK_OVERLAY.MODULE_61.BSS_END - SDK_OVERLAY.MODULE_61.BSS_START; @@ -3666,7 +3678,15 @@ SECTIONS { WRITEW 60; WRITEW 0; - OVERLAY_TABLE(MODULE_61, 61) + WRITEW 61; + WRITEW ADDR(.MODULE_61); + WRITEW SDK_OVERLAY.MODULE_61.SIZE; + WRITEW SDK_OVERLAY.MODULE_61.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_61.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_61.SINIT_END; + WRITEW 61; + WRITEW 0; + OVERLAY_TABLE(MODULE_62, 62) OVERLAY_TABLE(MODULE_63, 63) OVERLAY_TABLE(MODULE_64, 64) diff --git a/arm9/global.inc b/arm9/global.inc index 22c120df..e874771d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5589,6 +5589,8 @@ .extern FUN_020294A8
.extern FUN_0202EEB0
.extern FUN_02031370
+.extern FUN_0200A064
+.extern FUN_0200C918
.extern FUN_02031388
.extern FUN_02052F8C
.extern FUN_02083D48
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s new file mode 100644 index 00000000..c81d3a4a --- /dev/null +++ b/arm9/modules/61/asm/module_61.s @@ -0,0 +1,1907 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD61_021D74E0 +MOD61_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + mov r2, #2 + mov r0, #3 + mov r1, #0x29 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xbc + mov r2, #0x29 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xbc + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x29 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4, #0x1c] + ldrh r0, [r0] + ldr r1, _021D754C ; =0x0000FFFF + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + strb r0, [r4, #0xd] + ldr r0, [r4, #0x1c] + ldrb r0, [r0, #2] + strb r0, [r4, #0x11] + ldr r0, [r4, #0x1c] + ldrb r0, [r0, #3] + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x11] + strb r0, [r4, #0x16] + strb r0, [r4, #0x17] + ldr r0, [r4, #0x1c] + strh r1, [r0] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #4] + bl FUN_02024FF4 + strb r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #4] + bl FUN_02025084 + strh r0, [r4, #0xa] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D754C: .word 0x0000FFFF + thumb_func_end MOD61_021D74E0 + + thumb_func_start MOD61_021D7550 +MOD61_021D7550: ; 0x021D7550 + push {r3, lr} + bl FUN_02006278 + bl MOD61_021D78D4 + cmp r0, #0 + beq _021D7562 + mov r0, #1 + pop {r3, pc} +_021D7562: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD61_021D7550 + + thumb_func_start MOD61_021D7568 +MOD61_021D7568: ; 0x021D7568 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + ldr r4, [r0] + add r0, r5, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD61_021D7568 + + thumb_func_start MOD61_021D7584 +MOD61_021D7584: ; 0x021D7584 + push {r4, r5, r6, lr} + mov r4, #0 + add r6, r0, #0 + add r5, r4, #0 +_021D758C: + ldr r0, [r6, #0x1c] + add r0, #0x1a + add r0, r0, r5 + bl FUN_0201385C + cmp r0, #0 + beq _021D759E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D759E: + add r4, r4, #1 + add r5, #8 + cmp r4, #3 + blt _021D758C + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD61_021D7584 + + thumb_func_start MOD61_021D75AC +MOD61_021D75AC: ; 0x021D75AC + push {r3, lr} + ldr r0, _021D75C8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D75C2 + ldr r0, _021D75CC ; =0x000005E3 + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D75C2: + mov r0, #0 + pop {r3, pc} + nop +_021D75C8: .word 0x021C48B8 +_021D75CC: .word 0x000005E3 + thumb_func_end MOD61_021D75AC + + thumb_func_start MOD61_021D75D0 +MOD61_021D75D0: ; 0x021D75D0 + push {r3, r4, r5, lr} + ldr r1, _021D76E0 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #1 + add r5, r2, #0 + mov r3, #0 + tst r5, r1 + beq _021D7648 + ldrb r1, [r4, #0x11] + cmp r1, #3 + bne _021D762E + ldrb r1, [r4, #0x12] + cmp r1, #0 + bne _021D7612 + bl MOD61_021D7584 + cmp r0, #0 + beq _021D7604 + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #2 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7604: + ldr r0, [r4, #0x1c] + mov r1, #3 + strh r1, [r0] + ldr r0, _021D76E8 ; =0x000005E3 + bl FUN_020054C8 + b _021D7620 +_021D7612: + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7620: + ldr r0, [r4, #0x1c] + mov r1, #0 + strb r1, [r0, #3] + ldr r1, [r4, #0x1c] + ldrb r0, [r1, #3] + strb r0, [r1, #2] + b _021D7644 +_021D762E: + ldr r0, [r4, #0x1c] + strb r1, [r0, #2] + ldr r1, [r4, #0x1c] + ldrb r0, [r1, #2] + strh r0, [r1] + ldrb r1, [r4, #0x12] + ldr r0, [r4, #0x1c] + strb r1, [r0, #3] + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 +_021D7644: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7648: + mov r0, #2 + tst r0, r2 + beq _021D765C + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D765C: + mov r0, #8 + tst r0, r2 + beq _021D766C + mov r0, #3 + strb r0, [r4, #0x11] + strb r3, [r4, #0x12] + add r3, r1, #0 + b _021D76BE +_021D766C: + mov r0, #0x80 + tst r0, r2 + beq _021D7688 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r3 + mov r0, #0x1e + ror r2, r0 + add r0, r3, r2 + strb r0, [r4, #0x11] + add r3, r1, #0 + b _021D76BE +_021D7688: + mov r0, #0x40 + tst r0, r2 + beq _021D76A4 + ldrb r0, [r4, #0x11] + add r0, r0, #3 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r3 + mov r0, #0x1e + ror r2, r0 + add r0, r3, r2 + strb r0, [r4, #0x11] + add r3, r1, #0 + b _021D76BE +_021D76A4: + mov r0, #0x30 + tst r0, r2 + beq _021D76BA + ldrb r0, [r4, #0x11] + cmp r0, #3 + bne _021D76BE + ldrb r0, [r4, #0x12] + add r3, r1, #0 + eor r0, r1 + strb r0, [r4, #0x12] + b _021D76BE +_021D76BA: + add r0, r3, #0 + pop {r3, r4, r5, pc} +_021D76BE: + cmp r3, #0 + bne _021D76C6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D76C6: + ldr r0, _021D76EC ; =0x000005DC + bl FUN_020054C8 + ldrb r1, [r4, #0x11] + cmp r1, #3 + bne _021D76DA + ldrb r0, [r4, #0x12] + add r0, r1, r0 + strb r0, [r4, #0x16] + b _021D76DC +_021D76DA: + strb r1, [r4, #0x16] +_021D76DC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D76E0: .word 0x021C48B8 +_021D76E4: .word 0x000005DD +_021D76E8: .word 0x000005E3 +_021D76EC: .word 0x000005DC + thumb_func_end MOD61_021D75D0 + + thumb_func_start MOD61_021D76F0 +MOD61_021D76F0: ; 0x021D76F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrh r0, [r5, #8] + cmp r0, #0 + beq _021D7702 + cmp r0, #1 + beq _021D774E + b _021D777C +_021D7702: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + mov r2, #0xa + mov r3, #6 + bl FUN_0200D0BC + add r0, r5, #0 + add r0, #0x94 + mov r1, #0xff + bl FUN_02019620 + ldr r1, [r5] + mov r0, #0x4c + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x20] + mov r1, #2 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + ldr r0, _021D7788 ; =0x0001020F + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + add r2, r4, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + b _021D777C +_021D774E: + ldr r0, _021D778C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _021D775E + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D775E: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #0x94 + bl FUN_02019570 + mov r0, #0 + strh r0, [r5, #8] + ldrb r1, [r5, #0xd] + add sp, #0x10 + strb r1, [r5, #0xc] + pop {r3, r4, r5, pc} +_021D777C: + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7788: .word 0x0001020F +_021D778C: .word 0x021C48B8 + thumb_func_end MOD61_021D76F0 + + thumb_func_start MOD61_021D7790 +MOD61_021D7790: ; 0x021D7790 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4] + ldr r1, _021D77B0 ; =0x021D842C + str r0, [sp] + ldr r0, [r4, #0x18] + mov r2, #1 + mov r3, #5 + bl FUN_02002198 + add r4, #0xa4 + str r0, [r4] + add sp, #4 + pop {r3, r4, pc} + nop +_021D77B0: .word 0x021D842C + thumb_func_end MOD61_021D7790 + + thumb_func_start MOD61_021D77B4 +MOD61_021D77B4: ; 0x021D77B4 + push {r3, lr} + add r1, r0, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_020021AC + cmp r0, #0 + beq _021D77D0 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021D77D4 + b _021D77D8 +_021D77D0: + mov r0, #1 + pop {r3, pc} +_021D77D4: + mov r0, #0 + pop {r3, pc} +_021D77D8: + add r0, r1, #1 + pop {r3, pc} + thumb_func_end MOD61_021D77B4 + + thumb_func_start MOD61_021D77DC +MOD61_021D77DC: ; 0x021D77DC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrh r1, [r5, #8] + cmp r1, #0 + beq _021D77F2 + cmp r1, #1 + beq _021D7864 + cmp r1, #2 + beq _021D787C + b _021D78BA +_021D77F2: + mov r1, #1 + add r0, #0x94 + mov r2, #0xa + mov r3, #6 + strb r1, [r5, #0x13] + bl FUN_0200D0BC + add r0, r5, #0 + add r0, #0x94 + mov r1, #0xff + bl FUN_02019620 + ldr r1, [r5] + mov r0, #0x4c + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x20] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + ldrb r0, [r5, #0x10] + mov r1, #1 + add r2, r4, #0 + str r0, [sp, #4] + ldr r0, _021D78C8 ; =0x0001020F + str r0, [sp, #8] + add r0, r5, #0 + str r3, [sp, #0xc] + add r0, #0x94 + bl FUN_0201BDE0 + strb r0, [r5, #0xf] + add r0, r4, #0 + bl FUN_02021A20 + mov r1, #0 + ldr r0, _021D78CC ; =0x00007FFF + str r1, [sp] + str r0, [sp, #4] + ldrb r2, [r5, #0x17] + ldr r0, [r5, #0x30] + mov r3, #1 + add r2, #0x22 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + ldrb r0, [r5, #0x16] + strb r0, [r5, #0x17] + mov r0, #0 + strb r0, [r5, #0x15] + strb r0, [r5, #0x14] + b _021D78BA +_021D7864: + ldrb r0, [r5, #0xf] + bl FUN_0201BD70 + cmp r0, #0 + beq _021D7874 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7874: + add r0, r5, #0 + bl MOD61_021D7790 + b _021D78BA +_021D787C: + bl MOD61_021D77B4 + add r4, r0, #0 + bpl _021D788A + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D788A: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #0x94 + bl FUN_02019570 + mov r0, #0 + strh r0, [r5, #8] + cmp r4, #0 + beq _021D78B0 + ldr r1, _021D78D0 ; =0x0000FFFF + ldr r0, [r5, #0x1c] + add sp, #0x10 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D78B0: + ldrb r1, [r5, #0xd] + add sp, #0x10 + strb r1, [r5, #0xc] + strb r0, [r5, #0x13] + pop {r3, r4, r5, pc} +_021D78BA: + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D78C8: .word 0x0001020F +_021D78CC: .word 0x00007FFF +_021D78D0: .word 0x0000FFFF + thumb_func_end MOD61_021D77DC + + thumb_func_start MOD61_021D78D4 +MOD61_021D78D4: ; 0x021D78D4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #5 + bls _021D78E2 + b _021D7A46 +_021D78E2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D78EE: ; jump table + .short _021D78FA - _021D78EE - 2 ; case 0 + .short _021D7940 - _021D78EE - 2 ; case 1 + .short _021D798A - _021D78EE - 2 ; case 2 + .short _021D79A6 - _021D78EE - 2 ; case 3 + .short _021D79E0 - _021D78EE - 2 ; case 4 + .short _021D7A32 - _021D78EE - 2 ; case 5 +_021D78FA: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7A54 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7A58 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + b _021D7A46 +_021D7940: + bl MOD61_021D7B38 + cmp r0, #0 + bne _021D794E + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D794E: + ldr r0, _021D7A5C ; =MOD61_021D7A6C + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0 + bl FUN_0200E394 + mov r1, #4 + ldr r0, _021D7A60 ; =0x04000050 + mov r2, #8 + mov r3, #0x1c + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #5 + ldr r0, [r4, #0x30] + ldr r2, _021D7A64 ; =0x0000FFFF + sub r3, r1, #6 + bl FUN_02003210 + b _021D7A46 +_021D798A: + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _021D7996 + bl FUN_0200BC1C +_021D7996: + ldr r0, [r4, #0x30] + bl FUN_020038E4 + cmp r0, #0 + beq _021D7A46 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79A6: + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _021D79B2 + bl FUN_0200BC1C +_021D79B2: + ldrb r1, [r4, #0xc] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _021D7A68 ; =0x021D8444 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + bne _021D79C8 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79C8: + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #5 + ldr r0, [r4, #0x30] + ldr r2, _021D7A64 ; =0x0000FFFF + sub r3, r1, #6 + bl FUN_02003210 + b _021D7A46 +_021D79E0: + ldr r0, [r4, #0x30] + bl FUN_020038E4 + cmp r0, #0 + beq _021D79FC + add r4, #0xac + ldr r0, [r4] + cmp r0, #0 + beq _021D79F6 + bl FUN_0200BC1C +_021D79F6: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79FC: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7A54 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7A58 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + b _021D7A46 +_021D7A32: + bl MOD61_021D7B84 + cmp r0, #0 + beq _021D7A40 + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D7A40: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7A46: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + nop +_021D7A54: .word 0xFFFFE0FF +_021D7A58: .word 0x04001000 +_021D7A5C: .word MOD61_021D7A6C +_021D7A60: .word 0x04000050 +_021D7A64: .word 0x0000FFFF +_021D7A68: .word 0x021D8444 + thumb_func_end MOD61_021D78D4 + + thumb_func_start MOD61_021D7A6C +MOD61_021D7A6C: ; 0x021D7A6C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021D7A7A + bl FUN_0200372C +_021D7A7A: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021D7A88 + bl FUN_0200BC30 +_021D7A88: + bl FUN_020AEEB8 + ldr r0, [r4, #0x18] + bl FUN_0201AB60 + ldr r3, _021D7AA0 ; =0x027E0000 + ldr r1, _021D7AA4 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D7AA0: .word 0x027E0000 +_021D7AA4: .word 0x00003FF8 + thumb_func_end MOD61_021D7A6C + + thumb_func_start MOD61_021D7AA8 +MOD61_021D7AA8: ; 0x021D7AA8 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldr r2, [r4, #0x30] + cmp r2, #0 + bne _021D7ABC + bl FUN_0200CAB4 + add sp, #8 + pop {r4, pc} +_021D7ABC: + ldrb r0, [r4, #0x13] + cmp r0, #0 + bne _021D7B30 + ldrb r3, [r4, #0x17] + ldrb r0, [r4, #0x16] + cmp r3, r0 + beq _021D7AEA + mov r1, #0 + ldr r0, _021D7B34 ; =0x00007FFF + str r1, [sp] + str r0, [sp, #4] + add r3, #0x22 + add r0, r2, #0 + lsl r2, r3, #0x10 + lsr r2, r2, #0x10 + mov r3, #1 + bl FUN_020039E8 + ldrb r0, [r4, #0x16] + strb r0, [r4, #0x17] + mov r0, #0 + strb r0, [r4, #0x15] + strb r0, [r4, #0x14] +_021D7AEA: + ldrb r0, [r4, #0x14] + mov r1, #0 + mov r3, #1 + str r0, [sp] + ldr r0, _021D7B34 ; =0x00007FFF + str r0, [sp, #4] + ldrb r2, [r4, #0x16] + ldr r0, [r4, #0x30] + add r2, #0x22 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + ldrb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + cmp r0, #0 + beq _021D7B20 + sub r0, r1, #1 + strb r0, [r4, #0x14] + cmp r1, #1 + bne _021D7B30 + ldrb r1, [r4, #0x15] + mov r0, #1 + add sp, #8 + eor r0, r1 + strb r0, [r4, #0x15] + pop {r4, pc} +_021D7B20: + add r0, r1, #1 + strb r0, [r4, #0x14] + cmp r1, #0xc + bne _021D7B30 + ldrb r1, [r4, #0x15] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #0x15] +_021D7B30: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D7B34: .word 0x00007FFF + thumb_func_end MOD61_021D7AA8 + + thumb_func_start MOD61_021D7B38 +MOD61_021D7B38: ; 0x021D7B38 + push {r4, lr} + add r4, r0, #0 + ldrh r1, [r4, #8] + cmp r1, #3 + bhi _021D7B7A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7B4E: ; jump table + .short _021D7B56 - _021D7B4E - 2 ; case 0 + .short _021D7B5C - _021D7B4E - 2 ; case 1 + .short _021D7B62 - _021D7B4E - 2 ; case 2 + .short _021D7B6E - _021D7B4E - 2 ; case 3 +_021D7B56: + bl MOD61_021D7BD0 + b _021D7B7A +_021D7B5C: + bl MOD61_021D7CE8 + b _021D7B7A +_021D7B62: + bl MOD61_021D7FF4 + add r0, r4, #0 + bl MOD61_021D8114 + b _021D7B7A +_021D7B6E: + bl MOD61_021D8228 + mov r0, #0 + strh r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D7B7A: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD61_021D7B38 + + thumb_func_start MOD61_021D7B84 +MOD61_021D7B84: ; 0x021D7B84 + push {r4, lr} + add r4, r0, #0 + bl MOD61_021D83E8 + add r0, r4, #0 + add r0, #0x24 + beq _021D7B98 + ldr r0, [r4, #0x20] + bl FUN_0200A8B8 +_021D7B98: + add r0, r4, #0 + bl MOD61_021D80F4 + add r0, r4, #0 + bl MOD61_021D7FB4 + add r0, r4, #0 + bl MOD61_021D7CB4 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD61_021D7B84 + + thumb_func_start MOD61_021D7BB0 +MOD61_021D7BB0: ; 0x021D7BB0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7BCC ; =0x021D84A0 + add r3, sp, #0 + mov r2, #5 +_021D7BBA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7BBA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7BCC: .word 0x021D84A0 + thumb_func_end MOD61_021D7BB0 + + thumb_func_start MOD61_021D7BD0 +MOD61_021D7BD0: ; 0x021D7BD0 + push {r4, r5, lr} + sub sp, #0x9c + add r4, r0, #0 + bl MOD61_021D7BB0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0 + ldr r5, _021D7CAC ; =0x021D8434 + str r0, [r4, #0x18] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7CB0 ; =0x021D84C8 + add r3, sp, #0x10 + mov r2, #0x11 +_021D7BFC: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7BFC + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + add r2, sp, #0x10 + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + add r2, sp, #0x2c + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, sp, #0x48 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + add r2, sp, #0x64 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + add r2, sp, #0x80 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r0, #0 + ldr r3, [r4] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0x9c + pop {r4, r5, pc} + .align 2, 0 +_021D7CAC: .word 0x021D8434 +_021D7CB0: .word 0x021D84C8 + thumb_func_end MOD61_021D7BD0 + + thumb_func_start MOD61_021D7CB4 +MOD61_021D7CB4: ; 0x021D7CB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD61_021D7CB4 + + thumb_func_start MOD61_021D7CE8 +MOD61_021D7CE8: ; 0x021D7CE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r1, [r5] + ldrb r4, [r0, #0xf] + str r4, [sp, #0x1c] + ldr r0, [sp, #0x1c] + add r4, #0xc + str r0, [sp, #0x20] + add r0, #0x18 + str r0, [sp, #0x20] + mov r0, #0x4f + bl FUN_02006670 + mov r1, #0 + str r1, [sp] + add r6, r0, #0 + ldr r0, [r5] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + mov r3, #5 + bl FUN_0200CB00 + ldrh r0, [r5, #0xa] + mov r1, #0 + mov r2, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r5] + mov r3, #6 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + bl FUN_0200CD68 + mov r0, #0x4f + add r1, r4, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl FUN_02006774 + add r0, r7, #0 + add r1, sp, #0x28 + bl FUN_020B0088 + ldr r3, [sp, #0x28] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x18] + ldr r3, [r3, #0x10] + mov r1, #1 + bl FUN_02017E14 + ldr r3, [sp, #0x28] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x18] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + add r0, r7, #0 + bl FUN_02016A18 + ldr r1, [sp, #0x1c] + mov r0, #0x4f + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r4, r0, #0 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_02006774 + add r0, r4, #0 + add r1, sp, #0x24 + bl FUN_020B0138 + ldr r2, [sp, #0x24] + mov r0, #4 + ldr r1, [r2, #0xc] + ldr r2, [r2, #8] + mov r3, #0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_02017FB4 + ldr r0, [r5] + bl FUN_02002FD0 + str r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0 + mov r2, #0xe0 + bl FUN_02003008 + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #2 + mov r2, #0x60 + bl FUN_02003008 + mov r0, #0x60 + str r0, [sp] + ldr r1, [sp, #0x24] + mov r2, #0 + ldr r0, [r5, #0x30] + ldr r1, [r1, #0xc] + add r3, r2, #0 + bl FUN_02003054 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D7E00 + mov r0, #0x20 + str r0, [sp] + ldr r1, [sp, #0x24] + ldr r0, [r5, #0x30] + ldr r1, [r1, #0xc] + mov r2, #0 + add r1, #0x60 + mov r3, #0x10 + bl FUN_02003054 +_021D7E00: + mov r0, #2 + str r0, [sp] + mov r0, #0x60 + str r0, [sp, #4] + mov r2, #0 + str r2, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x13 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x30 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0xe + mov r2, #6 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0xe + mov r2, #7 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x50 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x26 + mov r2, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x60 + str r0, [sp, #8] + ldrh r2, [r5, #0xa] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x26 + add r2, #0x19 + bl FUN_020030E8 + mov r0, #0x10 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0x70 + bl FUN_020039E8 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + ldr r0, [r5, #0x30] + mov r1, #2 + mov r3, #0x30 + bl FUN_020039E8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_020038F0 + ldr r0, [r5, #0x30] + bl FUN_0200372C + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, [sp, #0x20] + mov r0, #0x4f + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x34] + ldr r1, [sp, #0x20] + ldr r2, [r5, #0x34] + add r0, r6, #0 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x34] + add r1, #0x3c + bl FUN_020B0180 + mov r0, #0x4f + mov r1, #0x24 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x38] + ldr r2, [r5, #0x38] + add r0, r6, #0 + mov r1, #0x24 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x38] + add r1, #0x40 + bl FUN_020B0180 + add r0, r6, #0 + bl FUN_020066F4 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + ldr r2, _021D7FAC ; =0x00002001 + mov r1, #4 + bl FUN_02018540 + mov r2, #0 + ldr r0, [r5, #0x3c] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x18] + bl FUN_02018170 + ldr r0, [r5, #0x18] + mov r1, #3 + bl FUN_0201AC68 + ldr r0, [r5, #0x18] + mov r1, #4 + bl FUN_0201AC68 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D7FA6 + ldr r0, [r5, #0x40] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + mov r2, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x18] + bl FUN_02018170 + ldr r0, [r5, #0x18] + mov r1, #2 + bl FUN_0201AC68 + mov r2, #0 + strb r2, [r5, #0x14] + ldr r0, _021D7FB0 ; =MOD61_021D7AA8 + add r1, r5, #0 + strb r2, [r5, #0x15] + bl FUN_0200CA44 +_021D7FA6: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D7FAC: .word 0x00002001 +_021D7FB0: .word MOD61_021D7AA8 + thumb_func_end MOD61_021D7CE8 + + thumb_func_start MOD61_021D7FB4 +MOD61_021D7FB4: ; 0x021D7FB4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02016A18 + ldr r0, [r4, #0x34] + bl FUN_02016A18 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x30] + bl FUN_02002FEC + mov r1, #0 + str r1, [r4, #0x30] + ldr r0, _021D7FF0 ; =0x04000050 + add r2, r1, #0 + mov r3, #0x1f + str r1, [sp] + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D7FF0: .word 0x04000050 + thumb_func_end MOD61_021D7FB4 + + thumb_func_start MOD61_021D7FF4 +MOD61_021D7FF4: ; 0x021D7FF4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + mov r3, #3 + add r5, r0, #0 + str r3, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80DC ; =0x00000397 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x44 + bl FUN_02019064 + mov r0, #8 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E0 ; =0x0000032F + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x54 + mov r3, #3 + bl FUN_02019064 + mov r0, #0xd + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E4 ; =0x000002C7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x64 + mov r3, #3 + bl FUN_02019064 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E8 ; =0x000002B7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x74 + mov r3, #0x15 + bl FUN_02019064 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80EC ; =0x000002A7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x84 + mov r3, #3 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _021D80F0 ; =0x00000297 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x94 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r4, #0 + add r5, #0x44 + add r6, r4, #0 +_021D80BE: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_02019620 + cmp r4, #5 + bge _021D80D0 + add r0, r5, #0 + bl FUN_020191D0 +_021D80D0: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blt _021D80BE + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D80DC: .word 0x00000397 +_021D80E0: .word 0x0000032F +_021D80E4: .word 0x000002C7 +_021D80E8: .word 0x000002B7 +_021D80EC: .word 0x000002A7 +_021D80F0: .word 0x00000297 + thumb_func_end MOD61_021D7FF4 + + thumb_func_start MOD61_021D80F4 +MOD61_021D80F4: ; 0x021D80F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x44 +_021D80FC: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blt _021D80FC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD61_021D80F4 + + thumb_func_start MOD61_021D8114 +MOD61_021D8114: ; 0x021D8114 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r7, #0 + add r6, r4, #0 + add r5, r7, #0 + add r6, #0x44 +_021D8122: + ldr r0, [r4, #0x1c] + add r0, #0x1a + add r0, r0, r5 + bl FUN_0201385C + cmp r0, #0 + beq _021D8164 + ldr r0, [r4, #0x1c] + ldr r1, [r4] + add r0, #0x1a + add r0, r0, r5 + bl FUN_020137D4 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D8220 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #1 + mov r3, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_020191D0 +_021D8164: + add r7, r7, #1 + add r5, #8 + add r6, #0x10 + cmp r7, #3 + blt _021D8122 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _021D81F8 + ldr r2, _021D8224 ; =0x00000169 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #0x20] + ldr r1, [r4] + mov r0, #0x10 + bl FUN_020219F4 + add r5, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x18] + add r0, #0x44 + mov r6, #0 + str r0, [sp, #0x18] +_021D8196: + add r0, r5, #0 + bl FUN_02021A4C + ldr r0, [r4, #0x20] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r0, #1 + add r1, r5, #0 + mov r2, #0 + bl FUN_02002E14 + mov r1, #0x40 + sub r7, r1, r0 + add r0, r6, #3 + lsl r0, r0, #4 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021D8220 ; =0x00010200 + lsr r3, r7, #0x1f + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r3, r7, r3 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r0, r0, r1 + mov r1, #1 + asr r3, r3, #1 + bl FUN_0201BDE0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + add r0, r0, r1 + bl FUN_020191D0 + add r6, r6, #1 + cmp r6, #2 + blt _021D8196 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_021D81F8: + mov r0, #2 + str r0, [sp] + mov r3, #0 + ldr r0, _021D8220 ; =0x00010200 + str r3, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r2, [r4, #0x1c] + add r0, r4, #0 + ldr r2, [r2, #0x10] + add r0, #0x74 + mov r1, #1 + bl FUN_0201BDE0 + add r4, #0x74 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8220: .word 0x00010200 +_021D8224: .word 0x00000169 + thumb_func_end MOD61_021D8114 + + thumb_func_start MOD61_021D8228 +MOD61_021D8228: ; 0x021D8228 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + add r5, r0, #0 + bl FUN_02033F20 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D823A + b _021D83D4 +_021D823A: + ldr r1, [r5] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r5] + bl FUN_0200BB14 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_0200BB34 + add r1, r5, #0 + add r1, #0xac + add r2, sp, #0x40 + ldr r4, _021D83D8 ; =0x021D8480 + str r0, [r1] + ldmia r4!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + ldr r6, _021D83DC ; =0x021D8454 + stmia r2!, {r0, r1} + add r4, sp, #0x2c + ldmia r6!, {r0, r1} + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r6] + ldr r6, _021D83E0 ; =0x021D8468 + str r0, [r4] + add r4, sp, #0x14 + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + add r0, r5, #0 + add r0, #0xa8 + add r1, r3, #0 + ldr r0, [r0] + mov r3, #0x20 + bl FUN_0200BB6C + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #3 + bl FUN_0200BBF0 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + add r2, sp, #0x14 + bl FUN_0200BF60 + ldr r0, [r5] + bl FUN_0200A064 + bl FUN_0206B888 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C06C + bl FUN_0206B88C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B898 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C13C + mov r6, #0 + add r4, r6, #0 + add r7, r6, #0 + str r5, [sp, #0x10] +_021D8338: + ldr r0, [r5, #0x1c] + add r3, r0, r4 + ldrh r1, [r3, #0x14] + ldr r0, _021D83E4 ; =0x0000FFFF + cmp r1, r0 + beq _021D83D4 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r6, [sp, #8] + ldrh r3, [r3, #0x14] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + lsl r3, r3, #0x14 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + lsr r3, r3, #0x14 + bl FUN_0200C918 + add r0, sp, #0x60 + mov r1, #0 + mov r2, #0x34 + bl MI_CpuFill8 + mov r0, #0x80 + sub r1, r0, r7 + add r0, sp, #0x60 + strh r1, [r0] + mov r1, #0xa0 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + strh r1, [r0, #6] + mov r0, #2 + str r0, [sp, #0x8c] + ldr r0, [r5, #0x1c] + add r2, sp, #0x60 + add r0, r0, r4 + ldrh r0, [r0, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1c + str r0, [sp, #0x6c] + add r0, r1, #0 + str r0, [sp, #0x90] + mov r0, #1 + str r0, [sp, #0x70] + add r0, r1, #0 + str r0, [sp, #0x78] + str r0, [sp, #0x7c] + str r0, [sp, #0x80] + sub r0, r1, #1 + str r0, [sp, #0x84] + sub r0, r1, #1 + str r0, [sp, #0x88] + add r0, r5, #0 + add r1, r5, #0 + str r6, [sp, #0x74] + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C154 + ldr r1, [sp, #0x10] + add r6, r6, #1 + add r1, #0xb0 + str r0, [r1] + ldr r0, [sp, #0x10] + add r4, r4, #2 + add r0, r0, #4 + add r7, #0x28 + str r0, [sp, #0x10] + cmp r6, #3 + blt _021D8338 +_021D83D4: + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D83D8: .word 0x021D8480 +_021D83DC: .word 0x021D8454 +_021D83E0: .word 0x021D8468 +_021D83E4: .word 0x0000FFFF + thumb_func_end MOD61_021D8228 + + thumb_func_start MOD61_021D83E8 +MOD61_021D83E8: ; 0x021D83E8 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _021D8428 + mov r4, #0 + add r5, r6, #0 +_021D83F6: + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D8404 + bl FUN_0200C3DC +_021D8404: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021D83F6 + add r0, r6, #0 + add r1, r6, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C398 + add r6, #0xa8 + ldr r0, [r6] + bl FUN_0200BD04 + bl FUN_0201C29C +_021D8428: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD61_021D83E8 + + .section .rodata + ; 0x021D842C + .incbin "baserom.nds", 0x2AE94C, 0x128 diff --git a/pokediamond.lcf b/pokediamond.lcf index 3dc929c7..daee270d 100644 --- a/pokediamond.lcf +++ b/pokediamond.lcf @@ -289,355 +289,355 @@ SECTIONS { INCLUDE arm9.bin } > arm9 - .arm9_table : AT (0x0010B800) { + .arm9_table : AT (0x10B800) { INCLUDE arm9_table.bin } >> arm9 - .MODULE_00 : AT (0x0010C400) { + .MODULE_00 : AT (0x10C400) { INCLUDE MODULE_00.bin } >> arm9 - .MODULE_01 : AT (0x0010C600) { + .MODULE_01 : AT (0x10C600) { INCLUDE MODULE_01.bin } >> arm9 - .MODULE_02 : AT (0x0010C800) { + .MODULE_02 : AT (0x10C800) { INCLUDE MODULE_02.bin } >> arm9 - .MODULE_03 : AT (0x0010CA00) { + .MODULE_03 : AT (0x10CA00) { INCLUDE MODULE_03.bin } >> arm9 - .MODULE_04 : AT (0x0010CC00) { + .MODULE_04 : AT (0x10CC00) { INCLUDE MODULE_04.bin } >> arm9 - .MODULE_05 : AT (0x00145400) { + .MODULE_05 : AT (0x145400) { INCLUDE MODULE_05.bin } >> arm9 - .MODULE_06 : AT (0x0016B600) { + .MODULE_06 : AT (0x16B600) { INCLUDE MODULE_06.bin } >> arm9 - .MODULE_07 : AT (0x00184400) { + .MODULE_07 : AT (0x184400) { INCLUDE MODULE_07.bin } >> arm9 - .MODULE_08 : AT (0x00187800) { + .MODULE_08 : AT (0x187800) { INCLUDE MODULE_08.bin } >> arm9 - .MODULE_09 : AT (0x001A3000) { + .MODULE_09 : AT (0x1A3000) { INCLUDE MODULE_09.bin } >> arm9 - .MODULE_10 : AT (0x001AD200) { + .MODULE_10 : AT (0x1AD200) { INCLUDE MODULE_10.bin } >> arm9 - .MODULE_11 : AT (0x001AD400) { + .MODULE_11 : AT (0x1AD400) { INCLUDE MODULE_11.bin } >> arm9 - .MODULE_12 : AT (0x001DFE00) { + .MODULE_12 : AT (0x1DFE00) { INCLUDE MODULE_12.bin } >> arm9 - .MODULE_13 : AT (0x001F9200) { + .MODULE_13 : AT (0x1F9200) { INCLUDE MODULE_13.bin } >> arm9 - .MODULE_14 : AT (0x00227E00) { + .MODULE_14 : AT (0x227E00) { INCLUDE MODULE_14.bin } >> arm9 - .MODULE_15 : AT (0x00237400) { + .MODULE_15 : AT (0x237400) { INCLUDE MODULE_15.bin } >> arm9 - .MODULE_16 : AT (0x0023BC00) { + .MODULE_16 : AT (0x23BC00) { INCLUDE MODULE_16.bin } >> arm9 - .MODULE_17 : AT (0x00264200) { + .MODULE_17 : AT (0x264200) { INCLUDE MODULE_17.bin } >> arm9 - .MODULE_18 : AT (0x0026B200) { + .MODULE_18 : AT (0x26B200) { INCLUDE MODULE_18.bin } >> arm9 - .MODULE_19 : AT (0x00283000) { + .MODULE_19 : AT (0x283000) { INCLUDE MODULE_19.bin } >> arm9 - .MODULE_20 : AT (0x00283200) { + .MODULE_20 : AT (0x283200) { INCLUDE MODULE_20.bin } >> arm9 - .MODULE_21 : AT (0x00285600) { + .MODULE_21 : AT (0x285600) { INCLUDE MODULE_21.bin } >> arm9 - .MODULE_22 : AT (0x00285C00) { + .MODULE_22 : AT (0x285C00) { INCLUDE MODULE_22.bin } >> arm9 - .MODULE_23 : AT (0x00286C00) { + .MODULE_23 : AT (0x286C00) { INCLUDE MODULE_23.bin } >> arm9 - .MODULE_24 : AT (0x00288600) { + .MODULE_24 : AT (0x288600) { INCLUDE MODULE_24.bin } >> arm9 - .MODULE_25 : AT (0x00289000) { + .MODULE_25 : AT (0x289000) { INCLUDE MODULE_25.bin } >> arm9 - .MODULE_26 : AT (0x00289600) { + .MODULE_26 : AT (0x289600) { INCLUDE MODULE_26.bin } >> arm9 - .MODULE_27 : AT (0x00289E00) { + .MODULE_27 : AT (0x289E00) { INCLUDE MODULE_27.bin } >> arm9 - .MODULE_28 : AT (0x0028AA00) { + .MODULE_28 : AT (0x28AA00) { INCLUDE MODULE_28.bin } >> arm9 - .MODULE_29 : AT (0x0028C200) { + .MODULE_29 : AT (0x28C200) { INCLUDE MODULE_29.bin } >> arm9 - .MODULE_30 : AT (0x0028CC00) { + .MODULE_30 : AT (0x28CC00) { INCLUDE MODULE_30.bin } >> arm9 - .MODULE_31 : AT (0x0028D200) { + .MODULE_31 : AT (0x28D200) { INCLUDE MODULE_31.bin } >> arm9 - .MODULE_32 : AT (0x0028D800) { + .MODULE_32 : AT (0x28D800) { INCLUDE MODULE_32.bin } >> arm9 - .MODULE_33 : AT (0x0028DE00) { + .MODULE_33 : AT (0x28DE00) { INCLUDE MODULE_33.bin } >> arm9 - .MODULE_34 : AT (0x0028E200) { + .MODULE_34 : AT (0x28E200) { INCLUDE MODULE_34.bin } >> arm9 - .MODULE_35 : AT (0x0028E800) { + .MODULE_35 : AT (0x28E800) { INCLUDE MODULE_35.bin } >> arm9 - .MODULE_36 : AT (0x0028F200) { + .MODULE_36 : AT (0x28F200) { INCLUDE MODULE_36.bin } >> arm9 - .MODULE_37 : AT (0x00290000) { + .MODULE_37 : AT (0x290000) { INCLUDE MODULE_37.bin } >> arm9 - .MODULE_38 : AT (0x00290600) { + .MODULE_38 : AT (0x290600) { INCLUDE MODULE_38.bin } >> arm9 - .MODULE_39 : AT (0x00291200) { + .MODULE_39 : AT (0x291200) { INCLUDE MODULE_39.bin } >> arm9 - .MODULE_40 : AT (0x00292000) { + .MODULE_40 : AT (0x292000) { INCLUDE MODULE_40.bin } >> arm9 - .MODULE_41 : AT (0x00292E00) { + .MODULE_41 : AT (0x292E00) { INCLUDE MODULE_41.bin } >> arm9 - .MODULE_42 : AT (0x00294000) { + .MODULE_42 : AT (0x294000) { INCLUDE MODULE_42.bin } >> arm9 - .MODULE_43 : AT (0x00294A00) { + .MODULE_43 : AT (0x294A00) { INCLUDE MODULE_43.bin } >> arm9 - .MODULE_44 : AT (0x00295400) { + .MODULE_44 : AT (0x295400) { INCLUDE MODULE_44.bin } >> arm9 - .MODULE_45 : AT (0x00295A00) { + .MODULE_45 : AT (0x295A00) { INCLUDE MODULE_45.bin } >> arm9 - .MODULE_46 : AT (0x00296400) { + .MODULE_46 : AT (0x296400) { INCLUDE MODULE_46.bin } >> arm9 - .MODULE_47 : AT (0x00296800) { + .MODULE_47 : AT (0x296800) { INCLUDE MODULE_47.bin } >> arm9 - .MODULE_48 : AT (0x00297600) { + .MODULE_48 : AT (0x297600) { INCLUDE MODULE_48.bin } >> arm9 - .MODULE_49 : AT (0x00298000) { + .MODULE_49 : AT (0x298000) { INCLUDE MODULE_49.bin } >> arm9 - .MODULE_50 : AT (0x00298600) { + .MODULE_50 : AT (0x298600) { INCLUDE MODULE_50.bin } >> arm9 - .MODULE_51 : AT (0x00298A00) { + .MODULE_51 : AT (0x298A00) { INCLUDE MODULE_51.bin } >> arm9 - .MODULE_52 : AT (0x00299A00) { + .MODULE_52 : AT (0x299A00) { INCLUDE MODULE_52.bin } >> arm9 - .MODULE_53 : AT (0x00299E00) { + .MODULE_53 : AT (0x299E00) { INCLUDE MODULE_53.bin } >> arm9 - .MODULE_54 : AT (0x0029C400) { + .MODULE_54 : AT (0x29C400) { INCLUDE MODULE_54.bin } >> arm9 - .MODULE_55 : AT (0x0029E800) { + .MODULE_55 : AT (0x29E800) { INCLUDE MODULE_55.bin } >> arm9 - .MODULE_56 : AT (0x002A1A00) { + .MODULE_56 : AT (0x2A1A00) { INCLUDE MODULE_56.bin } >> arm9 - .MODULE_57 : AT (0x002A6200) { + .MODULE_57 : AT (0x2A6200) { INCLUDE MODULE_57.bin } >> arm9 - .MODULE_58 : AT (0x002A8800) { + .MODULE_58 : AT (0x2A8800) { INCLUDE MODULE_58.bin } >> arm9 - .MODULE_59 : AT (0x002A9E00) { + .MODULE_59 : AT (0x2A9E00) { INCLUDE MODULE_59.bin } >> arm9 - .MODULE_60 : AT (0x002ACC00) { + .MODULE_60 : AT (0x2ACC00) { INCLUDE MODULE_60.bin } >> arm9 - .MODULE_61 : AT (0x002ADA00) { + .MODULE_61 : AT (0x2ADA00) { INCLUDE MODULE_61.bin } >> arm9 - .MODULE_62 : AT (0x002AEC00) { + .MODULE_62 : AT (0x2AEC00) { INCLUDE MODULE_62.bin } >> arm9 - .MODULE_63 : AT (0x002B2A00) { + .MODULE_63 : AT (0x2B2A00) { INCLUDE MODULE_63.bin } >> arm9 - .MODULE_64 : AT (0x002B7600) { + .MODULE_64 : AT (0x2B7600) { INCLUDE MODULE_64.bin } >> arm9 - .MODULE_65 : AT (0x002B9400) { + .MODULE_65 : AT (0x2B9400) { INCLUDE MODULE_65.bin } >> arm9 - .MODULE_66 : AT (0x002BC400) { + .MODULE_66 : AT (0x2BC400) { INCLUDE MODULE_66.bin } >> arm9 - .MODULE_67 : AT (0x002BEC00) { + .MODULE_67 : AT (0x2BEC00) { INCLUDE MODULE_67.bin } >> arm9 - .MODULE_68 : AT (0x002C1200) { + .MODULE_68 : AT (0x2C1200) { INCLUDE MODULE_68.bin } >> arm9 - .MODULE_69 : AT (0x002C2800) { + .MODULE_69 : AT (0x2C2800) { INCLUDE MODULE_69.bin } >> arm9 - .MODULE_70 : AT (0x002C4C00) { + .MODULE_70 : AT (0x2C4C00) { INCLUDE MODULE_70.bin } >> arm9 - .MODULE_71 : AT (0x002C5C00) { + .MODULE_71 : AT (0x2C5C00) { INCLUDE MODULE_71.bin } >> arm9 - .MODULE_72 : AT (0x002C9C00) { + .MODULE_72 : AT (0x2C9C00) { INCLUDE MODULE_72.bin } >> arm9 - .MODULE_73 : AT (0x002C9E00) { + .MODULE_73 : AT (0x2C9E00) { INCLUDE MODULE_73.bin } >> arm9 - .MODULE_74 : AT (0x002CEA00) { + .MODULE_74 : AT (0x2CEA00) { INCLUDE MODULE_74.bin } >> arm9 - .MODULE_75 : AT (0x002CFE00) { + .MODULE_75 : AT (0x2CFE00) { INCLUDE MODULE_75.bin } >> arm9 - .MODULE_76 : AT (0x002D5C00) { + .MODULE_76 : AT (0x2D5C00) { INCLUDE MODULE_76.bin } >> arm9 - .MODULE_77 : AT (0x002D7C00) { + .MODULE_77 : AT (0x2D7C00) { INCLUDE MODULE_77.bin } >> arm9 - .MODULE_78 : AT (0x002D9800) { + .MODULE_78 : AT (0x2D9800) { INCLUDE MODULE_78.bin } >> arm9 - .MODULE_79 : AT (0x002D9E00) { + .MODULE_79 : AT (0x2D9E00) { INCLUDE MODULE_79.bin } >> arm9 - .MODULE_80 : AT (0x002DF200) { + .MODULE_80 : AT (0x2DF200) { INCLUDE MODULE_80.bin } >> arm9 - .MODULE_81 : AT (0x002E9A00) { + .MODULE_81 : AT (0x2E9A00) { INCLUDE MODULE_81.bin } >> arm9 - .MODULE_82 : AT (0x002EF000) { + .MODULE_82 : AT (0x2EF000) { INCLUDE MODULE_82.bin } >> arm9 - .MODULE_83 : AT (0x002F1600) { + .MODULE_83 : AT (0x2F1600) { INCLUDE MODULE_83.bin } >> arm9 - .MODULE_84 : AT (0x002FFA00) { + .MODULE_84 : AT (0x2FFA00) { INCLUDE MODULE_84.bin } >> arm9 - .MODULE_85 : AT (0x00303400) { + .MODULE_85 : AT (0x303400) { INCLUDE MODULE_85.bin } >> arm9 - .MODULE_86 : AT (0x0030C600) { + .MODULE_86 : AT (0x30C600) { INCLUDE MODULE_86.bin } >> arm9 |