sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

sm64.ld (55387B)


      1 OUTPUT_ARCH (mips)
      2 
      3 /* include/segments.h defines SEG_POOL_START, SEG_POOL_END, SEG_BUFFERS,
      4  * SEG_GODDARD, SEG_ENGINE, SEG_FRAMEBUFFERS */
      5 #include "segments.h"
      6 #include "config.h"
      7 
      8 #ifndef USE_EXT_RAM
      9 #define ADDR_OR_ALIGN(addr) (addr)
     10 #else
     11 #define ADDR_OR_ALIGN(addr) ALIGN(0x1000)
     12 #endif
     13 
     14 #define BEGIN_SEG(name, addr) \
     15     _##name##SegmentStart = ADDR(.name); \
     16     _##name##SegmentRomStart = __romPos; \
     17     .name (addr) : AT(__romPos)
     18 
     19 #define END_SEG(name) \
     20     _##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
     21     _##name##SegmentRomEnd = __romPos + SIZEOF(.name); \
     22     __romPos += SIZEOF(.name);
     23 
     24 #define BEGIN_NOLOAD(name) \
     25     _##name##SegmentNoloadStart = ADDR(.name.noload); \
     26     .name.noload (NOLOAD) :
     27 
     28 #define END_NOLOAD(name) \
     29     _##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload);
     30 
     31 #define MIO0_SEG(name, segAddr) \
     32     BEGIN_SEG(name##_mio0, segAddr) \
     33     { \
     34         BUILD_DIR/bin/name.mio0.o(.data); \
     35         . = ALIGN(0x10); \
     36     } \
     37     END_SEG(name##_mio0)
     38 
     39 #define MIO0_EU_SEG(name, segAddr) \
     40     BEGIN_SEG(name##_mio0, segAddr) \
     41     { \
     42         BUILD_DIR/bin/eu/name.mio0.o(.data); \
     43         . = ALIGN(0x10); \
     44     } \
     45     END_SEG(name##_mio0)
     46 
     47 #define STANDARD_LEVEL(name) \
     48     BEGIN_SEG(name##_segment_7, 0x07000000) \
     49     { \
     50         BUILD_DIR/levels/name/leveldata.mio0.o(.data); \
     51         . = ALIGN(0x10); \
     52     } \
     53     END_SEG(name##_segment_7) \
     54     BEGIN_SEG(name, 0x0E000000) \
     55     { \
     56         BUILD_DIR/levels/name/script.o(.data); \
     57         BUILD_DIR/levels/name/geo.o(.data); \
     58     } \
     59     END_SEG(name)
     60 
     61 #define STANDARD_OBJECTS(name, segAddr, geoAddr) \
     62     BEGIN_SEG(name##_mio0, segAddr) \
     63     { \
     64         BUILD_DIR/actors/name.mio0.o(.data); \
     65         . = ALIGN(0x10); \
     66     } \
     67     END_SEG(name##_mio0) \
     68     BEGIN_SEG(name##_geo, geoAddr) \
     69     { \
     70         BUILD_DIR/actors/name##_geo.o(.data); \
     71     } \
     72     END_SEG(name##_geo)
     73 
     74 #define CREATE_LO_HI_PAIR(name, value) \
     75     name##Hi = (value) >> 16; \
     76     name##Lo = (value) & 0xffff;
     77 
     78 SECTIONS
     79 {
     80     __romPos = 0;
     81 
     82     BEGIN_SEG(boot, 0x04000000)
     83     {
     84         BUILD_DIR/asm/rom_header.o(.text);
     85         BUILD_DIR/asm/boot.o(.text);
     86         BUILD_DIR/asm/ipl3_font.o(.text);
     87     }
     88     END_SEG(boot)
     89 
     90     . = 0x80000400;
     91     BEGIN_NOLOAD(zbuffer) {
     92         BUILD_DIR/src/buffers/zbuffer.o(.bss*);
     93     }
     94 
     95 #ifdef VERSION_CN
     96     gZBufferEnd = .;
     97 #endif
     98 
     99     . = SEG_BUFFERS;
    100     BEGIN_NOLOAD(buffers)
    101     {
    102         BUILD_DIR/src/buffers/buffers.o(.bss*);
    103 #if defined(VERSION_SH) || defined(VERSION_CN)
    104         BUILD_DIR/src/audio/port_sh.o(.bss*);
    105 #else
    106         BUILD_DIR/src/audio/globals_start.o(.bss*);
    107         BUILD_DIR/src/audio/synthesis.o(.bss*);
    108         BUILD_DIR/src/audio/heap.o(.bss*);
    109         BUILD_DIR/src/audio/load.o(.bss*);
    110         BUILD_DIR/src/audio/data.o(.bss*);
    111 #endif
    112 
    113 #ifdef VERSION_EU
    114         . = ALIGN(0x200);
    115 #else
    116         . = ALIGN(0x1000);
    117 #endif
    118 #if defined(VERSION_SH) || defined(VERSION_CN)
    119         . += 0xB000;
    120 #endif
    121         BUILD_DIR/src/buffers/gfx_output_buffer.o(.bss*);
    122     }
    123     END_NOLOAD(buffers)
    124 
    125     /* lib/src/__osDevMgrMain.c and lib/src/osCreateViManager.c contain infinite
    126      * loops compiled without -g, which cause the return statements and the .o
    127      * files themselves to be aligned to 32-byte boundaries. But the linker
    128      * Nintendo used did not respect .o file alignment, and aligned the files
    129      * only to 16 bytes, in some cases misaligning them. We force the same to
    130      * happen using the SUBALIGN directive. This is harmless; the alignment is
    131      * just an optimization. */
    132     BEGIN_SEG(main, )
    133 #ifndef VERSION_CN
    134         SUBALIGN(16)
    135 #endif
    136     {
    137         BUILD_DIR/asm/entry.o(.text);
    138         BUILD_DIR/src/game/crash_screen.o(.text);
    139         BUILD_DIR/src/game/main.o(.text);
    140         BUILD_DIR/src/game/game_init.o(.text);
    141 #ifdef VERSION_CN
    142         . += 0x10;
    143 #endif
    144         BUILD_DIR/src/game/sound_init.o(.text);
    145 #if ENABLE_RUMBLE
    146         BUILD_DIR/src/game/rumble_init.o(.text);
    147 #endif
    148         BUILD_DIR/src/game/level_update.o(.text);
    149         BUILD_DIR/src/game/interaction.o(.text);
    150         BUILD_DIR/src/game/mario.o(.text);
    151         BUILD_DIR/src/game/mario_step.o(.text);
    152         BUILD_DIR/src/game/mario_actions_cutscene.o(.text);
    153         BUILD_DIR/src/game/mario_actions_automatic.o(.text);
    154         BUILD_DIR/src/game/mario_actions_stationary.o(.text);
    155         BUILD_DIR/src/game/mario_actions_moving.o(.text);
    156         BUILD_DIR/src/game/mario_actions_airborne.o(.text);
    157         BUILD_DIR/src/game/mario_actions_submerged.o(.text);
    158         BUILD_DIR/src/game/mario_actions_object.o(.text);
    159         BUILD_DIR/src/game/level_geo.o(.text);
    160         BUILD_DIR/src/game/mario_misc.o(.text);
    161         BUILD_DIR/src/game/memory.o(.text);
    162         BUILD_DIR/src/game/save_file.o(.text);
    163         BUILD_DIR/src/game/area.o(.text);
    164         BUILD_DIR/src/game/rendering_graph_node.o(.text);
    165         BUILD_DIR/src/game/profiler.o(.text);
    166         BUILD_DIR/asm/decompress.o(.text);
    167         BUILD_DIR/src/game/camera.o(.text);
    168         BUILD_DIR/src/game/debug_course.o(.text);
    169         BUILD_DIR/src/game/object_list_processor.o(.text);
    170 #ifndef VERSION_EU
    171         BUILD_DIR/src/game/object_helpers.o(.text);
    172 #endif
    173         BUILD_DIR/src/game/behavior_actions.o(.text);
    174         BUILD_DIR/src/game/platform_displacement.o(.text);
    175 #ifndef VERSION_EU
    176         BUILD_DIR/src/game/object_collision.o(.text);
    177         BUILD_DIR/src/game/spawn_object.o(.text);
    178 #endif
    179         BUILD_DIR/src/game/spawn_sound.o(.text);
    180         BUILD_DIR/src/game/debug.o(.text);
    181         BUILD_DIR/src/game/screen_transition.o(.text);
    182         BUILD_DIR/src/game/shadow.o(.text);
    183         BUILD_DIR/src/game/skybox.o(.text);
    184         BUILD_DIR/src/game/moving_texture.o(.text);
    185         BUILD_DIR/src/game/geo_misc.o(.text);
    186         BUILD_DIR/src/game/paintings.o(.text);
    187         BUILD_DIR/src/game/print.o(.text);
    188         BUILD_DIR/src/game/ingame_menu.o(.text);
    189         BUILD_DIR/src/game/envfx_snow.o(.text);
    190         BUILD_DIR/src/game/envfx_bubbles.o(.text);
    191         BUILD_DIR/src/game/macro_special_objects.o(.text);
    192         BUILD_DIR/src/game/hud.o(.text);
    193         BUILD_DIR/src/game/obj_behaviors.o(.text);
    194         BUILD_DIR/src/game/obj_behaviors_2.o(.text);
    195 #if defined(VERSION_SH) || defined(VERSION_CN)
    196         BUILD_DIR/src/audio/synthesis_sh.o(.text);
    197 #else
    198         BUILD_DIR/src/audio/synthesis.o(.text);
    199 #endif
    200         BUILD_DIR/src/audio/heap.o(.text);
    201         BUILD_DIR/src/audio/load.o(.text);
    202 #if defined(VERSION_SH) || defined(VERSION_CN)
    203         BUILD_DIR/src/audio/load_sh.o(.text);
    204         BUILD_DIR/src/audio/port_sh.o(.text);
    205 #endif
    206         BUILD_DIR/src/audio/playback.o(.text);
    207         BUILD_DIR/src/audio/effects.o(.text);
    208         BUILD_DIR/src/audio/seqplayer.o(.text);
    209 #if defined(VERSION_SH) || defined(VERSION_CN)
    210         BUILD_DIR/libultra.a:osDriveRomInit.o(.text);
    211 #endif
    212         BUILD_DIR/src/audio/external.o(.text);
    213         BUILD_DIR/src/audio/port_eu.o(.text);
    214 
    215 #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)
    216 #ifdef VERSION_CN
    217         BUILD_DIR/libultra.a:osInitializeIQueWrapper.o(.text);
    218         BUILD_DIR/libultra.a:osAiGetLength.o(.text);
    219         BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);
    220         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);
    221         BUILD_DIR/libultra.a:osInvalDCache.o(.text);
    222         BUILD_DIR/libultra.a:osInvalICache.o(.text);
    223         BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);
    224         BUILD_DIR/libultra.a:osContStartReadData.o(.text);
    225         BUILD_DIR/libultra.a:osContInit.o(.text);
    226         BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);
    227         BUILD_DIR/libultra.a:sqrtf.o(.text);
    228         BUILD_DIR/libultra.a:cosf.o(.text);
    229         BUILD_DIR/libultra.a:guOrthoF.o(.text);
    230         BUILD_DIR/libultra.a:guPerspectiveF.o(.text);
    231         BUILD_DIR/libultra.a:sinf.o(.text);
    232         BUILD_DIR/libultra.a:bcopy.o(.text);
    233         BUILD_DIR/libultra.a:bzero.o(.text);
    234         BUILD_DIR/libultra.a:llmuldiv.o(.text);
    235         BUILD_DIR/libultra.a:llconv.o(.text);
    236 #endif
    237         BUILD_DIR/libultra.a:string.o(.text);
    238         BUILD_DIR/libultra.a:_Printf.o(.text);
    239 #ifdef VERSION_CN
    240         BUILD_DIR/libultra.a:sprintf.o(.text);
    241         BUILD_DIR/libultra.a:osSyncPrintf.o(.text);
    242         BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);
    243         BUILD_DIR/libultra.a:osRecvMesg.o(.text);
    244         BUILD_DIR/libultra.a:osSendMesg.o(.text);
    245         BUILD_DIR/libultra.a:osSetEventMesg.o(.text);
    246         BUILD_DIR/libultra.a:osGetCount.o(.text);
    247         BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);
    248         BUILD_DIR/libultra.a:osSpTaskYield.o(.text);
    249         BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);
    250         BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
    251         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);
    252         BUILD_DIR/libultra.a:osCreateThread.o(.text);
    253         BUILD_DIR/libultra.a:osSetThreadPri.o(.text);
    254         BUILD_DIR/libultra.a:osStartThread.o(.text);
    255         BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
    256         BUILD_DIR/libultra.a:__osGetCurrFaultedThread.o(.text);
    257         BUILD_DIR/libultra.a:osGetTime.o(.text);
    258         BUILD_DIR/libultra.a:osSetTime.o(.text);
    259         BUILD_DIR/libultra.a:osSetTimer.o(.text);
    260         BUILD_DIR/libultra.a:osTimer.o(.text);
    261         BUILD_DIR/libultra.a:osMapTLB.o(.text);
    262         BUILD_DIR/libultra.a:__osProbeTLB.o(.text);
    263         BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);
    264         BUILD_DIR/libultra.a:osCreateViManager.o(.text);
    265         BUILD_DIR/libultra.a:osViSetEvent.o(.text);
    266         BUILD_DIR/libultra.a:osViSetMode.o(.text);
    267         BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);
    268         BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
    269         BUILD_DIR/libultra.a:__osViSwapContext.o(.text);
    270         BUILD_DIR/libultra.a:osViBlack.o(.text);
    271         BUILD_DIR/libultra.a:guMtxIdentF.o(.text);
    272         BUILD_DIR/libultra.a:guMtxF2L.o(.text);
    273         BUILD_DIR/libultra.a:guScale.o(.text);
    274         BUILD_DIR/libultra.a:guTranslate.o(.text);
    275         BUILD_DIR/libultra.a:guRotateF.o(.text);
    276         BUILD_DIR/libultra.a:osEepromProbe.o(.text);
    277         BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);
    278         BUILD_DIR/libultra.a:osEepromLongRead.o(.text);
    279         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);
    280         BUILD_DIR/libultra.a:__osDisableInt.o(.text);
    281         BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
    282         BUILD_DIR/libultra.a:osSetIntMask.o(.text);
    283         BUILD_DIR/libultra.a:osCreatePiManager.o(.text);
    284         BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text);
    285         BUILD_DIR/libultra.a:epidma.o(.text);
    286         BUILD_DIR/libultra.a:osCartRomInit.o(.text);
    287         BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);
    288         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);
    289         BUILD_DIR/libultra.a:osPiStartDma.o(.text);
    290         BUILD_DIR/libultra.a:iQueKernelCalls.o(.text);
    291         BUILD_DIR/libultra.a:motor.o(.text);
    292         BUILD_DIR/libultra.a:parameters.o(.text);
    293         BUILD_DIR/libultra.a:osInitialize.o(.text);
    294         BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
    295         BUILD_DIR/libultra.a:osWritebackDCache.o(.text);
    296         BUILD_DIR/libultra.a:_Litob.o(.text);
    297         BUILD_DIR/libultra.a:_Ldtob.o(.text);
    298         BUILD_DIR/libultra.a:osJamMesg.o(.text);
    299         BUILD_DIR/libultra.a:__osGetCause.o(.text);
    300         BUILD_DIR/libultra.a:__osGetSR.o(.text);
    301         BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);
    302         BUILD_DIR/libultra.a:__osSetSR.o(.text);
    303         BUILD_DIR/libultra.a:__osSetWatchLo.o(.text);
    304         BUILD_DIR/libultra.a:__osSetCompare.o(.text);
    305         BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);
    306         BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);
    307         BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);
    308         BUILD_DIR/libultra.a:__osSpSetPc.o(.text);
    309         BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);
    310         BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);
    311         BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);
    312         BUILD_DIR/libultra.a:osDestroyThread.o(.text);
    313         BUILD_DIR/libultra.a:osGetThreadPri.o(.text);
    314         BUILD_DIR/libultra.a:osYieldThread.o(.text);
    315         BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);
    316         BUILD_DIR/libultra.a:__osViInit.o(.text);
    317         BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
    318         BUILD_DIR/libultra.a:guNormalize.o(.text);
    319         BUILD_DIR/libultra.a:osEepromRead.o(.text);
    320         BUILD_DIR/libultra.a:osEepromWrite.o(.text);
    321         BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text);
    322         BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text);
    323         BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);
    324         BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
    325         BUILD_DIR/libultra.a:osEPiRawReadIo.o(.text);
    326         BUILD_DIR/libultra.a:osEPiRawWriteIo.o(.text);
    327         BUILD_DIR/libultra.a:ldiv.o(.text);
    328         BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
    329 #endif
    330 #ifndef VERSION_CN
    331         BUILD_DIR/libultra.a:llmuldiv.o(.text);
    332         BUILD_DIR/libultra.a:osInitialize.o(.text);
    333         BUILD_DIR/libultra.a:osSetTime.o(.text);
    334         BUILD_DIR/libultra.a:osGetTime.o(.text);
    335         BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);
    336         BUILD_DIR/libultra.a:osViBlack.o(.text);
    337         BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
    338         BUILD_DIR/libultra.a:__osGetCurrFaultedThread.o(.text);
    339         BUILD_DIR/libultra.a:osSetEventMesg.o(.text);
    340         BUILD_DIR/libultra.a:osRecvMesg.o(.text);
    341         BUILD_DIR/libultra.a:parameters.o(.text);
    342         BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);
    343         BUILD_DIR/libultra.a:osCreateThread.o(.text);
    344         BUILD_DIR/libultra.a:osStartThread.o(.text);
    345         BUILD_DIR/libultra.a:osMapTLB.o(.text);
    346         BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);
    347         BUILD_DIR/libultra.a:sprintf.o(.text);
    348         BUILD_DIR/libultra.a:osViSetEvent.o(.text);
    349         BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);
    350         BUILD_DIR/libultra.a:osSpTaskYield.o(.text);
    351         BUILD_DIR/libultra.a:osSendMesg.o(.text);
    352         BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);
    353         BUILD_DIR/libultra.a:osCreateViManager.o(.text);
    354         BUILD_DIR/libultra.a:osViSetMode.o(.text);
    355         BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);
    356         BUILD_DIR/libultra.a:osCreatePiManager.o(.text);
    357         BUILD_DIR/libultra.a:osSetThreadPri.o(.text);
    358         BUILD_DIR/libultra.a:sqrtf.o(.text);
    359         BUILD_DIR/libultra.a:osContStartReadData.o(.text);
    360         BUILD_DIR/libultra.a:osContInit.o(.text);
    361         BUILD_DIR/libultra.a:osEepromProbe.o(.text);
    362 #if ENABLE_RUMBLE
    363         BUILD_DIR/libultra.a:motor.o(.text);
    364 #endif
    365         BUILD_DIR/libultra.a:osInvalDCache.o(.text);
    366         BUILD_DIR/libultra.a:osPiStartDma.o(.text);
    367         BUILD_DIR/libultra.a:bzero.o(.text);
    368         BUILD_DIR/libultra.a:osInvalICache.o(.text);
    369         BUILD_DIR/libultra.a:osEepromLongRead.o(.text);
    370         BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);
    371         BUILD_DIR/libultra.a:bcopy.o(.text);
    372         BUILD_DIR/libultra.a:guOrthoF.o(.text);
    373         BUILD_DIR/libultra.a:guPerspectiveF.o(.text);
    374         BUILD_DIR/libultra.a:llconv.o(.text);
    375         BUILD_DIR/libultra.a:cosf.o(.text);
    376         BUILD_DIR/libultra.a:sinf.o(.text);
    377         BUILD_DIR/libultra.a:guTranslateF.o(.text);
    378         BUILD_DIR/libultra.a:guRotateF.o(.text);
    379         BUILD_DIR/libultra.a:guScaleF.o(.text);
    380         BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);
    381 #endif
    382 #ifdef VERSION_SH
    383         BUILD_DIR/libultra.a:osCartRomInit.o(.text);
    384         BUILD_DIR/libultra.a:epidma.o(.text);
    385 #endif
    386 #ifdef VERSION_EU
    387         BUILD_DIR/libultra.a:alBnkfNew.o(.text);
    388 #endif
    389 #ifndef VERSION_CN
    390         BUILD_DIR/libultra.a:osAiGetLength.o(.text);
    391         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);
    392 #endif
    393 #ifdef VERSION_SH
    394         BUILD_DIR/libultra.a:osGetCount.o(.text);
    395         BUILD_DIR/libultra.a:__osDisableInt.o(.text);
    396         BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
    397 #endif
    398 #ifndef VERSION_CN
    399         BUILD_DIR/libultra.a:_Litob.o(.text);
    400         BUILD_DIR/libultra.a:_Ldtob.o(.text);
    401         BUILD_DIR/libultra.a:__osSetSR.o(.text);
    402         BUILD_DIR/libultra.a:__osGetSR.o(.text);
    403         BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);
    404         BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);
    405         BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);
    406         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);
    407         BUILD_DIR/libultra.a:osWritebackDCache.o(.text);
    408         BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);
    409 #endif
    410         BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);
    411         BUILD_DIR/libultra.a:__osSetHWintrRoutine.o(.text);
    412 #ifdef VERSION_EU
    413         BUILD_DIR/libultra.a:leointerrupt.o(.text);
    414 #endif
    415 #ifndef VERSION_CN
    416         BUILD_DIR/libultra.a:osTimer.o(.text);
    417 #endif
    418 #ifdef VERSION_EU
    419         BUILD_DIR/libultra.a:__osDisableInt.o(.text);
    420         BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
    421         BUILD_DIR/libultra.a:osGetCount.o(.text);
    422 #endif
    423 #ifndef VERSION_CN
    424         BUILD_DIR/libultra.a:__osViInit.o(.text);
    425         BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
    426         BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);
    427         BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);
    428         BUILD_DIR/libultra.a:__osSpSetPc.o(.text);
    429         BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);
    430         BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);
    431         BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);
    432         BUILD_DIR/libultra.a:osGetThreadPri.o(.text);
    433         BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
    434         BUILD_DIR/libultra.a:__osViSwapContext.o(.text);
    435 #ifdef VERSION_SH
    436         BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);
    437 #endif
    438         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);
    439         BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);
    440         BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text);
    441         BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);
    442         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);
    443         BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
    444         BUILD_DIR/libultra.a:osSetTimer.o(.text);
    445         BUILD_DIR/libultra.a:osEepromWrite.o(.text);
    446 #endif
    447 #if ENABLE_RUMBLE
    448         BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);
    449         BUILD_DIR/libultra.a:crc.o(.text);
    450         BUILD_DIR/libultra.a:contramwrite.o(.text);
    451         BUILD_DIR/libultra.a:contramread.o(.text);
    452 #endif
    453 #ifndef VERSION_CN
    454         BUILD_DIR/libultra.a:osJamMesg.o(.text);
    455         BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
    456         BUILD_DIR/libultra.a:osEepromRead.o(.text);
    457         BUILD_DIR/libultra.a:guMtxF2L.o(.text);
    458         BUILD_DIR/libultra.a:guNormalize.o(.text);
    459         BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
    460         BUILD_DIR/libultra.a:ldiv.o(.text);
    461         BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
    462 #endif
    463 #ifdef VERSION_SH
    464         BUILD_DIR/libultra.a:leointerrupt.o(.text);
    465 #endif
    466         BUILD_DIR/libultra.a:osSetIntMask.o(.text);
    467 #ifndef VERSION_CN
    468         BUILD_DIR/libultra.a:osDestroyThread.o(.text);
    469 #endif
    470 #ifdef VERSION_EU
    471         BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);
    472 #endif
    473 #ifndef VERSION_CN
    474         BUILD_DIR/libultra.a:__osSetCompare.o(.text);
    475         BUILD_DIR/libultra.a:__osProbeTLB.o(.text);
    476         BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text);
    477         BUILD_DIR/libultra.a:osEPiRawWriteIo.o(.text);
    478 #endif
    479 #ifdef VERSION_SH
    480         BUILD_DIR/libultra.a:osEPiRawReadIo.o(.text);
    481         BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text);
    482 #endif
    483 #ifndef VERSION_CN
    484         BUILD_DIR/libultra.a:osYieldThread.o(.text);
    485 #endif
    486 #if ENABLE_RUMBLE
    487         BUILD_DIR/libultra.a:pfsgetstatus.o(.text);
    488 #endif
    489 #ifdef VERSION_CN
    490         BUILD_DIR/libgcc.a:_divdi3.o(.text);
    491         BUILD_DIR/libgcc.a:_moddi3.o(.text);
    492         BUILD_DIR/libgcc.a:_udivdi3.o(.text);
    493         BUILD_DIR/libgcc.a:_umoddi3.o(.text);
    494         BUILD_DIR/libgcc.a:_cmpdi2.o(.text);
    495         BUILD_DIR/libgcc.a:_floatdidf.o(.text);
    496         BUILD_DIR/libgcc.a:_floatdisf.o(.text);
    497         BUILD_DIR/libgcc.a:_fixunsdfdi.o(.text);
    498         BUILD_DIR/libgcc.a:_fixdfdi.o(.text);
    499         BUILD_DIR/libgcc.a:_fixunssfdi.o(.text);
    500         BUILD_DIR/libgcc.a:_fixsfdi.o(.text);
    501 #endif
    502         BUILD_DIR/lib/rsp.o(.text);
    503 #else
    504         BUILD_DIR/src/game*.o(.text);
    505         BUILD_DIR/src/audio*.o(.text);
    506         BUILD_DIR/libultra.a:parameters.o(.text);
    507         BUILD_DIR/libultra.a:osSetTime.o(.text);
    508         BUILD_DIR/libultra.a:osMapTLB.o(.text);
    509         BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);
    510         BUILD_DIR/libultra.a:sprintf.o(.text);
    511         BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);
    512         BUILD_DIR/libultra.a:osSetEventMesg.o(.text);
    513         BUILD_DIR/libultra.a:osViSetEvent.o(.text);
    514         BUILD_DIR/libultra.a:osCreateThread.o(.text);
    515         BUILD_DIR/libultra.a:osRecvMesg.o(.text);
    516         BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);
    517         BUILD_DIR/libultra.a:osSpTaskYield.o(.text);
    518         BUILD_DIR/libultra.a:osSendMesg.o(.text);
    519         BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);
    520         BUILD_DIR/libultra.a:osStartThread.o(.text);
    521         BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);
    522         BUILD_DIR/libultra.a:osCreateViManager.o(.text);
    523         BUILD_DIR/libultra.a:osViSetMode.o(.text);
    524         BUILD_DIR/libultra.a:osViBlack.o(.text);
    525         BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);
    526         BUILD_DIR/libultra.a:osCreatePiManager.o(.text);
    527         BUILD_DIR/libultra.a:osSetThreadPri.o(.text);
    528         BUILD_DIR/libultra.a:osInitialize.o(.text);
    529         BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
    530         BUILD_DIR/libultra.a:sqrtf.o(.text);
    531         BUILD_DIR/libultra.a:osContStartReadData.o(.text);
    532         BUILD_DIR/libultra.a:osContInit.o(.text);
    533         BUILD_DIR/libultra.a:osEepromProbe.o(.text);
    534 #if ENABLE_RUMBLE
    535         BUILD_DIR/libultra.a:motor.o(.text);
    536 #endif
    537         BUILD_DIR/libultra.a:llmuldiv.o(.text);
    538         BUILD_DIR/libultra.a:llmuldiv_gcc.o(.text);
    539         BUILD_DIR/libultra.a:osInvalDCache.o(.text);
    540         BUILD_DIR/libultra.a:osPiStartDma.o(.text);
    541         BUILD_DIR/libultra.a:bzero.o(.text);
    542         BUILD_DIR/libultra.a:osInvalICache.o(.text);
    543         BUILD_DIR/libultra.a:osEepromLongRead.o(.text);
    544         BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);
    545         BUILD_DIR/libultra.a:bcopy.o(.text);
    546         BUILD_DIR/libultra.a:guOrthoF.o(.text);
    547         BUILD_DIR/libultra.a:guPerspectiveF.o(.text);
    548         BUILD_DIR/libultra.a:osGetTime.o(.text);
    549         BUILD_DIR/libultra.a:llconv.o(.text);
    550         BUILD_DIR/libultra.a:cosf.o(.text);
    551         BUILD_DIR/libultra.a:sinf.o(.text);
    552         BUILD_DIR/libultra.a:guTranslateF.o(.text);
    553         BUILD_DIR/libultra.a:guRotateF.o(.text);
    554         BUILD_DIR/libultra.a:guScaleF.o(.text);
    555         BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);
    556         BUILD_DIR/libultra.a:alBnkfNew.o(.text);
    557         BUILD_DIR/libultra.a:osWritebackDCache.o(.text);
    558         BUILD_DIR/libultra.a:osAiGetLength.o(.text);
    559         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);
    560         BUILD_DIR/libultra.a:osTimer.o(.text);
    561         BUILD_DIR/libultra.a:_Printf.o(.text);
    562         BUILD_DIR/libultra.a:string.o(.text);
    563         BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
    564         BUILD_DIR/libultra.a:__osDisableInt.o(.text);
    565         BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
    566         BUILD_DIR/libultra.a:__osViInit.o(.text);
    567         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);
    568         BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);
    569         BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);
    570         BUILD_DIR/libultra.a:__osSpSetPc.o(.text);
    571         BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);
    572         BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);
    573         BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);
    574         BUILD_DIR/libultra.a:osGetThreadPri.o(.text);
    575         BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
    576         BUILD_DIR/libultra.a:__osViSwapContext.o(.text);
    577         BUILD_DIR/libultra.a:osGetCount.o(.text);
    578         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);
    579         BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);
    580         BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);
    581         BUILD_DIR/libultra.a:__osSetSR.o(.text);
    582         BUILD_DIR/libultra.a:__osGetSR.o(.text);
    583         BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);
    584         BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);
    585         BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);
    586         BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);
    587         BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);
    588 #ifdef VERSION_JP
    589         . += 0x40;
    590 #endif
    591         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);
    592         BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
    593         BUILD_DIR/libultra.a:osSetTimer.o(.text);
    594         BUILD_DIR/libultra.a:osEepromWrite.o(.text);
    595 #if ENABLE_RUMBLE
    596         BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);
    597         BUILD_DIR/libultra.a:crc.o(.text);
    598         BUILD_DIR/libultra.a:contramwrite.o(.text);
    599         BUILD_DIR/libultra.a:contramread.o(.text);
    600 #endif
    601         BUILD_DIR/libultra.a:osJamMesg.o(.text);
    602         BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
    603         BUILD_DIR/libultra.a:osEepromRead.o(.text);
    604         BUILD_DIR/libultra.a:guMtxF2L.o(.text);
    605         BUILD_DIR/libultra.a:guMtxIdentF.o(.text);
    606         BUILD_DIR/libultra.a:guNormalize.o(.text);
    607         BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
    608         BUILD_DIR/libultra.a:__osSetCompare.o(.text);
    609         BUILD_DIR/libultra.a:_Litob.o(.text);
    610         BUILD_DIR/libultra.a:_Ldtob.o(.text);
    611         BUILD_DIR/libultra.a:kdebugserver.o(.text);
    612         BUILD_DIR/libultra.a:__osSyncPutChars.o(.text);
    613         BUILD_DIR/libultra.a:osSetIntMask.o(.text);
    614         BUILD_DIR/libultra.a:osDestroyThread.o(.text);
    615         BUILD_DIR/libultra.a:__osProbeTLB.o(.text);
    616         BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
    617         BUILD_DIR/libultra.a:ldiv.o(.text);
    618         BUILD_DIR/libultra.a:__osGetCause.o(.text);
    619         BUILD_DIR/libultra.a:__osAtomicDec.o(.text);
    620         BUILD_DIR/libultra.a:guLookAtRef.o(.text); /* Fast3DEX2 only */
    621 #if ENABLE_RUMBLE
    622         BUILD_DIR/libultra.a:pfsgetstatus.o(.text);
    623 #endif
    624         BUILD_DIR/lib/rsp.o(.text);
    625 #endif
    626 
    627         /* data */
    628         BUILD_DIR/src/game/crash_screen.o(.data*);
    629         BUILD_DIR/src/game/main.o(.data*);
    630         BUILD_DIR/src/game/game_init.o(.data*);
    631         BUILD_DIR/src/game/sound_init.o(.data*);
    632 #if ENABLE_RUMBLE
    633         BUILD_DIR/src/game/rumble_init.o(.data*);
    634 #endif
    635         BUILD_DIR/src/game/level_update.o(.data*);
    636         BUILD_DIR/src/game/interaction.o(.data*);
    637         BUILD_DIR/src/game/mario.o(.data*);
    638         BUILD_DIR/src/game/mario_step.o(.data*);
    639         BUILD_DIR/src/game/mario_actions_cutscene.o(.data*);
    640         BUILD_DIR/src/game/mario_actions_moving.o(.data*);
    641         BUILD_DIR/src/game/mario_actions_submerged.o(.data*);
    642         BUILD_DIR/src/game/mario_actions_object.o(.data*);
    643         BUILD_DIR/src/game/mario_misc.o(.data*);
    644         BUILD_DIR/src/game/memory.o(.data*);
    645         BUILD_DIR/src/game/save_file.o(.data*);
    646         BUILD_DIR/src/game/area.o(.data*);
    647         BUILD_DIR/src/game/rendering_graph_node.o(.data*);
    648         BUILD_DIR/src/game/profiler.o(.data*);
    649         BUILD_DIR/src/game/camera.o(.data*);
    650         BUILD_DIR/src/game/object_list_processor.o(.data*);
    651 #ifndef VERSION_EU
    652         BUILD_DIR/src/game/object_helpers.o(.data*);
    653 #endif
    654         BUILD_DIR/src/game/behavior_actions.o(.data*);
    655         BUILD_DIR/src/game/platform_displacement.o(.data*);
    656         BUILD_DIR/src/game/spawn_sound.o(.data*);
    657         BUILD_DIR/src/game/debug.o(.data*);
    658         BUILD_DIR/src/game/screen_transition.o(.data*);
    659         BUILD_DIR/src/game/shadow.o(.data*);
    660         BUILD_DIR/src/game/skybox.o(.data*);
    661         BUILD_DIR/src/game/moving_texture.o(.data*);
    662         BUILD_DIR/src/game/geo_misc.o(.data*);
    663         BUILD_DIR/src/game/paintings.o(.data*);
    664         BUILD_DIR/src/game/print.o(.data*);
    665         BUILD_DIR/src/game/ingame_menu.o(.data*);
    666         BUILD_DIR/src/game/envfx_snow.o(.data*);
    667         BUILD_DIR/src/game/envfx_bubbles.o(.data*);
    668         BUILD_DIR/src/game/macro_special_objects.o(.data*);
    669         BUILD_DIR/src/game/hud.o(.data*);
    670         BUILD_DIR/src/game/obj_behaviors.o(.data*);
    671         BUILD_DIR/src/game/obj_behaviors_2.o(.data*);
    672 #ifndef VERSION_EU
    673         /* wildcard doesn't match on EU due to files being moved to engine/ */
    674         BUILD_DIR/src/game*.o(.data*);
    675 #endif
    676 #if defined(VERSION_SH) || defined(VERSION_CN)
    677         BUILD_DIR/src/audio/synthesis_sh.o(.data*);
    678 #else
    679         BUILD_DIR/src/audio/synthesis.o(.data*);
    680 #endif
    681         BUILD_DIR/src/audio/heap.o(.data*);
    682         BUILD_DIR/src/audio/load.o(.data*);
    683         BUILD_DIR/src/audio/playback.o(.data*);
    684         BUILD_DIR/src/audio/effects.o(.data*);
    685         BUILD_DIR/src/audio/seqplayer.o(.data*);
    686 #if defined(VERSION_SH) || defined(VERSION_CN)
    687         BUILD_DIR/src/audio/data.o(.data*);
    688         BUILD_DIR/src/audio/shindou_debug_prints.o(.data*);
    689         BUILD_DIR/src/audio/port_sh.o(.data*);
    690         BUILD_DIR/src/audio/external.o(.data*);
    691         BUILD_DIR/src/audio/audio_session_presets_sh.o(.data*);
    692 #else
    693         BUILD_DIR/src/audio/external.o(.data*);
    694         BUILD_DIR/src/audio/port_eu.o(.data*);
    695         BUILD_DIR/src/audio/data.o(.data*);
    696 #endif
    697 
    698 #ifdef VERSION_CN
    699         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
    700         BUILD_DIR/libultra.a:osContInit.o(.data*);
    701         BUILD_DIR/libultra.a:_Printf.o(.data*);
    702         BUILD_DIR/libultra.a:osSetEventMesg.o(.data*);
    703         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);
    704         BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);
    705         BUILD_DIR/libultra.a:osTimer.o(.data*);
    706         BUILD_DIR/libultra.a:osCreateViManager.o(.data*);
    707         BUILD_DIR/libultra.a:osViTable.o(.data*);
    708         BUILD_DIR/libultra.a:guRotateF.o(.data*);
    709         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);
    710         BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
    711         BUILD_DIR/libultra.a:osCartRomInit.o(.data*);
    712         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);
    713         BUILD_DIR/libultra.a:osInitialize.o(.data*);
    714         BUILD_DIR/libultra.a:_Litob.o(.data*);
    715         BUILD_DIR/libultra.a:__osViInit.o(.data*);
    716         BUILD_DIR/libultra.a:osViData.o(.data*);
    717 #endif
    718 
    719 #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)
    720         BUILD_DIR/libultra.a:_Printf.o(.data*);
    721         BUILD_DIR/libultra.a:osInitialize.o(.data*);
    722         BUILD_DIR/libultra.a:osCreateViManager.o(.data*);
    723         BUILD_DIR/libultra.a:osViTable.o(.data*);
    724         BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
    725         BUILD_DIR/libultra.a:osContInit.o(.data*);
    726 #if ENABLE_RUMBLE
    727         BUILD_DIR/libultra.a:motor.o(.data*);
    728 #endif
    729         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
    730         BUILD_DIR/libultra.a:_Litob.o(.data*);
    731         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);
    732         BUILD_DIR/libultra.a:osTimer.o(.data*);
    733         BUILD_DIR/libultra.a:__osViInit.o(.data*);
    734         BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);
    735         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);
    736         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);
    737         BUILD_DIR/libultra.a:osViData.o(.data*);
    738 #else
    739         BUILD_DIR/libultra.a:osViTable.o(.data*);
    740         BUILD_DIR/libultra.a:osCreateViManager.o(.data*);
    741         BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
    742         BUILD_DIR/libultra.a:osInitialize.o(.data*);
    743         BUILD_DIR/libultra.a:osContInit.o(.data*);
    744 #if ENABLE_RUMBLE
    745         BUILD_DIR/libultra.a:motor.o(.data*);
    746 #endif
    747         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
    748         BUILD_DIR/libultra.a:osTimer.o(.data*);
    749         BUILD_DIR/libultra.a:_Printf.o(.data*);
    750         BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);
    751         BUILD_DIR/libultra.a:__osViInit.o(.data*);
    752         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);
    753         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);
    754         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);
    755         BUILD_DIR/libultra.a:_Litob.o(.data*);
    756         BUILD_DIR/libultra.a:_Ldtob.o(.data*);
    757         BUILD_DIR/libultra.a:osViData.o(.data*);
    758         BUILD_DIR/libultra.a:kdebugserver.o(.data*);
    759         BUILD_DIR/libultra.a:__osSyncPutChars.o(.data*);
    760         BUILD_DIR/libultra.a:guRotateF.o(.data*);
    761         BUILD_DIR/libultra.a:*.o(.data*);
    762 #endif
    763 
    764         /* rodata */
    765         BUILD_DIR/src/game/crash_screen.o(.rodata*);
    766         BUILD_DIR/src/game/main.o(.rodata*);
    767         BUILD_DIR/src/game/game_init.o(.rodata*);
    768         BUILD_DIR/src/game/sound_init.o(.rodata*);
    769         BUILD_DIR/src/game/rumble_init.o(.rodata*);
    770         BUILD_DIR/src/game/level_update.o(.rodata*);
    771         BUILD_DIR/src/game/interaction.o(.rodata*);
    772         BUILD_DIR/src/game/mario.o(.rodata*);
    773         BUILD_DIR/src/game/mario_step.o(.rodata*);
    774         BUILD_DIR/src/game/mario_actions_cutscene.o(.rodata*);
    775         BUILD_DIR/src/game/mario_actions_automatic.o(.rodata*);
    776         BUILD_DIR/src/game/mario_actions_stationary.o(.rodata*);
    777         BUILD_DIR/src/game/mario_actions_moving.o(.rodata*);
    778         BUILD_DIR/src/game/mario_actions_airborne.o(.rodata*);
    779         BUILD_DIR/src/game/mario_actions_submerged.o(.rodata*);
    780         BUILD_DIR/src/game/mario_actions_object.o(.rodata*);
    781         BUILD_DIR/src/game/mario_misc.o(.rodata*);
    782         BUILD_DIR/src/game/memory.o(.rodata*);
    783         BUILD_DIR/src/game/area.o(.rodata*);
    784         BUILD_DIR/src/game/rendering_graph_node.o(.rodata*);
    785         BUILD_DIR/src/game/camera.o(.rodata*);
    786         BUILD_DIR/src/game/object_list_processor.o(.rodata*);
    787 #ifndef VERSION_EU
    788         BUILD_DIR/src/game/object_helpers.o(.rodata*);
    789 #endif
    790         BUILD_DIR/src/game/behavior_actions.o(.rodata*);
    791 #ifndef VERSION_EU
    792         BUILD_DIR/src/game/object_collision.o(.rodata*);
    793         BUILD_DIR/src/game/spawn_object.o(.rodata*);
    794 #endif
    795         BUILD_DIR/libultra.a:__osDisableInt.o(.text);
    796         BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
    797         BUILD_DIR/src/game/spawn_sound.o(.rodata*);
    798         BUILD_DIR/src/game/debug.o(.rodata*);
    799         BUILD_DIR/src/game/screen_transition.o(.rodata*);
    800         BUILD_DIR/src/game/shadow.o(.rodata*);
    801         BUILD_DIR/src/game/skybox.o(.rodata*);
    802         BUILD_DIR/src/game/moving_texture.o(.rodata*);
    803         BUILD_DIR/src/game/geo_misc.o(.rodata*);
    804         BUILD_DIR/src/game/paintings.o(.rodata*);
    805         BUILD_DIR/src/game/print.o(.rodata*);
    806         BUILD_DIR/src/game/ingame_menu.o(.rodata*);
    807         BUILD_DIR/src/game/envfx_snow.o(.rodata*);
    808         BUILD_DIR/src/game/envfx_bubbles.o(.rodata*);
    809         BUILD_DIR/src/game/macro_special_objects.o(.rodata*);
    810         BUILD_DIR/src/game/hud.o(.rodata*);
    811         BUILD_DIR/src/game/obj_behaviors.o(.rodata*);
    812         BUILD_DIR/src/game/obj_behaviors_2.o(.rodata*);
    813 #if defined(VERSION_JP) || defined(VERSION_US)
    814         BUILD_DIR/src/game*.o(.rodata*);
    815 #endif
    816 #if defined(VERSION_SH) || defined(VERSION_CN)
    817         BUILD_DIR/src/audio/synthesis_sh.o(.rodata*);
    818         BUILD_DIR/src/audio/heap.o(.rodata*);
    819         BUILD_DIR/src/audio/load_sh.o(.rodata*);
    820         BUILD_DIR/src/audio/port_sh.o(.rodata*);
    821 #else
    822         BUILD_DIR/src/audio/synthesis.o(.rodata*);
    823         BUILD_DIR/src/audio/heap.o(.rodata*);
    824         BUILD_DIR/src/audio/load.o(.rodata*);
    825 #endif
    826         BUILD_DIR/src/audio/playback.o(.rodata*);
    827         BUILD_DIR/src/audio/effects.o(.rodata*);
    828         BUILD_DIR/src/audio/seqplayer.o(.rodata*);
    829         BUILD_DIR/src/audio/external.o(.rodata*);
    830         BUILD_DIR/src/audio/port_eu.o(.rodata*);
    831         BUILD_DIR/src/audio*.o(.rodata*);
    832 
    833 #if defined(VERSION_EU) || defined(VERSION_SH)
    834         BUILD_DIR/libultra.a:_Printf.o(.rodata*);
    835 #endif
    836 
    837 #ifndef VERSION_CN
    838         BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);
    839 #endif
    840         BUILD_DIR/libultra.a:llconv.o(.rodata*);
    841         BUILD_DIR/libultra.a:cosf.o(.rodata*);
    842 #ifdef VERSION_CN
    843         BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);
    844 #endif
    845         BUILD_DIR/libultra.a:sinf.o(.rodata*);
    846         BUILD_DIR/libultra.a:guRotateF.o(.rodata*);
    847 
    848 #if defined(VERSION_EU) || defined(VERSION_SH)
    849         BUILD_DIR/libultra.a:_Litob.o(.rodata*);
    850         BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);
    851         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);
    852         BUILD_DIR/libultra.a:__osDevMgrMain.o(.rodata*);
    853         BUILD_DIR/libultra.a:NaN.o(.rodata*);
    854 #else
    855         BUILD_DIR/libultra.a:_Printf.o(.rodata*);
    856         BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);
    857 #ifdef VERSION_CN
    858         BUILD_DIR/libultra.a:osSetIntMask.o(.rodata*);
    859         BUILD_DIR/libultra.a:__osDevMgrMain.o(.rodata*);
    860 #endif
    861         BUILD_DIR/libultra.a:NaN.o(.rodata*);
    862         BUILD_DIR/libultra.a:_Litob.o(.rodata*);
    863         BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);
    864 #endif
    865 
    866         BUILD_DIR/libultra.a:osSetIntMask.o(.rodata*);
    867         BUILD_DIR/libultra.a:guLookAtRef.o(.rodata*); /* Fast3DEX2 only */
    868 
    869 #ifdef VERSION_CN
    870         BUILD_DIR/libgcc.a:_divdi3.o(.rodata*);
    871         BUILD_DIR/libgcc.a:_moddi3.o(.rodata*);
    872         BUILD_DIR/libgcc.a:_udivdi3.o(.rodata*);
    873         BUILD_DIR/libgcc.a:_umoddi3.o(.rodata*);
    874         BUILD_DIR/libgcc.a:_cmpdi2.o(.rodata*);
    875         BUILD_DIR/libgcc.a:_floatdidf.o(.rodata*);
    876         BUILD_DIR/libgcc.a:_floatdisf.o(.rodata*);
    877         BUILD_DIR/libgcc.a:_fixunsdfdi.o(.rodata*);
    878         BUILD_DIR/libgcc.a:_fixdfdi.o(.rodata*);
    879         BUILD_DIR/libgcc.a:_fixunssfdi.o(.rodata*);
    880         BUILD_DIR/libgcc.a:_fixsfdi.o(.rodata*);
    881 #endif
    882 #ifndef VERSION_EU
    883         BUILD_DIR/libultra.a:*.o(.rodata*);
    884 #endif
    885         /* audio blobs, should really be moved into a separate file */
    886 #if defined(VERSION_SH) || defined(VERSION_CN)
    887         BUILD_DIR/src/audio/load_sh.o(.data*);
    888 #endif
    889         BUILD_DIR/lib/rsp.o(.rodata*);
    890     }
    891     END_SEG(main)
    892 
    893     BEGIN_NOLOAD(main)
    894     {
    895         BUILD_DIR/src/game/cn_common_syms_1.o(.bss*);
    896         BUILD_DIR/src/game/crash_screen.o(.bss*);
    897         BUILD_DIR/src/game/main.o(.bss*);
    898         BUILD_DIR/src/game/game_init.o(.bss*);
    899         BUILD_DIR/src/game/sound_init.o(.bss*);
    900 #if ENABLE_RUMBLE
    901         BUILD_DIR/src/game/rumble_init.o(.bss*);
    902 #endif
    903         BUILD_DIR/src/game/level_update.o(.bss*);
    904         BUILD_DIR/src/game/interaction.o(.bss*);
    905         BUILD_DIR/src/game/mario.o(.bss*);
    906         BUILD_DIR/src/game/mario_actions_cutscene.o(.bss*);
    907         BUILD_DIR/src/game/mario_actions_moving.o(.bss*);
    908         BUILD_DIR/src/game/mario_actions_submerged.o(.bss*);
    909         BUILD_DIR/src/game/mario_misc.o(.bss*);
    910         BUILD_DIR/src/game/memory.o(.bss*);
    911         BUILD_DIR/src/game/save_file.o(.bss*);
    912         BUILD_DIR/src/game/area.o(.bss*);
    913         BUILD_DIR/src/game/rendering_graph_node.o(.bss*);
    914         BUILD_DIR/src/game/profiler.o(.bss*);
    915         BUILD_DIR/src/game/camera.o(.bss*);
    916         BUILD_DIR/src/game/object_list_processor.o(.bss*);
    917 #ifndef VERSION_EU
    918         BUILD_DIR/src/game/object_helpers.o(.bss*);
    919 #endif
    920         BUILD_DIR/src/game/behavior_actions.o(.bss*);
    921         BUILD_DIR/src/game/debug.o(.bss*);
    922         BUILD_DIR/src/game/shadow.o(.bss*);
    923         BUILD_DIR/src/game/skybox.o(.bss*);
    924         BUILD_DIR/src/game/moving_texture.o(.bss*);
    925         BUILD_DIR/src/game/geo_misc.o(.bss*);
    926         BUILD_DIR/src/game/paintings.o(.bss*);
    927         BUILD_DIR/src/game/print.o(.bss*);
    928         BUILD_DIR/src/game/ingame_menu.o(.bss*);
    929         BUILD_DIR/src/game/envfx_snow.o(.bss*);
    930         BUILD_DIR/src/game/envfx_bubbles.o(.bss*);
    931         BUILD_DIR/src/game/macro_special_objects.o(.bss*);
    932         BUILD_DIR/src/game/hud.o(.bss*);
    933         BUILD_DIR/src/game/obj_behaviors.o(.bss*);
    934         BUILD_DIR/src/game/obj_behaviors_2.o(.bss*);
    935 #if !defined(VERSION_EU) && !defined(VERSION_CN)
    936         BUILD_DIR/src/game*.o(.bss*);
    937 #endif
    938         BUILD_DIR/src/audio/external.o(.bss*);
    939 #ifdef VERSION_EU
    940         BUILD_DIR/src/audio/port_eu.o(.bss*);
    941 #endif
    942 #if defined(VERSION_SH) || defined(VERSION_CN)
    943         BUILD_DIR/src/audio/globals_start.o(.bss*);
    944         BUILD_DIR/src/audio/synthesis_sh.o(.bss*);
    945         BUILD_DIR/src/audio/heap.o(.bss*);
    946         BUILD_DIR/src/audio/load_sh.o(.bss*);
    947         BUILD_DIR/src/audio/data.o(.bss*);
    948 #endif
    949 
    950 #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)
    951         BUILD_DIR/libultra.a:osInitialize.o(.bss*);
    952         BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);
    953         BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);
    954 #ifdef VERSION_CN
    955         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
    956 #endif
    957         BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);
    958         BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);
    959         BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
    960         BUILD_DIR/libultra.a:osContInit.o(.bss*);
    961 #if ENABLE_RUMBLE
    962         BUILD_DIR/libultra.a:motor.o(.bss*);
    963 #endif
    964         BUILD_DIR/libultra.a:guRotateF.o(.bss*);
    965 #ifdef VERSION_SH
    966         BUILD_DIR/libultra.a:osCartRomInit.o(.bss*);
    967 #endif
    968 #ifdef VERSION_EU
    969         BUILD_DIR/libultra.a:leointerrupt.o(.bss*);
    970 #endif
    971         BUILD_DIR/libultra.a:osTimer.o(.bss*);
    972 #ifdef VERSION_SH
    973         BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);
    974 #endif
    975         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
    976 #ifndef VERSION_CN
    977         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
    978 #endif
    979 #if ENABLE_RUMBLE
    980         BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);
    981 #endif
    982         BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
    983         BUILD_DIR/libultra.a:kdebugserver.o(.bss*);
    984 #ifdef VERSION_SH
    985         BUILD_DIR/libultra.a:leointerrupt.o(.bss*);
    986 #endif
    987 #ifdef VERSION_EU
    988         BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);
    989 #endif
    990         BUILD_DIR/libultra.a:_Printf.o(.bss*);
    991         BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.bss*);
    992         BUILD_DIR/libultra.a:__osSetHWintrRoutine.o(.bss*);
    993 #else
    994         BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);
    995         BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);
    996         BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);
    997         BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);
    998         BUILD_DIR/libultra.a:osInitialize.o(.bss*);
    999         BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
   1000         BUILD_DIR/libultra.a:osContInit.o(.bss*);
   1001 #if ENABLE_RUMBLE
   1002         BUILD_DIR/libultra.a:motor.o(.bss*);
   1003 #endif
   1004         BUILD_DIR/libultra.a:guRotateF.o(.bss*);
   1005         BUILD_DIR/libultra.a:osTimer.o(.bss*);
   1006         BUILD_DIR/libultra.a:_Printf.o(.bss*);
   1007         BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
   1008         BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
   1009 #if ENABLE_RUMBLE
   1010         BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);
   1011 #endif
   1012         BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
   1013         BUILD_DIR/libultra.a:kdebugserver_stack.o(.bss*);
   1014         BUILD_DIR/libultra.a:kdebugserver.o(.bss*);
   1015 #endif
   1016 
   1017         BUILD_DIR/libultra.a:*.o(.bss*);
   1018 
   1019         BUILD_DIR/src/game/cn_common_syms_2.o(.bss*);
   1020 
   1021         . = ALIGN(0x8);
   1022     }
   1023     END_NOLOAD(main)
   1024 
   1025 #ifdef VERSION_CN
   1026     // Hack for CN to make asm/entry.s match, since we aren't using
   1027     // the original assembler and so can't get lui/ori from la pseudo
   1028     CREATE_LO_HI_PAIR(_mainSegmentNoloadStart, ADDR (.main.noload))
   1029     CREATE_LO_HI_PAIR(gIdleThreadStack, gIdleThreadStack)
   1030     CREATE_LO_HI_PAIR(main_func, main_func)
   1031 #endif
   1032 
   1033     CREATE_LO_HI_PAIR(_mainSegmentNoloadSize, SIZEOF (.main.noload))
   1034 
   1035     BEGIN_SEG(engine, ADDR_OR_ALIGN(SEG_ENGINE))
   1036     {
   1037         BUILD_DIR/src/engine/math_util.o(.text);
   1038         BUILD_DIR/src/engine/graph_node.o(.text);
   1039         BUILD_DIR/src/engine/graph_node_manager.o(.text);
   1040         BUILD_DIR/src/engine/geo_layout.o(.text);
   1041         BUILD_DIR/src/engine/level_script.o(.text);
   1042         BUILD_DIR/src/engine/surface_collision.o(.text);
   1043         BUILD_DIR/src/engine/surface_load.o(.text);
   1044         BUILD_DIR/src/engine/behavior_script.o(.text);
   1045 #ifdef VERSION_EU
   1046         BUILD_DIR/src/game/object_collision.o(.text);
   1047         BUILD_DIR/src/game/spawn_object.o(.text);
   1048         BUILD_DIR/src/game/object_helpers.o(.text);
   1049 #endif
   1050         BUILD_DIR/src/engine*.o(.text);
   1051         /* data */
   1052         BUILD_DIR/src/engine/graph_node.o(.data*);
   1053         BUILD_DIR/src/engine/graph_node_manager.o(.data*);
   1054         BUILD_DIR/src/engine/math_util.o(.data*);
   1055         BUILD_DIR/src/engine/geo_layout.o(.data*);
   1056         BUILD_DIR/src/engine/level_script.o(.data*);
   1057         BUILD_DIR/src/engine/behavior_script.o(.data*);
   1058 #ifdef VERSION_EU
   1059         BUILD_DIR/src/game/object_collision.o(.data*);
   1060         BUILD_DIR/src/game/spawn_object.o(.data*);
   1061         BUILD_DIR/src/game/object_helpers.o(.data*);
   1062 #endif
   1063         BUILD_DIR/src/engine*.o(.data*);
   1064         /* rodata */
   1065         BUILD_DIR/src/engine/math_util.o(.rodata*);
   1066         BUILD_DIR/src/engine/level_script.o(.rodata*);
   1067         BUILD_DIR/src/engine/surface_collision.o(.rodata*);
   1068         BUILD_DIR/src/engine/surface_load.o(.rodata*);
   1069 #ifdef VERSION_EU
   1070         BUILD_DIR/src/game/object_collision.o(.rodata*);
   1071         BUILD_DIR/src/game/spawn_object.o(.rodata*);
   1072         BUILD_DIR/src/game/object_helpers.o(.rodata*);
   1073 #endif
   1074 #ifdef VERSION_CN
   1075         BUILD_DIR/src/engine/stub.o(.rodata*);
   1076 #endif
   1077         BUILD_DIR/src/engine*.o(.rodata*);
   1078     }
   1079     END_SEG(engine)
   1080     BEGIN_NOLOAD(engine)
   1081     {
   1082         BUILD_DIR/src/engine/math_util.o(.bss*);
   1083         BUILD_DIR/src/engine/geo_layout.o(.bss*);
   1084         BUILD_DIR/src/engine/level_script.o(.bss*);
   1085         BUILD_DIR/src/engine/surface_collision.o(.bss*);
   1086         BUILD_DIR/src/engine/surface_load.o(.bss*);
   1087         BUILD_DIR/src/engine/behavior_script.o(.bss*);
   1088 #ifdef VERSION_EU
   1089         BUILD_DIR/src/game/object_collision.o(.bss*);
   1090         BUILD_DIR/src/game/spawn_object.o(.bss*);
   1091         BUILD_DIR/src/game/object_helpers.o(.bss*);
   1092 #endif
   1093         BUILD_DIR/src/engine*.o(.bss*);
   1094     }
   1095     END_NOLOAD(engine)
   1096 
   1097     . = ADDR_OR_ALIGN(SEG_FRAMEBUFFERS);
   1098     BEGIN_NOLOAD(framebuffers)
   1099     {
   1100         BUILD_DIR/src/buffers/framebuffers.o(.bss*);
   1101     }
   1102     END_NOLOAD(framebuffers)
   1103 
   1104     BEGIN_SEG(entry, 0x10000000)
   1105     {
   1106         BUILD_DIR/levels/entry.o(.data);
   1107     }
   1108     END_SEG(entry)
   1109 
   1110     /* load MIO0 and level data */
   1111     MIO0_SEG(segment2, 0x02000000)
   1112 #ifdef VERSION_EU
   1113     MIO0_EU_SEG(translation_en, 0x19000000)
   1114     MIO0_EU_SEG(translation_fr, 0x19000000)
   1115     MIO0_EU_SEG(translation_de, 0x19000000)
   1116 #endif
   1117 
   1118     /* mario actor group */
   1119     STANDARD_OBJECTS(group0,  0x04000000, 0x17000000)
   1120 
   1121     /* load the other actor groups */
   1122     STANDARD_OBJECTS(group1,  0x05000000, 0x0C000000)
   1123     STANDARD_OBJECTS(group2,  0x05000000, 0x0C000000)
   1124     STANDARD_OBJECTS(group3,  0x05000000, 0x0C000000)
   1125     STANDARD_OBJECTS(group4,  0x05000000, 0x0C000000)
   1126     STANDARD_OBJECTS(group5,  0x05000000, 0x0C000000)
   1127     STANDARD_OBJECTS(group6,  0x05000000, 0x0C000000)
   1128     STANDARD_OBJECTS(group7,  0x05000000, 0x0C000000)
   1129     STANDARD_OBJECTS(group8,  0x05000000, 0x0C000000)
   1130     STANDARD_OBJECTS(group9,  0x05000000, 0x0C000000)
   1131     STANDARD_OBJECTS(group10, 0x05000000, 0x0C000000)
   1132     STANDARD_OBJECTS(group11, 0x05000000, 0x0C000000)
   1133     STANDARD_OBJECTS(group12, 0x06000000, 0x0D000000)
   1134     STANDARD_OBJECTS(group13, 0x06000000, 0x0D000000)
   1135     STANDARD_OBJECTS(group14, 0x06000000, 0x0D000000)
   1136     STANDARD_OBJECTS(group15, 0x06000000, 0x0D000000)
   1137     STANDARD_OBJECTS(group16, 0x06000000, 0x0D000000)
   1138     STANDARD_OBJECTS(group17, 0x06000000, 0x0D000000)
   1139 
   1140     /* load the common actor groups */
   1141     STANDARD_OBJECTS(common0, 0x08000000, 0x0F000000)
   1142     STANDARD_OBJECTS(common1, 0x03000000, 0x16000000)
   1143 
   1144     /* use segmented addressing for behaviors */
   1145     BEGIN_SEG(behavior, 0x13000000)
   1146     {
   1147         BUILD_DIR/data/behavior_data.o(.data);
   1148     }
   1149     END_SEG(behavior)
   1150 
   1151     /* 0x8016F000 21D7D0-255EC0 [386F0] */
   1152     BEGIN_SEG(goddard, SEG_GODDARD)
   1153     {
   1154         BUILD_DIR/src/menu/title_screen.o(.text);
   1155         BUILD_DIR/src/menu/intro_geo.o(.text);
   1156         BUILD_DIR/src/menu/file_select.o(.text);
   1157         BUILD_DIR/src/menu/star_select.o(.text);
   1158         BUILD_DIR/src/menu*.o(.text);
   1159         BUILD_DIR/libgoddard.a:gd_main.o(.text);
   1160         BUILD_DIR/libgoddard.a:gd_memory.o(.text);
   1161         BUILD_DIR/libgoddard.a:sfx.o(.text);
   1162         BUILD_DIR/libgoddard.a:draw_objects.o(.text);
   1163         BUILD_DIR/libgoddard.a:objects.o(.text);
   1164         BUILD_DIR/libgoddard.a:skin_movement.o(.text);
   1165         BUILD_DIR/libgoddard.a:particles.o(.text);
   1166         BUILD_DIR/libgoddard.a:dynlist_proc.o(.text);
   1167         BUILD_DIR/libgoddard.a:old_menu.o(.text);
   1168         BUILD_DIR/libgoddard.a:debug_utils.o(.text);
   1169         BUILD_DIR/libgoddard.a:joints.o(.text);
   1170         BUILD_DIR/libgoddard.a:skin.o(.text);
   1171         BUILD_DIR/libgoddard.a:gd_math.o(.text);
   1172         BUILD_DIR/libgoddard.a:shape_helper.o(.text);
   1173         BUILD_DIR/libgoddard.a:renderer.o(.text);
   1174         BUILD_DIR/libgoddard.a:*.o(.text);
   1175         /* data, rodata, per file */
   1176         BUILD_DIR/src/menu/title_screen.o(.data*);
   1177         BUILD_DIR/src/menu/title_screen.o(.rodata*);
   1178         BUILD_DIR/src/menu/intro_geo.o(.data*);
   1179         BUILD_DIR/src/menu/file_select.o(.data*);
   1180         BUILD_DIR/src/menu/file_select.o(.rodata*);
   1181         BUILD_DIR/src/menu/star_select.o(.data*);
   1182         BUILD_DIR/src/menu/star_select.o(.rodata*);
   1183         BUILD_DIR/src/menu*.o(.data*);
   1184         BUILD_DIR/src/menu*.o(.rodata*);
   1185         /* goddard subsystem data */
   1186         BUILD_DIR/libgoddard.a:gd_main.o(.data*);
   1187         BUILD_DIR/libgoddard.a:draw_objects.o(.data*);
   1188         BUILD_DIR/libgoddard.a:objects.o(.data*);
   1189         BUILD_DIR/libgoddard.a:particles.o(.data*);
   1190         BUILD_DIR/libgoddard.a:dynlist_proc.o(.data*);
   1191         BUILD_DIR/libgoddard.a:debug_utils.o(.data*);
   1192         BUILD_DIR/libgoddard.a:joints.o(.data*);
   1193         BUILD_DIR/libgoddard.a:shape_helper.o(.data*);
   1194         BUILD_DIR/libgoddard.a:renderer.o(.data*);
   1195         /* goddard subsystem rodata */
   1196         BUILD_DIR/libgoddard.a:gd_main.o(.rodata*);
   1197         BUILD_DIR/libgoddard.a:gd_memory.o(.rodata*);
   1198         BUILD_DIR/libgoddard.a:draw_objects.o(.rodata*);
   1199         BUILD_DIR/libgoddard.a:objects.o(.rodata*);
   1200         BUILD_DIR/libgoddard.a:skin_movement.o(.rodata*);
   1201         BUILD_DIR/libgoddard.a:particles.o(.rodata*);
   1202         BUILD_DIR/libgoddard.a:dynlist_proc.o(.rodata*);
   1203         BUILD_DIR/libgoddard.a:old_menu.o(.rodata*);
   1204         BUILD_DIR/libgoddard.a:debug_utils.o(.rodata*);
   1205         BUILD_DIR/libgoddard.a:joints.o(.rodata*);
   1206         BUILD_DIR/libgoddard.a:skin.o(.rodata*);
   1207         BUILD_DIR/libgoddard.a:gd_math.o(.rodata*);
   1208         BUILD_DIR/libgoddard.a:shape_helper.o(.rodata*);
   1209         BUILD_DIR/libgoddard.a:renderer.o(.rodata*);
   1210     }
   1211     END_SEG(goddard)
   1212     BEGIN_NOLOAD(goddard)
   1213     {
   1214         BUILD_DIR/src/menu/intro_geo.o(.bss*);
   1215         BUILD_DIR/src/menu/file_select.o(.bss*);
   1216         BUILD_DIR/src/menu/star_select.o(.bss*);
   1217         BUILD_DIR/src/menu*.o(.bss*);
   1218         BUILD_DIR/libgoddard.a:gd_main.o(.bss*);
   1219         BUILD_DIR/libgoddard.a:gd_memory.o(.bss*);
   1220         BUILD_DIR/libgoddard.a:sfx.o(.bss*);
   1221         BUILD_DIR/libgoddard.a:draw_objects.o(.bss*);
   1222         BUILD_DIR/libgoddard.a:objects.o(.bss*);
   1223         BUILD_DIR/libgoddard.a:skin_movement.o(.bss*);
   1224         BUILD_DIR/libgoddard.a:particles.o(.bss*);
   1225         BUILD_DIR/libgoddard.a:dynlist_proc.o(.bss*);
   1226         BUILD_DIR/libgoddard.a:old_menu.o(.bss*);
   1227         BUILD_DIR/libgoddard.a:debug_utils.o(.bss*);
   1228         BUILD_DIR/libgoddard.a:joints.o(.bss*);
   1229         BUILD_DIR/libgoddard.a:skin.o(.bss*);
   1230         BUILD_DIR/libgoddard.a:shape_helper.o(.bss*);
   1231         BUILD_DIR/libgoddard.a:renderer.o(.bss*);
   1232         BUILD_DIR/libgoddard.a:*.o(.bss*);
   1233     }
   1234     END_NOLOAD(goddard)
   1235 
   1236     /* 0x268020 0x268020-0 [0] */
   1237     BEGIN_SEG(intro, 0x14000000)
   1238     {
   1239         BUILD_DIR/levels/intro/script.o(.data);
   1240         BUILD_DIR/levels/intro/geo.o(.data);
   1241     }
   1242     END_SEG(intro)
   1243     BEGIN_SEG(intro_segment_7, 0x07000000)
   1244     {
   1245         BUILD_DIR/levels/intro/leveldata.mio0.o(.data);
   1246         . = ALIGN(0x10);
   1247     }
   1248     END_SEG(intro_segment_7)
   1249 
   1250     MIO0_SEG(debug_level_select, 0x07000000)
   1251     MIO0_SEG(title_screen_bg, 0x0A000000)
   1252 
   1253     /* 271B20-2A42A0 [32780] */
   1254     BEGIN_SEG(gd_dynlists, 0x04000000)
   1255     {
   1256         BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.data);
   1257         BUILD_DIR/libgoddard.a:dynlist_unused.o(.data);
   1258         BUILD_DIR/libgoddard.a:dynlist_mario_face.o(.data);
   1259         BUILD_DIR/libgoddard.a:dynlists_mario_eyes.o(.data);
   1260         BUILD_DIR/libgoddard.a:dynlists_mario_eyebrows_mustache.o(.data);
   1261         BUILD_DIR/libgoddard.a:dynlist_mario_master.o(.data);
   1262         BUILD_DIR/libgoddard.a:anim_mario_mustache_right.o(.data);
   1263         BUILD_DIR/libgoddard.a:anim_mario_mustache_left.o(.data);
   1264         BUILD_DIR/libgoddard.a:anim_mario_lips_1.o(.data);
   1265         BUILD_DIR/libgoddard.a:anim_mario_lips_2.o(.data);
   1266         BUILD_DIR/libgoddard.a:anim_mario_eyebrows_1.o(.data);
   1267         BUILD_DIR/libgoddard.a:anim_group_1.o(.data);
   1268         BUILD_DIR/libgoddard.a:anim_group_2.o(.data);
   1269         BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.rodata*);
   1270         BUILD_DIR/libgoddard.a:dynlist_unused.o(.rodata*);
   1271         BUILD_DIR/libgoddard.a:*.o(.data);
   1272         BUILD_DIR/libgoddard.a:*.o(.rodata);
   1273     }
   1274     END_SEG(gd_dynlists)
   1275 
   1276     gMainLevels = __romPos;
   1277 
   1278     BEGIN_SEG(menu, 0x14000000)
   1279     {
   1280         BUILD_DIR/levels/menu/script.o(.data);
   1281         BUILD_DIR/levels/menu/geo.o(.data);
   1282     }
   1283     END_SEG(menu)
   1284     BEGIN_SEG(menu_segment_7, 0x07000000)
   1285     {
   1286         BUILD_DIR/levels/menu/leveldata.mio0.o(.data);
   1287         . = ALIGN(0x10);
   1288     }
   1289     END_SEG(menu_segment_7)
   1290 
   1291     BEGIN_SEG(scripts, 0x15000000)
   1292     {
   1293         BUILD_DIR/levels/scripts.o(.data);
   1294     }
   1295     END_SEG(scripts)
   1296 
   1297     MIO0_SEG(water_skybox, 0x0A000000)
   1298     MIO0_SEG(ccm_skybox, 0x0A000000)
   1299     MIO0_SEG(clouds_skybox, 0x0A000000)
   1300     MIO0_SEG(bitfs_skybox, 0x0A000000)
   1301     MIO0_SEG(wdw_skybox, 0x0A000000)
   1302     MIO0_SEG(cloud_floor_skybox, 0x0A000000)
   1303     MIO0_SEG(ssl_skybox, 0x0A000000)
   1304     MIO0_SEG(bbh_skybox, 0x0A000000)
   1305     MIO0_SEG(bidw_skybox, 0x0A000000)
   1306     MIO0_SEG(bits_skybox, 0x0A000000)
   1307 
   1308     // Texture bins
   1309     MIO0_SEG(fire, 0x09000000)
   1310     MIO0_SEG(spooky, 0x09000000)
   1311     MIO0_SEG(generic, 0x09000000)
   1312     MIO0_SEG(water, 0x09000000)
   1313     MIO0_SEG(sky, 0x09000000)
   1314     MIO0_SEG(snow, 0x09000000)
   1315     MIO0_SEG(cave, 0x09000000)
   1316     MIO0_SEG(machine, 0x09000000)
   1317     MIO0_SEG(mountain, 0x09000000)
   1318     MIO0_SEG(grass, 0x09000000)
   1319     MIO0_SEG(outside, 0x09000000)
   1320     MIO0_SEG(inside, 0x09000000)
   1321     MIO0_SEG(effect, 0x0B000000)
   1322 
   1323 #define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
   1324 #define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) STANDARD_LEVEL(folder)
   1325 
   1326     #include "levels/level_defines.h"
   1327 
   1328 #undef STUB_LEVEL
   1329 #undef DEFINE_LEVEL
   1330 
   1331     /* 4E9FA0-? [?] */
   1332     BEGIN_SEG(assets, __romPos)
   1333     {
   1334         BUILD_DIR/assets/mario_anim_data.o(.data);
   1335         BUILD_DIR/assets/mario_anim_data.o(.rodata);
   1336         BUILD_DIR/assets/demo_data.o(.data);
   1337         BUILD_DIR/sound/sound_data.o(.data);
   1338     }
   1339     END_SEG(assets)
   1340 
   1341     /* Discard everything not specifically mentioned above. */
   1342     /DISCARD/ :
   1343     {
   1344         *(*);
   1345     }
   1346 
   1347     ASSERT((_goddardSegmentNoloadEnd <= SEG_POOL_END), "Error: menu segment extended past pool end")
   1348     ASSERT((_mainSegmentNoloadEnd <= _engineSegmentStart), "Error: main segment extended into engine.")
   1349     ASSERT((_engineSegmentNoloadEnd <= _framebuffersSegmentNoloadStart), "Error: engine segment extended into framebuffers.")
   1350     ASSERT((_framebuffersSegmentNoloadEnd <= RDRAM_END), "Error: framebuffers segment extended past RDRAM end")
   1351 }