mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-28 22:50:50 -04:00
arm7 sbss section
This commit is contained in:
+8
-1
@@ -1,5 +1,6 @@
|
||||
MEMORY {
|
||||
.text (RX) : ORIGIN=0x02380000, LENGTH=0
|
||||
.sbss (RWX) : ORIGIN=AFTER(.text), LENGTH=0
|
||||
.itcm (RWX) : ORIGIN=0x027E0000, LENGTH=0
|
||||
.dtcm (RWX) : ORIGIN=0x037F8000, LENGTH=0
|
||||
.ewram (RW) : ORIGIN=0x06000000, LENGTH=0
|
||||
@@ -9,9 +10,15 @@ MEMORY {
|
||||
SECTIONS {
|
||||
#include "undefined_syms.txt"
|
||||
.text : AT (0x0) {
|
||||
arm7_rom.o (.text)
|
||||
crt0.o (.text)
|
||||
} > .text
|
||||
|
||||
.sbss : {
|
||||
SDK_STATIC_BSS_START = .;
|
||||
SDK_STATIC_BSS_END = .;
|
||||
} > .sbss
|
||||
|
||||
SDK_AUTOLOAD_START = .;
|
||||
.itcm : AT (0x1b0) {
|
||||
arm7_rom.o (.itcm)
|
||||
} > .itcm
|
||||
|
||||
@@ -1,150 +1,7 @@
|
||||
/* arm7_rom.s TODO: Disassemble */
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.global ARM7AutoLoad
|
||||
|
||||
.section .text
|
||||
arm_func_start _start
|
||||
|
||||
_start:
|
||||
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 SDK_STATIC_BSS_START
|
||||
_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 _start
|
||||
|
||||
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 SDK_AUTOLOAD_LIST
|
||||
.word SDK_AUTOLOAD_LIST_END
|
||||
.word SDK_AUTOLOAD_START
|
||||
.word SDK_STATIC_BSS_START
|
||||
.word SDK_STATIC_BSS_END
|
||||
arm_func_end FUN_238015C
|
||||
|
||||
.balign 16, 0
|
||||
|
||||
.global SDK_STATIC_BSS_START
|
||||
.global SDK_STATIC_BSS_END
|
||||
SDK_STATIC_BSS_START:
|
||||
SDK_STATIC_BSS_END:
|
||||
|
||||
.global SDK_AUTOLOAD_START
|
||||
SDK_AUTOLOAD_START:
|
||||
.section .itcm
|
||||
.incbin "baserom.nds", 0x30D1B0, 0xDC
|
||||
|
||||
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.global ARM7AutoLoad
|
||||
|
||||
.section .text
|
||||
arm_func_start _start
|
||||
|
||||
_start:
|
||||
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 SDK_STATIC_BSS_START
|
||||
_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 _start
|
||||
|
||||
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
|
||||
arm_func_end FUN_238015C
|
||||
|
||||
_2380198:
|
||||
.word SDK_AUTOLOAD_LIST
|
||||
.word SDK_AUTOLOAD_LIST_END
|
||||
.word SDK_AUTOLOAD_START
|
||||
.word SDK_STATIC_BSS_START
|
||||
.word SDK_STATIC_BSS_END
|
||||
|
||||
.balign 16, 0
|
||||
Reference in New Issue
Block a user