mirror of
https://github.com/buhman/nds.git
synced 2025-06-18 22:45:34 -04:00
rework build process
This commit is contained in:
parent
3459842128
commit
04cfb2ea0e
27
Makefile
27
Makefile
@ -1,23 +1,16 @@
|
|||||||
OPT = -Os
|
OPT = -Os
|
||||||
|
|
||||||
all: main.nds
|
OBJ = \
|
||||||
|
|
||||||
res/%.h: res/%.data
|
|
||||||
$(BUILD_BINARY_H)
|
|
||||||
|
|
||||||
res/%.pal.h: res/%.data.pal
|
|
||||||
$(BUILD_BINARY_H)
|
|
||||||
|
|
||||||
MAIN_OBJ = \
|
|
||||||
header.o \
|
header.o \
|
||||||
start.o \
|
arm9/arm9.bin.o \
|
||||||
main.o \
|
arm7/arm7.bin.o
|
||||||
res/player.data.o \
|
|
||||||
res/player.data.pal.o \
|
|
||||||
res/bowser.data.o \
|
|
||||||
res/bowser.data.pal.o
|
|
||||||
|
|
||||||
main.elf: $(MAIN_OBJ)
|
all: cartridge.bin
|
||||||
|
|
||||||
include arm9.mk
|
cartridge.elf: $(OBJ)
|
||||||
|
|
||||||
|
TARGET = arm-none-eabi-
|
||||||
|
AARCH = -march=armv4t -mlittle-endian
|
||||||
|
OBJARCH = -O elf32-littlearm -B armv4t
|
||||||
|
LDSCRIPT = cartridge.lds
|
||||||
include common.mk
|
include common.mk
|
||||||
|
11
arm7/Makefile
Normal file
11
arm7/Makefile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
OPT = -Os
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
start.o
|
||||||
|
|
||||||
|
all: arm7.bin
|
||||||
|
|
||||||
|
arm7.elf: $(OBJ)
|
||||||
|
|
||||||
|
include arm7.mk
|
||||||
|
include ../common.mk
|
50
arm7/arm7.lds
Normal file
50
arm7/arm7.lds
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||||
|
OUTPUT_ARCH(arm)
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
ram : ORIGIN = 0x02000000, LENGTH = 4M
|
||||||
|
}
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = ORIGIN(ram) + 0x8000;
|
||||||
|
|
||||||
|
.text ALIGN(4) :
|
||||||
|
{
|
||||||
|
KEEP(*(.text.start))
|
||||||
|
*(.text)
|
||||||
|
*(.text.*)
|
||||||
|
*(.glue_7t)
|
||||||
|
*(.glue_7)
|
||||||
|
*(.vfp11_veneer)
|
||||||
|
*(.v4_bx)
|
||||||
|
} > ram
|
||||||
|
|
||||||
|
.data ALIGN(4) :
|
||||||
|
{
|
||||||
|
*(.data)
|
||||||
|
*(.data.*)
|
||||||
|
} > ram
|
||||||
|
|
||||||
|
.rodata ALIGN(4) :
|
||||||
|
{
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
} > ram
|
||||||
|
|
||||||
|
.ctors ALIGN(4) :
|
||||||
|
{
|
||||||
|
KEEP(*(.ctors))
|
||||||
|
KEEP(*(.ctors.*))
|
||||||
|
} > ram
|
||||||
|
|
||||||
|
.bss ALIGN(4) (NOLOAD) :
|
||||||
|
{
|
||||||
|
*(.bss)
|
||||||
|
*(.bss.*)
|
||||||
|
*(COMMON)
|
||||||
|
} > ram
|
||||||
|
|
||||||
|
INCLUDE "../debug.lds"
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE "../symbols.lds"
|
5
arm7/arm7.mk
Normal file
5
arm7/arm7.mk
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
TARGET = arm-none-eabi-
|
||||||
|
AARCH = -march=armv4t -mlittle-endian
|
||||||
|
CARCH = -march=armv4t -mtune=arm7tdmi -mlittle-endian -mno-thumb-interwork
|
||||||
|
OBJARCH = -O elf32-littlearm -B armv4t
|
||||||
|
LDSCRIPT = arm7.lds
|
4
arm7/start.s
Normal file
4
arm7/start.s
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.section .text.start
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
b _start
|
18
arm9/Makefile
Normal file
18
arm9/Makefile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
OPT = -Os
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
start.o \
|
||||||
|
main.o \
|
||||||
|
../res/player.data.o \
|
||||||
|
../res/player.data.pal.o \
|
||||||
|
../res/bowser.data.o \
|
||||||
|
../res/bowser.data.pal.o
|
||||||
|
|
||||||
|
all: arm9.bin
|
||||||
|
|
||||||
|
arm9.elf: $(OBJ)
|
||||||
|
|
||||||
|
CFLAGS += -I../include
|
||||||
|
|
||||||
|
include arm9.mk
|
||||||
|
include ../common.mk
|
@ -2,63 +2,50 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
|||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
rom : ORIGIN = 0x00000000, LENGTH = 4M
|
|
||||||
ram : ORIGIN = 0x02000000, LENGTH = 4M
|
ram : ORIGIN = 0x02000000, LENGTH = 4M
|
||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = ORIGIN(rom);
|
|
||||||
|
|
||||||
.text.header ALIGN(4) :
|
|
||||||
{
|
|
||||||
KEEP(*(.text.header))
|
|
||||||
} > rom
|
|
||||||
|
|
||||||
. = ORIGIN(ram);
|
. = ORIGIN(ram);
|
||||||
|
|
||||||
.text.arm7 ALIGN(4) :
|
|
||||||
{
|
|
||||||
KEEP(*(.text.7start))
|
|
||||||
} > ram AT> rom
|
|
||||||
|
|
||||||
.text ALIGN(4) :
|
.text ALIGN(4) :
|
||||||
{
|
{
|
||||||
KEEP(*(.text.9start))
|
KEEP(*(.text.start))
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
*(.glue_7t)
|
*(.glue_7t)
|
||||||
*(.glue_7)
|
*(.glue_7)
|
||||||
*(.vfp11_veneer)
|
*(.vfp11_veneer)
|
||||||
*(.v4_bx)
|
*(.v4_bx)
|
||||||
} > ram AT> rom
|
} > ram
|
||||||
|
|
||||||
.data ALIGN(4) :
|
.data ALIGN(4) :
|
||||||
{
|
{
|
||||||
*(.data)
|
*(.data)
|
||||||
*(.data.*)
|
*(.data.*)
|
||||||
} > ram AT> rom
|
} > ram
|
||||||
|
|
||||||
.rodata ALIGN(4) :
|
.rodata ALIGN(4) :
|
||||||
{
|
{
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata.*)
|
*(.rodata.*)
|
||||||
} > ram AT> rom
|
} > ram
|
||||||
|
|
||||||
.ctors ALIGN(4) :
|
.ctors ALIGN(4) :
|
||||||
{
|
{
|
||||||
KEEP(*(.ctors))
|
KEEP(*(.ctors))
|
||||||
KEEP(*(.ctors.*))
|
KEEP(*(.ctors.*))
|
||||||
} > ram AT> rom
|
} > ram
|
||||||
|
|
||||||
.bss ALIGN(4) (NOLOAD) :
|
.bss ALIGN(4) (NOLOAD) :
|
||||||
{
|
{
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
} > ram AT> rom
|
} > ram
|
||||||
|
|
||||||
INCLUDE "debug.lds"
|
INCLUDE "../debug.lds"
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE "symbols.lds"
|
INCLUDE "../symbols.lds"
|
||||||
INCLUDE "addresses_arm9.lds"
|
INCLUDE "addresses.lds"
|
@ -5,10 +5,10 @@
|
|||||||
#include "obj.h"
|
#include "obj.h"
|
||||||
#include "oam.h"
|
#include "oam.h"
|
||||||
|
|
||||||
#include "res/player.h"
|
#include "../res/player.data.h"
|
||||||
#include "res/player.pal.h"
|
#include "../res/player.data.pal.h"
|
||||||
#include "res/bowser.h"
|
#include "../res/bowser.data.h"
|
||||||
#include "res/bowser.pal.h"
|
#include "../res/bowser.data.pal.h"
|
||||||
|
|
||||||
static inline uint16_t rgb565(const uint8_t * buf)
|
static inline uint16_t rgb565(const uint8_t * buf)
|
||||||
{
|
{
|
||||||
@ -430,23 +430,23 @@ void main()
|
|||||||
| DISPCNT__character_obj_mapping_mode__1d_mapping
|
| DISPCNT__character_obj_mapping_mode__1d_mapping
|
||||||
;
|
;
|
||||||
|
|
||||||
uint32_t pal_size = (uint32_t)&_binary_res_player_data_pal_size;
|
uint32_t pal_size = (uint32_t)&_binary_player_data_pal_size;
|
||||||
const uint8_t * pal = (const uint8_t *)&_binary_res_player_data_pal_start;
|
const uint8_t * pal = (const uint8_t *)&_binary_player_data_pal_start;
|
||||||
|
|
||||||
// palette ram
|
// palette ram
|
||||||
for (int i = 0; i < 15; i++) {
|
for (int i = 0; i < 15; i++) {
|
||||||
palette_ram.a.bg.palette[0].color[i] = rgb565(&pal[i * 3]);
|
palette_ram.a.bg.palette[0].color[i] = rgb565(&pal[i * 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t b_pal_size = (uint32_t)&_binary_res_bowser_data_pal_size;
|
uint32_t b_pal_size = (uint32_t)&_binary_bowser_data_pal_size;
|
||||||
const uint8_t * b_pal = (const uint8_t *)&_binary_res_bowser_data_pal_start;
|
const uint8_t * b_pal = (const uint8_t *)&_binary_bowser_data_pal_start;
|
||||||
|
|
||||||
// bowser palette ram
|
// bowser palette ram
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
palette_ram.b.obj.palette[0].color[i] = rgb565(&b_pal[i * 3]);
|
palette_ram.b.obj.palette[0].color[i] = rgb565(&b_pal[i * 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t * data = (const uint8_t *)&_binary_res_player_data_start;
|
const uint8_t * data = (const uint8_t *)&_binary_player_data_start;
|
||||||
|
|
||||||
for (int y = 0; y < 48; y++) {
|
for (int y = 0; y < 48; y++) {
|
||||||
uint8_t a = data[y * 8 + 7];
|
uint8_t a = data[y * 8 + 7];
|
||||||
@ -479,7 +479,7 @@ void main()
|
|||||||
bg_vram.a.screen.offset[0].block[31].u16[32 * 1 + 1] = 4;
|
bg_vram.a.screen.offset[0].block[31].u16[32 * 1 + 1] = 4;
|
||||||
bg_vram.a.screen.offset[0].block[31].u16[32 * 2 + 1] = 5;
|
bg_vram.a.screen.offset[0].block[31].u16[32 * 2 + 1] = 5;
|
||||||
|
|
||||||
const uint8_t * b_data = (const uint8_t *)&_binary_res_bowser_data_start;
|
const uint8_t * b_data = (const uint8_t *)&_binary_bowser_data_start;
|
||||||
|
|
||||||
for (int c_y = 0; c_y < 8; c_y++) {
|
for (int c_y = 0; c_y < 8; c_y++) {
|
||||||
for (int c_x = 0; c_x < 8; c_x++) {
|
for (int c_x = 0; c_x < 8; c_x++) {
|
@ -22,7 +22,7 @@ _fill_loop.\@:
|
|||||||
_fill_break.\@:
|
_fill_break.\@:
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.section .text.9start
|
.section .text.start
|
||||||
.global _start
|
.global _start
|
||||||
_start:
|
_start:
|
||||||
/*
|
/*
|
||||||
@ -52,14 +52,8 @@ _link_bss:
|
|||||||
|
|
||||||
_c_runtime:
|
_c_runtime:
|
||||||
/* set stack pointer */
|
/* set stack pointer */
|
||||||
ldr sp, =0x23ffffc
|
ldr sp, =__stack_end
|
||||||
|
|
||||||
/* jump to main */
|
/* jump to main */
|
||||||
ldr r0, =main
|
ldr r0, =main
|
||||||
bx r0
|
bx r0
|
||||||
|
|
||||||
.section .text.7start
|
|
||||||
.global _7start
|
|
||||||
_7start:
|
|
||||||
mov r1, #0x7
|
|
||||||
b _7start
|
|
51
cartridge.lds
Normal file
51
cartridge.lds
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||||
|
OUTPUT_ARCH(arm)
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
rom : ORIGIN = 0x00000000, LENGTH = 4M
|
||||||
|
}
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0x00000000;
|
||||||
|
|
||||||
|
_start = .;
|
||||||
|
|
||||||
|
.text.header ALIGN(4) :
|
||||||
|
{
|
||||||
|
KEEP(*(.text.header))
|
||||||
|
} AT>rom
|
||||||
|
|
||||||
|
. = 0x02000000;
|
||||||
|
|
||||||
|
.text.arm9 ALIGN(4) :
|
||||||
|
{
|
||||||
|
KEEP(arm9/arm9.bin.o(*))
|
||||||
|
} AT>rom
|
||||||
|
|
||||||
|
. = 0x02000000 + 0x8000;
|
||||||
|
|
||||||
|
.text.arm7 ALIGN(4) :
|
||||||
|
{
|
||||||
|
KEEP(arm7/arm7.bin.o(*))
|
||||||
|
} AT>rom
|
||||||
|
|
||||||
|
/DISCARD/ :
|
||||||
|
{
|
||||||
|
*(.glue_7) *(.glue_7t) *(.vfp11_veneer) *(.v4_bx)
|
||||||
|
*(.ARM.attributes) *(.iplt) *(.rel.iplt) *(.igot.plt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* header symbols */
|
||||||
|
_arm9_offset = LOADADDR(.text.arm9);
|
||||||
|
_arm9_entry = ADDR(.text.arm9);
|
||||||
|
_arm9_addr = ADDR(.text.arm9);
|
||||||
|
_arm9_size = SIZEOF(.text.arm9);
|
||||||
|
|
||||||
|
_arm7_offset = LOADADDR(.text.arm7);
|
||||||
|
_arm7_entry = ADDR(.text.arm7);
|
||||||
|
_arm7_addr = ADDR(.text.arm7);
|
||||||
|
_arm7_size = SIZEOF(.text.arm7);
|
||||||
|
|
||||||
|
_rom_size = SIZEOF(.text.header) + SIZEOF(.text.arm9) + SIZEOF(.text.arm7);
|
||||||
|
_header_size = SIZEOF(.text.header);
|
@ -80,6 +80,12 @@ endef
|
|||||||
|
|
||||||
-include $(shell find -type f -name '*.d')
|
-include $(shell find -type f -name '*.d')
|
||||||
|
|
||||||
|
clean:
|
||||||
|
find -P \
|
||||||
|
-regextype posix-egrep \
|
||||||
|
-regex '.*\.(nds|o|d|bin|elf|gch)$$' \
|
||||||
|
-exec rm {} \;
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.INTERMEDIATE:
|
.INTERMEDIATE:
|
||||||
.SECONDARY:
|
.SECONDARY:
|
||||||
|
6
header.s
6
header.s
@ -1,7 +1,7 @@
|
|||||||
.section .text.header
|
.section .text.header
|
||||||
|
|
||||||
.fill 12,1,0x0 /* Game Title */
|
.ascii "game title " /* Game Title */
|
||||||
.ascii "CODE" /* Game Code */
|
.ascii "NTR1" /* Game Code */
|
||||||
.ascii "00" /* Maker Code */
|
.ascii "00" /* Maker Code */
|
||||||
.byte 0x0 /* Unit Code */
|
.byte 0x0 /* Unit Code */
|
||||||
.byte 0x0 /* Encryption Seed Select */
|
.byte 0x0 /* Encryption Seed Select */
|
||||||
@ -30,7 +30,7 @@
|
|||||||
.long 0x00586000 /* 040001a4 setting for normal commands */
|
.long 0x00586000 /* 040001a4 setting for normal commands */
|
||||||
.long 0x001808F8 /* 040001a4 setting for KEY1 commands */
|
.long 0x001808F8 /* 040001a4 setting for KEY1 commands */
|
||||||
.long 0x00000000 /* Icon/Title offset */
|
.long 0x00000000 /* Icon/Title offset */
|
||||||
.short 0x8e6e /* Secure Area Checksum */
|
.short 0x4bff /* Secure Area Checksum */
|
||||||
.short 0x0d7e /* Secure Area Delay */
|
.short 0x0d7e /* Secure Area Delay */
|
||||||
.long 0x02000a58 /* ARM9 auto load list hook ram address */
|
.long 0x02000a58 /* ARM9 auto load list hook ram address */
|
||||||
.long 0x02380158 /* ARM7 auto load list hook ram address */
|
.long 0x02380158 /* ARM7 auto load list hook ram address */
|
||||||
|
7
patch.py
7
patch.py
@ -43,11 +43,14 @@ assert buf[0x15c] == 0x56
|
|||||||
assert buf[0x15d] == 0xcf
|
assert buf[0x15d] == 0xcf
|
||||||
|
|
||||||
logo_crc = crc16_modbus(buf[0x0c0:0xc0 + 0x9c])
|
logo_crc = crc16_modbus(buf[0x0c0:0xc0 + 0x9c])
|
||||||
print(hex(logo_crc))
|
print("logo", hex(logo_crc))
|
||||||
assert logo_crc == 0xcf56
|
assert logo_crc == 0xcf56
|
||||||
|
|
||||||
header_crc = crc16_modbus(buf[0:0x15e])
|
header_crc = crc16_modbus(buf[0:0x15e])
|
||||||
print(hex(header_crc))
|
print("header", hex(header_crc))
|
||||||
|
|
||||||
|
secure_area_crc = crc16_modbus(buf[0x4000:0x8000])
|
||||||
|
print("secure area", hex(secure_area_crc))
|
||||||
|
|
||||||
import struct
|
import struct
|
||||||
header_crc_b = struct.pack('<H', header_crc)
|
header_crc_b = struct.pack('<H', header_crc)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
python format.py 0x04000000.txt graphics_engine_a 0x1000 > ../graphics_engine_a.h
|
python format.py 0x04000000.txt graphics_engine_a 0x1000 > ../include/graphics_engine_a.h
|
||||||
python format.py 0x04001000.txt graphics_engine_b 0 > ../graphics_engine_b.h
|
python format.py 0x04001000.txt graphics_engine_b 0 > ../include/graphics_engine_b.h
|
||||||
|
|
||||||
make graphics_engine_bits.csv
|
make graphics_engine_bits.csv
|
||||||
python format_bits.py graphics_engine_bits.csv > ../bits.h
|
python format_bits.py graphics_engine_bits.csv > ../include/bits.h
|
||||||
|
18
res/Makefile
Normal file
18
res/Makefile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
OBJ += $(patsubst %.data,%.data.o,$(wildcard *.data))
|
||||||
|
OBJ += $(patsubst %.data.pal,%.data.pal.o,$(wildcard *.data.pal))
|
||||||
|
|
||||||
|
HEADER += $(patsubst %.data,%.data.h,$(wildcard *.data))
|
||||||
|
HEADER += $(patsubst %.data.pal,%.data.pal.h,$(wildcard *.data.pal))
|
||||||
|
|
||||||
|
TARGET=arm-none-eabi-
|
||||||
|
OBJARCH=-O elf32-littlearm -B armv5te
|
||||||
|
|
||||||
|
all: $(OBJ) $(HEADER)
|
||||||
|
|
||||||
|
include ../common.mk
|
||||||
|
|
||||||
|
%.data.h: %.data
|
||||||
|
$(BUILD_BINARY_H)
|
||||||
|
|
||||||
|
%.data.pal.h: %.data.pal
|
||||||
|
$(BUILD_BINARY_H)
|
5
res/bowser.data.h
Normal file
5
res/bowser.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_bowser_data_start __asm("_binary_bowser_data_start");
|
||||||
|
extern uint32_t _binary_bowser_data_end __asm("_binary_bowser_data_end");
|
||||||
|
extern uint32_t _binary_bowser_data_size __asm("_binary_bowser_data_size");
|
5
res/bowser.data.pal.h
Normal file
5
res/bowser.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_bowser_data_pal_start __asm("_binary_bowser_data_pal_start");
|
||||||
|
extern uint32_t _binary_bowser_data_pal_end __asm("_binary_bowser_data_pal_end");
|
||||||
|
extern uint32_t _binary_bowser_data_pal_size __asm("_binary_bowser_data_pal_size");
|
@ -1,5 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include <stdint.h>
|
|
||||||
extern uint32_t _binary_res_bowser_data_start __asm("_binary_res_bowser_data_start");
|
|
||||||
extern uint32_t _binary_res_bowser_data_end __asm("_binary_res_bowser_data_end");
|
|
||||||
extern uint32_t _binary_res_bowser_data_size __asm("_binary_res_bowser_data_size");
|
|
@ -1,5 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include <stdint.h>
|
|
||||||
extern uint32_t _binary_res_bowser_data_pal_start __asm("_binary_res_bowser_data_pal_start");
|
|
||||||
extern uint32_t _binary_res_bowser_data_pal_end __asm("_binary_res_bowser_data_pal_end");
|
|
||||||
extern uint32_t _binary_res_bowser_data_pal_size __asm("_binary_res_bowser_data_pal_size");
|
|
5
res/player.data.h
Normal file
5
res/player.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_player_data_start __asm("_binary_player_data_start");
|
||||||
|
extern uint32_t _binary_player_data_end __asm("_binary_player_data_end");
|
||||||
|
extern uint32_t _binary_player_data_size __asm("_binary_player_data_size");
|
5
res/player.data.pal.h
Normal file
5
res/player.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_player_data_pal_start __asm("_binary_player_data_pal_start");
|
||||||
|
extern uint32_t _binary_player_data_pal_end __asm("_binary_player_data_pal_end");
|
||||||
|
extern uint32_t _binary_player_data_pal_size __asm("_binary_player_data_pal_size");
|
@ -1,5 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include <stdint.h>
|
|
||||||
extern uint32_t _binary_res_player_data_start __asm("_binary_res_player_data_start");
|
|
||||||
extern uint32_t _binary_res_player_data_end __asm("_binary_res_player_data_end");
|
|
||||||
extern uint32_t _binary_res_player_data_size __asm("_binary_res_player_data_size");
|
|
@ -1,5 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include <stdint.h>
|
|
||||||
extern uint32_t _binary_res_player_data_pal_start __asm("_binary_res_player_data_pal_start");
|
|
||||||
extern uint32_t _binary_res_player_data_pal_end __asm("_binary_res_player_data_pal_end");
|
|
||||||
extern uint32_t _binary_res_player_data_pal_size __asm("_binary_res_player_data_pal_size");
|
|
14
symbols.lds
14
symbols.lds
@ -17,17 +17,3 @@ __ctors_link_end = ADDR(.ctors) + SIZEOF(.ctors);
|
|||||||
|
|
||||||
__bss_link_start = ADDR(.bss);
|
__bss_link_start = ADDR(.bss);
|
||||||
__bss_link_end = ADDR(.bss) + SIZEOF(.bss);
|
__bss_link_end = ADDR(.bss) + SIZEOF(.bss);
|
||||||
|
|
||||||
/* header symbols */
|
|
||||||
_arm9_offset = LOADADDR(.text);
|
|
||||||
_arm9_entry = ADDR(.text);
|
|
||||||
_arm9_addr = ADDR(.text);
|
|
||||||
_arm9_size = SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.rodata) + SIZEOF(.ctors);
|
|
||||||
|
|
||||||
_arm7_offset = LOADADDR(.text.arm7);
|
|
||||||
_arm7_entry = ADDR(.text.arm7);
|
|
||||||
_arm7_addr = ADDR(.text.arm7);
|
|
||||||
_arm7_size = SIZEOF(.text.arm7);
|
|
||||||
|
|
||||||
_rom_size = SIZEOF(.text.header) + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.rodata) + SIZEOF(.ctors) + SIZEOF(.text.arm7);
|
|
||||||
_header_size = SIZEOF(.text.header);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user