BROKEN: makelcf primitive state

This commit is contained in:
Scott Norton
2020-04-28 16:47:28 -04:00
parent 7c3d1b806b
commit 0424ad3e86
7 changed files with 408 additions and 162 deletions

View File

@@ -144,11 +144,9 @@ $(BUILD_DIR)/%.o: %.s
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
$(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT)
$(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES)
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill=0xFF $< $@
cp $(ROM:%.bin=%.sbin) $@
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)

View File

@@ -1,49 +1,365 @@
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
.dtcm.bss (RWX) : ORIGIN=0x0380770C, LENGTH=0
.ewram (RW) : ORIGIN=0x06000000, LENGTH=0
.autoload (R) : ORIGIN=0x023A92F8, LENGTH=0
MEMORY
{
arm7 (RWX) : ORIGIN = 0x02380000, LENGTH = 0x0 > arm7.sbin
MAIN (RWX) : ORIGIN = 0x027e0000, LENGTH = 0x0 >> arm7.sbin
WRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x0 >> arm7.sbin
EXT (RWX) : ORIGIN = 0x06000000, LENGTH = 0x0 >> arm7.sbin
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> arm7.sbin
arm7_defs (RW) : ORIGIN = AFTER(arm7), LENGTH = 0x0 > arm7_defs.sbin
arm7_table (RW) : ORIGIN = AFTER(arm7), LENGTH = 0x0 > arm7_table.sbin
arena.MAIN (RW) : ORIGIN = AFTER(arm7), LENGTH = 0x0
check.WORKRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x18000 > workram.check
}
SECTIONS {
SECTIONS
{
#include "undefined_syms.txt"
.text : AT (0x0) {
crt0.o (.text)
} > .text
.arm7:
{
ALIGNALL(4); . = ALIGN(4);
.sbss : {
SDK_STATIC_BSS_START = .;
SDK_STATIC_BSS_END = .;
} > .sbss
SDK_AUTOLOAD_START = .;
.itcm : AT (0x1b0) {
itcm.o (.text)
} > .itcm
.dtcm : AT (0x28C) {
dtcm.o (.text)
libsyscall.o (.text)
dtcm2.o (.text)
dtcm_data.o (.data)
} > .dtcm
.ewram : AT (0xF998) {
ext.o (.text)
} > .ewram
SDK_STATIC_START =.;
SDK_STATIC_TEXT_START =.;
.autoload : AT (0x292F8) {
WRITEW SDK_AUTOLOAD_ITCM_START;
WRITEW SDK_AUTOLOAD_ITCM_SIZE;
WRITEW SDK_AUTOLOAD_ITCM_BSS_SIZE;
WRITEW SDK_AUTOLOAD_DTCM_START;
WRITEW SDK_AUTOLOAD_DTCM_SIZE;
WRITEW SDK_AUTOLOAD_DTCM_BSS_SIZE;
WRITEW SDK_AUTOLOAD_EXT_START;
WRITEW SDK_AUTOLOAD_EXT_SIZE;
WRITEW SDK_AUTOLOAD_EXT_BSS_SIZE;
} > .autoload
OBJECT(_start,*)
crt0.o (.text)
crt0.o (.text)
. = ALIGN(4);
* (.exception)
. = ALIGN(4);
SDK_STATIC_ETABLE_START =.;
EXCEPTION
SDK_STATIC_ETABLE_END =.;
. = ALIGN(4);
crt0.o (.init)
. = ALIGN(4);
crt0.o (.rodata)
. = ALIGN(4);
SDK_STATIC_SINIT_START =.;
crt0.o (.ctor)
WRITEW 0;
SDK_STATIC_SINIT_END =.;
. = ALIGN(4);
SDK_STATIC_TEXT_END =.;
SDK_STATIC_DATA_START =.;
. = ALIGN(4);
crt0.o (.sdata)
. = ALIGN(4);
crt0.o (.data)
. = ALIGN(4);
. = ALIGN(4);
SDK_STATIC_DATA_END =.;
SDK_STATIC_END =.;
SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START;
SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START;
SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
__sinit__ = SDK_STATIC_SINIT_START;
__exception_table_start__ = SDK_STATIC_ETABLE_START;
__exception_table_end__ = SDK_STATIC_ETABLE_END;
} > arm7
.arm7.bss:
{
ALIGNALL(4); . = ALIGN(4);
SDK_STATIC_BSS_START =.;
crt0.o (.sbss)
. = ALIGN(4);
crt0.o (.bss)
. = ALIGN(4);
. = ALIGN(4);
SDK_STATIC_BSS_END = .;
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
} >> arm7
SDK_AUTOLOAD.MAIN.START = 0x027e0000;
SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START;
SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START;
SDK_AUTOLOAD.MAIN.SIZE = 0;
SDK_AUTOLOAD.MAIN.BSS_SIZE = 0;
SDK_AUTOLOAD.WRAM.START = 0x037f8000;
SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START;
SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START;
SDK_AUTOLOAD.WRAM.SIZE = 0;
SDK_AUTOLOAD.WRAM.BSS_SIZE = 0;
SDK_AUTOLOAD_START = SDK_STATIC_END;
SDK_AUTOLOAD_SIZE = 0;
SDK_AUTOLOAD_NUMBER = 3;
.MAIN:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD_MAIN_ID =0;
SDK_AUTOLOAD.MAIN.ID =0;
SDK_AUTOLOAD.MAIN.START =.;
SDK_AUTOLOAD.MAIN.TEXT_START =.;
itcm.o (.text)
. = ALIGN(4);
itcm.o (.rodata)
. = ALIGN(4);
SDK_AUTOLOAD.MAIN.TEXT_END =.;
SDK_AUTOLOAD.MAIN.DATA_START =.;
. = ALIGN(4);
itcm.o (.sdata)
. = ALIGN(4);
itcm.o (.data)
. = ALIGN(4);
SDK_AUTOLOAD.MAIN.DATA_END =.;
SDK_AUTOLOAD.MAIN.END =.;
SDK_AUTOLOAD.MAIN.TEXT_SIZE = SDK_AUTOLOAD.MAIN.TEXT_END - SDK_AUTOLOAD.MAIN.TEXT_START;
SDK_AUTOLOAD.MAIN.DATA_SIZE = SDK_AUTOLOAD.MAIN.DATA_END - SDK_AUTOLOAD.MAIN.DATA_START;
SDK_AUTOLOAD.MAIN.SIZE = SDK_AUTOLOAD.MAIN.END - SDK_AUTOLOAD.MAIN.START;
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.MAIN.SIZE;
} > MAIN
.MAIN.bss:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD.MAIN.BSS_START = .;
itcm.o (.sbss)
. = ALIGN(4);
itcm.o (.bss)
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.MAIN.BSS_END = .;
SDK_AUTOLOAD.MAIN.BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_END - SDK_AUTOLOAD.MAIN.BSS_START;
} >> MAIN
.WRAM:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD_WRAM_ID =1;
SDK_AUTOLOAD.WRAM.ID =1;
SDK_AUTOLOAD.WRAM.START =.;
SDK_AUTOLOAD.WRAM.TEXT_START =.;
dtcm.o (.text)
libsyscall.o (.text)
dtcm2.o (.text)
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.WRAM.TEXT_END =.;
SDK_AUTOLOAD.WRAM.DATA_START =.;
. = ALIGN(4);
. = ALIGN(4);
dtcm_data.o (.data)
. = ALIGN(4);
SDK_AUTOLOAD.WRAM.DATA_END =.;
SDK_AUTOLOAD.WRAM.END =.;
SDK_AUTOLOAD.WRAM.TEXT_SIZE = SDK_AUTOLOAD.WRAM.TEXT_END - SDK_AUTOLOAD.WRAM.TEXT_START;
SDK_AUTOLOAD.WRAM.DATA_SIZE = SDK_AUTOLOAD.WRAM.DATA_END - SDK_AUTOLOAD.WRAM.DATA_START;
SDK_AUTOLOAD.WRAM.SIZE = SDK_AUTOLOAD.WRAM.END - SDK_AUTOLOAD.WRAM.START;
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.WRAM.SIZE;
} > WRAM
.WRAM.bss:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD.WRAM.BSS_START = .;
. = ALIGN(4);
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.WRAM.BSS_END = .;
SDK_AUTOLOAD.WRAM.BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_END - SDK_AUTOLOAD.WRAM.BSS_START;
} >> WRAM
.EXT:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD_EXT_ID =2;
SDK_AUTOLOAD.EXT.ID =2;
SDK_AUTOLOAD.EXT.START =.;
SDK_AUTOLOAD.EXT.TEXT_START =.;
ext.o (.text)
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.EXT.TEXT_END =.;
SDK_AUTOLOAD.EXT.DATA_START =.;
. = ALIGN(4);
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.EXT.DATA_END =.;
SDK_AUTOLOAD.EXT.END =.;
SDK_AUTOLOAD.EXT.TEXT_SIZE = SDK_AUTOLOAD.EXT.TEXT_END - SDK_AUTOLOAD.EXT.TEXT_START;
SDK_AUTOLOAD.EXT.DATA_SIZE = SDK_AUTOLOAD.EXT.DATA_END - SDK_AUTOLOAD.EXT.DATA_START;
SDK_AUTOLOAD.EXT.SIZE = SDK_AUTOLOAD.EXT.END - SDK_AUTOLOAD.EXT.START;
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.EXT.SIZE;
} > EXT
.EXT.bss:
{
ALIGNALL(4); . = ALIGN(4);
SDK_AUTOLOAD.EXT.BSS_START = .;
. = ALIGN(4);
. = ALIGN(4);
. = ALIGN(4);
SDK_AUTOLOAD.EXT.BSS_END = .;
SDK_AUTOLOAD.EXT.BSS_SIZE = SDK_AUTOLOAD.EXT.BSS_END - SDK_AUTOLOAD.EXT.BSS_START;
} >> EXT
SDK_AUTOLOAD_MAIN_START = SDK_AUTOLOAD.MAIN.START;
SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END;
SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END;
SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE;
SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE;
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
.binary.AUTOLOAD_INFO:
{
WRITEW ADDR(.MAIN);
WRITEW SDK_AUTOLOAD.MAIN.SIZE;
WRITEW SDK_AUTOLOAD.MAIN.BSS_SIZE;
WRITEW ADDR(.WRAM);
WRITEW SDK_AUTOLOAD.WRAM.SIZE;
WRITEW SDK_AUTOLOAD.WRAM.BSS_SIZE;
WRITEW ADDR(.EXT);
WRITEW SDK_AUTOLOAD.EXT.SIZE;
WRITEW SDK_AUTOLOAD.EXT.BSS_SIZE;
} > binary.AUTOLOAD_INFO
SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE;
SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
SDK_OVERLAY_NUMBER = 0;
.arena.MAIN:
{
. = ALIGN(4);
SDK_SECTION_ARENA_START =.;
} > arena.MAIN
.arm7_defs:
{
WRITEW ADDR(.arm7);
WRITEW _start;
WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE;
WRITEW _start_AutoloadDoneCallback;
} > arm7_defs
.arm7_table:
{
} > arm7_table
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END;
SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END;
SDK_IRQ_STACKSIZE = 512;
SDK_SYS_STACKSIZE = 1024;
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
.check.WORKRAM:
{
. = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
} > check.WORKRAM
}

View File

@@ -1,6 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
.global ARM7AutoLoad
.global _start_AutoloadDoneCallback
.section .text
arm_func_start _start
@@ -102,9 +102,9 @@ _02380140:
bcc _02380140
beq _02380110
_02380150:
b ARM7AutoLoad
b _start_AutoloadDoneCallback
_2380154: .word _2380198
ARM7AutoLoad:
_start_AutoloadDoneCallback:
bx lr
arm_func_end FUN_2380100
@@ -135,5 +135,3 @@ _2380198:
.word SDK_AUTOLOAD_START
.word SDK_STATIC_BSS_START
.word SDK_STATIC_BSS_END
.balign 16, 0

View File

@@ -6284,28 +6284,28 @@ _03806664: .word _0380A3F0
arm_func_start FUN_03806668
FUN_03806668: ;@ 0x03806668
ldr pc, _0380666C ;@ =_06006978
_0380666C: .word _06006978
ldr pc, _0380666C ;@ =FUNC_06006978
_0380666C: .word FUNC_06006978
arm_func_start FUN_03806670
FUN_03806670: ;@ 0x03806670
ldr pc, _03806674 ;@ =_060009A4
_03806674: .word _060009A4
ldr pc, _03806674 ;@ =FUNC_060009A4
_03806674: .word FUNC_060009A4
arm_func_start FUN_03806678
FUN_03806678: ;@ 0x03806678
ldr pc, _0380667C ;@ =_06000204
_0380667C: .word _06000204
ldr pc, _0380667C ;@ =FUNC_06000204
_0380667C: .word FUNC_06000204
arm_func_start FUN_03806680
FUN_03806680: ;@ 0x03806680
ldr pc, _03806684 ;@ =_06008CC4
_03806684: .word _06008CC4
ldr pc, _03806684 ;@ =FUNC_06008CC4
_03806684: .word FUNC_06008CC4
arm_func_start FUN_03806688
FUN_03806688: ;@ 0x03806688
ldr pc, _0380668C ;@ =_060001F8
_0380668C: .word _060001F8
ldr pc, _0380668C ;@ =FUNC_060001F8
_0380668C: .word FUNC_060001F8
arm_func_start FUN_03806690
FUN_03806690: ;@ 0x03806690
@@ -6613,8 +6613,8 @@ _03806A8C: .word _0380A4A4
arm_func_start FUN_03806A90
FUN_03806A90: ;@ 0x03806A90
ldr pc, _03806A94 ;@ =_06000798
_03806A94: .word _06000798
ldr pc, _03806A94 ;@ =FUNC_06000798
_03806A94: .word FUNC_06000798
arm_func_start FUN_03806A98
FUN_03806A98: ;@ 0x03806A98

View File

@@ -3,16 +3,6 @@
.section .text
.balign 4, 0
.extern _06019980
.extern _06019988
.extern _060199A8
.extern _060199B8
.extern _060199D8
.extern _060199E8
.extern _06019A08
.extern _0601AA88
.extern _0601AEB4
arm_func_start FUNC_06000000
FUNC_06000000: ; 0x06000000
ldr r1, _0600002C ; =_0601A960
@@ -29588,23 +29578,32 @@ _06019958:
.word 0x00040001
.word 0x00000008
; .section .bss
; .balign 16, 0
; _06019980:
; .space 8
; _06019988:
; .space 32
; _060199A8:
; .space 16
; _060199B8:
; .space 32
; _060199D8:
; .space 16
; _060199E8:
; .space 32
; _06019A08:
; .space 16
; _0601AA88:
; .space 1068
; _0601AEB4:
; .space 92
.section .bss
.balign 16, 0
.global _06019960
_06019960:
.space 32
_06019980:
.space 8
_06019988:
.space 32
_060199A8:
.space 16
_060199B8:
.space 32
_060199D8:
.space 16
_060199E8:
.space 32
_06019A08:
.space 0xF58
.global _0601A960
_0601A960:
.space 0x118
_0601AA88:
.space 0x400
.global _0601AE88
_0601AE88:
.space 0x2C
_0601AEB4:
.space 92

View File

@@ -297,12 +297,12 @@
.extern _0380B064
; .ext
.extern _060001F8
.extern _06000204
.extern _06000798
.extern _060009A4
.extern _06006978
.extern _06008CC4
.extern FUNC_060001F8
.extern FUNC_06000204
.extern FUNC_06000798
.extern FUNC_060009A4
.extern FUNC_06006978
.extern FUNC_06008CC4
.extern _06019960
.extern _0601A960
.extern _0601AE88

View File

@@ -2,51 +2,6 @@
// ???
// DTCM
// EWRAM
SDK_AUTOLOAD_ITCM_BSS_SIZE = 0x00000000;
SDK_SYS_STACKSIZE = 0x00000000;
CONST_34 = 0x00000034;
CONST_3F = 0x0000003F;
SDK_AUTOLOAD_ITCM_SIZE = 0x000000DC;
SDK_IRQ_STACKSIZE = 0x00000400;
SDK_AUTOLOAD_EXT_BSS_SIZE = 0x00001590;
SDK_AUTOLOAD_DTCM_BSS_SIZE = 0x00004220;
SDK_AUTOLOAD_DTCM_SIZE = 0x0000F70C;
SDK_AUTOLOAD_EXT_SIZE = 0x00019960;
SDK_MAIN_ARENA_LO = 0x0225FFA0;
SDK_AUTOLOAD_LIST = 0x023A92F8;
SDK_SECTION_ARENA_EX_START = 0x023E0000;
SDK_AUTOLOAD_ITCM_START = 0x027E0000;
gUnk027FFC20 = 0x027FFC20;
SDK_AUTOLOAD_DTCM_START = 0x037F8000;
FUN_037F90B8 = 0x037F90B8;
FUN_037F9B68 = 0x037F9B68;
FUN_037FB300 = 0x037FB300;
FUN_037FB318 = 0x037FB318;
SVC_SoftReset = 0x038010D4;
SVC_WaitByLoop = 0x038010D8;
SVC_WaitIntr = 0x038010DC;
FUN_038010E6 = 0x038010E6;
SVC_Halt = 0x038010F2;
SVC_Stop = 0x038010F6;
SVC_SoundBias = 0x038010FA;
SVC_SoundBiasSet = 0x038010FE;
SVC_SoundBiasReset = 0x03801106;
SVC_Div = 0x0380110E;
SVC_DivRem = 0x03801112;
SVC_CpuSet = 0x03801118;
SVC_CpuFastSet = 0x0380111C;
SVC_Sqrt = 0x03801120;
SVC_GetCRC16 = 0x03801124;
SVC_IsDebugger = 0x03801128;
SVC_BitUnPack = 0x0380112C;
SVC_LZ77UnCompWram = 0x03801130;
SVC_LZ77UnCompVramWithReadCB = 0x03801134;
SVC_HuffUnCompWithReadCB = 0x03801138;
SVC_RLUnCompWram = 0x0380113C;
SVC_RLUnCompVramWithReadCB = 0x03801140;
SVC_GetSineTable = 0x03801144;
SVC_GetPitchTable = 0x03801148;
SVC_GetVolumeTable = 0x0380114C;
_0380770C = 0x0380770C;
_03807714 = 0x03807714;
_03807718 = 0x03807718;
@@ -164,23 +119,3 @@ _0380B808 = 0x0380B808;
_0380B8AC = 0x0380B8AC;
_0380B8D8 = 0x0380B8D8;
_0380B904 = 0x0380B904;
SDK_AUTOLOAD_EXT_START = 0x06000000;
_060001F8 = 0x060001F8;
_06000204 = 0x06000204;
_06000798 = 0x06000798;
_060009A4 = 0x060009A4;
_06006978 = 0x06006978;
_06008CC4 = 0x06008CC4;
_06019960 = 0x06019960;
_06019980 = 0x06019980;
_06019988 = 0x06019988;
_060199A8 = 0x060199A8;
_060199B8 = 0x060199B8;
_060199D8 = 0x060199D8;
_060199E8 = 0x060199E8;
_06019A08 = 0x06019A08;
_0601A960 = 0x0601A960;
_0601AA88 = 0x0601AA88;
_0601AE88 = 0x0601AE88;
_0601AEB4 = 0x0601AEB4;
SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_LIST + 0x24;