summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0200CABC.s2866
-rw-r--r--arm9/src/bg_window.c2
-rw-r--r--arm9/src/unk_0200CABC.c1082
-rw-r--r--include/bg_window.h2
-rw-r--r--include/unk_0200CABC.h142
5 files changed, 1226 insertions, 2868 deletions
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
deleted file mode 100644
index 62bace0d..00000000
--- a/arm9/asm/unk_0200CABC.s
+++ /dev/null
@@ -1,2866 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020ECE88
-UNK_020ECE88: ; 0x020ECE88
- .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ECE98
-UNK_020ECE98: ; 0x020ECE98
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ECEA8
-UNK_020ECEA8: ; 0x020ECEA8
- .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020ECEC0
-UNK_020ECEC0: ; 0x020ECEC0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00, 0xD5, 0x5C, 0x01, 0x00
- .byte 0xD5, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .text
-
- thumb_func_start FUN_0200CABC
-FUN_0200CABC: ; 0x0200CABC
- push {r3-r5, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r3, #0x0
- str r2, [sp, #0x0]
- bne _0200CAE2
- mov r1, #0x0
- str r1, [sp, #0x4]
- ldr r0, [sp, #0x20]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-_0200CAE2:
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x20]
- mov r1, #0x1
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200CAFC
-FUN_0200CAFC: ; 0x0200CAFC
- mov r0, #0x18
- bx lr
-
- thumb_func_start FUN_0200CB00
-FUN_0200CB00: ; 0x0200CB00
- push {r4-r6, lr}
- sub sp, #0x10
- add r6, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- add r5, r1, #0x0
- add r4, r3, #0x0
- cmp r0, #0x0
- beq _0200CB16
- mov r1, #0x1
- b _0200CB18
-_0200CB16:
- mov r1, #0x0
-_0200CB18:
- str r2, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x24]
- add r2, r6, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r3, r5, #0x0
- bl GfGfxLoader_LoadCharData
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- cmp r0, #0x2
- bne _0200CB3A
- mov r1, #0x2d
- b _0200CB3C
-_0200CB3A:
- mov r1, #0x18
-_0200CB3C:
- cmp r5, #0x4
- bhs _0200CB56
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x0
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x10
- pop {r4-r6, pc}
-_0200CB56:
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x4
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x10
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200CB6C
-FUN_0200CB6C: ; 0x0200CB6C
- push {r4-r7, lr}
- sub sp, #0x24
- str r1, [sp, #0x14]
- str r2, [sp, #0x18]
- str r3, [sp, #0x1c]
- ldr r2, [sp, #0x1c]
- ldr r5, [sp, #0x40]
- sub r7, r2, #0x1
- ldr r2, [sp, #0x18]
- str r0, [sp, #0x10]
- sub r6, r2, #0x1
- lsl r2, r7, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- lsl r3, r6, #0x18
- str r5, [sp, #0xc]
- add r2, sp, #0x28
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r1, sp, #0x28
- ldrh r4, [r1, #0x1c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldrb r0, [r1, #0x10]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- ldr r3, [sp, #0x18]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- add r0, sp, #0x28
- ldrb r1, [r0, #0x10]
- ldr r0, [sp, #0x18]
- add r2, r4, #0x2
- add r0, r0, r1
- str r0, [sp, #0x20]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x3
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x14]
- lsl r2, r2, #0x10
- lsl r3, r6, #0x18
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x14]
- add r2, r4, #0x5
- lsl r2, r2, #0x10
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, sp, #0x28
- ldrb r1, [r0, #0x14]
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x6
- add r7, r0, r1
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r6, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x28
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x7
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- ldr r3, [sp, #0x18]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r4, #0x8
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CCA4
-FUN_0200CCA4: ; 0x0200CCA4
- push {r3-r7, lr}
- sub sp, #0x20
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x1c]
- add r0, r5, #0x0
- bl GetWindowHeight
- ldr r1, [sp, #0x1c]
- ldr r2, [sp, #0x14]
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- str r7, [sp, #0x8]
- str r6, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x18]
- bl FUN_0200CB6C
- cmp r4, #0x0
- bne _0200CCF4
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200CCF4:
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200CCF8
-FUN_0200CCF8: ; 0x0200CCF8
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x14]
- add r0, r0, #0x2
- add r1, r1, #0x2
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r6, #0x1
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- cmp r4, #0x0
- bne _0200CD5A
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200CD5A:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CD60
-FUN_0200CD60: ; 0x0200CD60
- add r0, r0, #0x2
- bx lr
-
- thumb_func_start FUN_0200CD64
-FUN_0200CD64: ; 0x0200CD64
- add r0, #0x19
- bx lr
-
- thumb_func_start FUN_0200CD68
-FUN_0200CD68: ; 0x0200CD68
- push {r4-r7, lr}
- sub sp, #0x14
- str r0, [sp, #0x10]
- add r0, sp, #0x18
- ldrb r7, [r0, #0x10]
- add r6, r2, #0x0
- add r5, r1, #0x0
- add r0, r7, #0x0
- add r4, r3, #0x0
- bl FUN_0200CD60
- add r1, r0, #0x0
- str r6, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x10]
- str r0, [sp, #0xc]
- mov r0, #0x26
- add r3, r5, #0x0
- bl GfGfxLoader_LoadCharData
- cmp r5, #0x4
- bhs _0200CDB8
- add r0, r7, #0x0
- bl FUN_0200CD64
- add r1, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- mov r2, #0x0
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x14
- pop {r4-r7, pc}
-_0200CDB8:
- add r0, r7, #0x0
- bl FUN_0200CD64
- add r1, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- mov r2, #0x4
- str r0, [sp, #0x4]
- mov r0, #0x26
- lsl r3, r4, #0x5
- bl GfGfxLoader_GXLoadPal
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200CDD8
-FUN_0200CDD8: ; 0x0200CDD8
- push {r3-r7, lr}
- sub sp, #0x30
- str r1, [sp, #0x10]
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- ldr r2, [sp, #0x4c]
- add r7, r0, #0x0
- str r2, [sp, #0x4c]
- ldr r2, [sp, #0x18]
- ldr r5, [sp, #0x50]
- sub r6, r2, #0x1
- ldr r2, [sp, #0x14]
- sub r2, r2, #0x2
- str r2, [sp, #0x28]
- lsl r2, r6, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, sp, #0x38
- lsl r3, r3, #0x18
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x14]
- sub r0, r0, #0x1
- str r0, [sp, #0x24]
- add r0, sp, #0x38
- ldrh r4, [r0, #0x1c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x24]
- str r5, [sp, #0xc]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x38
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x2
- lsl r2, r2, #0x10
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x14]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- add r0, sp, #0x38
- ldrb r1, [r0, #0x10]
- ldr r0, [sp, #0x14]
- add r2, r4, #0x3
- add r0, r0, r1
- str r0, [sp, #0x2c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x2c]
- add r2, r4, #0x4
- add r0, r0, #0x1
- str r0, [sp, #0x20]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x2c]
- add r2, r4, #0x5
- add r0, r0, #0x2
- str r0, [sp, #0x1c]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x1c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- add r2, r4, #0x6
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- ldr r3, [sp, #0x24]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- add r2, r4, #0x7
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x2c]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0x9
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x4c]
- ldr r3, [sp, #0x1c]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, #0xb
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r2, r4, #0x0
- ldr r3, [sp, #0x28]
- add r2, #0xc
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x4c]
- lsr r2, r2, #0x10
- add r6, r1, r0
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x24]
- str r5, [sp, #0xc]
- add r2, #0xd
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, sp, #0x38
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x0
- add r2, #0xe
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- ldr r1, [sp, #0x10]
- ldr r3, [sp, #0x14]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0xf
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r2, #0x10
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x1c]
- str r5, [sp, #0xc]
- add r4, #0x11
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r1, [sp, #0x10]
- add r0, r7, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D06C
-FUN_0200D06C: ; 0x0200D06C
- push {r4-r7, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- ldr r2, [sp, #0x14]
- ldr r3, [sp, #0x18]
- bl FUN_0200CDD8
- add sp, #0x1c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D0BC
-FUN_0200D0BC: ; 0x0200D0BC
- push {r4-r6, lr}
- add r6, r2, #0x0
- add r4, r1, #0x0
- add r1, r6, #0x0
- add r2, r3, #0x0
- add r5, r0, #0x0
- bl FUN_0200D06C
- cmp r4, #0x0
- bne _0200D0D6
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200D0D6:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0200D18C
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200D0E0
-FUN_0200D0E0: ; 0x0200D0E0
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl GetWindowX
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- str r0, [sp, #0x14]
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x14]
- add r0, r0, #0x2
- add r1, r1, #0x5
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r6, #0x2
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x10]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- cmp r4, #0x0
- bne _0200D142
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200D142:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D148
-FUN_0200D148: ; 0x0200D148
- push {r4-r5, lr}
- sub sp, #0x24
- add r5, r1, #0x0
- str r0, [sp, #0x1c]
- add r1, sp, #0x14
- strh r3, [r1, #0xc]
- add r4, r2, #0x0
- add r0, sp, #0x20
- ldrh r2, [r0, #0x10]
- add r3, r4, #0x0
- strh r2, [r1, #0xe]
- ldr r2, [sp, #0x34]
- str r2, [sp, #0x14]
- ldrh r2, [r0, #0x18]
- strh r2, [r1, #0x4]
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x6]
- ldrh r1, [r0, #0x20]
- add r2, r5, #0x0
- str r1, [sp, #0x0]
- ldrh r1, [r0, #0x24]
- str r1, [sp, #0x4]
- ldrh r1, [r0, #0x28]
- str r1, [sp, #0x8]
- ldrh r0, [r0, #0x2c]
- add r1, sp, #0x14
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- add r0, sp, #0x1c
- bl BlitBitmapRect4Bit
- add sp, #0x24
- pop {r4-r5, pc}
-
- thumb_func_start FUN_0200D18C
-FUN_0200D18C: ; 0x0200D18C
- push {r3-r7, lr}
- sub sp, #0x40
- str r1, [sp, #0x24]
- str r0, [sp, #0x20]
- ldr r0, [r0, #0x0]
- bl BgConfig_GetHeapId
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- bl GetWindowBgId
- mov r1, #0x6
- str r0, [sp, #0x28]
- add r0, r6, #0x0
- lsl r1, r1, #0x6
- bl AllocFromHeap
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- bl BgGetCharPtr
- add r4, r0, #0x0
- str r6, [sp, #0x0]
- mov r0, #0x26
- mov r1, #0x16
- mov r2, #0x0
- add r3, sp, #0x3c
- bl GfGfxLoader_GetCharData
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x3c]
- mov r7, #0x0
- ldr r0, [r0, #0x14]
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x24]
- add r0, #0xa
- lsl r0, r0, #0x5
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x24]
- add r0, #0xb
- lsl r0, r0, #0x5
- str r0, [sp, #0x38]
-_0200D1E0:
- ldr r1, [sp, #0x34]
- lsl r6, r7, #0x7
- add r0, r5, r6
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- ldr r1, [sp, #0x38]
- add r0, #0x20
- add r0, r5, r0
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- ldr r1, [sp, #0x34]
- add r0, #0x40
- add r0, r5, r0
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- ldr r1, [sp, #0x38]
- add r6, #0x60
- add r0, r5, r6
- add r1, r4, r1
- mov r2, #0x20
- bl memcpy
- add r0, r7, #0x1
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- cmp r7, #0x3
- blo _0200D1E0
- mov r1, #0x30
- str r1, [sp, #0x0]
- str r5, [sp, #0x4]
- mov r3, #0xc
- str r3, [sp, #0x8]
- str r1, [sp, #0xc]
- mov r0, #0x1
- str r0, [sp, #0x10]
- mov r2, #0x0
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- str r1, [sp, #0x1c]
- ldr r0, [sp, #0x30]
- mov r1, #0x4
- bl FUN_0200D148
- ldr r0, [sp, #0x24]
- mov r3, #0x6
- add r0, #0x12
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x28]
- ldr r0, [r0, #0x0]
- add r2, r5, #0x0
- lsl r3, r3, #0x6
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0x24]
- bl FUN_02002840
- ldr r0, [sp, #0x2c]
- bl FreeToHeap
- add r0, r5, #0x0
- bl FreeToHeap
- add sp, #0x40
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D274
-FUN_0200D274: ; 0x0200D274
- push {r4-r7, lr}
- sub sp, #0x14
- str r0, [sp, #0x4]
- str r1, [sp, #0x8]
- add r0, sp, #0x18
- ldrb r0, [r0, #0x10]
- add r7, r2, #0x0
- add r5, r3, #0x0
- bl FUN_0200CD60
- add r1, r0, #0x0
- ldr r0, [sp, #0x2c]
- mov r2, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x26
- add r3, sp, #0x10
- bl GfGfxLoader_GetCharData
- str r0, [sp, #0xc]
- mov r1, #0x9
- ldr r0, [sp, #0x2c]
- lsl r1, r1, #0x6
- bl AllocFromHeap
- ldr r1, [sp, #0x10]
- mov r2, #0x9
- ldr r1, [r1, #0x14]
- lsl r2, r2, #0x6
- add r4, r0, #0x0
- bl memcpy
- mov r0, #0x9
- mov r3, #0x0
- lsl r0, r0, #0x6
- mov r1, #0xf
-_0200D2BA:
- ldrb r2, [r4, r3]
- lsl r6, r2, #0x14
- and r2, r1
- lsl r2, r2, #0x18
- lsr r6, r6, #0x18
- lsr r2, r2, #0x18
- cmp r6, #0x0
- bne _0200D2CC
- add r6, r5, #0x0
-_0200D2CC:
- cmp r2, #0x0
- bne _0200D2D2
- add r2, r5, #0x0
-_0200D2D2:
- lsl r6, r6, #0x4
- orr r2, r6
- strb r2, [r4, r3]
- add r3, r3, #0x1
- cmp r3, r0
- blo _0200D2BA
- str r7, [sp, #0x0]
- mov r3, #0x9
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x8]
- add r2, r4, #0x0
- lsl r3, r3, #0x6
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0xc]
- bl FreeToHeap
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D300
-FUN_0200D300: ; 0x0200D300
- push {r4-r7, lr}
- sub sp, #0x1c
- str r0, [sp, #0x10]
- add r5, r2, #0x0
- mov r0, #0xf
- add r6, r1, #0x0
- add r7, r3, #0x0
- str r5, [sp, #0x0]
- lsl r0, r0, #0x6
- str r0, [sp, #0x4]
- mov r1, #0x0
- ldr r4, [sp, #0x38]
- str r1, [sp, #0x8]
- ldr r2, [sp, #0x10]
- mov r0, #0x24
- add r3, r6, #0x0
- str r4, [sp, #0xc]
- bl GfGfxLoader_LoadCharData
- mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD
- mov r1, #0x1
- add r2, r4, #0x0
- bl AllocAndReadWholeNarcMemberByIdPair
- add r1, sp, #0x18
- str r0, [sp, #0x14]
- bl NNS_G2dGetUnpackedPaletteData
- add r2, sp, #0x20
- ldr r1, [sp, #0x18]
- ldrb r2, [r2, #0x10]
- lsl r3, r7, #0x15
- ldr r1, [r1, #0xc]
- lsl r2, r2, #0x5
- add r1, r1, r2
- add r0, r6, #0x0
- mov r2, #0x20
- lsr r3, r3, #0x10
- bl BG_LoadPlttData
- ldr r1, [sp, #0x14]
- add r0, r4, #0x0
- bl FreeToHeapExplicit
- add r0, sp, #0x20
- ldrb r3, [r0, #0x10]
- cmp r3, #0x1
- bhi _0200D374
- ldrh r0, [r0, #0x14]
- add r5, #0x1e
- lsl r2, r5, #0x10
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x10]
- add r1, r6, #0x0
- lsr r2, r2, #0x10
- str r4, [sp, #0x4]
- bl FUN_0200D378
-_0200D374:
- add sp, #0x1c
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200D378
-FUN_0200D378: ; 0x0200D378
- push {r3-r5, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r1, [sp, #0x20]
- cmp r3, #0x0
- bne _0200D38C
- add r1, #0x21
- lsl r0, r1, #0x10
- b _0200D390
-_0200D38C:
- add r0, r1, #0x2
- lsl r0, r0, #0x10
-_0200D390:
- lsr r1, r0, #0x10
- mov r0, #0x3
- str r2, [sp, #0x0]
- lsl r0, r0, #0x8
- str r0, [sp, #0x4]
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x24]
- add r2, r5, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x24
- add r3, r4, #0x0
- bl GfGfxLoader_LoadCharData
- add sp, #0x10
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200D3B0
-FUN_0200D3B0: ; 0x0200D3B0
- push {r3-r7, lr}
- sub sp, #0x40
- str r1, [sp, #0x14]
- str r2, [sp, #0x18]
- str r3, [sp, #0x1c]
- ldr r2, [sp, #0x1c]
- ldr r6, [sp, #0x5c]
- sub r7, r2, #0x1
- ldr r2, [sp, #0x18]
- ldr r5, [sp, #0x60]
- str r2, [sp, #0x34]
- sub r2, #0x9
- str r2, [sp, #0x34]
- lsl r2, r7, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x0]
- mov r2, #0x1
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- ldr r3, [sp, #0x34]
- str r5, [sp, #0xc]
- add r2, sp, #0x48
- lsl r3, r3, #0x18
- ldrh r2, [r2, #0x1c]
- lsr r3, r3, #0x18
- str r0, [sp, #0x10]
- bl FillBgTilemapRect
- ldr r0, [sp, #0x18]
- str r0, [sp, #0x30]
- sub r0, #0x8
- str r0, [sp, #0x30]
- add r0, sp, #0x48
- ldrh r4, [r0, #0x1c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x30]
- str r5, [sp, #0xc]
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, sp, #0x48
- ldrb r0, [r0, #0x10]
- add r2, r4, #0x2
- lsl r2, r2, #0x10
- str r0, [sp, #0x3c]
- add r0, r0, #0x7
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x18]
- lsr r2, r2, #0x10
- sub r0, r0, #0x7
- str r0, [sp, #0x20]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- ldr r3, [sp, #0x20]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r2, r4, #0x3
- lsl r2, r2, #0x10
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x3c]
- lsr r2, r2, #0x10
- add r0, r1, r0
- str r0, [sp, #0x38]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x38]
- add r2, r4, #0x4
- add r0, r0, #0x1
- str r0, [sp, #0x2c]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x38]
- add r0, r0, #0x2
- str r0, [sp, #0x28]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, r4, #0x5
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x34]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, r4, #0x6
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x30]
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- add r2, r4, #0x7
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- ldr r3, [sp, #0x18]
- add r2, #0x8
- sub r3, r3, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- add r2, #0x9
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r2, #0xb
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- add r2, r4, #0x0
- add r6, r0, r6
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x34]
- str r5, [sp, #0xc]
- add r2, #0xc
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x30]
- str r5, [sp, #0xc]
- add r2, #0xd
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r2, r4, #0x0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x20]
- str r5, [sp, #0xc]
- add r2, #0xe
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x38]
- str r5, [sp, #0xc]
- add r2, #0xf
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r2, r4, #0x0
- ldr r3, [sp, #0x2c]
- str r5, [sp, #0xc]
- add r2, #0x10
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0x28]
- str r5, [sp, #0xc]
- add r4, #0x11
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add sp, #0x40
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D678
-FUN_0200D678: ; 0x0200D678
- push {r3-r7, lr}
- sub sp, #0x28
- str r1, [sp, #0x10]
- add r7, r0, #0x0
- str r2, [sp, #0x14]
- bl GetWindowBgId
- str r0, [sp, #0x20]
- add r0, r7, #0x0
- bl GetWindowX
- sub r0, r0, #0x7
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- add r0, r7, #0x0
- bl GetWindowY
- str r0, [sp, #0x1c]
- mov r0, #0x0
- str r0, [sp, #0x24]
-_0200D6A2:
- ldr r2, [sp, #0x24]
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x24]
- add r3, r2, #0x0
- add r0, r1, r0
- mov r1, #0x6
- mul r3, r1
- ldr r1, [sp, #0x10]
- lsl r0, r0, #0x18
- mov r4, #0x0
- add r5, r1, r3
- lsr r6, r0, #0x18
-_0200D6BA:
- str r6, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x14]
- ldr r3, [sp, #0x18]
- str r0, [sp, #0xc]
- add r2, r4, r5
- add r3, r3, r4
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r7, #0x0]
- ldr r1, [sp, #0x20]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x6
- blo _0200D6BA
- ldr r0, [sp, #0x24]
- add r0, r0, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x24]
- cmp r0, #0x4
- blo _0200D6A2
- add sp, #0x28
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200D6F8
-FUN_0200D6F8: ; 0x0200D6F8
- push {r3-r7, lr}
- sub sp, #0x28
- add r5, r0, #0x0
- str r1, [sp, #0x10]
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl GetWindowBgId
- str r0, [sp, #0x14]
- add r0, sp, #0x30
- ldrb r0, [r0, #0x10]
- cmp r0, #0x1
- bhi _0200D756
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x18]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x1c]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r4, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- bl FUN_0200D3B0
- add r1, r4, #0x0
- add r1, #0x1e
- lsl r1, r1, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- add r2, r6, #0x0
- bl FUN_0200D678
- b _0200D788
-_0200D756:
- add r0, r5, #0x0
- bl GetWindowX
- str r0, [sp, #0x20]
- add r0, r5, #0x0
- bl GetWindowY
- str r0, [sp, #0x24]
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- str r6, [sp, #0x8]
- str r4, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x20]
- ldr r3, [sp, #0x24]
- bl FUN_0200CDD8
-_0200D788:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _0200D794
- add r0, r5, #0x0
- bl CopyWindowToVram
-_0200D794:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200D18C
- add sp, #0x28
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200D7A0
-FUN_0200D7A0: ; 0x0200D7A0
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- add r4, r1, #0x0
- str r2, [sp, #0x10]
- bl GetWindowBgId
- str r0, [sp, #0x14]
- cmp r4, #0x1
- bhi _0200D7FE
- add r0, r5, #0x0
- bl GetWindowX
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r7, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r0, r0, #0x2
- lsl r0, r0, #0x18
- sub r4, #0x9
- lsl r3, r4, #0x18
- add r6, #0xb
- str r1, [sp, #0x0]
- lsl r1, r6, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- b _0200D846
-_0200D7FE:
- add r0, r5, #0x0
- bl GetWindowX
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowY
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowWidth
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl GetWindowHeight
- sub r1, r6, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- add r1, r7, #0x4
- lsl r1, r1, #0x18
- add r0, r0, #0x2
- lsr r1, r1, #0x18
- lsl r0, r0, #0x18
- str r1, [sp, #0x4]
- lsr r0, r0, #0x18
- sub r3, r4, #0x2
- lsl r3, r3, #0x18
- str r0, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x14]
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
-_0200D846:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _0200D852
- add r0, r5, #0x0
- bl ClearWindowTilemapAndCopyToVram
-_0200D852:
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200D858
-FUN_0200D858: ; 0x0200D858
- push {r4-r7, lr}
- sub sp, #0x34
- str r0, [sp, #0x20]
- ldr r0, [r0, #0x0]
- str r1, [sp, #0x24]
- bl BgConfig_GetHeapId
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x20]
- bl GetWindowBgId
- bl BgGetCharPtr
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- ldr r1, _0200D970 ; =0x0000048C
- bl AllocFromHeap
- ldr r1, [sp, #0x24]
- add r4, r0, #0x0
- ldr r0, _0200D974 ; =0x00000404
- add r1, #0x12
- lsl r1, r1, #0x5
- add r0, r4, r0
- add r1, r5, r1
- mov r2, #0x80
- bl memcpy
- ldr r0, [sp, #0x28]
- mov r1, #0x80
- bl AllocFromHeap
- ldr r1, [sp, #0x24]
- mov r2, #0x20
- add r1, #0xa
- lsl r1, r1, #0x5
- str r1, [sp, #0x2c]
- add r1, r5, r1
- add r6, r0, #0x0
- bl memcpy
- ldr r0, [sp, #0x24]
- mov r2, #0x20
- add r0, #0xb
- lsl r7, r0, #0x5
- add r0, r6, #0x0
- add r0, #0x20
- add r1, r5, r7
- bl memcpy
- ldr r1, [sp, #0x2c]
- add r0, r6, #0x0
- add r0, #0x40
- add r1, r5, r1
- mov r2, #0x20
- bl memcpy
- add r0, r6, #0x0
- add r0, #0x60
- add r1, r5, r7
- mov r2, #0x20
- bl memcpy
- mov r5, #0x0
- add r7, r4, #0x4
-_0200D8DA:
- lsl r0, r5, #0x7
- add r0, r7, r0
- add r1, r6, #0x0
- mov r2, #0x80
- bl memcpy
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #0x8
- blo _0200D8DA
- add r0, r6, #0x0
- bl FreeToHeap
- ldr r0, [sp, #0x28]
- mov r1, #0x17
- str r0, [sp, #0x0]
- mov r0, #0x26
- mov r2, #0x0
- add r3, sp, #0x30
- bl GfGfxLoader_GetCharData
- mov r2, #0x80
- add r5, r0, #0x0
- str r2, [sp, #0x0]
- add r0, r4, #0x4
- str r0, [sp, #0x4]
- mov r3, #0x10
- str r3, [sp, #0x8]
- str r2, [sp, #0xc]
- mov r1, #0x0
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- str r3, [sp, #0x18]
- str r2, [sp, #0x1c]
- ldr r0, [sp, #0x30]
- add r2, r1, #0x0
- ldr r0, [r0, #0x14]
- bl FUN_0200D148
- add r0, r5, #0x0
- bl FreeToHeap
- ldr r0, [sp, #0x20]
- ldr r1, _0200D978 ; =0x00000484
- str r0, [r4, #0x0]
- ldr r0, [sp, #0x24]
- mov r2, #0x0
- strh r0, [r4, r1]
- add r0, r1, #0x2
- strb r2, [r4, r0]
- add r0, r1, #0x3
- ldrb r3, [r4, r0]
- mov r0, #0x7f
- bic r3, r0
- add r0, r1, #0x3
- strb r3, [r4, r0]
- add r0, r1, #0x4
- ldrb r3, [r4, r0]
- mov r0, #0x3
- bic r3, r0
- add r0, r1, #0x4
- strb r3, [r4, r0]
- ldr r0, _0200D97C ; =FUN_0200DB7C
- add r1, r4, #0x0
- bl FUN_0200CA60
- add r0, r4, #0x0
- mov r1, #0x1
- bl FUN_0200D980
- add r0, r4, #0x0
- add sp, #0x34
- pop {r4-r7, pc}
- nop
-_0200D970: .word 0x0000048C
-_0200D974: .word 0x00000404
-_0200D978: .word 0x00000484
-_0200D97C: .word FUN_0200DB7C
-
- thumb_func_start FUN_0200D980
-FUN_0200D980: ; 0x0200D980
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- ldr r0, [r5, #0x0]
- add r6, r1, #0x0
- bl GetWindowBgId
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetWindowX
- str r0, [sp, #0x18]
- ldr r0, [r5, #0x0]
- bl GetWindowY
- str r0, [sp, #0x1c]
- ldr r0, [r5, #0x0]
- bl GetWindowWidth
- str r0, [sp, #0x20]
- cmp r6, #0x2
- bne _0200DA8A
- ldr r2, _0200DB78 ; =0x00000484
- add r1, r4, #0x0
- ldrh r0, [r5, r2]
- sub r2, #0x80
- add r2, r5, r2
- add r0, #0x12
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- mov r3, #0x80
- ldr r0, [r0, #0x0]
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r7, r0, #0x2
- ldr r0, [sp, #0x20]
- ldr r2, _0200DB78 ; =0x00000484
- add r6, r1, r0
- add r0, r6, #0x1
- str r0, [sp, #0x14]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrh r2, [r5, r2]
- ldr r0, [r5, #0x0]
- ldr r3, [sp, #0x14]
- add r2, #0xa
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- add r6, r6, #0x2
- lsl r3, r6, #0x18
- add r2, #0xb
- lsl r2, r2, #0x10
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x14]
- add r7, r0, #0x3
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0xa
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r6, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0xb
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- ldr r0, [r0, #0x0]
- bl BgCommitTilemapBufferToVram
- add sp, #0x24
- pop {r4-r7, pc}
-_0200DA8A:
- ldr r3, _0200DB78 ; =0x00000484
- add r2, r5, #0x4
- ldrh r0, [r5, r3]
- add r3, r3, #0x3
- add r1, r4, #0x0
- add r0, #0x12
- str r0, [sp, #0x0]
- ldrb r3, [r5, r3]
- ldr r0, [r5, #0x0]
- lsl r3, r3, #0x19
- lsr r3, r3, #0x19
- lsl r3, r3, #0x7
- add r2, r2, r3
- ldr r0, [r0, #0x0]
- mov r3, #0x80
- bl BG_LoadCharTilesData
- cmp r6, #0x0
- beq _0200DB72
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r7, r0, #0x2
- ldr r0, [sp, #0x20]
- ldr r2, _0200DB78 ; =0x00000484
- add r6, r1, r0
- add r0, r6, #0x1
- str r0, [sp, #0x10]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrh r2, [r5, r2]
- ldr r0, [r5, #0x0]
- ldr r3, [sp, #0x10]
- add r2, #0x12
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- add r6, r6, #0x2
- lsl r3, r6, #0x18
- add r2, #0x13
- lsl r2, r2, #0x10
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [sp, #0x1c]
- ldr r3, [sp, #0x10]
- add r7, r0, #0x3
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0x14
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r2, _0200DB78 ; =0x00000484
- ldr r0, [r5, #0x0]
- ldrh r2, [r5, r2]
- lsl r3, r6, #0x18
- ldr r0, [r0, #0x0]
- add r2, #0x15
- lsl r2, r2, #0x10
- add r1, r4, #0x0
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- ldr r0, [r0, #0x0]
- bl BgCommitTilemapBufferToVram
-_0200DB72:
- add sp, #0x24
- pop {r4-r7, pc}
- nop
-_0200DB78: .word 0x00000484
-
- thumb_func_start FUN_0200DB7C
-FUN_0200DB7C: ; 0x0200DB7C
- push {r3-r5, lr}
- add r4, r0, #0x0
- ldr r0, _0200DBE4 ; =0x00000488
- ldrb r2, [r1, r0]
- lsl r2, r2, #0x1e
- lsr r2, r2, #0x1e
- beq _0200DB9E
- cmp r2, #0x1
- bne _0200DB96
- add r0, r1, #0x0
- mov r1, #0x2
- bl FUN_0200D980
-_0200DB96:
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r3-r5, pc}
-_0200DB9E:
- sub r2, r0, #0x2
- ldrb r2, [r1, r2]
- add r3, r2, #0x1
- sub r2, r0, #0x2
- strb r3, [r1, r2]
- ldrb r2, [r1, r2]
- cmp r2, #0x10
- bne _0200DBE0
- mov r3, #0x0
- sub r2, r0, #0x2
- strb r3, [r1, r2]
- sub r2, r0, #0x1
- ldrb r2, [r1, r2]
- mov r4, #0x7f
- bic r2, r4
- sub r4, r0, #0x1
- ldrb r4, [r1, r4]
- sub r0, r0, #0x1
- lsl r4, r4, #0x19
- lsr r4, r4, #0x19
- add r5, r4, #0x1
- mov r4, #0x7
- and r4, r5
- lsl r4, r4, #0x18
- lsr r5, r4, #0x18
- mov r4, #0x7f
- and r4, r5
- orr r2, r4
- strb r2, [r1, r0]
- add r0, r1, #0x0
- add r1, r3, #0x0
- bl FUN_0200D980
-_0200DBE0:
- pop {r3-r5, pc}
- nop
-_0200DBE4: .word 0x00000488
-
- thumb_func_start FUN_0200DBE8
-FUN_0200DBE8: ; 0x0200DBE8
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r1, #0x0
- bl FreeToHeap
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200DBFC
-FUN_0200DBFC: ; 0x0200DBFC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0200DC1C ; =FUN_0200DBE8
- add r1, r4, #0x0
- mov r2, #0x0
- bl FUN_0200CA98
- ldr r1, _0200DC20 ; =0x00000488
- mov r0, #0x3
- ldrb r2, [r4, r1]
- bic r2, r0
- mov r0, #0x1
- orr r0, r2
- strb r0, [r4, r1]
- pop {r4, pc}
- nop
-_0200DC1C: .word FUN_0200DBE8
-_0200DC20: .word 0x00000488
-
- thumb_func_start FUN_0200DC24
-FUN_0200DC24: ; 0x0200DC24
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0200DC44 ; =FUN_0200DBE8
- add r1, r4, #0x0
- mov r2, #0x0
- bl FUN_0200CA98
- ldr r1, _0200DC48 ; =0x00000488
- mov r0, #0x3
- ldrb r2, [r4, r1]
- bic r2, r0
- mov r0, #0x2
- orr r0, r2
- strb r0, [r4, r1]
- pop {r4, pc}
- nop
-_0200DC44: .word FUN_0200DBE8
-_0200DC48: .word 0x00000488
-
- thumb_func_start FUN_0200DC4C
-FUN_0200DC4C: ; 0x0200DC4C
- push {r4-r7, lr}
- sub sp, #0xc
- str r2, [sp, #0x4]
- ldr r5, [sp, #0x30]
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- str r5, [sp, #0x0]
- bl FUN_0200DD70
- add r4, r0, #0x0
- add r1, r5, #0x0
- bl FUN_0200DDAC
- add r0, r4, #0x0
- bl FUN_0200DDD8
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x8]
- add r0, r4, #0x0
- bl FUN_0200DE30
- add r2, sp, #0x10
- ldrh r1, [r2, #0x18]
- ldrb r2, [r2, #0x1c]
- add r0, r4, #0x0
- bl FUN_0200DE80
- add r2, sp, #0x10
- ldrb r1, [r2, #0x10]
- ldrh r2, [r2, #0x14]
- add r0, r4, #0x0
- bl FUN_0200DFD8
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl BgCommitTilemapBufferToVram
- ldr r0, _0200DCA0 ; =0x0000016F
- add r0, r4, r0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0200DCA0: .word 0x0000016F
-
- thumb_func_start FUN_0200DCA4
-FUN_0200DCA4: ; 0x0200DCA4
- push {r4-r7, lr}
- sub sp, #0xc
- str r2, [sp, #0x4]
- ldr r5, [sp, #0x2c]
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- str r5, [sp, #0x0]
- bl FUN_0200DD70
- add r4, r0, #0x0
- add r1, r5, #0x0
- bl FUN_0200DDAC
- add r0, r4, #0x0
- bl FUN_0200DDD8
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x8]
- add r0, r4, #0x0
- bl FUN_0200DE30
- ldr r1, [sp, #0x28]
- add r0, r4, #0x0
- bl FUN_0200DEC0
- add r2, sp, #0x10
- ldrb r1, [r2, #0x10]
- ldrh r2, [r2, #0x14]
- add r0, r4, #0x0
- bl FUN_0200DFD8
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl BgCommitTilemapBufferToVram
- ldr r0, _0200DCF4 ; =0x0000016F
- add r0, r4, r0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0200DCF4: .word 0x0000016F
-
- thumb_func_start FUN_0200DCF8
-FUN_0200DCF8: ; 0x0200DCF8
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _0200DD6C ; =0x0000016F
- add r4, r1, #0x0
- ldrb r1, [r4, r0]
- cmp r1, #0x1
- beq _0200DD10
- cmp r1, #0x2
- beq _0200DD2E
- cmp r1, #0x3
- beq _0200DD40
- b _0200DD54
-_0200DD10:
- add r0, r4, #0x0
- bl FUN_0200E188
- mov r0, #0x59
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- bl FUN_0200C3DC
- add r0, r4, #0x0
- bl MOD05_021D99F8
- add r0, r5, #0x0
- bl FUN_0200621C
- pop {r3-r5, pc}
-_0200DD2E:
- mov r1, #0x3
- strb r1, [r4, r0]
- sub r0, #0xb
- ldr r0, [r4, r0]
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- bl FUN_02020130
- b _0200DD54
-_0200DD40:
- sub r0, #0xb
- ldr r0, [r4, r0]
- ldr r0, [r0, #0x0]
- bl FUN_0202022C
- cmp r0, #0x6
- bne _0200DD54
- ldr r0, _0200DD6C ; =0x0000016F
- mov r1, #0x0
- strb r1, [r4, r0]
-_0200DD54:
- mov r0, #0x59
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- lsl r1, r1, #0xc
- bl FUN_020201E4
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- pop {r3-r5, pc}
- .balign 4
-_0200DD6C: .word 0x0000016F
-
- thumb_func_start FUN_0200DD70
-FUN_0200DD70: ; 0x0200DD70
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r7, r3, #0x0
- mov r1, #0x17
- add r6, r2, #0x0
- ldr r0, _0200DDA4 ; =FUN_0200DCF8
- ldr r3, [sp, #0x18]
- lsl r1, r1, #0x4
- mov r2, #0x0
- bl FUN_020061E8
- bl FUN_0201B6C8
- ldr r1, _0200DDA8 ; =0x0000016F
- mov r2, #0x0
- strb r2, [r0, r1]
- sub r2, r1, #0x7
- str r5, [r0, r2]
- sub r2, r1, #0x3
- strb r4, [r0, r2]
- sub r2, r1, #0x2
- strb r6, [r0, r2]
- sub r1, r1, #0x1
- strb r7, [r0, r1]
- pop {r3-r7, pc}
- .balign 4
-_0200DDA4: .word FUN_0200DCF8
-_0200DDA8: .word 0x0000016F
-
- thumb_func_start FUN_0200DDAC
-FUN_0200DDAC: ; 0x0200DDAC
- push {r4-r6, lr}
- sub sp, #0x18
- ldr r5, _0200DDD4 ; =UNK_020ECEA8
- add r4, sp, #0x0
- add r6, r0, #0x0
- add r3, r1, #0x0
- add r2, r4, #0x0
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r4!, {r0-r1}
- add r1, r2, #0x0
- add r0, r6, #0x0
- mov r2, #0x1
- bl MOD05_021D959C
- add sp, #0x18
- pop {r4-r6, pc}
- .balign 4
-_0200DDD4: .word UNK_020ECEA8
-
- thumb_func_start FUN_0200DDD8
-FUN_0200DDD8: ; 0x0200DDD8
- push {r3-r4, lr}
- sub sp, #0xc
- mov r1, #0x1
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, _0200DE2C ; =0x00015CD5
- mov r2, #0x31
- str r1, [sp, #0x8]
- mov r1, #0x26
- mov r3, #0x0
- add r4, r0, #0x0
- bl MOD05_021D967C
- ldr r0, _0200DE2C ; =0x00015CD5
- mov r1, #0x26
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- mov r2, #0x2f
- mov r3, #0x0
- bl MOD05_021D96F4
- ldr r0, _0200DE2C ; =0x00015CD5
- mov r1, #0x26
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- mov r2, #0x2e
- mov r3, #0x0
- bl MOD05_021D9708
- mov r0, #0x1
- str r0, [sp, #0x0]
- ldr r0, _0200DE2C ; =0x00015CD5
- mov r1, #0x26
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r2, #0x30
- mov r3, #0x0
- bl MOD05_021D971C
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_0200DE2C: .word 0x00015CD5
-
- thumb_func_start FUN_0200DE30
-FUN_0200DE30: ; 0x0200DE30
- push {r4-r7, lr}
- sub sp, #0x34
- ldr r5, _0200DE7C ; =UNK_020ECEC0
- add r6, r2, #0x0
- add r4, r0, #0x0
- add r7, r1, #0x0
- add r3, sp, #0x0
- mov r2, #0x6
-_0200DE40:
- ldmia r5!, {r0-r1}
- stmia r3!, {r0-r1}
- sub r2, r2, #0x1
- bne _0200DE40
- ldr r0, [r5, #0x0]
- str r0, [r3, #0x0]
- add r0, r7, #0x5
- lsl r1, r0, #0x3
- add r0, sp, #0x0
- strh r1, [r0, #0x0]
- add r1, r6, #0x5
- lsl r1, r1, #0x3
- strh r1, [r0, #0x2]
- add r0, r4, #0x0
- add r1, sp, #0x0
- bl MOD05_021D9820
- mov r1, #0x59
- lsl r1, r1, #0x2
- str r0, [r4, r1]
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- mov r0, #0x10
- mov r1, #0x1
- bl GX_EngineBToggleLayers
- add sp, #0x34
- pop {r4-r7, pc}
- nop
-_0200DE7C: .word UNK_020ECEC0
-
- thumb_func_start FUN_0200DE80
-FUN_0200DE80: ; 0x0200DE80
- push {r4-r7, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- ldr r0, _0200DEBC ; =0x00000162
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- add r6, r2, #0x0
- bl FUN_02006D98
- add r7, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r0, sp, #0xc
- add r1, r4, #0x0
- add r2, r6, #0x0
- mov r3, #0x2
- bl FUN_02068C00
- add r0, r5, #0x0
- add r1, sp, #0xc
- bl FUN_0200DEF4
- add r0, r7, #0x0
- bl FUN_020072E8
- add sp, #0x1c
- pop {r4-r7, pc}
- nop
-_0200DEBC: .word 0x00000162
-
- thumb_func_start FUN_0200DEC0
-FUN_0200DEC0: ; 0x0200DEC0
- push {r4-r6, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldr r0, _0200DEF0 ; =0x00000162
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- bl FUN_02006D98
- add r6, r0, #0x0
- add r0, sp, #0x0
- add r1, r4, #0x0
- mov r2, #0x2
- bl FUN_02068B68
- add r0, r5, #0x0
- add r1, sp, #0x0
- bl FUN_0200DEF4
- add r0, r6, #0x0
- bl FUN_020072E8
- add sp, #0x10
- pop {r4-r6, pc}
- nop
-_0200DEF0: .word 0x00000162
-
- thumb_func_start FUN_0200DEF4
-FUN_0200DEF4: ; 0x0200DEF4
- push {r3-r7, lr}
- sub sp, #0x28
- add r5, r0, #0x0
- ldr r0, _0200DFC8 ; =0x00000162
- add r6, r1, #0x0
- mov r1, #0x19
- ldrh r0, [r5, r0]
- lsl r1, r1, #0x8
- bl AllocFromHeap
- add r2, sp, #0x18
- ldr r3, _0200DFCC ; =UNK_020ECE98
- add r4, r0, #0x0
- add r7, r2, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- str r4, [sp, #0x0]
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x2]
- ldrh r2, [r5, r2]
- add r3, r7, #0x0
- bl FUN_02012400
- ldr r3, _0200DFD0 ; =UNK_020ECE88
- add r2, sp, #0x8
- add r7, r2, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- mov r0, #0x32
- lsl r0, r0, #0x6
- add r0, r4, r0
- str r0, [sp, #0x0]
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x2]
- ldrh r2, [r5, r2]
- add r3, r7, #0x0
- bl FUN_02012400
- mov r0, #0x13
- lsl r0, r0, #0x4
- ldr r0, [r5, r0]
- ldr r1, _0200DFD4 ; =0x00015CD5
- bl FUN_020094F0
- bl FUN_02009C5C
- mov r1, #0x1
- str r0, [sp, #0x4]
- bl NNS_G2dGetImageLocation
- mov r1, #0x19
- add r7, r0, #0x0
- add r0, r4, #0x0
- lsl r1, r1, #0x8
- bl DC_FlushRange
- mov r2, #0x19
- add r0, r4, #0x0
- add r1, r7, #0x0
- lsl r2, r2, #0x8
- bl GX_LoadOBJ
- add r0, r4, #0x0
- bl FreeToHeap
- ldr r2, _0200DFC8 ; =0x00000162
- ldrh r0, [r6, #0x0]
- ldrh r1, [r6, #0x4]
- ldrh r2, [r5, r2]
- bl FUN_02012470
- add r4, r0, #0x0
- mov r0, #0x4d
- lsl r0, r0, #0x2
- ldr r0, [r5, r0]
- ldr r1, _0200DFD4 ; =0x00015CD5
- bl FUN_020094F0
- ldr r1, [sp, #0x4]
- bl FUN_02009E54
- mov r1, #0x1
- bl NNS_G2dGetImagePaletteLocation
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x20
- bl DC_FlushRange
- add r0, r4, #0x0
- add r1, r5, #0x0
- mov r2, #0x20
- bl GX_LoadOBJPltt
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x28
- pop {r3-r7, pc}
- nop
-_0200DFC8: .word 0x00000162
-_0200DFCC: .word UNK_020ECE98
-_0200DFD0: .word UNK_020ECE88
-_0200DFD4: .word 0x00015CD5
-
- thumb_func_start FUN_0200DFD8
-FUN_0200DFD8: ; 0x0200DFD8
- push {r4-r6, lr}
- sub sp, #0x10
- ldr r3, _0200E184 ; =0x0000016E
- add r5, r0, #0x0
- ldrb r0, [r5, r3]
- add r4, r1, #0x0
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- add r6, r2, #0x0
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x1
- ldrb r0, [r5, r3]
- sub r1, r3, #0x2
- lsl r2, r2, #0x10
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x2
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x4
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x3
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0xa
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x5
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0xa
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x6
- ldrb r0, [r5, r3]
- lsl r2, r2, #0x10
- sub r1, r3, #0x2
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r2, r6, #0x7
- ldrb r0, [r5, r3]
- sub r1, r3, #0x2
- lsl r2, r2, #0x10
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xa
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r1, [r5, r1]
- ldrb r3, [r5, r3]
- ldr r0, [r5, r0]
- lsr r2, r2, #0x10
- bl FillBgTilemapRect
- ldr r3, _0200E184 ; =0x0000016E
- add r6, #0x8
- ldrb r0, [r5, r3]
- lsl r2, r6, #0x10
- sub r1, r3, #0x2
- add r0, #0xa
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r4, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r5, r3]
- ldrb r1, [r5, r1]
- ldr r0, [r5, r0]
- add r3, #0xa
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- mov r1, #0x5a
- lsl r1, r1, #0x2
- ldr r0, [r5, r1]
- add r1, r1, #0x4
- ldrb r1, [r5, r1]
- bl ScheduleBgTilemapBufferTransfer
- add sp, #0x10
- pop {r4-r6, pc}
- nop
-_0200E184: .word 0x0000016E
-
- thumb_func_start FUN_0200E188
-FUN_0200E188: ; 0x0200E188
- push {r4, lr}
- sub sp, #0x10
- ldr r3, _0200E1CC ; =0x0000016E
- add r4, r0, #0x0
- ldrb r0, [r4, r3]
- mov r2, #0x0
- sub r1, r3, #0x2
- sub r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xc
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- str r2, [sp, #0xc]
- sub r0, r3, #0x6
- sub r3, r3, #0x1
- ldrb r3, [r4, r3]
- ldrb r1, [r4, r1]
- ldr r0, [r4, r0]
- sub r3, r3, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- bl FillBgTilemapRect
- mov r1, #0x5a
- lsl r1, r1, #0x2
- ldr r0, [r4, r1]
- add r1, r1, #0x4
- ldrb r1, [r4, r1]
- bl ScheduleBgTilemapBufferTransfer
- add sp, #0x10
- pop {r4, pc}
- .balign 4
-_0200E1CC: .word 0x0000016E
diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c
index 2986645f..f1a5e525 100644
--- a/arm9/src/bg_window.c
+++ b/arm9/src/bg_window.c
@@ -1366,7 +1366,7 @@ THUMB_FUNC void CopyBgTilemapRectAffine(struct Bg *bg,
}
THUMB_FUNC void FillBgTilemapRect(struct BgConfig *bgConfig,
- u32 bgId,
+ u8 bgId,
u16 fillValue,
u8 x,
u8 y,
diff --git a/arm9/src/unk_0200CABC.c b/arm9/src/unk_0200CABC.c
new file mode 100644
index 00000000..17f646f9
--- /dev/null
+++ b/arm9/src/unk_0200CABC.c
@@ -0,0 +1,1082 @@
+#include "global.h"
+#include "unk_0200CABC.h"
+#include "filesystem.h"
+#include "gf_gfx_loader.h"
+#include "graphic/field_board.naix"
+#include "graphic/winframe.naix"
+#include "pokemon.h"
+#include "render_text.h"
+#include "unk_020061E8.h"
+#include "unk_0200BB14.h"
+#include "unk_0200CA44.h"
+
+const struct UnkStruct_0200CABC_3 UNK_020ECE88 = {
+ 10,
+ 0,
+ 10,
+ 10,
+};
+
+const struct UnkStruct_0200CABC_3 UNK_020ECE98 = {
+ 0,
+ 0,
+ 10,
+ 10,
+};
+
+extern void FUN_02020130(u32 param0, u32 param1);
+extern u32 FUN_0202022C(u32 param0);
+extern void FUN_020201E4(u32 param0, u32 param1);
+extern void FUN_0201FDEC(u32 param0);
+extern void MOD05_021D99F8(struct UnkStruct_0200CABC_2 *param0);
+extern void FUN_0200E188(struct UnkStruct_0200CABC_2 *param0);
+extern void *FUN_0201B6C8(BOOL);
+extern void MOD05_021D959C(
+ struct UnkStruct_0200CABC_2 *param0, void *param1, u32 param2, u32 param3);
+extern void MOD05_021D967C(struct UnkStruct_0200CABC_2 *param0,
+ NarcId narcId,
+ s32 memberId,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6);
+extern void MOD05_021D96F4(
+ struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4);
+extern void MOD05_021D9708(
+ struct UnkStruct_0200CABC_2 *param0, NarcId narcId, s32 memberId, u32 param3, u32 param4);
+extern void MOD05_021D971C(struct UnkStruct_0200CABC_2 *param0,
+ NarcId narcId,
+ s32 memberId,
+ u32 param3,
+ u32 param4,
+ u32 param5);
+extern u32 *MOD05_021D9820(struct UnkStruct_0200CABC_2 *param0, void *);
+extern struct UnkStruct63_021DB450 *FUN_02006D98(u32);
+extern void FUN_020072E8(struct UnkStruct63_021DB450 *param0);
+extern void FUN_02012400(u16, u16, u16, void *, void *);
+extern u32 NNS_G2dGetImageLocation(u32, u32);
+extern void *FUN_02012470(u16, u16, u16);
+extern u32 NNS_G2dGetImagePaletteLocation(u32, u32);
+
+THUMB_FUNC u32 FUN_0200CABC(
+ struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id)
+{
+ if (param3 == 0)
+ {
+ return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME,
+ NARC_winframe_narc_0000_NCGR,
+ bgConfig,
+ layer,
+ numTiles,
+ 0,
+ FALSE,
+ heap_id);
+ }
+
+ return GfGfxLoader_LoadCharData(NARC_GRAPHIC_WINFRAME,
+ NARC_winframe_narc_0001_NCGR,
+ bgConfig,
+ layer,
+ numTiles,
+ 0,
+ FALSE,
+ heap_id);
+}
+
+THUMB_FUNC u32 FUN_0200CAFC(void)
+{
+ return 24;
+}
+
+THUMB_FUNC void FUN_0200CB00(
+ struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id)
+{
+ s32 r1;
+ if (param4 != 0)
+ {
+ r1 = NARC_winframe_narc_0001_NCGR;
+ }
+ else
+ {
+ r1 = NARC_winframe_narc_0000_NCGR;
+ }
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_WINFRAME, r1, bg_config, layer, num_tiles, 0, FALSE, heap_id);
+
+ if (param4 == 2)
+ {
+ r1 = NARC_winframe_narc_0045_NCLR;
+ }
+ else
+ {
+ r1 = NARC_winframe_narc_0024_NCLR;
+ }
+
+ if (layer < 4)
+ {
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 0, param3 << 5, 32, heap_id);
+ return;
+ }
+
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, r1, 4, param3 << 5, 32, heap_id);
+}
+
+THUMB_FUNC void FUN_0200CB6C(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7)
+{
+ FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 1), param2, (u8)(param3 - 1), param4, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 2), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 - 1), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 5), (u8)(param2 + param4), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 7), param2, (u8)(param3 + param5), param4, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 8),
+ (u8)(param2 + param4),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+}
+
+THUMB_FUNC void FUN_0200CCA4(
+ struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num)
+{
+ FUN_0200CB6C(window->bgConfig,
+ GetWindowBgId(window),
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ palette_num,
+ fill_value);
+
+ if (!copy_to_vram)
+ {
+ CopyWindowToVram(window);
+ }
+}
+
+THUMB_FUNC void FUN_0200CCF8(struct Window *window, BOOL copy_to_vram)
+{
+
+ FillBgTilemapRect(window->bgConfig,
+ GetWindowBgId(window),
+ 0,
+ (u8)(GetWindowX(window) - 1),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 2),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+
+ if (!copy_to_vram)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC s32 FUN_0200CD60(s32 param0)
+{
+ return param0 + 2;
+}
+
+THUMB_FUNC s32 FUN_0200CD64(s32 param0)
+{
+ return param0 + 25;
+}
+
+THUMB_FUNC void FUN_0200CD68(
+ struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5)
+{
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), param0, param1, param2, 0, FALSE, param5);
+
+ if (param1 < 4)
+ {
+ GfGfxLoader_GXLoadPal(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 0, param3 << 5, 32, param5);
+ return;
+ }
+
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_WINFRAME, FUN_0200CD64(param4), 4, param3 << 5, 32, param5);
+}
+
+THUMB_FUNC void FUN_0200CDD8(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7)
+{
+ FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 2), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 1), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 2), param2, (u8)(param3 - 1), param4, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 4),
+ (u8)(param2 + param4 + 1),
+ (u8)(param3 - 1),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 5),
+ (u8)(param2 + param4 + 2),
+ (u8)(param3 - 1),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 2), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 1), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 2), (u8)(param3 + param5), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 1), (u8)(param3 + param5), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 14), param2, (u8)(param3 + param5), param4, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 15),
+ (u8)(param2 + param4),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 16),
+ (u8)(param2 + param4 + 1),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 17),
+ (u8)(param2 + param4 + 2),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+}
+
+THUMB_FUNC void FUN_0200D06C(struct Window *window, u32 fill_value, u32 palette_num)
+{
+ FUN_0200CDD8(window->bgConfig,
+ GetWindowBgId(window),
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ (u8)palette_num,
+ (u16)fill_value);
+}
+
+THUMB_FUNC void FUN_0200D0BC(
+ struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num)
+{
+ FUN_0200D06C(window, fill_value, palette_num);
+ if (!copy_to_vram)
+ {
+ CopyWindowToVram(window);
+ }
+
+ FUN_0200D18C(window, fill_value);
+}
+
+THUMB_FUNC void FUN_0200D0E0(struct Window *window, BOOL param1)
+{
+ FillBgTilemapRect(window->bgConfig,
+ GetWindowBgId(window),
+ 0,
+ (u8)(GetWindowX(window) - 2),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 5),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+
+ if (!param1)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC void FUN_0200D148(u8 *param0,
+ u16 param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u8 *param5,
+ u16 param6,
+ u16 param7,
+ u16 param8,
+ u16 param9,
+ u16 param10,
+ u16 param11)
+{
+ struct Bitmap src;
+ src.pixels = param0;
+ src.width = param3;
+ src.height = param4;
+
+ struct Bitmap dst;
+ dst.pixels = param5;
+ dst.width = param6;
+ dst.height = param7;
+
+ BlitBitmapRect4Bit(&src, &dst, param1, param2, param8, param9, param10, param11, 0);
+}
+
+THUMB_FUNC void FUN_0200D18C(struct Window *window, u16 fill_value)
+{
+ u32 heap_id = BgConfig_GetHeapId(window->bgConfig);
+ u8 bg_id = GetWindowBgId(window);
+
+ void *ptr = AllocFromHeap(heap_id, 0x180);
+ void *charptr = BgGetCharPtr(bg_id);
+
+ NNSG2dCharacterData *pCharData;
+ void *st30;
+ void *st2c;
+ st2c = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0022_NCGR, FALSE, &pCharData, heap_id);
+ st30 = pCharData->pRawData;
+
+ for (u8 i = 0; i < 3; i++)
+ {
+ memcpy(ptr + (i << 7), charptr + ((fill_value + 10) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x20), charptr + ((fill_value + 11) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x40), charptr + ((fill_value + 10) << 5), 0x20);
+ memcpy(ptr + ((i << 7) + 0x60), charptr + ((fill_value + 11) << 5), 0x20);
+ }
+
+ FUN_0200D148(st30, 4, 0, 12, 0x30, ptr, 12, 0x30, 1, 0, 12, 0x30);
+ BG_LoadCharTilesData(window->bgConfig, bg_id, ptr, 0x180, (u32)(fill_value + 18));
+ FUN_02002840(fill_value);
+ FreeToHeap(st2c);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_0200D274(
+ struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id)
+{
+
+ NNSG2dCharacterData *pCharData;
+ void *stc = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, FUN_0200CD60(param4), FALSE, &pCharData, heap_id);
+ u8 *ptr = AllocFromHeap(heap_id, 0x240);
+ memcpy(ptr, pCharData->pRawData, 0x240);
+
+ for (u32 r3 = 0; r3 < 0x240; r3++)
+ {
+ u8 r6 = (u8)(ptr[r3] >> 4);
+ u8 r2 = (u8)(ptr[r3] & 0xf);
+ if (r6 == 0)
+ {
+ r6 = param3;
+ }
+ if (r2 == 0)
+ {
+ r2 = param3;
+ }
+
+ ptr[r3] = (u8)(r2 | (r6 << 4));
+ }
+
+ BG_LoadCharTilesData(bg_config, bg_id, (u32 *)ptr, 0x240, param2);
+ FreeToHeap(stc);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_0200D300(struct BgConfig *bg_config,
+ u8 bg_id,
+ u16 numtiles,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u32 heap_id)
+{
+ GfGfxLoader_LoadCharData(NARC_GRAPHIC_FIELD_BOARD,
+ NARC_field_board_narc_0000_NCGR,
+ bg_config,
+ bg_id,
+ numtiles,
+ 0x3C0,
+ FALSE,
+ heap_id);
+
+ NNSG2dPaletteData *pPltData;
+ void *st14;
+ st14 = AllocAndReadWholeNarcMemberByIdPair(
+ NARC_GRAPHIC_FIELD_BOARD, NARC_field_board_narc_0001_NCLR, heap_id);
+ NNS_G2dGetUnpackedPaletteData(st14, &pPltData);
+ BG_LoadPlttData(bg_id, pPltData->pRawData + param4 * 0x20, 0x20, (u16)(param3 << 5));
+ FreeToHeapExplicit(heap_id, st14);
+
+ if (param4 <= 1)
+ {
+ FUN_0200D378(bg_config, bg_id, (u16)(numtiles + 30), param4, param5, heap_id);
+ }
+}
+
+THUMB_FUNC void FUN_0200D378(
+ struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id)
+{
+ if (param3 == 0)
+ {
+ param4 += 33;
+ }
+ else
+ {
+ param4 += 2;
+ }
+
+ GfGfxLoader_LoadCharData(
+ NARC_GRAPHIC_FIELD_BOARD, param4, bg_config, bg_id, numtiles, 0x300, FALSE, heap_id);
+}
+
+THUMB_FUNC void FUN_0200D3B0(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7)
+{
+ FillBgTilemapRect(bgConfig, bgId, param7, (u8)(param2 - 9), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 1), (u8)(param2 - 8), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 2),
+ (u8)(param2 - 7),
+ (u8)(param3 - 1),
+ (u8)(param4 + 7),
+ 1,
+ param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 3), (u8)(param2 + param4), (u8)(param3 - 1), 1, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 4),
+ (u8)(param2 + param4 + 1),
+ (u8)(param3 - 1),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 5),
+ (u8)(param2 + param4 + 2),
+ (u8)(param3 - 1),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 6), (u8)(param2 - 9), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 7), (u8)(param2 - 8), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 8), (u8)(param2 - 1), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 9), (u8)(param2 + param4), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 10), (u8)(param2 + param4 + 1), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 11), (u8)(param2 + param4 + 2), param3, 1, param5, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 12), (u8)(param2 - 9), (u8)(param3 + param5), 1, 1, param6);
+ FillBgTilemapRect(
+ bgConfig, bgId, (u16)(param7 + 13), (u8)(param2 - 8), (u8)(param3 + param5), 1, 1, param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 14),
+ (u8)(param2 - 7),
+ (u8)(param3 + param5),
+ (u8)(param4 + 7),
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 15),
+ (u8)(param2 + param4),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 16),
+ (u8)(param2 + param4 + 1),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+ FillBgTilemapRect(bgConfig,
+ bgId,
+ (u16)(param7 + 17),
+ (u8)(param2 + param4 + 2),
+ (u8)(param3 + param5),
+ 1,
+ 1,
+ param6);
+}
+
+THUMB_FUNC void FUN_0200D678(struct Window *window, u16 param1, u8 param2)
+{
+ u16 i, j;
+ u16 x, y;
+ u8 bg_id;
+
+ bg_id = GetWindowBgId(window);
+ x = (u16)(GetWindowX(window) - 7);
+ y = GetWindowY(window);
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 6; j++)
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ (u16)(param1 + 6 * i + j),
+ (u8)(x + j),
+ (u8)(y + i),
+ 1,
+ 1,
+ param2);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_0200D6F8(struct Window *window, BOOL param1, u16 param2, u8 param3, u8 param4)
+{
+ u8 bg_id = GetWindowBgId(window);
+ if (param4 <= 1)
+ {
+ FUN_0200D3B0(window->bgConfig,
+ bg_id,
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ param3,
+ param2);
+ FUN_0200D678(window, (u16)(param2 + 30), param3);
+ }
+ else
+ {
+ FUN_0200CDD8(window->bgConfig,
+ bg_id,
+ GetWindowX(window),
+ GetWindowY(window),
+ GetWindowWidth(window),
+ GetWindowHeight(window),
+ param3,
+ param2);
+ }
+
+ if (!param1)
+ {
+ CopyWindowToVram(window);
+ }
+
+ FUN_0200D18C(window, param2);
+}
+
+THUMB_FUNC void FUN_0200D7A0(struct Window *window, u32 param1, BOOL param2)
+{
+ u8 bg_id = GetWindowBgId(window);
+ if (param1 <= 1)
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ 0,
+ (u8)(GetWindowX(window) - 9),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 11),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+ }
+ else
+ {
+ FillBgTilemapRect(window->bgConfig,
+ bg_id,
+ 0,
+ (u8)(GetWindowX(window) - 2),
+ (u8)(GetWindowY(window) - 1),
+ (u8)(GetWindowWidth(window) + 4),
+ (u8)(GetWindowHeight(window) + 2),
+ 0);
+ }
+
+ if (!param2)
+ {
+ ClearWindowTilemapAndCopyToVram(window);
+ }
+}
+
+THUMB_FUNC struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1)
+{
+ u32 heap_id = BgConfig_GetHeapId(window->bgConfig);
+ void *charptr = BgGetCharPtr(GetWindowBgId(window));
+
+ struct UnkStruct_0200CABC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200CABC_1));
+ memcpy(ptr->unk004[8], charptr + (param1 + 18) * 32, 0x80);
+ void *ptr2 = AllocFromHeap(heap_id, 0x80);
+ memcpy(ptr2, charptr + (param1 + 10) * 32, 0x20);
+ memcpy(ptr2 + 0x20, charptr + (param1 + 11) * 32, 0x20);
+ memcpy(ptr2 + 0x40, charptr + (param1 + 10) * 32, 0x20);
+ memcpy(ptr2 + 0x60, charptr + (param1 + 11) * 32, 0x20);
+
+ for (u8 i = 0; i < 8; i++)
+ {
+ memcpy(ptr->unk004[i], ptr2, 0x80);
+ }
+ FreeToHeap(ptr2);
+
+ NNSG2dCharacterData *pCharData;
+ void *r5 = GfGfxLoader_GetCharData(
+ NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0023_NCGR, FALSE, &pCharData, heap_id);
+ FUN_0200D148(
+ pCharData->pRawData, 0, 0, 0x10, 0x80, ptr->unk004[0], 0x10, 0x80, 0, 0, 0x10, 0x80);
+ FreeToHeap(r5);
+
+ ptr->unk000 = window;
+ ptr->unk484 = (u16)param1;
+ ptr->unk486 = 0;
+ ptr->unk487 = 0;
+ ptr->unk488 = 0;
+
+ FUN_0200CA60(FUN_0200DB7C, ptr, 0);
+ FUN_0200D980(ptr, 1);
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1)
+{
+ u8 bg_id = GetWindowBgId(param0->unk000);
+ u8 x = GetWindowX(param0->unk000);
+ u8 y = GetWindowY(param0->unk000);
+ u8 width = GetWindowWidth(param0->unk000);
+
+ if (param1 == 2)
+ {
+ BG_LoadCharTilesData(param0->unk000->bgConfig,
+ bg_id,
+ (u32 *)param0->unk004[8],
+ 0x80,
+ (u32)(param0->unk484 + 18));
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 10),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 11),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 10),
+ (u8)(x + width + 1),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 11),
+ (u8)(x + width + 2),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id);
+ return;
+ }
+
+ BG_LoadCharTilesData(param0->unk000->bgConfig,
+ bg_id,
+ (u32 *)param0->unk004[param0->unk487],
+ 0x80,
+ (u32)(param0->unk484 + 18));
+ if (param1 != 0)
+ {
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 18),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 19),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 20),
+ (u8)(x + width + 1),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(param0->unk000->bgConfig,
+ bg_id,
+ (u16)(param0->unk484 + 21),
+ (u8)(x + width + 2),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ BgCommitTilemapBufferToVram(param0->unk000->bgConfig, bg_id);
+ }
+}
+
+THUMB_FUNC void FUN_0200DB7C(u32 param0, void *param1)
+{
+ struct UnkStruct_0200CABC_1 *r1 = (struct UnkStruct_0200CABC_1 *)param1;
+
+ if (r1->unk488 != 0)
+ {
+ if (r1->unk488 == 1)
+ {
+ FUN_0200D980(r1, 2);
+ }
+ FUN_0200CAB4((s32)param0);
+ return;
+ }
+
+ r1->unk486++;
+ if (r1->unk486 == 16)
+ {
+ r1->unk486 = 0;
+ r1->unk487 = (r1->unk487 + 1) & 7;
+ FUN_0200D980(r1, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0200DBE8(u32 param0, void *param1)
+{
+ FreeToHeap(param1);
+ FUN_0200CAB4((s32)param0);
+}
+
+THUMB_FUNC void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0)
+{
+ FUN_0200CA98(FUN_0200DBE8, param0, 0);
+ param0->unk488 = 1;
+}
+
+THUMB_FUNC void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0)
+{
+ FUN_0200CA98(FUN_0200DBE8, param0, 0);
+ param0->unk488 = 2;
+}
+
+THUMB_FUNC u8 *FUN_0200DC4C(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u16 param6,
+ u8 param7,
+ s32 param8)
+{
+ struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param8);
+ FUN_0200DDAC(r4, (u32)param8);
+ FUN_0200DDD8(r4);
+ FUN_0200DE30(r4, param2, param3);
+ FUN_0200DE80(r4, param6, param7);
+ FUN_0200DFD8(r4, param4, param5);
+ BgCommitTilemapBufferToVram(bg_config, bg_id);
+
+ return &r4->unk16f;
+}
+
+THUMB_FUNC u8 *FUN_0200DCA4(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ struct Pokemon *param6,
+ s32 param7)
+{
+ struct UnkStruct_0200CABC_2 *r4 = FUN_0200DD70(bg_config, bg_id, param2, param3, (u32)param7);
+ FUN_0200DDAC(r4, (u32)param7);
+ FUN_0200DDD8(r4);
+ FUN_0200DE30(r4, param2, param3);
+ FUN_0200DEC0(r4, param6);
+ FUN_0200DFD8(r4, param4, param5);
+ BgCommitTilemapBufferToVram(bg_config, bg_id);
+
+ return &r4->unk16f;
+}
+
+THUMB_FUNC void FUN_0200DCF8(u32 param0, void *param1)
+{
+ struct UnkStruct_0200CABC_2 *unk = (struct UnkStruct_0200CABC_2 *)param1;
+ switch (unk->unk16f)
+ {
+ case 1:
+ FUN_0200E188(unk);
+ FUN_0200C3DC(unk->unk164);
+ MOD05_021D99F8(unk);
+ FUN_0200621C((s32)param0);
+ return;
+ case 2:
+ unk->unk16f = 3;
+ FUN_02020130(*unk->unk164, 1);
+ break;
+ case 3:
+ if (FUN_0202022C(*unk->unk164) == 6)
+ {
+ unk->unk16f = 0;
+ }
+ }
+
+ FUN_020201E4(*unk->unk164, 0x1000);
+ FUN_0201FDEC(unk->unk000);
+}
+
+THUMB_FUNC struct UnkStruct_0200CABC_2 *FUN_0200DD70(
+ struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4)
+{
+ struct UnkStruct_0200CABC_2 *res = FUN_0201B6C8(FUN_020061E8(FUN_0200DCF8, 0x170, 0, param4));
+
+ res->unk16f = 0;
+ res->unk168 = bg_config;
+ res->unk16c = bg_id;
+ res->unk16d = param2;
+ res->unk16e = param3;
+
+ return res;
+}
+
+THUMB_FUNC void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1)
+{
+
+ const u32 UNK_020ECEA8[] = {
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x00,
+ 0x00,
+ };
+ MOD05_021D959C(param0, UNK_020ECEA8, 1, param1);
+}
+
+THUMB_FUNC void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0)
+{
+ MOD05_021D967C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0049_NCLR, 0, 1, 1, 0x15CD5);
+ MOD05_021D96F4(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0047_NCER, 0, 0x15CD5);
+ MOD05_021D9708(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0046_NANR, 0, 0x15CD5);
+ MOD05_021D971C(param0, NARC_GRAPHIC_WINFRAME, NARC_winframe_narc_0048_NCGR, 0, 1, 0x15CD5);
+}
+
+THUMB_FUNC void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2)
+{
+ u32 UNK_020ECEC0[] = {
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x01,
+ 0x015CD5,
+ 0x015CD5,
+ 0x015CD5,
+ 0x015CD5,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ };
+ ((u16 *)UNK_020ECEC0)[0] = (u16)((param1 + 5) * 8);
+ ((u16 *)UNK_020ECEC0)[1] = (u16)((param2 + 5) * 8);
+ param0->unk164 = MOD05_021D9820(param0, UNK_020ECEC0);
+ FUN_0201FDEC(param0->unk000);
+ GX_EngineBToggleLayers(0x10, GX_LAYER_TOGGLE_ON);
+}
+
+THUMB_FUNC void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2)
+{
+ struct UnkStruct63_021DB450 *r7 = FUN_02006D98(param0->unk162);
+ struct SomeDrawPokemonStruct stc;
+ FUN_02068C00(&stc, param1, param2, 2, 0, 0, 0);
+ FUN_0200DEF4(param0, &stc);
+ FUN_020072E8(r7);
+}
+
+THUMB_FUNC void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1)
+{
+ struct UnkStruct63_021DB450 *r6 = FUN_02006D98(param0->unk162);
+ struct SomeDrawPokemonStruct st0;
+ FUN_02068B68(&st0, param1, 2);
+ FUN_0200DEF4(param0, &st0);
+ FUN_020072E8(r6);
+}
+
+THUMB_FUNC void FUN_0200DEF4(
+ struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1)
+{
+ void *r4 = AllocFromHeap(param0->unk162, 0x1900);
+
+ struct UnkStruct_0200CABC_3 st18 = UNK_020ECE98;
+ FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st18, r4);
+
+ struct UnkStruct_0200CABC_3 st8 = UNK_020ECE88;
+ FUN_02012400(param1->unk0, param1->unk2, param0->unk162, &st8, r4 + 0xc80);
+
+ u32 st4 = FUN_02009C5C(FUN_020094F0(param0->unk130, 0x15CD5));
+
+ u32 r7 = NNS_G2dGetImageLocation(st4, 1);
+ DC_FlushRange(r4, 0x1900);
+ GX_LoadOBJ(r4, r7, 0x1900);
+ FreeToHeap(r4);
+ void *res = FUN_02012470(param1->unk0, param1->unk4, param0->unk162);
+
+ u32 r5 =
+ NNS_G2dGetImagePaletteLocation(FUN_02009E54(FUN_020094F0(param0->unk134, 0x15CD5), st4), 1);
+ DC_FlushRange(res, 0x20);
+ GX_LoadOBJPltt(res, r5, 0x20);
+ FreeToHeap(res);
+}
+
+THUMB_FUNC void FUN_0200DFD8(struct UnkStruct_0200CABC_2 *param0, u8 param1, u16 param2)
+{
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ param2,
+ (u8)(param0->unk16d - 1),
+ (u8)(param0->unk16e - 1),
+ 1,
+ 1,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 1),
+ param0->unk16d,
+ (u8)(param0->unk16e - 1),
+ 10,
+ 1,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 2),
+ (u8)(param0->unk16d + 10),
+ (u8)(param0->unk16e - 1),
+ 1,
+ 1,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 4),
+ param0->unk16d,
+ param0->unk16e,
+ 10,
+ 10,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 3),
+ (u8)(param0->unk16d - 1),
+ param0->unk16e,
+ 1,
+ 10,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 5),
+ (u8)(param0->unk16d + 10),
+ param0->unk16e,
+ 1,
+ 10,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 6),
+ (u8)(param0->unk16d - 1),
+ (u8)(param0->unk16e + 10),
+ 1,
+ 1,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 7),
+ param0->unk16d,
+ (u8)(param0->unk16e + 10),
+ 10,
+ 1,
+ param1);
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ (u16)(param2 + 8),
+ (u8)(param0->unk16d + 10),
+ (u8)(param0->unk16e + 10),
+ 1,
+ 1,
+ param1);
+
+ ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c);
+}
+
+THUMB_FUNC void FUN_0200E188(struct UnkStruct_0200CABC_2 *param0)
+{
+ FillBgTilemapRect(param0->unk168,
+ param0->unk16c,
+ 0,
+ (u8)(param0->unk16d - 1),
+ (u8)(param0->unk16e - 1),
+ 12,
+ 12,
+ 0);
+ ScheduleBgTilemapBufferTransfer(param0->unk168, param0->unk16c);
+}
diff --git a/include/bg_window.h b/include/bg_window.h
index 24ed152b..9ac29965 100644
--- a/include/bg_window.h
+++ b/include/bg_window.h
@@ -267,7 +267,7 @@ void CopyBgTilemapRectAffine(struct Bg *bg,
u8 srcHeight,
u8 adjustForSrcDims);
void FillBgTilemapRect(struct BgConfig *bgConfig,
- u32 bgId,
+ u8 bgId,
u16 fillValue,
u8 x,
u8 y,
diff --git a/include/unk_0200CABC.h b/include/unk_0200CABC.h
new file mode 100644
index 00000000..8f96a4b0
--- /dev/null
+++ b/include/unk_0200CABC.h
@@ -0,0 +1,142 @@
+#ifndef POKEDIAMOND_UNK_0200CABC_H
+#define POKEDIAMOND_UNK_0200CABC_H
+
+#include "global.h"
+#include "bg_window.h"
+#include "pokemon.h"
+#include "unk_02008DEC.h"
+
+struct UnkStruct_0200CABC_1
+{
+ struct Window *unk000;
+ u8 unk004[9][0x80];
+ u16 unk484;
+ u8 unk486;
+ u8 unk487 : 7;
+ u8 unk488 : 2;
+};
+
+struct UnkStruct_0200CABC_2
+{
+ u32 unk000;
+ u8 unk004[0x12c];
+ struct UnkStruct_02008DEC_1 *unk130;
+ struct UnkStruct_02008DEC_1 *unk134;
+ u8 unk138[0x2a];
+ u16 unk162;
+ u32 *unk164;
+ struct BgConfig *unk168;
+ u8 unk16c;
+ u8 unk16d;
+ u8 unk16e;
+ u8 unk16f;
+};
+
+struct UnkStruct_0200CABC_3
+{
+ u32 unk00;
+ u32 unk04;
+ u32 unk08;
+ u32 unk0c;
+};
+
+u32 FUN_0200CABC(struct BgConfig *bgConfig, u32 layer, u32 numTiles, u32 param3, u32 heap_id);
+u32 FUN_0200CAFC(void);
+void FUN_0200CB00(
+ struct BgConfig *bg_config, u32 layer, u32 num_tiles, u32 param3, u8 param4, u32 heap_id);
+void FUN_0200CB6C(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7);
+void FUN_0200CCA4(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num);
+void FUN_0200CCF8(struct Window *window, BOOL copy_to_vram);
+s32 FUN_0200CD60(s32 param0);
+s32 FUN_0200CD64(s32 param0);
+void FUN_0200CD68(
+ struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+void FUN_0200CDD8(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7);
+void FUN_0200D06C(struct Window *window, u32 fill_value, u32 palette_num);
+void FUN_0200D0BC(struct Window *window, BOOL copy_to_vram, u16 fill_value, u8 palette_num);
+void FUN_0200D0E0(struct Window *window, BOOL param1);
+void FUN_0200D148(u8 *param0,
+ u16 param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u8 *param5,
+ u16 param6,
+ u16 param7,
+ u16 param8,
+ u16 param9,
+ u16 param10,
+ u16 param11);
+void FUN_0200D18C(struct Window *window, u16 fill_value);
+void FUN_0200D274(
+ struct BgConfig *bg_config, u8 bg_id, u16 param2, u8 param3, u8 param4, u32 heap_id);
+void FUN_0200D300(struct BgConfig *bg_config,
+ u8 bg_id,
+ u16 numtiles,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u32 heap_id);
+void FUN_0200D378(
+ struct BgConfig *bg_config, u8 bg_id, u16 numtiles, u8 param3, u16 param4, u32 heap_id);
+void FUN_0200D3B0(struct BgConfig *bgConfig,
+ u8 bgId,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u16 param7);
+void FUN_0200D678(struct Window *window, u16 param1, u8 param2);
+void FUN_0200D6F8(struct Window *window, BOOL param1, u16 param2, u8 param3, u8 param4);
+void FUN_0200D7A0(struct Window *window, u32 param1, BOOL param2);
+struct UnkStruct_0200CABC_1 *FUN_0200D858(struct Window *window, u32 param1);
+void FUN_0200D980(struct UnkStruct_0200CABC_1 *param0, u32 param1);
+void FUN_0200DB7C(u32 param0, void *param1);
+void FUN_0200DBE8(u32 param0, void *param1);
+void FUN_0200DBFC(struct UnkStruct_0200CABC_1 *param0);
+void FUN_0200DC24(struct UnkStruct_0200CABC_1 *param0);
+u8 *FUN_0200DC4C(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ u16 param6,
+ u8 param7,
+ s32 param8);
+u8 *FUN_0200DCA4(struct BgConfig *bg_config,
+ u8 bg_id,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 param5,
+ struct Pokemon *param6,
+ s32 param7);
+void FUN_0200DCF8(u32 param0, void *param1);
+struct UnkStruct_0200CABC_2 *FUN_0200DD70(
+ struct BgConfig *bg_config, u8 bg_id, u8 param2, u8 param3, u32 param4);
+void FUN_0200DDAC(struct UnkStruct_0200CABC_2 *param0, u32 param1);
+void FUN_0200DDD8(struct UnkStruct_0200CABC_2 *param0);
+void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 param2);
+void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2);
+void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1);
+void FUN_0200DEF4(struct UnkStruct_0200CABC_2 *param0, struct SomeDrawPokemonStruct *param1);
+void FUN_0200DFD8(struct UnkStruct_0200CABC_2 *param0, u8 param1, u16 param2);
+void FUN_0200E188(struct UnkStruct_0200CABC_2 *param0);
+
+#endif // POKEDIAMOND_UNK_0200CABC_H