mirror of https://github.com/n64decomp/007.git
256 lines
5.8 KiB
Plaintext
256 lines
5.8 KiB
Plaintext
#define BEGIN_SEG(name, rompos, rampos) \
|
|
_##name##SegmentStart = ADDR(.name); \
|
|
_##name##SegmentRomStart = rompos; \
|
|
.name rampos : AT(rompos)
|
|
|
|
#define END_SEG(name) \
|
|
_##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
|
|
_##name##SegmentRomEnd = _##name##SegmentRomStart + SIZEOF(.name);
|
|
|
|
/*OUTPUT_FORMAT ("elf32-bigmips")*/
|
|
OUTPUT_ARCH (mips)
|
|
|
|
SECTIONS
|
|
{
|
|
|
|
osTvType = 0x80000300;
|
|
osRomType = 0x80000304;
|
|
osRomBase = 0x80000308;
|
|
osResetType = 0x8000030c;
|
|
osCicId = 0x80000310;
|
|
osVersion = 0x80000314;
|
|
osMemSize = 0x80000318;
|
|
osAppNMIBuffer = 0x8000031c;
|
|
|
|
_romSegmentStart = 0;
|
|
/* header */
|
|
BEGIN_SEG(header, _romSegmentStart, 0x04000000)
|
|
{
|
|
build/OUTCODE/src/rom_header.o(.data);
|
|
}
|
|
END_SEG(header)
|
|
|
|
|
|
|
|
/* boot */
|
|
BEGIN_SEG(boot, _headerSegmentRomEnd, 0x04000040)
|
|
{
|
|
build/OUTCODE/src/bootcode.o(.text);
|
|
}
|
|
END_SEG(boot)
|
|
|
|
|
|
|
|
|
|
/* 0x80000400, 0x80000450 */
|
|
BEGIN_SEG(start, _bootSegmentRomEnd, 0x80000400)
|
|
{
|
|
build/OUTCODE/src/_start.o (.text);
|
|
}
|
|
END_SEG(start)
|
|
|
|
|
|
_alt_startSegmentRomStart = _startSegmentRomStart + 0x100000;
|
|
_alt_startSegmentStart = _startSegmentStart - 0x10000000 + 0x100000;
|
|
|
|
|
|
/* 0x70000450, 0x70020D90 001050-021990 */
|
|
BEGIN_SEG(code, _startSegmentRomEnd, (_startSegmentEnd - 0x10000000)) SUBALIGN(16)
|
|
{
|
|
#include "ld/lib.text.ld.inc"
|
|
}
|
|
END_SEG(code)
|
|
|
|
|
|
BEGIN_SEG(cdata, _codeSegmentRomEnd, _codeSegmentRomEnd)
|
|
{
|
|
build/OUTCODE/src/c_data_filler.o (.data);
|
|
}
|
|
END_SEG(cdata)
|
|
|
|
|
|
|
|
/* (0x70200000, 0x702029BC, 0x701CCA70), // 033590-035F4D [29BD] */
|
|
BEGIN_SEG(inflate, _cdataSegmentRomEnd, 0x70200000)
|
|
{
|
|
build/OUTCODE/src/inflate/inflate.o (.text);
|
|
build/OUTCODE/src/inflate/inflate.o (.data);
|
|
}
|
|
END_SEG(inflate)
|
|
|
|
|
|
|
|
|
|
|
|
/* (0x7F000000, 0x7F0E2D50, 0x7EFCB4D0), // 034B30-117881 [E2D51] */
|
|
BEGIN_SEG(game, _inflateSegmentRomEnd, 0x7F000000)
|
|
{
|
|
#include "ld/game.text.ld.inc"
|
|
}
|
|
END_SEG(game)
|
|
|
|
|
|
BEGIN_SEG(fontdl, _gameSegmentRomEnd, 0x01000000)
|
|
{
|
|
build/OUTCODE/assets/font_dl.o (.data);
|
|
}
|
|
END_SEG(fontdl)
|
|
|
|
BEGIN_SEG(jfontchardata, _fontdlSegmentRomEnd, 0x00000000)
|
|
{
|
|
build/OUTCODE/assets/font_chardataj.o (.data);
|
|
}
|
|
END_SEG(jfontchardata)
|
|
|
|
BEGIN_SEG(efontchardata, _jfontchardataSegmentRomEnd, 0x00000000)
|
|
{
|
|
build/OUTCODE/assets/font_chardatae.o (.data);
|
|
}
|
|
END_SEG(efontchardata)
|
|
|
|
BEGIN_SEG(animation_entries, _efontchardataSegmentRomEnd, 0x00000000)
|
|
{
|
|
build/OUTCODE/assets/animationtable_entries.o(.data);
|
|
}
|
|
END_SEG(animation_entries)
|
|
|
|
BEGIN_SEG(animation_data, _animation_entriesSegmentRomEnd, 0x00000000)
|
|
{
|
|
build/OUTCODE/assets/animationtable_data.o(.data);
|
|
}
|
|
END_SEG(animation_data)
|
|
|
|
BEGIN_SEG(Globalimagetable, _animation_dataSegmentRomEnd, 0x02000000)
|
|
{
|
|
build/OUTCODE/assets/GlobalImageTable.o (.data);
|
|
}
|
|
END_SEG(Globalimagetable)
|
|
|
|
BEGIN_SEG(rarewarelogo, _GlobalimagetableSegmentRomEnd, 0x02000000)
|
|
{
|
|
build/OUTCODE/assets/rarewarelogo.o (.data);
|
|
}
|
|
END_SEG(rarewarelogo)
|
|
|
|
BEGIN_SEG(romfiles2, _rarewarelogoSegmentRomEnd, _romfiles2SegmentRomStart)
|
|
{
|
|
build/OUTCODE/assets/romfiles2.o (.data);
|
|
}
|
|
END_SEG(romfiles2)
|
|
|
|
BEGIN_SEG(ramromfiles, _romfiles2SegmentRomEnd, _ramromfilesSegmentRomStart)
|
|
{
|
|
build/OUTCODE/assets/ramrom/ramrom.o (.data);
|
|
}
|
|
END_SEG(ramromfiles)
|
|
|
|
|
|
BEGIN_SEG(fontbankgothic, _ramromfilesSegmentRomEnd, 0)
|
|
{
|
|
build/OUTCODE/assets/font/fontBankGothic.o (.data);
|
|
}
|
|
END_SEG(fontbankgothic)
|
|
|
|
BEGIN_SEG(fontzurichbold, _fontbankgothicSegmentRomEnd, 0)
|
|
{
|
|
build/OUTCODE/assets/font/fontZurichBold.o (.data);
|
|
}
|
|
END_SEG(fontzurichbold)
|
|
|
|
|
|
|
|
BEGIN_SEG(musicfiles, _fontzurichboldSegmentRomEnd, _musicfilesSegmentRomStart)
|
|
{
|
|
build/OUTCODE/assets/music/sfx.ctl.o (.data);
|
|
build/OUTCODE/assets/music/sfx.tbl.o (.data);
|
|
build/OUTCODE/assets/music/instruments.ctl.o (.data);
|
|
build/OUTCODE/assets/music/instruments.tbl.o (.data);
|
|
build/OUTCODE/assets/music/music.o (.music);
|
|
build/OUTCODE/assets/music/music.o (.musiccompressed);
|
|
}
|
|
END_SEG(musicfiles)
|
|
|
|
|
|
|
|
BEGIN_SEG(obseg, _musicfilesSegmentRomEnd, _obsegSegmentRomStart)
|
|
{
|
|
build/OUTCODE/assets/obseg/ob_seg.o (.data);
|
|
}
|
|
END_SEG(obseg)
|
|
|
|
|
|
|
|
BEGIN_SEG(images, _obsegSegmentRomEnd, _imagesSegmentRomStart)
|
|
{
|
|
#include "ld/images.ld.inc"
|
|
}
|
|
END_SEG(images)
|
|
|
|
|
|
|
|
_romSegmentEnd = _imagesSegmentRomEnd;
|
|
|
|
|
|
|
|
__csegtempPos = 0xC00000;
|
|
__dataSegmentVaddrStart = _codeSegmentEnd + 0x10000000;
|
|
|
|
BEGIN_SEG(csegment, __csegtempPos, __dataSegmentVaddrStart)
|
|
{
|
|
build/OUTCODE/src/rspboot.o (.text);
|
|
build/OUTCODE/src/gspboot.o (.text);
|
|
build/OUTCODE/src/aspboot.o (.text);
|
|
#include "ld/lib.data.ld.inc"
|
|
#include "ld/lib.rodata.ld.inc"
|
|
#include "ld/game.data.ld.inc"
|
|
#include "ld/game.rodata.ld.inc"
|
|
build/OUTCODE/src/gspboot.o (.data);
|
|
build/OUTCODE/src/aspboot.o (.data);
|
|
}
|
|
END_SEG(csegment)
|
|
|
|
_dataSegmentVaddrEnd = _csegmentSegmentRomEnd;
|
|
|
|
|
|
|
|
_bssSegmentStart = ADDR(.bss);
|
|
.bss (NOLOAD) :
|
|
{
|
|
#include "ld/lib.bss.ld.inc"
|
|
#include "ld/game.bss.ld.inc"
|
|
}
|
|
_bssSegmentEnd = ADDR(.bss) + SIZEOF(.bss);
|
|
_bssSegmentSize = SIZEOF(.bss);
|
|
|
|
_stacksSegmentStart = ADDR(.stacks);
|
|
#if defined(VERSION_EU)
|
|
.stacks 0x803A1AB0 :
|
|
#else
|
|
.stacks 0x803AB400 :
|
|
#endif
|
|
{
|
|
build/OUTCODE/src/stacks.o (.bss);
|
|
}
|
|
_stacksSegmentEnd = ADDR(.stacks) + SIZEOF(.stacks);
|
|
|
|
_cfbSegmentStart = ADDR(.cfb);
|
|
.cfb (NOLOAD) :
|
|
{
|
|
build/OUTCODE/src/cfb.o (.bss);
|
|
}
|
|
_cfbSegmentEnd = ADDR(.cfb) + SIZEOF(.cfb);
|
|
|
|
/*move em to end, out of the way*/
|
|
/DISCARD/ : {
|
|
* (.MIPS.abiflags);
|
|
* (.musicdecompressed);
|
|
* (.options);
|
|
* (.gnu.attributes);
|
|
* (.pdr);
|
|
* (.mdebug);
|
|
* (.gptab.bss);
|
|
* (.gptab.data);
|
|
* (.reginfo);
|
|
}
|
|
}
|