diff options
Diffstat (limited to 'asm')
-rw-r--r-- | asm/arm7_rom.s | 143 | ||||
-rw-r--r-- | asm/arm9overlay.s | 5 | ||||
-rw-r--r-- | asm/entry.s | 5 | ||||
-rw-r--r-- | asm/fat.s | 5 | ||||
-rw-r--r-- | asm/filenametable.s | 2 | ||||
-rw-r--r-- | asm/gap1.s | 4 | ||||
-rw-r--r-- | asm/gap2.s | 4 | ||||
-rw-r--r-- | asm/icon.s | 6 | ||||
-rw-r--r-- | asm/rom3.s | 2 | ||||
-rw-r--r-- | asm/rom_header.s | 20 | ||||
-rw-r--r-- | asm/title.s | 16 | ||||
-rw-r--r-- | asm/unk_10b724.s | 2 | ||||
-rw-r--r-- | asm/unk_339000.s | 2 |
13 files changed, 192 insertions, 24 deletions
diff --git a/asm/arm7_rom.s b/asm/arm7_rom.s index 1a02882d..905dc7e0 100644 --- a/asm/arm7_rom.s +++ b/asm/arm7_rom.s @@ -1,6 +1,145 @@ /* arm7_rom.s TODO: Disassemble */ + .include "asm/macros.inc" + .global ARM7AutoLoad .section .text - .global Entry_ARM7 + arm_func_start Entry_ARM7 + Entry_ARM7: - .incbin "baserom.nds", 0x30D000, 0x2931C + mov ip, #67108864 @ 0x4000000 + str ip, [ip, #520] @ 0x208 + ldr r1, _23800cc + mov r0, #58720256 @ 0x3800000 + cmp r0, r1 + movpl r1, r0 + ldr r2, _23800d0 + mov r0, #0 +_02380020: + cmp r1, r2 + stmltia r1!, {r0} + blt _02380020 + mov r0, #19 + msr CPSR_c, r0 + ldr sp, _23800d4 + mov r0, #18 + msr CPSR_c, r0 + ldr r0, _23800d8 + mov sp, r0 + ldr r1, _23800dc + sub r1, r0, r1 + mov r0, #31 + msr CPSR_fsxc, r0 + sub sp, r1, #4 + ldr r0, _23800e0 + ldr r1, _23800e4 + add r2, r1, #352 @ 0x160 +_02380068: + ldr r3, [r0], #4 + str r3, [r1], #4 + cmp r1, r2 + bmi _02380068 + ldr r0, _23800e8 + add r2, r1, #32 +_02380080: + ldr r3, [r0], #4 + str r3, [r1], #4 + cmp r1, r2 + bmi _02380080 + bl FUN_2380100 + ldr r0, _23800ec + ldr r1, [r0, #12] + ldr r2, [r0, #16] + mov r0, #0 +_023800a4: + cmp r1, r2 + strcc r0, [r1], #4 + bcc _023800a4 + bl FUN_238015C + ldr r1, _23800f0 + ldr r0, _23800f4 + str r0, [r1] + ldr r1, _23800f8 + ldr lr, _23800fc + bx r1 +_23800cc: .word UNK_23801B0 +_23800d0: .word 0x0380ff00 +_23800d4: .word 0x0380ffc0 +_23800d8: .word 0x0380ff80 +_23800dc: .word 0x00000400 +_23800e0: .word 0x023fe940 +_23800e4: .word 0x027ffa80 +_23800e8: .word 0x023fe904 +_23800ec: .word _2380198 +_23800f0: .word 0x0380fffc +_23800f4: .word 0x037f853c +_23800f8: .word 0x037f8468 +_23800fc: .word 0xffff0000 + arm_func_end Entry_ARM7 + + arm_func_start FUN_2380100 +FUN_2380100: + ldr r0, _2380154 + ldr r1, [r0] + ldr r2, [r0, #4] + ldr r3, [r0, #8] +_02380110: + cmp r1, r2 + beq _02380150 + ldr r4, [r1], #4 + ldr r5, [r1], #4 + add r6, r4, r5 +_02380124: + cmp r4, r6 + ldrmi r7, [r3], #4 + strmi r7, [r4], #4 + bmi _02380124 + ldr r5, [r1], #4 + add r6, r4, r5 + mov r7, #0 +_02380140: + cmp r4, r6 + strcc r7, [r4], #4 + bcc _02380140 + beq _02380110 +_02380150: + b ARM7AutoLoad +_2380154: .word _2380198 +ARM7AutoLoad: + bx lr + arm_func_end FUN_2380100 + + arm_func_start FUN_238015C +FUN_238015C: + mov r0, #1 + mov r1, #0 + ldr r2, _2380194 + sub r3, r2, #4194304 @ 0x400000 +_0238016c: + strh r1, [r2] + ldrh ip, [r3] + cmp r1, ip + movne r0, #2 + bne _0238018c + add r1, r1, #1 + cmp r1, #2 + bne _0238016c +_0238018c: + strh r0, [r2] + bx lr +_2380194: .word 0x027ffffa +_2380198: + .word UNK_23A92F8 + .word UNK_23A92FC + .word UNK_23801B0 + .word UNK_23801B0 + .word UNK_23801B0 + .word 0x00000000 + arm_func_end FUN_238015C + +UNK_23801B0: + .incbin "baserom.nds", 0x30D1B0, 0x29148 + +UNK_23A92F8: + .incbin "baserom.nds", 0x3362F8, 0x24 + +UNK_23A92FC: diff --git a/asm/arm9overlay.s b/asm/arm9overlay.s new file mode 100644 index 00000000..70356c52 --- /dev/null +++ b/asm/arm9overlay.s @@ -0,0 +1,5 @@ + .text + + .global ARM9Overlay +ARM9Overlay: + .incbin "baserom.nds", 0x10B800, 0xAE0 diff --git a/asm/entry.s b/asm/entry.s index bd6ed223..90d233bb 100644 --- a/asm/entry.s +++ b/asm/entry.s @@ -188,9 +188,10 @@ _02000A50: blt _02000A50 b _02000A0C _02000A6C: - b _2000A74 + b ARM9AutoLoad .pool -_2000A74: + .global ARM9AutoLoad +ARM9AutoLoad: bx lr arm_func_end do_autoload diff --git a/asm/fat.s b/asm/fat.s new file mode 100644 index 00000000..a2d7fb77 --- /dev/null +++ b/asm/fat.s @@ -0,0 +1,5 @@ + .text + + .global FileAllocationTable +FileAllocationTable: + .incbin "baserom.nds", 0x337A00, 0xB20 diff --git a/asm/filenametable.s b/asm/filenametable.s index 0ebb43f8..367efd68 100644 --- a/asm/filenametable.s +++ b/asm/filenametable.s @@ -1,4 +1,4 @@ .text .global FileNameTable FileNameTable: - .incbin "baserom.nds", 0x336400, 0x3cc9c00 @0x157F + .incbin "baserom.nds", 0x336400, 0x157F diff --git a/asm/gap1.s b/asm/gap1.s deleted file mode 100644 index b71ccde3..00000000 --- a/asm/gap1.s +++ /dev/null @@ -1,4 +0,0 @@ - .section .text - .rept 0x1E0 - .byte 0xFF - .endr diff --git a/asm/gap2.s b/asm/gap2.s deleted file mode 100644 index 4af77b6d..00000000 --- a/asm/gap2.s +++ /dev/null @@ -1,4 +0,0 @@ - .text - .rept 0x336400-0x33631c - .byte 255 - .endr diff --git a/asm/icon.s b/asm/icon.s new file mode 100644 index 00000000..58be77f1 --- /dev/null +++ b/asm/icon.s @@ -0,0 +1,6 @@ + .text + .2byte 0x0001 + .2byte 0x048B + .space 0x1C + .incbin "graphics/icon.4bpp" + .incbin "graphics/icon.gbapal" @@ -2,4 +2,4 @@ .section .text - .incbin "baserom.nds", 0x10B724, 0x2016FC + .incbin "baserom.nds", 0x10C400, 0x200A20 diff --git a/asm/rom_header.s b/asm/rom_header.s index 9b63d7e5..3e6ab02d 100644 --- a/asm/rom_header.s +++ b/asm/rom_header.s @@ -64,25 +64,25 @@ FileNameTableOffset: .word _FileNameTableSegmentRomStart .global FileNameTableSize FileNameTableSize: - .word 0x0000157F + .word _FileNameTableSegmentSize .global FATOffset FATOffset: - .word 0x00337A00 + .word _FileAllocationTableSegmentRomStart .global FATSize FATSize: - .word 0x00000B20 + .word _FileAllocationTableSegmentSize .global ARM9OverlayOffset ARM9OverlayOffset: - .word 0x0010B800 + .word _ARM9OverlaySegmentRomStart .global ARM9OverlaySize ARM9OverlaySize: - .word 0x00000AE0 + .word _ARM9OverlaySegmentSize .global ARM7OverlayOffset ARM7OverlayOffset: - .word 0x00000000 + .word _ARM7OverlaySegmentRomStart .global ARM7OverlaySize ARM7OverlaySize: - .word 0x00000000 + .word _ARM7OverlaySegmentSize .global ROMControlInfo1 ROMControlInfo1: .word 0x00416657 @@ -91,7 +91,7 @@ ROMControlInfo2: .word 0x081808F8 .global IconTitleOffset IconTitleOffset: - .word 0x00338600 + .word _IconSegmentRomStart .global SecureAreaCC SecureAreaCC: .short 0x5931 @@ -100,10 +100,10 @@ ROMControlInfo3: .short 0x0D7E .global ARM9AutoLoadHook ARM9AutoLoadHook: - .word 0x02000A74 + .word ARM9AutoLoad .global ARM7AutoLoadHook ARM7AutoLoadHook: - .word 0x02380158 + .word ARM7AutoLoad .global SecureAreaDisable SecureAreaDisable: .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/title.s b/asm/title.s new file mode 100644 index 00000000..7410b8b2 --- /dev/null +++ b/asm/title.s @@ -0,0 +1,16 @@ + .text + .global ROMTitles +ROMTitles: + @ UTF16LE has a leading short that should be skipped + .incbin "data/title/title.txt", 2 + .space 0x100-(.-ROMTitles) + .incbin "data/title/title.txt", 2 + .space 0x200-(.-ROMTitles) + .incbin "data/title/title.txt", 2 + .space 0x300-(.-ROMTitles) + .incbin "data/title/title.txt", 2 + .space 0x400-(.-ROMTitles) + .incbin "data/title/title.txt", 2 + .space 0x500-(.-ROMTitles) + .incbin "data/title/title.txt", 2 + .space 0x600-(.-ROMTitles) diff --git a/asm/unk_10b724.s b/asm/unk_10b724.s new file mode 100644 index 00000000..86695021 --- /dev/null +++ b/asm/unk_10b724.s @@ -0,0 +1,2 @@ + .text + .incbin "baserom.nds", 0x10B724, 0xC diff --git a/asm/unk_339000.s b/asm/unk_339000.s new file mode 100644 index 00000000..b517c6d2 --- /dev/null +++ b/asm/unk_339000.s @@ -0,0 +1,2 @@ + .text + .incbin "baserom.nds", 0x339000, 0x371CEC0 |