kirby64/kirby.us.ld

305 lines
8.5 KiB
Plaintext
Raw Normal View History

2020-05-23 06:09:52 -04:00
OUTPUT_ARCH (mips)
#define BEGIN_SEG(name, addr) \
2020-05-23 07:27:26 -04:00
_##name##SegmentStart = ADDR(.name); \
_##name##SegmentRomStart = __romPos; \
.name addr : AT(__romPos)
2020-05-23 06:09:52 -04:00
2020-08-14 09:09:51 -04:00
#define MARK(name) \
_##name##RomStart = __romPos;
2020-05-23 06:09:52 -04:00
#define END_SEG(name) \
2020-05-23 07:27:26 -04:00
_##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
_##name##SegmentRomEnd = __romPos + SIZEOF(.name); \
__romPos += SIZEOF(.name);
2020-05-23 06:09:52 -04:00
2020-07-05 22:29:27 -04:00
#define BEGIN_NOLOAD(name) \
_##name##SegNoloadStart = ADDR(.name.noload); \
.name.noload (NOLOAD) :
#define END_NOLOAD(name) \
_##name##SegNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload);
2020-07-28 13:11:05 -04:00
2020-05-23 06:09:52 -04:00
SECTIONS
{
__romPos = 0x0;
/* header and boot */
BEGIN_SEG(boot, 0xA4000000) {
2020-07-17 18:08:09 -04:00
BUILD_DIR/src/rom_header.o(.data);
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/boot2.o(.text);
}
END_SEG(boot)
/* 0x80000400 001000-039DF0 [38DF0] */
BEGIN_SEG(ovl0, 0x80000400) {
2020-07-02 02:12:57 -04:00
BUILD_DIR/asm/EntryPoint.o(.text);
BUILD_DIR/src/ovl0/ovl0_0.o(.text);
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl0/ovl0.o(.text);
2020-07-03 16:14:25 -04:00
BUILD_DIR/src/ovl0/ovl0_1.o(.text);
BUILD_DIR/asm/ovl0/ovl0_2.o(.text);
BUILD_DIR/src/ovl0/ovl0_2_5.o(.text);
2020-07-17 18:08:09 -04:00
/*. += 0x8;*/
2020-07-13 01:31:29 -04:00
BUILD_DIR/src/ovl0/ovl0_2_5_2.o(.text);
2020-07-17 18:08:09 -04:00
BUILD_DIR/src/ovl0/ovl0_3.o(.text);
BUILD_DIR/src/ovl0/ovl0_4.o(.text);
BUILD_DIR/asm/ovl0/ovl0_5.o(.text);
2020-08-06 00:36:41 -04:00
BUILD_DIR/asm/ovl0/ovl0_6.o(.text);
2020-08-13 10:56:09 -04:00
BUILD_DIR/src/ovl0/ovl0_7.o(.text);
2020-08-06 00:56:45 -04:00
BUILD_DIR/src/ovl0/ovl0_8.o(.text);
BUILD_DIR/asm/ovl0/ovl0_9.o(.text);
2020-07-30 07:24:56 -04:00
BUILD_DIR/asm/ovl0/exception.o(.text);
2020-08-11 02:36:39 -04:00
/*libreultra/build/2.0I/libultra_rom.a:__osDequeueThread.o(.text);*/
2020-07-30 07:24:56 -04:00
BUILD_DIR/asm/ovl0/ovl0_afterException.o(.text);
2020-07-31 01:18:05 -04:00
BUILD_DIR/asm/ovl0/lib/osViGetCurrentFramebuffer.o(.text);
BUILD_DIR/asm/ovl0/lib/__osSPSetPc.o(.text);
2020-06-14 02:35:30 -04:00
BUILD_DIR/data/kirby.039DF0.o(.data);
2020-05-23 06:09:52 -04:00
}
END_SEG(ovl0)
2020-07-05 22:29:27 -04:00
BEGIN_NOLOAD(ovl0) {
BUILD_DIR/src/ovl0/ovl0_0.o(.bss);
2020-08-05 02:48:32 -04:00
BUILD_DIR/src/ovl0/ovl0_3.o(.rodata);
2020-07-05 22:29:27 -04:00
}
END_NOLOAD(ovl0)
2020-05-23 06:09:52 -04:00
/* 0x8009B540 043790-066630 [22EA0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl1, 0x8009B540) {
2020-07-10 01:26:09 -04:00
. += 0x10;
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl1/ovl1.o(.text);
2020-07-10 01:26:09 -04:00
BUILD_DIR/asm/ovl1/ovl1_1.o(.text);
2020-08-10 16:41:56 -04:00
BUILD_DIR/src/ovl1/ovl1_2.o(.text);
2020-07-28 03:56:35 -04:00
BUILD_DIR/src/ovl1/ovl1_3.o(.text);
2020-07-10 01:26:09 -04:00
BUILD_DIR/asm/ovl1/ovl1_4.o(.text);
BUILD_DIR/asm/ovl1/ovl1_5.o(.text);
BUILD_DIR/asm/ovl1/ovl1_6.o(.text);
BUILD_DIR/asm/ovl1/ovl1_7.o(.text);
BUILD_DIR/asm/ovl1/ovl1_8.o(.text);
2020-07-12 00:47:53 -04:00
BUILD_DIR/src/ovl1/save_file.o(.text);
2020-07-10 01:26:09 -04:00
BUILD_DIR/asm/ovl1/ovl1_10.o(.text);
BUILD_DIR/asm/ovl1/ovl1_11.o(.text);
BUILD_DIR/asm/ovl1/ovl1_12.o(.text);
BUILD_DIR/asm/ovl1/ovl1_13.o(.text);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl1)
2020-08-12 22:01:57 -04:00
BEGIN_SEG(ovl1Data, 0x800BE3E0) {
2020-07-28 13:11:05 -04:00
BUILD_DIR/data/kirby.066630.o(.data);
}
END_SEG(ovl1Data)
BEGIN_NOLOAD(ovl1) {
2020-08-12 22:01:57 -04:00
BUILD_DIR/asm/ovl1/ovl1_bss.o(.bss);
2020-07-28 13:11:05 -04:00
}
END_NOLOAD(ovl1)
2020-05-23 06:09:52 -04:00
/* 0x800F61A0 07EC10-0AC900 [2DCF0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl2, 0x800F61A0) {
2020-06-05 19:54:19 -04:00
BUILD_DIR/src/ovl2/ovl2.o(.text);
BUILD_DIR/src/ovl2/ovl2_2.o(.text);
BUILD_DIR/src/ovl2/ovl2_3.o(.text);
BUILD_DIR/src/ovl2/ovl2_4.o(.text);
BUILD_DIR/src/ovl2/ovl2_5.o(.text);
BUILD_DIR/src/ovl2/ovl2_6.o(.text);
BUILD_DIR/src/ovl2/ovl2_7.o(.text);
BUILD_DIR/src/ovl2/ovl2_8.o(.text);
BUILD_DIR/data/kirby.0AC900.o(.data);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl2)
2020-05-23 06:09:52 -04:00
/* 0x80151100 0B1B40-0F0D50 [3F210] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl3, 0x80151100) {
2020-06-16 19:45:40 -04:00
BUILD_DIR/src/ovl3/ovl3.o(.text);
BUILD_DIR/src/ovl3/ovl3_1.o(.text);
BUILD_DIR/src/ovl3/ovl3_2.o(.text);
BUILD_DIR/asm/ovl3/ovl3_3.o(.text);
BUILD_DIR/asm/ovl3/ovl3_4.o(.text);
BUILD_DIR/src/ovl3/ovl3_5.o(.text);
2020-08-11 19:09:49 -04:00
BUILD_DIR/data/kirby.0F0D50.o(.data);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl3)
BEGIN_NOLOAD(ovl3) {
BUILD_DIR/src/ovl3/ovl3_5.o(.rodata);
}
END_NOLOAD(ovl3)
2020-05-23 06:09:52 -04:00
/* 0x80151100 0F8630-1014F0 [8EC0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl4, 0x80151100) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl4/ovl4.o(.text);
2020-08-12 22:01:57 -04:00
BUILD_DIR/data/kirby.1014F0.o(.data);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl4)
2020-08-12 22:01:57 -04:00
BEGIN_NOLOAD(ovl4) {
BUILD_DIR/src/ovl4/ovl4_bss.o(.bss);
}
END_NOLOAD(ovl4)
2020-05-23 06:09:52 -04:00
/* 0x8015C740 103BB0-12D410 [29860] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl5, 0x8015C740) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl5/ovl5.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl5)
2020-05-23 06:09:52 -04:00
/* 0x80151100 135490-139150 [3CC0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl6, 0x80151100) {
2020-07-05 20:06:15 -04:00
BUILD_DIR/src/ovl6/ovl6.o(.text);
BUILD_DIR/data/kirby.139150.o(.data);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl6)
2020-05-23 06:09:52 -04:00
/* 0x80198880 13E8F0-168840 [29F50] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl7, 0x80198880) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl7/ovl7.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl7)
2020-05-23 06:09:52 -04:00
/* 0x801D0C60 174740-17B360 [6C20] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl8, 0x801D0C60) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl8/ovl8.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl8)
2020-05-23 06:09:52 -04:00
/* 0x801D0C60 17ECB0-1C9B00 [4AE50] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl9, 0x801D0C60) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl9/ovl9.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl9)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 1CBF50-1E4160 [18210] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl10, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl10/ovl10.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl10)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 1E5AA0-1EB3C0 [5920] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl11, 0x801DB1E0) {
2020-08-11 19:09:49 -04:00
BUILD_DIR/src/ovl11/boss2.o(.text);
2020-08-07 23:21:35 -04:00
BUILD_DIR/asm/ovl11/ovl11_2.o(.text);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl11)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 1EB520-1F2DE0 [78C0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl12, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl12/ovl12.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl12)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 1F3160-1FDA00 [A8A0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl13, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl13/ovl13.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl13)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 1FDDD0-205A90 [7CC0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl14, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl14/ovl14.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl14)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 205D40-210FB0 [B270] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl15, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl15/ovl15.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl15)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 211490-225770 [142E0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl16, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl16/ovl16.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl16)
2020-05-23 06:09:52 -04:00
/* 0x801DB1E0 2263D0-230050 [9C80] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl17, 0x801DB1E0) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl17/ovl17.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl17)
2020-05-23 06:09:52 -04:00
/* 0x8021DF20 2308C0-239D80 [94C0] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl18, 0x8021DF20) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl18/ovl18.o(.text);
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl18)
2020-05-23 06:09:52 -04:00
/* 0x8021DF20 23E630-24F750 [11120] */
2020-05-23 07:27:26 -04:00
BEGIN_SEG(ovl19, 0x8021DF20) {
2020-05-23 06:09:52 -04:00
BUILD_DIR/asm/ovl19/ovl19.o(.text);
2020-05-31 00:22:10 -04:00
BUILD_DIR/asm/ovl19/ovl19_2.o(.text);
BUILD_DIR/asm/ovl19/ovl19_3.o(.text);
BUILD_DIR/asm/ovl19/ovl19_4.o(.text);
BUILD_DIR/src/ovl19/ovl19_5.o(.text);
BUILD_DIR/asm/ovl19/ovl19_data.o(.data);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl19)
2020-05-23 06:09:52 -04:00
/* 0x80300000 2501C0-2502A0 [E0] */
2020-08-13 09:28:07 -04:00
BEGIN_SEG(ovl20, 0x80300000) {
BUILD_DIR/src/ovl20.o(.text);
2020-05-23 06:09:52 -04:00
}
2020-05-23 07:27:26 -04:00
END_SEG(ovl20)
2020-08-13 09:28:07 -04:00
BEGIN_SEG(ovl20Data, _ovl20SegmentEnd){
BUILD_DIR/data/kirby.ovl20.o(.data);
}
END_SEG(ovl20Data)
BEGIN_NOLOAD(ovl20) {
BUILD_DIR/asm/ovl20/ovl20_bss.o(.bss);
}
END_NOLOAD(ovl20)
2020-05-23 06:09:52 -04:00
2020-08-13 09:28:07 -04:00
BEGIN_SEG(data_250320, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.250320.o(.data);
}
END_SEG(data_250320)
BEGIN_SEG(data_2A8CB0, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.2A8CB0.o(.data);
}
END_SEG(data_2A8CB0)
BEGIN_SEG(data_2B1510, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.2B1510.o(.data);
}
END_SEG(data_2B1510)
BEGIN_SEG(data_3E1400, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.3E1400.o(.data);
}
END_SEG(data_3E1400)
BEGIN_SEG(data_3E6BC0, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.3E6BC0.o(.data);
}
END_SEG(data_3E6BC0)
BEGIN_SEG(data_49F590, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.49F590.o(.data);
}
END_SEG(data_49F590)
2020-08-13 09:38:41 -04:00
BEGIN_SEG(data_4A0340, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.4A0340.o(.data);
2020-08-13 09:28:07 -04:00
}
2020-08-13 09:38:41 -04:00
END_SEG(data_4A0340)
2020-08-13 09:28:07 -04:00
BEGIN_SEG(data_4A3B60, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.4A3B60.o(.data);
}
END_SEG(data_4A3B60)
BEGIN_SEG(data_4AA8F0, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.4AA8F0.o(.data);
}
END_SEG(data_4AA8F0)
BEGIN_SEG(kirby_and_after, 0) {
BUILD_DIR/actors/kirby.o(.rodata);
BUILD_DIR/asm/kirby.u.7E2D70.o(.data);
}
END_SEG(kirby_and_after)
2020-08-13 12:06:26 -04:00
BEGIN_SEG(data_1116010, 0) { /*TODO: get a good addr for this*/
BUILD_DIR/asm/data/kirby.u.1116010.o(.data);
}
END_SEG(data_1116010)
2020-05-26 11:23:02 -04:00
/* TODO: implement this somehow
.BEGIN_SEG(leveltextures, 0x07000000) {
BUILD_DIR/data/textures_1BD5C80.o(.data);
}
END_SEG(leveltextures)
*/
2020-05-26 15:53:53 -04:00
/DISCARD/ :
{
*(*);
}
2020-05-23 06:09:52 -04:00
}