diff --git a/include/ld.h b/include/ld.h new file mode 100644 index 00000000..151eeeb4 --- /dev/null +++ b/include/ld.h @@ -0,0 +1,79 @@ +#pragma once + +#ifndef USE_EXT_RAM +#define ADDR_OR_ALIGN(addr) (addr) +#else +#define ADDR_OR_ALIGN(addr) ALIGN(0x1000) +#endif + +#if defined(VERSION_US) || defined(VERSION_JP) +#define AUDIO_DIR BUILD_DIR/src/audio/us_jp +#elif defined(VERSION_EU) +#define AUDIO_DIR BUILD_DIR/src/audio/eu +#elif defined(VERSION_SH) || defined(VERSION_CN) +#define AUDIO_DIR BUILD_DIR/src/audio/sh +#endif + +#define BEGIN_SEG(name, addr) \ + _##name##SegmentStart = ADDR(.name); \ + _##name##SegmentRomStart = __romPos; \ + .name (addr) : AT(__romPos) + +#define END_SEG(name) \ + _##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \ + _##name##SegmentRomEnd = __romPos + SIZEOF(.name); \ + __romPos += SIZEOF(.name); + +#define BEGIN_NOLOAD(name) \ + _##name##SegmentNoloadStart = ADDR(.name.noload); \ + .name.noload (NOLOAD) : + +#define END_NOLOAD(name) \ + _##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload); + +#define MIO0_SEG(name, segAddr) \ + BEGIN_SEG(name##_mio0, segAddr) \ + { \ + BUILD_DIR/bin/name.mio0.o(.data); \ + . = ALIGN(0x10); \ + } \ + END_SEG(name##_mio0) + +#define MIO0_EU_SEG(name, segAddr) \ + BEGIN_SEG(name##_mio0, segAddr) \ + { \ + BUILD_DIR/bin/eu/name.mio0.o(.data); \ + . = ALIGN(0x10); \ + } \ + END_SEG(name##_mio0) + +#define STANDARD_LEVEL(name) \ + BEGIN_SEG(name##_segment_7, 0x07000000) \ + { \ + BUILD_DIR/levels/name/leveldata.mio0.o(.data); \ + . = ALIGN(0x10); \ + } \ + END_SEG(name##_segment_7) \ + BEGIN_SEG(name, 0x0E000000) \ + { \ + BUILD_DIR/levels/name/script.o(.data); \ + BUILD_DIR/levels/name/geo.o(.data); \ + } \ + END_SEG(name) + +#define STANDARD_OBJECTS(name, segAddr, geoAddr) \ + BEGIN_SEG(name##_mio0, segAddr) \ + { \ + BUILD_DIR/actors/name.mio0.o(.data); \ + . = ALIGN(0x10); \ + } \ + END_SEG(name##_mio0) \ + BEGIN_SEG(name##_geo, geoAddr) \ + { \ + BUILD_DIR/actors/name##_geo.o(.data); \ + } \ + END_SEG(name##_geo) + +#define CREATE_LO_HI_PAIR(name, value) \ + name##Hi = (value) >> 16; \ + name##Lo = (value) & 0xffff; diff --git a/sm64.ld b/sm64.ld index ee3433c4..c3e4a760 100755 --- a/sm64.ld +++ b/sm64.ld @@ -4,84 +4,7 @@ OUTPUT_ARCH (mips) * SEG_GODDARD, SEG_ENGINE, SEG_FRAMEBUFFERS */ #include "segments.h" #include "config.h" - -#ifndef USE_EXT_RAM -#define ADDR_OR_ALIGN(addr) (addr) -#else -#define ADDR_OR_ALIGN(addr) ALIGN(0x1000) -#endif - -#if defined(VERSION_US) || defined(VERSION_JP) -#define AUDIO_DIR BUILD_DIR/src/audio/us_jp -#elif defined(VERSION_EU) -#define AUDIO_DIR BUILD_DIR/src/audio/eu -#elif defined(VERSION_SH) || defined(VERSION_CN) -#define AUDIO_DIR BUILD_DIR/src/audio/sh -#endif - -#define BEGIN_SEG(name, addr) \ - _##name##SegmentStart = ADDR(.name); \ - _##name##SegmentRomStart = __romPos; \ - .name (addr) : AT(__romPos) - -#define END_SEG(name) \ - _##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \ - _##name##SegmentRomEnd = __romPos + SIZEOF(.name); \ - __romPos += SIZEOF(.name); - -#define BEGIN_NOLOAD(name) \ - _##name##SegmentNoloadStart = ADDR(.name.noload); \ - .name.noload (NOLOAD) : - -#define END_NOLOAD(name) \ - _##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload); - -#define MIO0_SEG(name, segAddr) \ - BEGIN_SEG(name##_mio0, segAddr) \ - { \ - BUILD_DIR/bin/name.mio0.o(.data); \ - . = ALIGN(0x10); \ - } \ - END_SEG(name##_mio0) - -#define MIO0_EU_SEG(name, segAddr) \ - BEGIN_SEG(name##_mio0, segAddr) \ - { \ - BUILD_DIR/bin/eu/name.mio0.o(.data); \ - . = ALIGN(0x10); \ - } \ - END_SEG(name##_mio0) - -#define STANDARD_LEVEL(name) \ - BEGIN_SEG(name##_segment_7, 0x07000000) \ - { \ - BUILD_DIR/levels/name/leveldata.mio0.o(.data); \ - . = ALIGN(0x10); \ - } \ - END_SEG(name##_segment_7) \ - BEGIN_SEG(name, 0x0E000000) \ - { \ - BUILD_DIR/levels/name/script.o(.data); \ - BUILD_DIR/levels/name/geo.o(.data); \ - } \ - END_SEG(name) - -#define STANDARD_OBJECTS(name, segAddr, geoAddr) \ - BEGIN_SEG(name##_mio0, segAddr) \ - { \ - BUILD_DIR/actors/name.mio0.o(.data); \ - . = ALIGN(0x10); \ - } \ - END_SEG(name##_mio0) \ - BEGIN_SEG(name##_geo, geoAddr) \ - { \ - BUILD_DIR/actors/name##_geo.o(.data); \ - } \ - END_SEG(name##_geo) - -#define CREATE_LO_HI_PAIR(name, value) \ - name##Hi = (value) >> 16; \ - name##Lo = (value) & 0xffff; +#include "ld.h" SECTIONS { @@ -100,10 +23,6 @@ SECTIONS BUILD_DIR/src/buffers/zbuffer.o(.bss*); } -#ifdef VERSION_CN - gZBufferEnd = .; -#endif - . = SEG_BUFFERS; BEGIN_NOLOAD(buffers) { @@ -138,322 +57,40 @@ SECTIONS * happen using the SUBALIGN directive. This is harmless; the alignment is * just an optimization. */ BEGIN_SEG(main, ) -#ifndef VERSION_CN SUBALIGN(16) -#endif { BUILD_DIR/asm/entry.o(.text); - BUILD_DIR/src/game/crash_screen.o(.text); - BUILD_DIR/src/game/main.o(.text); - BUILD_DIR/src/game/game_init.o(.text); -#ifdef VERSION_CN - . += 0x10; -#endif - BUILD_DIR/src/game/sound_init.o(.text); -#if ENABLE_RUMBLE - BUILD_DIR/src/game/rumble_init.o(.text); -#endif - BUILD_DIR/src/game/level_update.o(.text); - BUILD_DIR/src/game/interaction.o(.text); - BUILD_DIR/src/game/mario.o(.text); - BUILD_DIR/src/game/mario_step.o(.text); - BUILD_DIR/src/game/mario_actions_cutscene.o(.text); - BUILD_DIR/src/game/mario_actions_automatic.o(.text); - BUILD_DIR/src/game/mario_actions_stationary.o(.text); - BUILD_DIR/src/game/mario_actions_moving.o(.text); - BUILD_DIR/src/game/mario_actions_airborne.o(.text); - BUILD_DIR/src/game/mario_actions_submerged.o(.text); - BUILD_DIR/src/game/mario_actions_object.o(.text); - BUILD_DIR/src/game/level_geo.o(.text); - BUILD_DIR/src/game/mario_misc.o(.text); - BUILD_DIR/src/game/memory.o(.text); - BUILD_DIR/src/game/save_file.o(.text); - BUILD_DIR/src/game/area.o(.text); - BUILD_DIR/src/game/rendering_graph_node.o(.text); - BUILD_DIR/src/game/profiler.o(.text); BUILD_DIR/asm/decompress.o(.text); - BUILD_DIR/src/game/camera.o(.text); - BUILD_DIR/src/game/debug_course.o(.text); - BUILD_DIR/src/game/object_list_processor.o(.text); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_helpers.o(.text); -#endif - BUILD_DIR/src/game/behavior_actions.o(.text); - BUILD_DIR/src/game/platform_displacement.o(.text); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.text); - BUILD_DIR/src/game/spawn_object.o(.text); -#endif - BUILD_DIR/src/game/spawn_sound.o(.text); - BUILD_DIR/src/game/debug.o(.text); - BUILD_DIR/src/game/screen_transition.o(.text); - BUILD_DIR/src/game/shadow.o(.text); - BUILD_DIR/src/game/skybox.o(.text); - BUILD_DIR/src/game/moving_texture.o(.text); - BUILD_DIR/src/game/geo_misc.o(.text); - BUILD_DIR/src/game/paintings.o(.text); - BUILD_DIR/src/game/print.o(.text); - BUILD_DIR/src/game/ingame_menu.o(.text); - BUILD_DIR/src/game/envfx_snow.o(.text); - BUILD_DIR/src/game/envfx_bubbles.o(.text); - BUILD_DIR/src/game/macro_special_objects.o(.text); - BUILD_DIR/src/game/hud.o(.text); - BUILD_DIR/src/game/obj_behaviors.o(.text); - BUILD_DIR/src/game/obj_behaviors_2.o(.text); - AUDIO_DIR/synthesis.o(.text); - AUDIO_DIR/heap.o(.text); - AUDIO_DIR/load.o(.text); -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/port.o(.text); -#endif - AUDIO_DIR/playback.o(.text); - AUDIO_DIR/effects.o(.text); - AUDIO_DIR/seqplayer.o(.text); + BUILD_DIR/src/game*.o(.text); + AUDIO_DIR*.o(.text); + ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.text); BUILD_DIR/src/audio/external.o(.text); -#ifdef VERSION_EU - AUDIO_DIR/port.o(.text); -#endif - -#define SECTION text -#ifdef VERSION_JP -// JP has an additional 0x40 of weird padding space in text -#define JP_PADDING_TEXT -#endif - ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.text); - BUILD_DIR/src/game/libgcc.o(.text); -#undef SECTION -#ifdef VERSION_JP -#undef JP_PADDING_TEXT -#endif - BUILD_DIR/lib/rsp.o(.text); - /* data */ - BUILD_DIR/src/game/crash_screen.o(.data*); - BUILD_DIR/src/game/main.o(.data*); - BUILD_DIR/src/game/game_init.o(.data*); - BUILD_DIR/src/game/sound_init.o(.data*); -#if ENABLE_RUMBLE - BUILD_DIR/src/game/rumble_init.o(.data*); -#endif - BUILD_DIR/src/game/level_update.o(.data*); - BUILD_DIR/src/game/interaction.o(.data*); - BUILD_DIR/src/game/mario.o(.data*); - BUILD_DIR/src/game/mario_step.o(.data*); - BUILD_DIR/src/game/mario_actions_cutscene.o(.data*); - BUILD_DIR/src/game/mario_actions_moving.o(.data*); - BUILD_DIR/src/game/mario_actions_submerged.o(.data*); - BUILD_DIR/src/game/mario_actions_object.o(.data*); - BUILD_DIR/src/game/mario_misc.o(.data*); - BUILD_DIR/src/game/memory.o(.data*); - BUILD_DIR/src/game/save_file.o(.data*); - BUILD_DIR/src/game/area.o(.data*); - BUILD_DIR/src/game/rendering_graph_node.o(.data*); - BUILD_DIR/src/game/profiler.o(.data*); - BUILD_DIR/src/game/camera.o(.data*); - BUILD_DIR/src/game/object_list_processor.o(.data*); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_helpers.o(.data*); -#endif - BUILD_DIR/src/game/behavior_actions.o(.data*); - BUILD_DIR/src/game/platform_displacement.o(.data*); - BUILD_DIR/src/game/spawn_sound.o(.data*); - BUILD_DIR/src/game/debug.o(.data*); - BUILD_DIR/src/game/screen_transition.o(.data*); - BUILD_DIR/src/game/shadow.o(.data*); - BUILD_DIR/src/game/skybox.o(.data*); - BUILD_DIR/src/game/moving_texture.o(.data*); - BUILD_DIR/src/game/geo_misc.o(.data*); - BUILD_DIR/src/game/paintings.o(.data*); - BUILD_DIR/src/game/print.o(.data*); - BUILD_DIR/src/game/ingame_menu.o(.data*); - BUILD_DIR/src/game/envfx_snow.o(.data*); - BUILD_DIR/src/game/envfx_bubbles.o(.data*); - BUILD_DIR/src/game/macro_special_objects.o(.data*); - BUILD_DIR/src/game/hud.o(.data*); - BUILD_DIR/src/game/obj_behaviors.o(.data*); - BUILD_DIR/src/game/obj_behaviors_2.o(.data*); -#ifndef VERSION_EU - /* wildcard doesn't match on EU due to files being moved to engine/ */ + BUILD_DIR/asm/entry.o(.data*); + BUILD_DIR/asm/decompress.o(.data*); BUILD_DIR/src/game*.o(.data*); -#endif - AUDIO_DIR/synthesis.o(.data*); - AUDIO_DIR/heap.o(.data*); -#if !defined(VERSION_SH) && !defined(VERSION_CN) - AUDIO_DIR/load.o(.data*); -#endif - AUDIO_DIR/playback.o(.data*); - AUDIO_DIR/effects.o(.data*); - AUDIO_DIR/seqplayer.o(.data*); -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/data.o(.data*); - AUDIO_DIR/debug_prints.o(.data*); - AUDIO_DIR/port.o(.data*); -#endif + AUDIO_DIR*.o(.data*); + ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.data*); BUILD_DIR/src/audio/external.o(.data*); -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/audio_session_presets.o(.data*); -#else -#ifdef VERSION_EU - AUDIO_DIR/port.o(.data*); -#endif - AUDIO_DIR/data.o(.data*); -#endif - -#define SECTION data* - ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.data*); - BUILD_DIR/src/game/libgcc.o(.data*); -#undef SECTION - - /* rodata */ - BUILD_DIR/src/game/crash_screen.o(.rodata*); - BUILD_DIR/src/game/main.o(.rodata*); - BUILD_DIR/src/game/game_init.o(.rodata*); - BUILD_DIR/src/game/sound_init.o(.rodata*); - BUILD_DIR/src/game/rumble_init.o(.rodata*); - BUILD_DIR/src/game/level_update.o(.rodata*); - BUILD_DIR/src/game/interaction.o(.rodata*); - BUILD_DIR/src/game/mario.o(.rodata*); - BUILD_DIR/src/game/mario_step.o(.rodata*); - BUILD_DIR/src/game/mario_actions_cutscene.o(.rodata*); - BUILD_DIR/src/game/mario_actions_automatic.o(.rodata*); - BUILD_DIR/src/game/mario_actions_stationary.o(.rodata*); - BUILD_DIR/src/game/mario_actions_moving.o(.rodata*); - BUILD_DIR/src/game/mario_actions_airborne.o(.rodata*); - BUILD_DIR/src/game/mario_actions_submerged.o(.rodata*); - BUILD_DIR/src/game/mario_actions_object.o(.rodata*); - BUILD_DIR/src/game/mario_misc.o(.rodata*); - BUILD_DIR/src/game/memory.o(.rodata*); - BUILD_DIR/src/game/area.o(.rodata*); - BUILD_DIR/src/game/rendering_graph_node.o(.rodata*); - BUILD_DIR/src/game/camera.o(.rodata*); - BUILD_DIR/src/game/object_list_processor.o(.rodata*); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_helpers.o(.rodata*); -#endif - BUILD_DIR/src/game/behavior_actions.o(.rodata*); - BUILD_DIR/src/game/platform_displacement.o(.rodata*); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.rodata*); - BUILD_DIR/src/game/spawn_object.o(.rodata*); -#endif - BUILD_DIR/src/game/spawn_sound.o(.rodata*); - BUILD_DIR/src/game/debug.o(.rodata*); - BUILD_DIR/src/game/screen_transition.o(.rodata*); - BUILD_DIR/src/game/shadow.o(.rodata*); - BUILD_DIR/src/game/skybox.o(.rodata*); - BUILD_DIR/src/game/moving_texture.o(.rodata*); - BUILD_DIR/src/game/geo_misc.o(.rodata*); - BUILD_DIR/src/game/paintings.o(.rodata*); - BUILD_DIR/src/game/print.o(.rodata*); - BUILD_DIR/src/game/ingame_menu.o(.rodata*); - BUILD_DIR/src/game/envfx_snow.o(.rodata*); - BUILD_DIR/src/game/envfx_bubbles.o(.rodata*); - BUILD_DIR/src/game/macro_special_objects.o(.rodata*); - BUILD_DIR/src/game/hud.o(.rodata*); - BUILD_DIR/src/game/obj_behaviors.o(.rodata*); - BUILD_DIR/src/game/obj_behaviors_2.o(.rodata*); -#if defined(VERSION_JP) || defined(VERSION_US) + BUILD_DIR/lib/rsp.o(.data*); + + BUILD_DIR/asm/entry.o(.rodata*); + BUILD_DIR/asm/decompress.o(.rodata*); BUILD_DIR/src/game*.o(.rodata*); -#endif - AUDIO_DIR/synthesis.o(.rodata*); - AUDIO_DIR/heap.o(.rodata*); - AUDIO_DIR/load.o(.rodata*); -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/port.o(.rodata*); -#endif - AUDIO_DIR/playback.o(.rodata*); - AUDIO_DIR/effects.o(.rodata*); - AUDIO_DIR/seqplayer.o(.rodata*); - BUILD_DIR/src/audio/external.o(.rodata*); -#ifdef VERSION_EU - AUDIO_DIR/port.o(.rodata*); -#endif AUDIO_DIR*.o(.rodata*); - -#define SECTION rodata* - ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.rodata*); - BUILD_DIR/src/game/libgcc.o(.rodata*); -#undef SECTION - - /* audio blobs, should really be moved into a separate file */ -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/load.o(.data*); -#endif + ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.rodata*); + BUILD_DIR/src/audio/external.o(.rodata*); BUILD_DIR/lib/rsp.o(.rodata*); } END_SEG(main) BEGIN_NOLOAD(main) { - BUILD_DIR/src/game/cn_common_syms_1.o(.bss*); - BUILD_DIR/src/game/crash_screen.o(.bss*); - BUILD_DIR/src/game/main.o(.bss*); - BUILD_DIR/src/game/game_init.o(.bss*); - BUILD_DIR/src/game/sound_init.o(.bss*); -#if ENABLE_RUMBLE - BUILD_DIR/src/game/rumble_init.o(.bss*); -#endif - BUILD_DIR/src/game/level_update.o(.bss*); - BUILD_DIR/src/game/interaction.o(.bss*); - BUILD_DIR/src/game/mario.o(.bss*); - BUILD_DIR/src/game/mario_actions_cutscene.o(.bss*); - BUILD_DIR/src/game/mario_actions_moving.o(.bss*); - BUILD_DIR/src/game/mario_actions_submerged.o(.bss*); - BUILD_DIR/src/game/mario_misc.o(.bss*); - BUILD_DIR/src/game/memory.o(.bss*); - BUILD_DIR/src/game/save_file.o(.bss*); - BUILD_DIR/src/game/area.o(.bss*); - BUILD_DIR/src/game/rendering_graph_node.o(.bss*); - BUILD_DIR/src/game/profiler.o(.bss*); - BUILD_DIR/src/game/camera.o(.bss*); - BUILD_DIR/src/game/object_list_processor.o(.bss*); -#ifndef VERSION_EU - BUILD_DIR/src/game/object_helpers.o(.bss*); -#endif - BUILD_DIR/src/game/behavior_actions.o(.bss*); - BUILD_DIR/src/game/debug.o(.bss*); - BUILD_DIR/src/game/shadow.o(.bss*); - BUILD_DIR/src/game/skybox.o(.bss*); - BUILD_DIR/src/game/moving_texture.o(.bss*); - BUILD_DIR/src/game/geo_misc.o(.bss*); - BUILD_DIR/src/game/paintings.o(.bss*); - BUILD_DIR/src/game/print.o(.bss*); - BUILD_DIR/src/game/ingame_menu.o(.bss*); - BUILD_DIR/src/game/envfx_snow.o(.bss*); - BUILD_DIR/src/game/envfx_bubbles.o(.bss*); - BUILD_DIR/src/game/macro_special_objects.o(.bss*); - BUILD_DIR/src/game/hud.o(.bss*); - BUILD_DIR/src/game/obj_behaviors.o(.bss*); - BUILD_DIR/src/game/obj_behaviors_2.o(.bss*); -#if !defined(VERSION_EU) && !defined(VERSION_CN) BUILD_DIR/src/game*.o(.bss*); -#endif BUILD_DIR/src/audio/external.o(.bss*); -#ifdef VERSION_EU - AUDIO_DIR/port.o(.bss*); -#endif -#if defined(VERSION_SH) || defined(VERSION_CN) - AUDIO_DIR/globals_start.o(.bss*); - AUDIO_DIR/synthesis.o(.bss*); - AUDIO_DIR/heap.o(.bss*); - AUDIO_DIR/load.o(.bss*); - AUDIO_DIR/data.o(.bss*); -#endif - -#define SECTION bss* -#ifdef VERSION_SH -// osPfsIsPlug bss section is located slightly different in Shindou. -#define SH_PFS_BSS -#endif -// #include "lib/ultra/ld.inc" - ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.bss*); -#undef SECTION -#ifdef VERSION_SH -#undef SH_PFS_BSS -#endif - - BUILD_DIR/src/game/cn_common_syms_2.o(.bss*); + AUDIO_DIR*.o(.bss*); + ULTRA_BUILD_DIR/libgultra_rom.a:*.o(.bss*); . = ALIGN(0x8); } @@ -477,62 +114,13 @@ SECTIONS BEGIN_SEG(engine, ADDR_OR_ALIGN(SEG_ENGINE)) { - BUILD_DIR/src/engine/math_util.o(.text); - BUILD_DIR/src/engine/graph_node.o(.text); - BUILD_DIR/src/engine/graph_node_manager.o(.text); - BUILD_DIR/src/engine/geo_layout.o(.text); - BUILD_DIR/src/engine/level_script.o(.text); - BUILD_DIR/src/engine/surface_collision.o(.text); - BUILD_DIR/src/engine/surface_load.o(.text); - BUILD_DIR/src/engine/behavior_script.o(.text); -#ifdef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.text); - BUILD_DIR/src/game/spawn_object.o(.text); - BUILD_DIR/src/game/object_helpers.o(.text); -#endif BUILD_DIR/src/engine*.o(.text); - /* data */ - BUILD_DIR/src/engine/graph_node.o(.data*); - BUILD_DIR/src/engine/graph_node_manager.o(.data*); - BUILD_DIR/src/engine/math_util.o(.data*); - BUILD_DIR/src/engine/geo_layout.o(.data*); - BUILD_DIR/src/engine/level_script.o(.data*); - BUILD_DIR/src/engine/behavior_script.o(.data*); -#ifdef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.data*); - BUILD_DIR/src/game/spawn_object.o(.data*); - BUILD_DIR/src/game/object_helpers.o(.data*); -#endif BUILD_DIR/src/engine*.o(.data*); - /* rodata */ - BUILD_DIR/src/engine/math_util.o(.rodata*); - BUILD_DIR/src/engine/level_script.o(.rodata*); - BUILD_DIR/src/engine/surface_collision.o(.rodata*); - BUILD_DIR/src/engine/surface_load.o(.rodata*); -#ifdef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.rodata*); - BUILD_DIR/src/game/spawn_object.o(.rodata*); - BUILD_DIR/src/game/object_helpers.o(.rodata*); -#endif -#ifdef VERSION_CN - BUILD_DIR/src/engine/stub.o(.rodata*); -#endif BUILD_DIR/src/engine*.o(.rodata*); } END_SEG(engine) BEGIN_NOLOAD(engine) { - BUILD_DIR/src/engine/math_util.o(.bss*); - BUILD_DIR/src/engine/geo_layout.o(.bss*); - BUILD_DIR/src/engine/level_script.o(.bss*); - BUILD_DIR/src/engine/surface_collision.o(.bss*); - BUILD_DIR/src/engine/surface_load.o(.bss*); - BUILD_DIR/src/engine/behavior_script.o(.bss*); -#ifdef VERSION_EU - BUILD_DIR/src/game/object_collision.o(.bss*); - BUILD_DIR/src/game/spawn_object.o(.bss*); - BUILD_DIR/src/game/object_helpers.o(.bss*); -#endif BUILD_DIR/src/engine*.o(.bss*); } END_NOLOAD(engine) @@ -594,35 +182,9 @@ SECTIONS /* 0x8016F000 21D7D0-255EC0 [386F0] */ BEGIN_SEG(goddard, SEG_GODDARD) { - BUILD_DIR/src/menu/title_screen.o(.text); - BUILD_DIR/src/menu/intro_geo.o(.text); - BUILD_DIR/src/menu/file_select.o(.text); - BUILD_DIR/src/menu/star_select.o(.text); BUILD_DIR/src/menu*.o(.text); - BUILD_DIR/libgoddard.a:gd_main.o(.text); - BUILD_DIR/libgoddard.a:gd_memory.o(.text); - BUILD_DIR/libgoddard.a:sfx.o(.text); - BUILD_DIR/libgoddard.a:draw_objects.o(.text); - BUILD_DIR/libgoddard.a:objects.o(.text); - BUILD_DIR/libgoddard.a:skin_movement.o(.text); - BUILD_DIR/libgoddard.a:particles.o(.text); - BUILD_DIR/libgoddard.a:dynlist_proc.o(.text); - BUILD_DIR/libgoddard.a:old_menu.o(.text); - BUILD_DIR/libgoddard.a:debug_utils.o(.text); - BUILD_DIR/libgoddard.a:joints.o(.text); - BUILD_DIR/libgoddard.a:skin.o(.text); - BUILD_DIR/libgoddard.a:gd_math.o(.text); - BUILD_DIR/libgoddard.a:shape_helper.o(.text); - BUILD_DIR/libgoddard.a:renderer.o(.text); BUILD_DIR/libgoddard.a:*.o(.text); /* data, rodata, per file */ - BUILD_DIR/src/menu/title_screen.o(.data*); - BUILD_DIR/src/menu/title_screen.o(.rodata*); - BUILD_DIR/src/menu/intro_geo.o(.data*); - BUILD_DIR/src/menu/file_select.o(.data*); - BUILD_DIR/src/menu/file_select.o(.rodata*); - BUILD_DIR/src/menu/star_select.o(.data*); - BUILD_DIR/src/menu/star_select.o(.rodata*); BUILD_DIR/src/menu*.o(.data*); BUILD_DIR/src/menu*.o(.rodata*); /* goddard subsystem data */ @@ -654,9 +216,6 @@ SECTIONS END_SEG(goddard) BEGIN_NOLOAD(goddard) { - BUILD_DIR/src/menu/intro_geo.o(.bss*); - BUILD_DIR/src/menu/file_select.o(.bss*); - BUILD_DIR/src/menu/star_select.o(.bss*); BUILD_DIR/src/menu*.o(.bss*); BUILD_DIR/libgoddard.a:gd_main.o(.bss*); BUILD_DIR/libgoddard.a:gd_memory.o(.bss*);