diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 15:55:46 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 15:55:46 -0400 |
commit | 9c63afbeb9e5516ff99d86ca03b8ea4c88891861 (patch) | |
tree | 1eeec90c132f89f9704b526e8ca0ca6c4d04b040 | |
parent | 6c8216cd6f18a8365c4787fb7416b8202ca80785 (diff) |
Disassemble module 60
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/asm/unk_02046030.s | 34 | ||||
-rw-r--r-- | arm9/global.inc | 28 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 4 | ||||
-rw-r--r-- | arm9/modules/60/asm/module_60.s | 1491 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 8 |
6 files changed, 1554 insertions, 39 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 132e8afa..d6086176 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2413,12 +2413,23 @@ SECTIONS { SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START; } >> MODULE_59 - .MODULE_60: { + .MODULE_60 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_60_ID = 60; SDK_OVERLAY.MODULE_60.ID = 60; SDK_OVERLAY.MODULE_60.START = .; - FILE_2ACC00.o (.text) /* 0x2A8C00 */ + module_60.o (.text) + module_60.o (.rodata) + module_60.o (.init) + SDK_OVERLAY.MODULE_60.SINIT_START = .; + module_60.o (.ctor) + module_60.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_60.SINIT_END = .; + . = ALIGN(32); + module_60.o (.sdata) + module_60.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_60.END = .; SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START; @@ -2428,7 +2439,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_60.BSS_START = .; - FILE_2ACC00.o (.bss) + module_60.o (.bss) + module_60.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_60.BSS_END = .; SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START; @@ -3645,7 +3657,15 @@ SECTIONS { WRITEW 59; WRITEW 0; - OVERLAY_TABLE(MODULE_60, 60) + WRITEW 60; + WRITEW ADDR(.MODULE_60); + WRITEW SDK_OVERLAY.MODULE_60.SIZE; + WRITEW SDK_OVERLAY.MODULE_60.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_60.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_60.SINIT_END; + WRITEW 60; + WRITEW 0; + OVERLAY_TABLE(MODULE_61, 61) OVERLAY_TABLE(MODULE_62, 62) OVERLAY_TABLE(MODULE_63, 63) diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index 4221d249..4b46da9e 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -128316,7 +128316,7 @@ FUN_02083E4C: ; 0x02083E4C add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
ldr r1, _02083E8C ; =0x000043D0
mov r2, #0xe1
mov r0, #0x0
@@ -128381,7 +128381,7 @@ _02083ED0: ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
- bl FUN_021D917C
+ bl MOD53_021D917C
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -128437,7 +128437,7 @@ _02083F3C: add r0, r4, #0x0
mov r1, #0x9
add r2, r6, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F5A:
@@ -128447,14 +128447,14 @@ _02083F5A: ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x8
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F6E:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x15
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083F78:
add sp, #0x4
pop {r3-r6, pc}
@@ -128474,7 +128474,7 @@ FUN_02083F88: ; 0x02083F88 add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D8B64
+ bl MOD53_021D8B64
bl FUN_02031190
cmp r0, #0x0
bne _02083FB6
@@ -128514,7 +128514,7 @@ FUN_02083FC4: ; 0x02083FC4 add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083FDA:
pop {r4, pc}
@@ -128674,12 +128674,12 @@ FUN_020840CC: ; 0x020840CC add r0, r4, #0x0
bl FUN_02084270
add r0, r4, #0x0
- bl FUN_021D844C
+ bl MOD54_021D844C
lsl r2, r5, #0x18
add r0, r4, #0x0
mov r1, #0x19
lsr r2, r2, #0x18
- bl FUN_021D88E4
+ bl MOD54_021D88E4
mov r0, #0x1
add r1, r0, #0x0
bl FUN_020334E8
@@ -128693,12 +128693,12 @@ _02084110: .word 0x00000658 thumb_func_start FUN_02084114
FUN_02084114: ; 0x02084114
add r0, r3, #0x0
- ldr r3, _02084120 ; =FUN_021D88E4
+ ldr r3, _02084120 ; =MOD54_021D88E4
mov r1, #0x2
mov r2, #0x0
bx r3
nop
-_02084120: .word FUN_021D88E4 + 1
+_02084120: .word MOD54_021D88E4
thumb_func_start FUN_02084124
FUN_02084124: ; 0x02084124
@@ -128736,7 +128736,7 @@ _0208415E: ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
- bl FUN_021D8C24
+ bl MOD54_021D8C24
ldr r1, _02084208 ; =0x00004A48
ldr r1, [r4, r1]
cmp r1, r0
@@ -128792,7 +128792,7 @@ _020841C8: add r0, r4, #0x0
mov r1, #0x8
add r2, r6, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841E6:
@@ -128802,14 +128802,14 @@ _020841E6: ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841FA:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x13
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_02084204:
add sp, #0x4
pop {r3-r6, pc}
@@ -128824,7 +128824,7 @@ FUN_02084210: ; 0x02084210 add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D89CC
+ bl MOD54_021D89CC
bl FUN_02031190
cmp r0, #0x0
bne _0208422E
@@ -128855,7 +128855,7 @@ FUN_02084238: ; 0x02084238 add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_0208424E:
pop {r4, pc}
diff --git a/arm9/global.inc b/arm9/global.inc index 7708d69f..22c120df 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2727,7 +2727,7 @@ .extern MOD04_021D83A8
.extern MOD04_021D83C0
.extern MOD04_021D83F0
-.extern FUN_021D844C
+.extern MOD54_021D844C
.extern MOD04_021D8494
.extern MOD04_021D8558
.extern MOD04_021D8590
@@ -2744,23 +2744,23 @@ .extern MOD04_021D8818
.extern MOD05_021D8820
.extern MOD04_021D8860
-.extern FUN_021D88E4
+.extern MOD54_021D88E4
.extern MOD04_021D8910
.extern MOD04_021D8944
-.extern FUN_021D89CC
+.extern MOD54_021D89CC
.extern MOD04_021D8A54
.extern MOD04_021D8A7C
-.extern FUN_021D8B64
+.extern MOD53_021D8B64
.extern MOD04_021D8BF0
.extern MOD04_021D8C08
-.extern FUN_021D8C24
+.extern MOD54_021D8C24
.extern MOD04_021D8C58
.extern MOD04_021D8C6C
.extern MOD04_021D8CC8
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
-.extern FUN_021D917C
+.extern MOD53_021D917C
.extern MOD05_021D959C
.extern MOD05_021D967C
.extern MOD05_021D96F4
@@ -4329,8 +4329,8 @@ .extern MOD20_022524DC
.extern MOD19_022524F4
.extern MOD19_02252504
-.extern FUN_02254A68
-.extern FUN_02254AB8
+.extern MOD51_02254A68
+.extern MOD51_02254AB8
.extern FX_Atan
.extern G3X_SetEdgeColorTable
.extern G3X_SetFogTable
@@ -5652,6 +5652,18 @@ .extern FUN_020048BC
.extern FUN_02014630
.extern FUN_02024EF4
+.extern FUN_02004D60
+.extern FUN_020181EC
+.extern FUN_02024FD8
+.extern FUN_02024FE0
+.extern FUN_02025010
+.extern FUN_02025018
+.extern FUN_02025034
+.extern FUN_02025048
+.extern FUN_02025050
+.extern FUN_02025064
+.extern FUN_0202506C
+.extern FUN_0202508C
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 9b34c034..cbfe382b 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -9489,7 +9489,7 @@ MOD05_021DBEA0: ; 0x021DBEA0 mov r1, #2 bl HandleLoadOverlay add r0, r4, #0 - bl FUN_02254A68 + bl MOD51_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} @@ -9515,7 +9515,7 @@ MOD05_021DBECC: ; 0x021DBECC push {r3, lr} add r0, #0x80 ldr r0, [r0] - bl FUN_02254AB8 + bl MOD51_02254AB8 ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID bl UnloadOverlayByID pop {r3, pc} diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s new file mode 100644 index 00000000..6318e002 --- /dev/null +++ b/arm9/modules/60/asm/module_60.s @@ -0,0 +1,1491 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD60_021D74E0 +MOD60_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x26 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0xad + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x26 + bl FUN_02006268 + mov r2, #0xad + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_02024FD8 + ldrh r1, [r4, #0x18] + mov r2, #0xf + lsl r0, r0, #0x10 + bic r1, r2 + lsr r2, r0, #0x10 + mov r0, #0xf + and r0, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_0202502C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x40 + lsr r0, r0, #0x19 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025048 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025010 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r1, [r4, #0x18] + mov r2, #0x30 + lsr r0, r0, #0x1a + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025064 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r2, [r4, #0x18] + ldr r1, _021D75A8 ; =0xFFFFFCFF + lsr r0, r0, #0x16 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025084 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1b + ldrh r2, [r4, #0x18] + ldr r1, _021D75AC ; =0xFFFF83FF + lsr r0, r0, #0x11 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + mov r0, #0x26 + str r0, [r4] + str r5, [r4, #0x1c] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75A8: .word 0xFFFFFCFF +_021D75AC: .word 0xFFFF83FF + thumb_func_end MOD60_021D74E0 + + thumb_func_start MOD60_021D75B0 +MOD60_021D75B0: ; 0x021D75B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r0, #1 + bne _021D7680 + ldrh r1, [r4, #0x18] + mov r0, #0xf + bic r1, r0 + add r0, r4, #0 + add r0, #0x5e + ldrh r2, [r0] + mov r0, #0xf + and r2, r0 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r2, #0x40 + add r0, #0xf7 + bic r1, r2 + add r2, r4, #0 + add r2, #0xb2 + ldrh r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x19 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsl r0, r0, #0x1f + bic r1, r2 + lsr r0, r0, #0x18 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r0, #0x30 + bic r1, r0 + ldr r0, _021D76AC ; =0x0000015A + ldrh r2, [r4, r0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1a + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B0 ; =0xFFFFFCFF + and r1, r2 + add r2, r0, #0 + add r2, #0x54 + ldrh r2, [r4, r2] + add r0, #0xa8 + lsl r2, r2, #0x1e + lsr r2, r2, #0x16 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B4 ; =0xFFFF83FF + lsl r0, r0, #0x1b + and r1, r2 + lsr r0, r0, #0x11 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02024FE0 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + bl FUN_02025034 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + bl FUN_02025050 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1e + bl FUN_02025018 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_0202506C + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1b + bl FUN_0202508C + b _021D769A +_021D7680: + cmp r0, #2 + bne _021D769A + ldrh r0, [r4, #0x18] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + bl FUN_02004D60 + ldrh r1, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_02024F9C +_021D769A: + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D76AC: .word 0x0000015A +_021D76B0: .word 0xFFFFFCFF +_021D76B4: .word 0xFFFF83FF + thumb_func_end MOD60_021D75B0 + + thumb_func_start MOD60_021D76B8 +MOD60_021D76B8: ; 0x021D76B8 + push {r3, r4, lr} + sub sp, #0xc + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #4 + bhi _021D77A0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D76D4: ; jump table + .short _021D76DE - _021D76D4 - 2 ; case 0 + .short _021D7706 - _021D76D4 - 2 ; case 1 + .short _021D7714 - _021D76D4 - 2 ; case 2 + .short _021D777E - _021D76D4 - 2 ; case 3 + .short _021D778C - _021D76D4 - 2 ; case 4 +_021D76DE: + bl MOD60_021D7834 + cmp r0, #0 + bne _021D76EC + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D76EC: + mov r3, #0 + str r3, [r4, #0xc] + 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, #3 + bl FUN_0200E1D0 + b _021D77A0 +_021D7706: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7714: + ldr r0, _021D77AC ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _021D773C + ldr r1, [r4, #0x10] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + cmp r1, #6 + bne _021D773C + ldr r0, _021D77B0 ; =0x0000061B + bl FUN_020054C8 + ldr r1, [r4, #0x10] + mov r0, #3 + bic r1, r0 + mov r0, #1 + orr r0, r1 + str r0, [r4, #0x10] + b _021D774E +_021D773C: + mov r1, #2 + tst r0, r1 + beq _021D774E + ldr r2, [r4, #0x10] + mov r0, #3 + bic r2, r0 + add r0, r2, #0 + orr r0, r1 + str r0, [r4, #0x10] +_021D774E: + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _021D7772 + mov r1, #0 + str r1, [r4, #0xc] + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + add r3, r1, #0 + bl FUN_0200E1D0 + b _021D77A0 +_021D7772: + add r0, r4, #0 + bl MOD60_021D801C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D777E: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D778C: + bl MOD60_021D78E8 + cmp r0, #0 + beq _021D779A + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D779A: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D77A0: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021D77AC: .word 0x021C48B8 +_021D77B0: .word 0x0000061B + thumb_func_end MOD60_021D76B8 + + thumb_func_start MOD60_021D77B4 +MOD60_021D77B4: ; 0x021D77B4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D77D0 ; =0x021D8140 + add r3, sp, #0 + mov r2, #5 +_021D77BE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D77BE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D77D0: .word 0x021D8140 + thumb_func_end MOD60_021D77B4 + + thumb_func_start MOD60_021D77D4 +MOD60_021D77D4: ; 0x021D77D4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0xa + lsr r0, r0, #0x1f + beq _021D7804 + ldr r2, _021D7824 ; =0x00000202 + mov r1, #1 + ldrh r0, [r4, r2] + add r2, #0x39 + mov r3, #0xf + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + ldr r1, [r4, #0x10] + ldr r0, _021D7828 ; =0xFFDFFFFF + and r0, r1 + str r0, [r4, #0x10] +_021D7804: + bl FUN_0200BC30 + bl FUN_020AEEB8 + ldr r0, [r4, #0x14] + bl FUN_0201AB60 + ldr r3, _021D782C ; =0x027E0000 + ldr r1, _021D7830 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + add sp, #8 + pop {r4, pc} + nop +_021D7824: .word 0x00000202 +_021D7828: .word 0xFFDFFFFF +_021D782C: .word 0x027E0000 +_021D7830: .word 0x00003FF8 + thumb_func_end MOD60_021D77D4 + + thumb_func_start MOD60_021D7834 +MOD60_021D7834: ; 0x021D7834 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _021D7848 + cmp r1, #1 + beq _021D7888 + cmp r1, #2 + beq _021D78A2 + b _021D78D0 +_021D7848: + 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, _021D78DC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D78E0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + bl MOD60_021D77B4 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add r0, r4, #0 + bl MOD60_021D7990 + b _021D78D0 +_021D7888: + bl MOD60_021D7A40 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + mov r2, #0xce + bl FUN_0200A86C + str r0, [r4, #0x20] + add r0, r4, #0 + bl MOD60_021D7DF8 + b _021D78D0 +_021D78A2: + bl MOD60_021D7BA4 + add r0, r4, #0 + bl MOD60_021D7D18 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + bl FUN_02033F20 + ldr r0, _021D78E4 ; =MOD60_021D77D4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D78D0: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + nop +_021D78DC: .word 0xFFFFE0FF +_021D78E0: .word 0x04001000 +_021D78E4: .word MOD60_021D77D4 + thumb_func_end MOD60_021D7834 + + thumb_func_start MOD60_021D78E8 +MOD60_021D78E8: ; 0x021D78E8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021D78F8 + cmp r0, #1 + beq _021D7946 + b _021D7978 +_021D78F8: + bl FUN_0201C29C + ldr r0, [sp] + bl MOD60_021D7CD4 + ldr r6, [sp] + mov r7, #0 +_021D7906: + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021D7928 + add r5, r6, #0 +_021D7914: + ldr r0, [r5, #0x60] + bl FUN_02021A20 + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021D7914 +_021D7928: + add r7, r7, #1 + add r6, #0x54 + cmp r7, #7 + blt _021D7906 + ldr r0, [sp] + ldr r0, [r0, #0x20] + bl FUN_0200A8B8 + ldr r0, [sp] + bl MOD60_021D7B98 + ldr r0, [sp] + bl MOD60_021D7A14 + b _021D7978 +_021D7946: + 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, _021D7988 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D798C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #8] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D7978: + ldr r0, [sp] + ldr r0, [r0, #8] + add r1, r0, #1 + ldr r0, [sp] + str r1, [r0, #8] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7988: .word 0xFFFFE0FF +_021D798C: .word 0x04001000 + thumb_func_end MOD60_021D78E8 + + thumb_func_start MOD60_021D7990 +MOD60_021D7990: ; 0x021D7990 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x80 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_02016B94 + add r3, sp, #0 + ldr r4, _021D7A08 ; =0x021D8114 + str r0, [r6, #0x14] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r4, _021D7A0C ; =0x021D8168 + add r3, sp, #0x10 + mov r2, #0xe +_021D79B8: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D79B8 + ldr r5, _021D7A10 ; =0x021D8104 + mov r7, #0 + add r4, sp, #0x10 +_021D79C6: + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02018744 + add r7, r7, #1 + add r4, #0x1c + add r5, r5, #4 + cmp r7, #4 + blt _021D79C6 + mov r0, #0 + ldr r3, [r6] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r6] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0x80 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A08: .word 0x021D8114 +_021D7A0C: .word 0x021D8168 +_021D7A10: .word 0x021D8104 + thumb_func_end MOD60_021D7990 + + thumb_func_start MOD60_021D7A14 +MOD60_021D7A14: ; 0x021D7A14 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD60_021D7A14 + + thumb_func_start MOD60_021D7A40 +MOD60_021D7A40: ; 0x021D7A40 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x49 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #0x49 + mov r1, #1 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r3, [sp, #0x20] + mov r1, #0 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + bl FUN_02017E14 + ldr r3, [sp, #0x20] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x1c + bl FUN_020B0138 + ldr r1, [sp, #0x1c] + mov r0, #0 + ldr r1, [r1, #0xc] + mov r2, #0x20 + add r3, r0, #0 + bl FUN_02017FB4 + ldr r1, [sp, #0x1c] + mov r0, #4 + ldr r1, [r1, #0xc] + mov r2, #0x20 + mov r3, #0 + bl FUN_02017FB4 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #2 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x24] + ldr r2, [r5, #0x24] + add r0, r4, #0 + mov r1, #2 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x24] + add r1, #0x28 + bl FUN_020B0180 + add r0, r4, #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, #0x14] + mov r1, #2 + mov r2, #1 + bl FUN_02018540 + 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, #0x14] + mov r1, #4 + mov r2, #1 + bl FUN_02018540 + ldr r0, [r5, #0x28] + mov r1, #0x20 + str r1, [sp] + mov r1, #2 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrh r2, [r0] + add r3, r1, #0 + lsl r2, r2, #0x15 + lsr r2, r2, #0x18 + str r2, [sp, #0x14] + ldrh r0, [r0, #2] + add r2, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + bl FUN_020181EC + mov r2, #3 + add r3, r2, #0 + ldr r0, [r5, #0x14] + mov r1, #0 + sub r3, #0x1b + bl FUN_020179E0 + ldr r0, [r5, #0x14] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD60_021D7A40 + + thumb_func_start MOD60_021D7B98 +MOD60_021D7B98: ; 0x021D7B98 + ldr r3, _021D7BA0 ; =0x02016A19 + ldr r0, [r0, #0x24] + bx r3 + nop +_021D7BA0: .word 0x02016A19 + thumb_func_end MOD60_021D7B98 + + thumb_func_start MOD60_021D7BA4 +MOD60_021D7BA4: ; 0x021D7BA4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x2c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #3 + str r0, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x22 + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x3c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _021D7CC8 ; =0x000001C6 + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x14] + add r1, #0x4c + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4] + ldr r2, _021D7CCC ; =0x00000232 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r1, #1 + mov r3, #0xe + bl FUN_0200CB00 + ldrh r0, [r4, #0x18] + ldr r2, _021D7CD0 ; =0x0000023B + mov r1, #1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + mov r3, #0xf + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #6 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r1, #6 + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02002EEC + add r0, r4, #0 + add r0, #0x2c + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x3c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x3c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x2c + bl FUN_020192B8 + add r0, r4, #0 + ldr r2, _021D7CCC ; =0x00000232 + add r0, #0x3c + mov r1, #1 + mov r3, #0xe + bl FUN_0200CCA4 + add r4, #0x4c + ldr r2, _021D7CD0 ; =0x0000023B + add r0, r4, #0 + mov r1, #1 + mov r3, #0xf + bl FUN_0200D0BC + add sp, #0x14 + pop {r3, r4, pc} + nop +_021D7CC8: .word 0x000001C6 +_021D7CCC: .word 0x00000232 +_021D7CD0: .word 0x0000023B + thumb_func_end MOD60_021D7BA4 + + thumb_func_start MOD60_021D7CD4 +MOD60_021D7CD4: ; 0x021D7CD4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x3c + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x4c + mov r1, #0 + bl FUN_0200D0E0 + mov r6, #0 + add r5, #0x2c + add r7, r6, #0 +_021D7CF0: + lsl r4, r6, #4 + add r0, r5, r4 + bl FUN_02019570 + add r0, r5, r4 + add r1, r7, #0 + bl FUN_02019620 + add r0, r5, r4 + bl FUN_020192B8 + add r0, r5, r4 + bl FUN_02019178 + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + blo _021D7CF0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD60_021D7CD4 + + thumb_func_start MOD60_021D7D18 +MOD60_021D7D18: ; 0x021D7D18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r1, [r6] + mov r0, #0x28 + bl FUN_020219F4 + add r5, r0, #0 + ldr r0, [r6, #0x20] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r3, #2 + str r3, [sp] + mov r1, #0 + ldr r0, _021D7DEC ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x2c + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A4C + ldr r1, _021D7DF0 ; =0x020ECAC0 + ldr r0, [r6, #0x20] + ldrb r1, [r1] + add r2, r5, #0 + sub r1, #9 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D7DF4 ; =0x0001020F + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + str r1, [sp, #0xc] + add r0, #0x4c + mov r1, #1 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r7, r6, #0 + mov r4, #0 + add r7, #0x3c +_021D7D7E: + add r0, r5, #0 + bl FUN_02021A4C + ldr r0, [r6, #0x20] + add r1, r4, #3 + add r2, r5, #0 + bl FUN_0200A8E0 + lsl r0, r4, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7DF4 ; =0x0001020F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7D7E + mov r4, #0 +_021D7DB6: + add r0, r6, #0 + add r1, r4, #0 + bl MOD60_021D7EA4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7DB6 + add r0, r6, #0 + add r0, #0x2c + bl FUN_020191D0 + add r0, r6, #0 + add r0, #0x3c + bl FUN_020191D0 + add r6, #0x4c + add r0, r6, #0 + bl FUN_020191D0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7DEC: .word 0x00010200 +_021D7DF0: .word 0x020ECAC0 +_021D7DF4: .word 0x0001020F + thumb_func_end MOD60_021D7D18 + + thumb_func_start MOD60_021D7DF8 +MOD60_021D7DF8: ; 0x021D7DF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 + add r6, r0, #0 + str r5, [sp, #4] +_021D7E02: + ldr r0, [sp, #4] + ldr r2, [sp, #4] + lsl r7, r0, #2 + ldr r0, _021D7E9C ; =0x021D8124 + mov r1, #0x54 + mul r1, r2 + add r1, r6, r1 + str r1, [sp] + ldr r0, [r0, r7] + add r1, #0x5c + mov r4, #0 + strh r0, [r1] + cmp r0, #0 + ble _021D7E44 +_021D7E1E: + add r0, r5, #1 + lsl r0, r0, #0x10 + add r1, r5, #0 + lsr r5, r0, #0x10 + ldr r0, [r6, #0x20] + add r1, #0xa + bl FUN_0200A914 + ldr r1, [sp] + lsl r2, r4, #2 + add r1, r1, r2 + str r0, [r1, #0x60] + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _021D7E9C ; =0x021D8124 + ldr r0, [r0, r7] + cmp r4, r0 + blt _021D7E1E +_021D7E44: + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + cmp r0, #7 + blo _021D7E02 + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + add r0, r6, #0 + add r0, #0x5e + strh r1, [r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x19 + lsr r1, r0, #0x1f + add r0, r6, #0 + add r0, #0xb2 + strh r1, [r0] + ldrh r0, [r6, #0x18] + ldr r1, _021D7EA0 ; =0x00000106 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + strh r0, [r6, r1] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1a + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0x54 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x16 + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0xa8 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + add r1, #0xfc + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + strh r0, [r6, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7E9C: .word 0x021D8124 +_021D7EA0: .word 0x00000106 + thumb_func_end MOD60_021D7DF8 + + thumb_func_start MOD60_021D7EA4 +MOD60_021D7EA4: ; 0x021D7EA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + lsl r0, r1, #4 + str r0, [sp, #0x18] + mov r0, #6 + str r1, [sp, #0x14] + lsl r0, r0, #6 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r3, _021D8010 ; =0x021D80FC + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x10] + ldrsb r2, [r3, r2] + ldr r3, [sp, #0x18] + add r0, #0x3c + add r2, #0x64 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + mov r1, #0xff + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [sp, #0x14] + cmp r0, #5 + bne _021D7F26 + add r2, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0x54 + str r0, [sp] + mov r0, #0xff + mul r2, r1 + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r0, _021D8014 ; =0x0003040F + add r3, r3, r2 + str r0, [sp, #8] + mov r1, #0 + add r2, r3, #0 + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + add r2, #0x5e + ldrh r2, [r2] + add r0, #0x3c + lsl r2, r2, #2 + add r2, r3, r2 + ldr r2, [r2, #0x60] + mov r3, #0x94 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r0, #0x3c + bl FUN_020191D0 + ldr r0, [sp, #0x10] + ldr r1, [r0, #0x10] + mov r0, #2 + lsl r0, r0, #0x14 + orr r1, r0 + ldr r0, [sp, #0x10] + add sp, #0x24 + str r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_021D7F26: + cmp r0, #3 + bne _021D7F3C + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r0, #0x5e + ldrh r0, [r0] + bl FUN_02004D60 + b _021D7F54 +_021D7F3C: + cmp r0, #4 + bne _021D7F54 + ldr r1, [sp, #0x14] + mov r2, #0x54 + mul r2, r1 + ldr r1, [sp, #0x10] + mov r0, #0 + add r1, r1, r2 + add r1, #0x5e + ldrh r1, [r1] + bl FUN_02024F9C +_021D7F54: + ldr r0, [sp, #0x14] + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + mov r7, #0 + add r5, r0, r1 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r7, #0 + cmp r0, #0 + bls _021D8002 + bls _021D8002 + ldr r1, _021D8010 ; =0x021D80FC + ldr r0, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + str r0, [sp, #0x20] + add r0, #0x3c + str r0, [sp, #0x20] +_021D7F7E: + add r0, r5, #0 + add r0, #0x5e + ldrh r0, [r0] + cmp r4, r0 + bne _021D7F8C + ldr r0, _021D8014 ; =0x0003040F + b _021D7F8E +_021D7F8C: + ldr r0, _021D8018 ; =0x0001020F +_021D7F8E: + ldr r1, [sp, #0x14] + cmp r1, #4 + bne _021D7FC8 + lsl r1, r4, #2 + add r6, r5, r1 + ldr r1, [sp, #0x18] + add r3, r7, #0 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + ldr r2, [r6, #0x60] + mov r1, #0 + add r3, #0x64 + bl FUN_0201BDE0 + mov r0, #0 + ldr r1, [r6, #0x60] + add r2, r0, #0 + bl FUN_02002E14 + add r0, #0xc + add r0, r7, r0 + lsl r0, r0, #0x18 + asr r7, r0, #0x18 + b _021D7FF2 +_021D7FC8: + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r1, #0 + str r0, [sp, #0xc] + add r2, r5, r2 + ldr r6, [sp, #0x1c] + add r3, r1, #0 + ldrsb r6, [r6, r3] + mov r3, #0x30 + mul r3, r4 + add r3, #0x64 + ldr r0, [sp, #0x20] + ldr r2, [r2, #0x60] + add r3, r6, r3 + bl FUN_0201BDE0 +_021D7FF2: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + cmp r4, r0 + blo _021D7F7E +_021D8002: + ldr r0, [sp, #0x10] + add r0, #0x3c + str r0, [sp, #0x10] + bl FUN_020191D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8010: .word 0x021D80FC +_021D8014: .word 0x0003040F +_021D8018: .word 0x0001020F + thumb_func_end MOD60_021D7EA4 + + thumb_func_start MOD60_021D801C +MOD60_021D801C: ; 0x021D801C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r1, r5, #0 + lsl r0, r0, #0x1b + lsr r2, r0, #0x1d + mov r0, #0x54 + add r1, #0x5c + mul r0, r2 + add r4, r1, r0 + cmp r2, #6 + beq _021D8080 + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D805C + ldrh r0, [r4, #2] + ldrh r1, [r4] + add r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 + b _021D8080 +_021D805C: + mov r0, #0x20 + tst r0, r1 + beq _021D8080 + ldrh r1, [r4] + ldrh r0, [r4, #2] + add r0, r0, r1 + sub r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 +_021D8080: + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + beq _021D80BE + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #6 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 + pop {r3, r4, r5, pc} +_021D80BE: + mov r0, #0x80 + tst r0, r1 + beq _021D80F6 + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #1 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 +_021D80F6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D80F8: .word 0x021C48B8 + thumb_func_end MOD60_021D801C + + .section .rodata + ; 0x021D80FC + .incbin "baserom.nds", 0x2AD81C, 0xDC diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 69d8e7c0..080895e8 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -1,11 +1,5 @@ // Overlay -FUN_021D844C = 0x021D844C; -FUN_021D88E4 = 0x021D88E4; -FUN_021D89CC = 0x021D89CC; -FUN_021D8B64 = 0x021D8B64; -FUN_021D8C24 = 0x021D8C24; -FUN_021D917C = 0x021D917C; MOD63_UNK_021DBE18 = 0x021DBE18; FUN_0222DAEC = 0x0222DAEC; FUN_0222DD1C = 0x0222DD1C; @@ -28,8 +22,6 @@ FUN_02213B08 = 0x02213B08; FUN_02213D80 = 0x02213D80; FUN_02213DBC = 0x02213DBC; FUN_02213E24 = 0x02213E24; -FUN_02254A68 = 0x02254A68; -FUN_02254AB8 = 0x02254AB8; // Overlay |