summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
Diffstat (limited to 'asm')
-rw-r--r--asm/arm7_rom.s143
-rw-r--r--asm/arm9overlay.s5
-rw-r--r--asm/entry.s5
-rw-r--r--asm/fat.s5
-rw-r--r--asm/filenametable.s2
-rw-r--r--asm/gap1.s4
-rw-r--r--asm/gap2.s4
-rw-r--r--asm/icon.s6
-rw-r--r--asm/rom3.s2
-rw-r--r--asm/rom_header.s20
-rw-r--r--asm/title.s16
-rw-r--r--asm/unk_10b724.s2
-rw-r--r--asm/unk_339000.s2
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"
diff --git a/asm/rom3.s b/asm/rom3.s
index 9bbb7b7a..0ebf4f62 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -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