Merge pull request #438 from s4Ys369/revert-434-patch-1
[sm64pc.git] / sm64.ld
blob85069852946056a065a766b6fba088174598c7ae
1 OUTPUT_ARCH (mips)
3 /* include/segments.h defines SEG_POOL_START, SEG_POOL_END, SEG_BUFFERS,
4  * SEG_GODDARD, SEG_MAIN, SEG_ENGINE, SEG_FRAMEBUFFERS */
5 #include "segments.h"
7 #define BEGIN_SEG(name, addr) \
8     _##name##SegmentStart = ADDR(.name); \
9     _##name##SegmentRomStart = __romPos; \
10     .name addr : AT(__romPos)
12 #define END_SEG(name) \
13     _##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
14     _##name##SegmentRomEnd = __romPos + SIZEOF(.name); \
15     __romPos += SIZEOF(.name);
17 #define BEGIN_NOLOAD(name) \
18     _##name##SegmentNoloadStart = ADDR(.name.noload); \
19     .name.noload (NOLOAD) :
21 #define END_NOLOAD(name) \
22     _##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload);
24 #define MIO0_SEG(name, segAddr) \
25    BEGIN_SEG(name##_mio0, segAddr) \
26    { \
27       BUILD_DIR/bin/name.mio0.o(.data); \
28       . = ALIGN(0x10); \
29    } \
30    END_SEG(name##_mio0)
32 #define MIO0_EU_SEG(name, segAddr) \
33    BEGIN_SEG(name##_mio0, segAddr) \
34    { \
35       BUILD_DIR/bin/eu/name.mio0.o(.data); \
36       . = ALIGN(0x10); \
37    } \
38    END_SEG(name##_mio0)
40 #define STANDARD_LEVEL(name) \
41    BEGIN_SEG(name##_segment_7, 0x07000000) \
42    { \
43       BUILD_DIR/levels/name/leveldata.mio0.o(.data); \
44       . = ALIGN(0x10); \
45    } \
46    END_SEG(name##_segment_7) \
47    BEGIN_SEG(name, 0x0E000000) \
48    { \
49       BUILD_DIR/levels/name/script.o(.data); \
50       BUILD_DIR/levels/name/geo.o(.data); \
51    } \
52    END_SEG(name)
54 #define STANDARD_OBJECTS(name, segAddr, geoAddr) \
55    BEGIN_SEG(name##_mio0, segAddr) \
56    { \
57       BUILD_DIR/actors/name.mio0.o(.data); \
58       . = ALIGN(0x10); \
59    } \
60    END_SEG(name##_mio0) \
61    BEGIN_SEG(name##_geo, geoAddr) \
62    { \
63       BUILD_DIR/actors/name##_geo.o(.data); \
64    } \
65    END_SEG(name##_geo)
67 SECTIONS
69    __romPos = 0;
71    BEGIN_SEG(boot, 0x04000000)
72    {
73       BUILD_DIR/asm/rom_header.o(.text);
74       BUILD_DIR/asm/boot.o(.text);
75    }
76    END_SEG(boot)
78    . = 0x80000400;
79    BEGIN_NOLOAD(zbuffer) {
80       BUILD_DIR/src/buffers/zbuffer.o(.bss*);
81    }
83    /* lib/src/__osDevMgrMain.c and lib/src/osCreateViManager.c contain infinite
84     * loops compiled without -g, which cause the return statements and the .o
85     * files themselves to be aligned to 32-byte boundaries. But in the binary,
86     * they are actually aligned only to 16 bytes! We force this to happen using
87     * a SUBALIGN directive. */
88    BEGIN_SEG(main, SEG_MAIN) SUBALIGN(16)
89    {
90       BUILD_DIR/asm/entry.o(.text);
91       BUILD_DIR/src/game/crash_screen.o(.text);
92       BUILD_DIR/src/game/main.o(.text);
93       BUILD_DIR/src/game/game_init.o(.text);
94       BUILD_DIR/src/game/sound_init.o(.text);
95 #ifdef VERSION_SH
96       BUILD_DIR/src/game/thread6.o(.text);
97 #endif
98       BUILD_DIR/src/game/level_update.o(.text);
99       BUILD_DIR/src/game/interaction.o(.text);
100       BUILD_DIR/src/game/mario.o(.text);
101       BUILD_DIR/src/game/mario_step.o(.text);
102       BUILD_DIR/src/game/mario_actions_cutscene.o(.text);
103       BUILD_DIR/src/game/mario_actions_automatic.o(.text);
104       BUILD_DIR/src/game/mario_actions_stationary.o(.text);
105       BUILD_DIR/src/game/mario_actions_moving.o(.text);
106       BUILD_DIR/src/game/mario_actions_airborne.o(.text);
107       BUILD_DIR/src/game/mario_actions_submerged.o(.text);
108       BUILD_DIR/src/game/mario_actions_object.o(.text);
109       BUILD_DIR/src/game/level_geo.o(.text);
110       BUILD_DIR/src/game/mario_misc.o(.text);
111       BUILD_DIR/src/game/memory.o(.text);
112       BUILD_DIR/src/game/save_file.o(.text);
113       BUILD_DIR/src/game/area.o(.text);
114       BUILD_DIR/src/game/rendering_graph_node.o(.text);
115       BUILD_DIR/src/game/profiler.o(.text);
116       BUILD_DIR/asm/decompress.o(.text);
117       BUILD_DIR/src/game/camera.o(.text);
118       BUILD_DIR/src/game/debug_course.o(.text);
119       BUILD_DIR/src/game/object_list_processor.o(.text);
120 #ifndef VERSION_EU
121       BUILD_DIR/src/game/object_helpers.o(.text);
122 #endif
123       BUILD_DIR/src/game/behavior_actions.o(.text);
124       BUILD_DIR/src/game/platform_displacement.o(.text);
125 #ifndef VERSION_EU
126       BUILD_DIR/src/game/object_collision.o(.text);
127       BUILD_DIR/src/game/spawn_object.o(.text);
128 #endif
129       BUILD_DIR/src/game/spawn_sound.o(.text);
130       BUILD_DIR/src/game/debug.o(.text);
131       BUILD_DIR/src/game/screen_transition.o(.text);
132       BUILD_DIR/src/game/shadow.o(.text);
133       BUILD_DIR/src/game/skybox.o(.text);
134       BUILD_DIR/src/game/moving_texture.o(.text);
135       BUILD_DIR/src/game/geo_misc.o(.text);
136       BUILD_DIR/src/game/paintings.o(.text);
137       BUILD_DIR/src/game/print.o(.text);
138       BUILD_DIR/src/game/ingame_menu.o(.text);
139       BUILD_DIR/src/game/envfx_snow.o(.text);
140       BUILD_DIR/src/game/envfx_bubbles.o(.text);
141       BUILD_DIR/src/game/macro_special_objects.o(.text);
142       BUILD_DIR/src/game/hud.o(.text);
143       BUILD_DIR/src/game/obj_behaviors.o(.text);
144       BUILD_DIR/src/game/obj_behaviors_2.o(.text);
145       BUILD_DIR/src/audio/synthesis.o(.text);
146       BUILD_DIR/src/audio/heap.o(.text);
147       BUILD_DIR/src/audio/load.o(.text);
148       BUILD_DIR/src/audio/playback.o(.text);
149       BUILD_DIR/src/audio/effects.o(.text);
150       BUILD_DIR/src/audio/seqplayer.o(.text);
151       BUILD_DIR/src/audio/external.o(.text);
152       BUILD_DIR/src/audio/port_eu.o(.text);
153 #if defined(VERSION_EU) || defined(VERSION_SH)
154       BUILD_DIR/libultra.a:string.o(.text);
155       BUILD_DIR/libultra.a:_Printf.o(.text);
156       BUILD_DIR/libultra.a:llmuldiv.o(.text);
157       BUILD_DIR/libultra.a:osInitialize.o(.text);
158       BUILD_DIR/libultra.a:osSetTime.o(.text);
159       BUILD_DIR/libultra.a:osGetTime.o(.text);
160       BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);
161       BUILD_DIR/libultra.a:osViBlack.o(.text);
162       BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
163       BUILD_DIR/libultra.a:__osGetCurrFaultedThread.o(.text);
164       BUILD_DIR/libultra.a:osSetEventMesg.o(.text);
165       BUILD_DIR/libultra.a:osRecvMesg.o(.text);
166       BUILD_DIR/libultra.a:parameters.o(.text);
167       BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);
168       BUILD_DIR/libultra.a:osCreateThread.o(.text);
169       BUILD_DIR/libultra.a:osStartThread.o(.text);
170       BUILD_DIR/libultra.a:osMapTLB.o(.text);
171       BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);
172       BUILD_DIR/libultra.a:sprintf.o(.text);
173       BUILD_DIR/libultra.a:osViSetEvent.o(.text);
174       BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);
175       BUILD_DIR/libultra.a:osSpTaskYield.o(.text);
176       BUILD_DIR/libultra.a:osSendMesg.o(.text);
177       BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);
178       BUILD_DIR/libultra.a:osCreateViManager.o(.text);
179       BUILD_DIR/libultra.a:osViSetMode.o(.text);
180       BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);
181       BUILD_DIR/libultra.a:osCreatePiManager.o(.text);
182       BUILD_DIR/libultra.a:osSetThreadPri.o(.text);
183       BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
184       BUILD_DIR/libultra.a:sqrtf.o(.text);
185       BUILD_DIR/libultra.a:osContStartReadData.o(.text);
186       BUILD_DIR/libultra.a:osContInit.o(.text);
187       BUILD_DIR/libultra.a:osEepromProbe.o(.text);
188       BUILD_DIR/libultra.a:osInvalDCache.o(.text);
189       BUILD_DIR/libultra.a:osPiStartDma.o(.text);
190       BUILD_DIR/libultra.a:bzero.o(.text)
191       BUILD_DIR/libultra.a:osInvalICache.o(.text)
192       BUILD_DIR/libultra.a:osEepromLongRead.o(.text)
193       BUILD_DIR/libultra.a:osEepromLongWrite.o(.text)
194       BUILD_DIR/libultra.a:bcopy.o(.text)
195       BUILD_DIR/libultra.a:guOrthoF.o(.text)
196       BUILD_DIR/libultra.a:guPerspectiveF.o(.text)
197       BUILD_DIR/libultra.a:llconv.o(.text)
198       BUILD_DIR/libultra.a:cosf.o(.text)
199       BUILD_DIR/libultra.a:sinf.o(.text)
200       BUILD_DIR/libultra.a:guTranslateF.o(.text)
201       BUILD_DIR/libultra.a:guRotateF.o(.text)
202       BUILD_DIR/libultra.a:guScaleF.o(.text)
203       BUILD_DIR/libultra.a:osAiSetFrequency.o(.text)
204       BUILD_DIR/libultra.a:alBnkfNew.o(.text)
205       BUILD_DIR/libultra.a:osAiGetLength.o(.text)
206       BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text)
207       BUILD_DIR/libultra.a:_Litob.o(.text)
208       BUILD_DIR/libultra.a:_Ldtob.o(.text)
209       BUILD_DIR/libultra.a:__osSetSR.o(.text)
210       BUILD_DIR/libultra.a:__osGetSR.o(.text)
211       BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text)
212       BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text)
213       BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text)
214       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text)
215       BUILD_DIR/libultra.a:osWritebackDCache.o(.text)
216       BUILD_DIR/libultra.a:osMapTLBRdb.o(.text)
217       BUILD_DIR/libultra.a:osPiRawReadIo.o(.text)
218       BUILD_DIR/libultra.a:EU_D_802f4330.o(.text)
219       BUILD_DIR/libultra.a:D_802F4380.o(.text)
220       BUILD_DIR/libultra.a:func_802F4A20.o(.text)
221       BUILD_DIR/libultra.a:osTimer.o(.text)
222       BUILD_DIR/libultra.a:__osDisableInt.o(.text)
223       BUILD_DIR/libultra.a:__osRestoreInt.o(.text)
224       BUILD_DIR/libultra.a:osGetCount.o(.text)
225       BUILD_DIR/libultra.a:__osViInit.o(.text)
226       BUILD_DIR/libultra.a:__osDequeueThread.o(.text)
227       BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text)
228       BUILD_DIR/libultra.a:__osSpSetStatus.o(.text)
229       BUILD_DIR/libultra.a:__osSpSetPc.o(.text)
230       BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text)
231       BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text)
232       BUILD_DIR/libultra.a:__osSpGetStatus.o(.text)
233       BUILD_DIR/libultra.a:osGetThreadPri.o(.text)
234       BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
235       BUILD_DIR/libultra.a:__osViSwapContext.o(.text)
236       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text)
237       BUILD_DIR/libultra.a:osPiRawStartDma.o(.text)
238       BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text)
239       BUILD_DIR/libultra.a:__osDevMgrMain.o(.text)
240       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text)
241       BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text)
242       BUILD_DIR/libultra.a:osSetTimer.o(.text)
243       BUILD_DIR/libultra.a:osEepromWrite.o(.text)
244       BUILD_DIR/libultra.a:osJamMesg.o(.text)
245       BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text)
246       BUILD_DIR/libultra.a:osEepromRead.o(.text)
247       BUILD_DIR/libultra.a:guMtxF2L.o(.text)
248       BUILD_DIR/libultra.a:guNormalize.o(.text)
249       BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
250       BUILD_DIR/libultra.a:ldiv.o(.text)
251       BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
252       BUILD_DIR/libultra.a:osSetIntMask.o(.text)
253       BUILD_DIR/libultra.a:osDestroyThread.o(.text)
254       BUILD_DIR/libultra.a:osLeoDiskInit.o(.text)
255       BUILD_DIR/libultra.a:__osSetCompare.o(.text)
256       BUILD_DIR/libultra.a:__osProbeTLB.o(.text)
257       BUILD_DIR/libultra.a:__osDequeueThread.o(.text)
258       BUILD_DIR/libultra.a:func_802F7140.o(.text)
259       BUILD_DIR/libultra.a:func_802F71A0.o(.text)
260       BUILD_DIR/libultra.a:func_802F71F0.o(.text)
262       BUILD_DIR/lib/rsp.o(.text);
264 #else
265       BUILD_DIR/src/game*.o(.text);
266       BUILD_DIR/src/audio*.o(.text);
267       BUILD_DIR/libultra.a:parameters.o(.text);
268       BUILD_DIR/libultra.a:osSetTime.o(.text);
269       BUILD_DIR/libultra.a:osMapTLB.o(.text);
270       BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);
271       BUILD_DIR/libultra.a:sprintf.o(.text);
272       BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);
273       BUILD_DIR/libultra.a:osSetEventMesg.o(.text);
274       BUILD_DIR/libultra.a:osViSetEvent.o(.text);
275       BUILD_DIR/libultra.a:osCreateThread.o(.text);
276       BUILD_DIR/libultra.a:osRecvMesg.o(.text);
277       BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);
278       BUILD_DIR/libultra.a:osSpTaskYield.o(.text);
279       BUILD_DIR/libultra.a:osSendMesg.o(.text);
280       BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);
281       BUILD_DIR/libultra.a:osStartThread.o(.text);
282       BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);
283       BUILD_DIR/libultra.a:osCreateViManager.o(.text);
284       BUILD_DIR/libultra.a:osViSetMode.o(.text);
285       BUILD_DIR/libultra.a:osViBlack.o(.text);
286       BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);
287       BUILD_DIR/libultra.a:osCreatePiManager.o(.text);
288       BUILD_DIR/libultra.a:osSetThreadPri.o(.text);
289       BUILD_DIR/libultra.a:osInitialize.o(.text);
290       BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);
291       BUILD_DIR/libultra.a:sqrtf.o(.text);
292       BUILD_DIR/libultra.a:osContStartReadData.o(.text);
293       BUILD_DIR/libultra.a:osContInit.o(.text);
294       BUILD_DIR/libultra.a:osEepromProbe.o(.text);
295       BUILD_DIR/libultra.a:llmuldiv.o(.text);
296       BUILD_DIR/libultra.a:llmuldiv_gcc.o(.text);
297       BUILD_DIR/libultra.a:osInvalDCache.o(.text);
298       BUILD_DIR/libultra.a:osPiStartDma.o(.text);
299       BUILD_DIR/libultra.a:bzero.o(.text);
300       BUILD_DIR/libultra.a:osInvalICache.o(.text);
301       BUILD_DIR/libultra.a:osEepromLongRead.o(.text);
302       BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);
303       BUILD_DIR/libultra.a:bcopy.o(.text);
304       BUILD_DIR/libultra.a:guOrthoF.o(.text);
305       BUILD_DIR/libultra.a:guPerspectiveF.o(.text);
306       BUILD_DIR/libultra.a:osGetTime.o(.text);
307       BUILD_DIR/libultra.a:llconv.o(.text);
308       BUILD_DIR/libultra.a:cosf.o(.text);
309       BUILD_DIR/libultra.a:sinf.o(.text);
310       BUILD_DIR/libultra.a:guTranslateF.o(.text);
311       BUILD_DIR/libultra.a:guRotateF.o(.text);
312       BUILD_DIR/libultra.a:guScaleF.o(.text);
313 #ifndef VERSION_EU
314       BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);
315 #endif
316       BUILD_DIR/libultra.a:alBnkfNew.o(.text);
317       BUILD_DIR/libultra.a:osWritebackDCache.o(.text);
318       BUILD_DIR/libultra.a:osAiGetLength.o(.text);
319       BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);
320       BUILD_DIR/libultra.a:osTimer.o(.text);
321       BUILD_DIR/libultra.a:_Printf.o(.text);
322       BUILD_DIR/libultra.a:string.o(.text);
323       BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
324       BUILD_DIR/libultra.a:__osDisableInt.o(.text);
325       BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
326       BUILD_DIR/libultra.a:__osViInit.o(.text);
327       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);
328       BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);
329       BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);
330       BUILD_DIR/libultra.a:__osSpSetPc.o(.text);
331       BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);
332       BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);
333       BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);
334       BUILD_DIR/libultra.a:osGetThreadPri.o(.text);
335       BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
336       BUILD_DIR/libultra.a:__osViSwapContext.o(.text);
337       BUILD_DIR/libultra.a:osGetCount.o(.text);
338       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);
339       BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);
340       BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);
341       BUILD_DIR/libultra.a:__osSetSR.o(.text);
342       BUILD_DIR/libultra.a:__osGetSR.o(.text);
343       BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);
344       BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);
345       BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);
346       BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);
347       BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);
348 #if VERSION_JP
349       . += 0x40;
350 #endif
351       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);
352       BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
353       BUILD_DIR/libultra.a:osSetTimer.o(.text);
354       BUILD_DIR/libultra.a:osEepromWrite.o(.text);
355       BUILD_DIR/libultra.a:osJamMesg.o(.text);
356       BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
357       BUILD_DIR/libultra.a:osEepromRead.o(.text);
358       BUILD_DIR/libultra.a:guMtxF2L.o(.text);
359       BUILD_DIR/libultra.a:guMtxIdentF.o(.text);
360       BUILD_DIR/libultra.a:guNormalize.o(.text);
361       BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
362       BUILD_DIR/libultra.a:__osSetCompare.o(.text);
363       BUILD_DIR/libultra.a:_Litob.o(.text);
364       BUILD_DIR/libultra.a:_Ldtob.o(.text);
365       BUILD_DIR/libultra.a:kdebugserver.o(.text);
366       BUILD_DIR/libultra.a:__osSyncPutChars.o(.text);
367       BUILD_DIR/libultra.a:osSetIntMask.o(.text);
368       BUILD_DIR/libultra.a:osDestroyThread.o(.text);
369       BUILD_DIR/libultra.a:__osProbeTLB.o(.text);
370       BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
371       BUILD_DIR/libultra.a:ldiv.o(.text);
372       BUILD_DIR/libultra.a:__osGetCause.o(.text);
373       BUILD_DIR/libultra.a:__osAtomicDec.o(.text);
374       BUILD_DIR/libultra.a:guLookAtRef.o(.text); /* Fast3DEX2 only */
375       BUILD_DIR/lib/rsp.o(.text);
376 #endif
378       /* data */
379       BUILD_DIR/src/game/crash_screen.o(.data*);
380       BUILD_DIR/src/game/main.o(.data*);
381       BUILD_DIR/src/game/game_init.o(.data*);
382       BUILD_DIR/src/game/sound_init.o(.data*);
383       BUILD_DIR/src/game/level_update.o(.data*);
384       BUILD_DIR/src/game/interaction.o(.data*);
385       BUILD_DIR/src/game/mario.o(.data*);
386       BUILD_DIR/src/game/mario_step.o(.data*);
387       BUILD_DIR/src/game/mario_actions_cutscene.o(.data*);
388       BUILD_DIR/src/game/mario_actions_moving.o(.data*);
389       BUILD_DIR/src/game/mario_actions_submerged.o(.data*);
390       BUILD_DIR/src/game/mario_actions_object.o(.data*);
391       BUILD_DIR/src/game/mario_misc.o(.data*);
392       BUILD_DIR/src/game/memory.o(.data*);
393       BUILD_DIR/src/game/save_file.o(.data*);
394       BUILD_DIR/src/game/area.o(.data*);
395       BUILD_DIR/src/game/rendering_graph_node.o(.data*);
396       BUILD_DIR/src/game/profiler.o(.data*);
397       BUILD_DIR/src/game/camera.o(.data*);
398       BUILD_DIR/src/game/object_list_processor.o(.data*);
399 #ifndef VERSION_EU
400       BUILD_DIR/src/game/object_helpers.o(.data*);
401 #endif
402       BUILD_DIR/src/game/behavior_actions.o(.data*);
403       BUILD_DIR/src/game/platform_displacement.o(.data*);
404       BUILD_DIR/src/game/spawn_sound.o(.data*);
405       BUILD_DIR/src/game/debug.o(.data*);
406       BUILD_DIR/src/game/screen_transition.o(.data*);
407       BUILD_DIR/src/game/shadow.o(.data*);
408       BUILD_DIR/src/game/skybox.o(.data*);
409       BUILD_DIR/src/game/moving_texture.o(.data*);
410       BUILD_DIR/src/game/geo_misc.o(.data*);
411       BUILD_DIR/src/game/paintings.o(.data*);
412       BUILD_DIR/src/game/print.o(.data*);
413       BUILD_DIR/src/game/ingame_menu.o(.data*);
414       BUILD_DIR/src/game/envfx_snow.o(.data*);
415       BUILD_DIR/src/game/envfx_bubbles.o(.data*);
416       BUILD_DIR/src/game/macro_special_objects.o(.data*);
417       BUILD_DIR/src/game/hud.o(.data*);
418       BUILD_DIR/src/game/obj_behaviors.o(.data*);
419       BUILD_DIR/src/game/obj_behaviors_2.o(.data*);
420 #ifndef VERSION_EU
421       /* wildcard doesn't work on EU due to files being moved to engine/ */
422       BUILD_DIR/src/game*.o(.data*);
423 #endif
424       BUILD_DIR/src/audio/external.o(.data*);
425       BUILD_DIR/src/audio/port_eu.o(.data*);
426       BUILD_DIR/src/audio/data.o(.data*);
427       BUILD_DIR/src/audio*.o(.data*);
429 #ifdef VERSION_EU
431       BUILD_DIR/libultra.a:_Printf.o(.data*);
432       BUILD_DIR/libultra.a:osInitialize.o(.data*);
433       BUILD_DIR/libultra.a:osCreateViManager.o(.data*);
434       BUILD_DIR/libultra.a:osViTable.o(.data*);
435       BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
436       BUILD_DIR/libultra.a:osContInit.o(.data*);
437       BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
439       BUILD_DIR/libultra.a:_Litob.o(.data*);
441       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);
443       BUILD_DIR/libultra.a:osTimer.o(.data*);
444       BUILD_DIR/libultra.a:__osViInit.o(.data*);
445       BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);  // ffff...
447       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);
448       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);
449       BUILD_DIR/libultra.a:osViData.o(.data*);
451 #else
453       BUILD_DIR/libultra.a:osViTable.o(.data*);
454       BUILD_DIR/libultra.a:osCreateViManager.o(.data*);
455       BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
456       BUILD_DIR/libultra.a:osInitialize.o(.data*);
457       BUILD_DIR/libultra.a:osContInit.o(.data*);
458       BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
459       BUILD_DIR/libultra.a:osTimer.o(.data*);
460       BUILD_DIR/libultra.a:_Printf.o(.data*);
461       BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);
462       BUILD_DIR/libultra.a:__osViInit.o(.data*);
463       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);
464       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);
465       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);
466       BUILD_DIR/libultra.a:_Litob.o(.data*);
467       BUILD_DIR/libultra.a:_Ldtob.o(.data*);
468       BUILD_DIR/libultra.a:osViData.o(.data*);
469       BUILD_DIR/libultra.a:kdebugserver.o(.data*);
470       BUILD_DIR/libultra.a:__osSyncPutChars.o(.data*);
471       BUILD_DIR/libultra.a:guRotateF.o(.data*);
472       BUILD_DIR/libultra.a:*.o(.data*);
474 #endif
477       /* rodata */
478       BUILD_DIR/src/game/crash_screen.o(.rodata*);
479       BUILD_DIR/src/game/main.o(.rodata*);
480       BUILD_DIR/src/game/game_init.o(.rodata*);
481       BUILD_DIR/src/game/sound_init.o(.rodata*);
482       BUILD_DIR/src/game/level_update.o(.rodata*);
483       BUILD_DIR/src/game/interaction.o(.rodata*);
484       BUILD_DIR/src/game/mario.o(.rodata*);
485       BUILD_DIR/src/game/mario_step.o(.rodata*);
486       BUILD_DIR/src/game/mario_actions_cutscene.o(.rodata*);
487       BUILD_DIR/src/game/mario_actions_automatic.o(.rodata*);
488       BUILD_DIR/src/game/mario_actions_stationary.o(.rodata*);
489       BUILD_DIR/src/game/mario_actions_moving.o(.rodata*);
490       BUILD_DIR/src/game/mario_actions_airborne.o(.rodata*);
491       BUILD_DIR/src/game/mario_actions_submerged.o(.rodata*);
492       BUILD_DIR/src/game/mario_actions_object.o(.rodata*);
493       BUILD_DIR/src/game/mario_misc.o(.rodata*);
494       BUILD_DIR/src/game/area.o(.rodata*);
495       BUILD_DIR/src/game/rendering_graph_node.o(.rodata*);
496       BUILD_DIR/src/game/camera.o(.rodata*);
497       BUILD_DIR/src/game/object_list_processor.o(.rodata*);
498 #ifndef VERSION_EU
499       BUILD_DIR/src/game/object_helpers.o(.rodata*);
500 #endif
501       BUILD_DIR/src/game/behavior_actions.o(.rodata*);
502 #ifndef VERSION_EU
503       BUILD_DIR/src/game/object_collision.o(.rodata*);
504       BUILD_DIR/src/game/spawn_object.o(.rodata*);
505 #endif
506       BUILD_DIR/src/game/spawn_sound.o(.rodata*);
507       BUILD_DIR/src/game/debug.o(.rodata*);
508       BUILD_DIR/src/game/screen_transition.o(.rodata*);
509       BUILD_DIR/src/game/shadow.o(.rodata*);
510       BUILD_DIR/src/game/skybox.o(.rodata*);
511       BUILD_DIR/src/game/moving_texture.o(.rodata*);
512       BUILD_DIR/src/game/geo_misc.o(.rodata*);
513       BUILD_DIR/src/game/paintings.o(.rodata*);
514       BUILD_DIR/src/game/print.o(.rodata*);
515       BUILD_DIR/src/game/ingame_menu.o(.rodata*);
516       BUILD_DIR/src/game/envfx_snow.o(.rodata*);
517       BUILD_DIR/src/game/envfx_bubbles.o(.rodata*);
518       BUILD_DIR/src/game/macro_special_objects.o(.rodata*);
519       BUILD_DIR/src/game/hud.o(.rodata*);
520       BUILD_DIR/src/game/obj_behaviors.o(.rodata*);
521       BUILD_DIR/src/game/obj_behaviors_2.o(.rodata*);
522 #ifndef VERSION_EU
523       BUILD_DIR/src/game*.o(.rodata*);
524 #endif
525       BUILD_DIR/src/audio/synthesis.o(.rodata*);
526       BUILD_DIR/src/audio/heap.o(.rodata*);
527       BUILD_DIR/src/audio/load.o(.rodata*);
528       BUILD_DIR/src/audio/playback.o(.rodata*);
529       BUILD_DIR/src/audio/effects.o(.rodata*);
530       BUILD_DIR/src/audio/seqplayer.o(.rodata*);
531       BUILD_DIR/src/audio/external.o(.rodata*);
532       BUILD_DIR/src/audio/port_eu.o(.rodata*);
533       BUILD_DIR/src/audio*.o(.rodata*);
535 #ifdef VERSION_EU
536       BUILD_DIR/libultra.a:_Printf.o(.rodata*);
538       BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);
539       BUILD_DIR/libultra.a:llconv.o(.rodata*);
540       BUILD_DIR/libultra.a:cosf.o(.rodata*);
541       BUILD_DIR/libultra.a:sinf.o(.rodata*);
542       BUILD_DIR/libultra.a:guRotateF.o(.rodata*);
544       BUILD_DIR/libultra.a:_Litob.o(.rodata*);
545       BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);
546       
547       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);
548       BUILD_DIR/libultra.a:__osDevMgrMain.o(.rodata*);
549       
550       BUILD_DIR/libultra.a:NaN.o(.rodata*);
551 #else
552       BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);
553       BUILD_DIR/libultra.a:llconv.o(.rodata*);
554       BUILD_DIR/libultra.a:cosf.o(.rodata*);
555       BUILD_DIR/libultra.a:sinf.o(.rodata*);
556       BUILD_DIR/libultra.a:guRotateF.o(.rodata*);
557       BUILD_DIR/libultra.a:_Printf.o(.rodata*);
558       BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);
559       BUILD_DIR/libultra.a:NaN.o(.rodata*);
560       BUILD_DIR/libultra.a:_Litob.o(.rodata*);
561       BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);
562 #endif
563       BUILD_DIR/libultra.a:osSetIntMask.o(.rodata*);
564       BUILD_DIR/libultra.a:guLookAtRef.o(.rodata*); /* Fast3DEX2 only */
565 #ifndef VERSION_EU
566       BUILD_DIR/libultra.a:*.o(.rodata*);
567 #endif
568       BUILD_DIR/lib/rsp.o(.rodata*);
569    }
570    END_SEG(main)
571    BEGIN_NOLOAD(main)
572    {
573       BUILD_DIR/src/game/crash_screen.o(.bss*);
574       BUILD_DIR/src/game/main.o(.bss*);
575       BUILD_DIR/src/game/game_init.o(.bss*);
576       BUILD_DIR/src/game/sound_init.o(.bss*);
577       BUILD_DIR/src/game/level_update.o(.bss*);
578       BUILD_DIR/src/game/interaction.o(.bss*);
579       BUILD_DIR/src/game/mario.o(.bss*);
580       BUILD_DIR/src/game/mario_actions_cutscene.o(.bss*);
581       BUILD_DIR/src/game/mario_actions_moving.o(.bss*);
582       BUILD_DIR/src/game/mario_actions_submerged.o(.bss*);
583       BUILD_DIR/src/game/mario_misc.o(.bss*);
584       BUILD_DIR/src/game/memory.o(.bss*);
585       BUILD_DIR/src/game/save_file.o(.bss*);
586       BUILD_DIR/src/game/area.o(.bss*);
587       BUILD_DIR/src/game/rendering_graph_node.o(.bss*);
588       BUILD_DIR/src/game/profiler.o(.bss*);
589       BUILD_DIR/src/game/camera.o(.bss*);
590       BUILD_DIR/src/game/object_list_processor.o(.bss*);
591 #ifndef VERSION_EU
592       BUILD_DIR/src/game/object_helpers.o(.bss*);
593 #endif
594       BUILD_DIR/src/game/behavior_actions.o(.bss*);
595       BUILD_DIR/src/game/debug.o(.bss*);
596       BUILD_DIR/src/game/shadow.o(.bss*);
597       BUILD_DIR/src/game/skybox.o(.bss*);
598       BUILD_DIR/src/game/moving_texture.o(.bss*);
599       BUILD_DIR/src/game/geo_misc.o(.bss*);
600       BUILD_DIR/src/game/paintings.o(.bss*);
601       BUILD_DIR/src/game/print.o(.bss*);
602       BUILD_DIR/src/game/ingame_menu.o(.bss*);
603       BUILD_DIR/src/game/envfx_snow.o(.bss*);
604       BUILD_DIR/src/game/envfx_bubbles.o(.bss*);
605       BUILD_DIR/src/game/macro_special_objects.o(.bss*)
606       BUILD_DIR/src/game/hud.o(.bss*);
607       BUILD_DIR/src/game/obj_behaviors.o(.bss*);
608       BUILD_DIR/src/game/obj_behaviors_2.o(.bss*);
609 #ifndef VERSION_EU
610       BUILD_DIR/src/game*.o(.bss*);
611 #endif
612       BUILD_DIR/src/audio/external.o(.bss*);
613       BUILD_DIR/src/audio/port_eu.o(.bss*);
614    
615 #ifdef VERSION_EU
616       BUILD_DIR/libultra.a:osInitialize.o(.bss*);
618       BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);
619       BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);
620       BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);
621       
622       BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);
623       BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
624       BUILD_DIR/libultra.a:osContInit.o(.bss*);
626       BUILD_DIR/libultra.a:guRotateF.o(.bss*);
628       BUILD_DIR/libultra.a:unk_stack_data.o(.bss*);
629       BUILD_DIR/libultra.a:osTimer.o(.bss*);
630       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
631       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
632       BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
633       
634       BUILD_DIR/libultra.a:kdebugserver.o(.bss*);
635       BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*)
637       BUILD_DIR/libultra.a:_Printf.o(.bss*);
638       BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.bss*);
639       BUILD_DIR/libultra.a:EU_D_802f4330.o(.bss*);
641 #else
642       BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);
643       BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);
644       BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);
645       BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);
646       BUILD_DIR/libultra.a:osInitialize.o(.bss*);
647       BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
648       BUILD_DIR/libultra.a:osContInit.o(.bss*);
649       BUILD_DIR/libultra.a:guRotateF.o(.bss*);
650       BUILD_DIR/libultra.a:osTimer.o(.bss*);
651       BUILD_DIR/libultra.a:_Printf.o(.bss*);
652       BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
653       BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
654       BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
655       BUILD_DIR/libultra.a:unk_stack_data.o(.bss*);
656       BUILD_DIR/libultra.a:kdebugserver.o(.bss*);
657       BUILD_DIR/libultra.a:*.o(.bss*);
658 #endif
660       . = ALIGN(0x8);
661    }
662    END_NOLOAD(main)
663    _mainSegmentNoloadSizeLo = SIZEOF (.main.noload) & 0xffff;
664    _mainSegmentNoloadSizeHi = SIZEOF (.main.noload) >> 16;
666    ASSERT((. <= SEG_ENGINE), "Error: main segment extended into engine.")
668    BEGIN_SEG(engine, SEG_ENGINE)
669    {
670       BUILD_DIR/src/engine/math_util.o(.text);
671       BUILD_DIR/src/engine/graph_node.o(.text);
672       BUILD_DIR/src/engine/graph_node_manager.o(.text);
673       BUILD_DIR/src/engine/geo_layout.o(.text);
674       BUILD_DIR/src/engine/level_script.o(.text);
675       BUILD_DIR/src/engine/surface_collision.o(.text);
676       BUILD_DIR/src/engine/surface_load.o(.text);
677       BUILD_DIR/src/engine/behavior_script.o(.text);
678 #ifdef VERSION_EU
679       BUILD_DIR/src/game/object_collision.o(.text);
680       BUILD_DIR/src/game/spawn_object.o(.text);
681       BUILD_DIR/src/game/object_helpers.o(.text);
682 #endif
683       BUILD_DIR/src/engine*.o(.text);
684       /* data */
685       BUILD_DIR/src/engine/graph_node.o(.data*);
686       BUILD_DIR/src/engine/graph_node_manager.o(.data*);
687       BUILD_DIR/src/engine/math_util.o(.data*);
688       BUILD_DIR/src/engine/geo_layout.o(.data*);
689       BUILD_DIR/src/engine/level_script.o(.data*);
690       BUILD_DIR/src/engine/behavior_script.o(.data*);
691 #ifdef VERSION_EU
692       BUILD_DIR/src/game/object_collision.o(.data*);
693       BUILD_DIR/src/game/spawn_object.o(.data*);
694       BUILD_DIR/src/game/object_helpers.o(.data*);
695 #endif
696       BUILD_DIR/src/engine*.o(.data*);
697       /* rodata */
698       BUILD_DIR/src/engine/math_util.o(.rodata*);
699       BUILD_DIR/src/engine/level_script.o(.rodata*);
700       BUILD_DIR/src/engine/surface_collision.o(.rodata*);
701       BUILD_DIR/src/engine/surface_load.o(.rodata*);
702 #ifdef VERSION_EU
703       BUILD_DIR/src/game/object_collision.o(.rodata*);
704       BUILD_DIR/src/game/spawn_object.o(.rodata*);
705       BUILD_DIR/src/game/object_helpers.o(.rodata*);
706 #endif
707       BUILD_DIR/src/engine*.o(.rodata*);
708    }
709    END_SEG(engine)
710    BEGIN_NOLOAD(engine)
711    {
712       BUILD_DIR/src/engine/math_util.o(.bss*);
713       BUILD_DIR/src/engine/geo_layout.o(.bss*);
714       BUILD_DIR/src/engine/level_script.o(.bss*);
715       BUILD_DIR/src/engine/surface_collision.o(.bss*);
716       BUILD_DIR/src/engine/surface_load.o(.bss*);
717       BUILD_DIR/src/engine/behavior_script.o(.bss*);
718 #ifdef VERSION_EU
719       BUILD_DIR/src/game/object_collision.o(.bss*);
720       BUILD_DIR/src/game/spawn_object.o(.bss*);
721       BUILD_DIR/src/game/object_helpers.o(.bss*);
722 #endif
723       BUILD_DIR/src/engine*.o(.bss*);
724    }
725    END_NOLOAD(engine)
727    // ASSERT((. <= SEG_FRAMEBUFFERS), "Error: engine segment extended into framebuffers.")
729    . = SEG_FRAMEBUFFERS;
730    BEGIN_NOLOAD(framebuffers)
731    {
732       BUILD_DIR/src/buffers/framebuffers.o(.bss*);
733    }
734    END_NOLOAD(framebuffers)
736    __expansionRamStart = 0x80400000;
737    ASSERT((. <= __expansionRamStart), "Error: RDRAM expanded into Expansion RAM, despite Expansion RAM not being defined.")
740    BEGIN_SEG(entry, 0x10000000)
741    {
742       BUILD_DIR/levels/entry.o(.data);
743    }
744    END_SEG(entry)
746    /* load MIO0 and level data */
747    MIO0_SEG(segment2, 0x02000000)
748 #ifdef VERSION_EU
749    MIO0_EU_SEG(translation_en, 0x19000000)
750    MIO0_EU_SEG(translation_fr, 0x19000000)
751    MIO0_EU_SEG(translation_de, 0x19000000)
752 #endif
754    /* mario actor group */
755    STANDARD_OBJECTS(group0,  0x04000000, 0x17000000)
757    /* load the other actor groups */
758    STANDARD_OBJECTS(group1,  0x05000000, 0x0C000000)
759    STANDARD_OBJECTS(group2,  0x05000000, 0x0C000000)
760    STANDARD_OBJECTS(group3,  0x05000000, 0x0C000000)
761    STANDARD_OBJECTS(group4,  0x05000000, 0x0C000000)
762    STANDARD_OBJECTS(group5,  0x05000000, 0x0C000000)
763    STANDARD_OBJECTS(group6,  0x05000000, 0x0C000000)
764    STANDARD_OBJECTS(group7,  0x05000000, 0x0C000000)
765    STANDARD_OBJECTS(group8,  0x05000000, 0x0C000000)
766    STANDARD_OBJECTS(group9,  0x05000000, 0x0C000000)
767    STANDARD_OBJECTS(group10, 0x05000000, 0x0C000000)
768    STANDARD_OBJECTS(group11, 0x05000000, 0x0C000000)
769    STANDARD_OBJECTS(group12, 0x06000000, 0x0D000000)
770    STANDARD_OBJECTS(group13, 0x06000000, 0x0D000000)
771    STANDARD_OBJECTS(group14, 0x06000000, 0x0D000000)
772    STANDARD_OBJECTS(group15, 0x06000000, 0x0D000000)
773    STANDARD_OBJECTS(group16, 0x06000000, 0x0D000000)
774    STANDARD_OBJECTS(group17, 0x06000000, 0x0D000000)
776    /* load the common actor groups */
777    STANDARD_OBJECTS(common0, 0x08000000, 0x0F000000)
778    STANDARD_OBJECTS(common1, 0x03000000, 0x16000000)
780    /* use segmented addressing for behaviors */
781    BEGIN_SEG(behavior, 0x13000000)
782    {
783       BUILD_DIR/data/behavior_data.o(.data);
784    }
785    END_SEG(behavior)
787    /* 0x8016F000 21D7D0-255EC0 [386F0] */
788    BEGIN_SEG(goddard, SEG_GODDARD)
789    {
790       BUILD_DIR/src/menu/level_select_menu.o(.text);
791       BUILD_DIR/src/menu/intro_geo.o(.text);
792       BUILD_DIR/src/menu/file_select.o(.text);
793       BUILD_DIR/src/menu/star_select.o(.text);
794       BUILD_DIR/src/menu*.o(.text);
795       BUILD_DIR/libgoddard.a:gd_main.o(.text);
796       BUILD_DIR/libgoddard.a:gd_memory.o(.text);
797       BUILD_DIR/libgoddard.a:sfx.o(.text);
798       BUILD_DIR/libgoddard.a:draw_objects.o(.text);
799       BUILD_DIR/libgoddard.a:objects.o(.text);
800       BUILD_DIR/libgoddard.a:skin_movement.o(.text);
801       BUILD_DIR/libgoddard.a:particles.o(.text);
802       BUILD_DIR/libgoddard.a:dynlist_proc.o(.text);
803       BUILD_DIR/libgoddard.a:old_menu.o(.text);
804       BUILD_DIR/libgoddard.a:debug_utils.o(.text);
805       BUILD_DIR/libgoddard.a:joints.o(.text);
806       BUILD_DIR/libgoddard.a:skin.o(.text);
807       BUILD_DIR/libgoddard.a:gd_math.o(.text);
808       BUILD_DIR/libgoddard.a:shape_helper.o(.text);
809       BUILD_DIR/libgoddard.a:renderer.o(.text);
810       BUILD_DIR/libgoddard.a:*.o(.text);
811       /* data, rodata, per file */
812       BUILD_DIR/src/menu/level_select_menu.o(.data*);
813       BUILD_DIR/src/menu/level_select_menu.o(.rodata*);
814       BUILD_DIR/src/menu/intro_geo.o(.data*);
815       BUILD_DIR/src/menu/file_select.o(.data*);
816       BUILD_DIR/src/menu/file_select.o(.rodata*);
817       BUILD_DIR/src/menu/star_select.o(.data*);
818       BUILD_DIR/src/menu/star_select.o(.rodata*);
819       BUILD_DIR/src/menu*.o(.data*);
820       BUILD_DIR/src/menu*.o(.rodata*);
821       /* goddard subsystem data */
822       BUILD_DIR/libgoddard.a:gd_main.o(.data*);
823       BUILD_DIR/libgoddard.a:draw_objects.o(.data*);
824       BUILD_DIR/libgoddard.a:objects.o(.data*);
825       BUILD_DIR/libgoddard.a:particles.o(.data*);
826       BUILD_DIR/libgoddard.a:dynlist_proc.o(.data*);
827       BUILD_DIR/libgoddard.a:debug_utils.o(.data*);
828       BUILD_DIR/libgoddard.a:joints.o(.data*);
829       BUILD_DIR/libgoddard.a:shape_helper.o(.data*);
830       BUILD_DIR/libgoddard.a:renderer.o(.data*);
831       /* goddard subsystem rodata */
832       BUILD_DIR/libgoddard.a:gd_main.o(.rodata*);
833       BUILD_DIR/libgoddard.a:gd_memory.o(.rodata*);
834       BUILD_DIR/libgoddard.a:draw_objects.o(.rodata*);
835       BUILD_DIR/libgoddard.a:objects.o(.rodata*);
836       BUILD_DIR/libgoddard.a:skin_movement.o(.rodata*);
837       BUILD_DIR/libgoddard.a:particles.o(.rodata*);
838       BUILD_DIR/libgoddard.a:dynlist_proc.o(.rodata*);
839       BUILD_DIR/libgoddard.a:old_menu.o(.rodata*);
840       BUILD_DIR/libgoddard.a:debug_utils.o(.rodata*);
841       BUILD_DIR/libgoddard.a:joints.o(.rodata*);
842       BUILD_DIR/libgoddard.a:skin.o(.rodata*);
843       BUILD_DIR/libgoddard.a:gd_math.o(.rodata*);
844       BUILD_DIR/libgoddard.a:shape_helper.o(.rodata*);
845       BUILD_DIR/libgoddard.a:renderer.o(.rodata*);
846    }
847    END_SEG(goddard)
848    BEGIN_NOLOAD(goddard)
849    {
850       BUILD_DIR/src/menu/intro_geo.o(.bss*);
851       BUILD_DIR/src/menu/file_select.o(.bss*);
852       BUILD_DIR/src/menu/star_select.o(.bss*);
853       BUILD_DIR/src/menu*.o(.bss*);
854       BUILD_DIR/libgoddard.a:gd_main.o(.bss*);
855       BUILD_DIR/libgoddard.a:gd_memory.o(.bss*);
856       BUILD_DIR/libgoddard.a:sfx.o(.bss*);
857       BUILD_DIR/libgoddard.a:draw_objects.o(.bss*);
858       BUILD_DIR/libgoddard.a:objects.o(.bss*);
859       BUILD_DIR/libgoddard.a:skin_movement.o(.bss*);
860       BUILD_DIR/libgoddard.a:particles.o(.bss*);
861       BUILD_DIR/libgoddard.a:dynlist_proc.o(.bss*);
862       BUILD_DIR/libgoddard.a:old_menu.o(.bss*);
863       BUILD_DIR/libgoddard.a:debug_utils.o(.bss*);
864       BUILD_DIR/libgoddard.a:joints.o(.bss*);
865       BUILD_DIR/libgoddard.a:skin.o(.bss*);
866       BUILD_DIR/libgoddard.a:shape_helper.o(.bss*);
867       BUILD_DIR/libgoddard.a:renderer.o(.bss*);
868       BUILD_DIR/libgoddard.a:*.o(.bss*);
869    }
870    END_NOLOAD(goddard)
872    ASSERT((. <= SEG_POOL_END), "Error: extended past pool end.")
874    . = SEG_BUFFERS;
875    BEGIN_NOLOAD(buffers)
876    {
877       BUILD_DIR/src/buffers/buffers.o(.bss*);
878       BUILD_DIR/src/audio/globals_start.o(.bss*);
880       BUILD_DIR/src/audio/synthesis.o(.bss*);
881       BUILD_DIR/src/audio/heap.o(.bss*);
882       BUILD_DIR/src/audio/load.o(.bss*);
883       BUILD_DIR/src/audio/data.o(.bss*);
884       BUILD_DIR/src/audio/globals_end.o(.bss*);
885 #ifdef VERSION_EU
886       . += 0x4f0;
887 #endif
888       
889 #ifndef VERSION_EU
890       . = ALIGN(0x1000);
891 #endif
892       BUILD_DIR/src/buffers/gfx_output_buffer.o(.bss*);
894       BUILD_DIR/src/audio*.o(.bss*);
895    }
896    END_NOLOAD(buffers)
898    /* While EU is being worked on, don't warn for a too large buffers segment.
899     * This is a broken thing to do, so please enforce this again when it's fixed! */
900 #ifndef VERSION_EU
901    ASSERT((. <= SEG_MAIN), "Error: buffers segment extended into main.")
902 #endif
904    /* 0x268020 0x268020-0 [0] */
905    BEGIN_SEG(intro, 0x14000000)
906    {
907       BUILD_DIR/levels/intro/script.o(.data);
908       BUILD_DIR/levels/intro/geo.o(.data);
909    }
910    END_SEG(intro)
911    BEGIN_SEG(intro_segment_7, 0x07000000)
912    {
913       BUILD_DIR/levels/intro/leveldata.mio0.o(.data);
914       . = ALIGN(0x10);
915    }
916    END_SEG(intro_segment_7)
918    MIO0_SEG(debug_level_select, 0x07000000)
919    MIO0_SEG(title_screen_bg, 0x0A000000)
921    /* 271B20-2A42A0 [32780] */
922    BEGIN_SEG(gd_dynlists, 0x04000000)
923    {
924       BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.data);
925       BUILD_DIR/libgoddard.a:dynlist_unused.o(.data);
926       BUILD_DIR/libgoddard.a:dynlist_mario_face.o(.data);
927       BUILD_DIR/libgoddard.a:dynlists_mario_eyes.o(.data);
928       BUILD_DIR/libgoddard.a:dynlists_mario_eyebrows_mustache.o(.data);
929       BUILD_DIR/libgoddard.a:dynlist_mario_master.o(.data);
930       BUILD_DIR/libgoddard.a:anim_mario_mustache_right.o(.data);
931       BUILD_DIR/libgoddard.a:anim_mario_mustache_left.o(.data);
932       BUILD_DIR/libgoddard.a:anim_mario_lips_1.o(.data);
933       BUILD_DIR/libgoddard.a:anim_mario_lips_2.o(.data);
934       BUILD_DIR/libgoddard.a:anim_mario_eyebrows_1.o(.data);
935       BUILD_DIR/libgoddard.a:anim_group_1.o(.data);
936       BUILD_DIR/libgoddard.a:anim_group_2.o(.data);
937       BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.rodata*);
938       BUILD_DIR/libgoddard.a:dynlist_unused.o(.rodata*);
939       BUILD_DIR/libgoddard.a:*.o(.data);
940       BUILD_DIR/libgoddard.a:*.o(.rodata);
941    }
942    END_SEG(gd_dynlists)
944    gMainLevels = __romPos;
946    BEGIN_SEG(menu, 0x14000000)
947    {
948       BUILD_DIR/levels/menu/script.o(.data);
949       BUILD_DIR/levels/menu/geo.o(.data);
950    }
951    END_SEG(menu)
952    BEGIN_SEG(menu_segment_7, 0x07000000)
953    {
954       BUILD_DIR/levels/menu/leveldata.mio0.o(.data);
955       . = ALIGN(0x10);
956    }
957    END_SEG(menu_segment_7)
959    BEGIN_SEG(scripts, 0x15000000)
960    {
961       BUILD_DIR/levels/scripts.o(.data);
962    }
963    END_SEG(scripts)
965    MIO0_SEG(water_skybox, 0x0A000000)
966    MIO0_SEG(ccm_skybox, 0x0A000000)
967    MIO0_SEG(clouds_skybox, 0x0A000000)
968    MIO0_SEG(bitfs_skybox, 0x0A000000)
969    MIO0_SEG(wdw_skybox, 0x0A000000)
970    MIO0_SEG(cloud_floor_skybox, 0x0A000000)
971    MIO0_SEG(ssl_skybox, 0x0A000000)
972    MIO0_SEG(bbh_skybox, 0x0A000000)
973    MIO0_SEG(bidw_skybox, 0x0A000000)
974    MIO0_SEG(bits_skybox, 0x0A000000)
976    // Texture bins
977    MIO0_SEG(fire, 0x09000000)
978    MIO0_SEG(spooky, 0x09000000)
979    MIO0_SEG(generic, 0x09000000)
980    MIO0_SEG(water, 0x09000000)
981    MIO0_SEG(sky, 0x09000000)
982    MIO0_SEG(snow, 0x09000000)
983    MIO0_SEG(cave, 0x09000000)
984    MIO0_SEG(machine, 0x09000000)
985    MIO0_SEG(mountain, 0x09000000)
986    MIO0_SEG(grass, 0x09000000)
987    MIO0_SEG(outside, 0x09000000)
988    MIO0_SEG(inside, 0x09000000)
989    MIO0_SEG(effect, 0x0B000000)
991 #define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
992 #define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) STANDARD_LEVEL(folder)
994    #include "levels/level_defines.h"
996 #undef STUB_LEVEL
997 #undef DEFINE_LEVEL
999    /* 4E9FA0-? [?] */
1000    BEGIN_SEG(assets, __romPos)
1001    {
1002       BUILD_DIR/assets/mario_anim_data.o(.data);
1003       BUILD_DIR/assets/mario_anim_data.o(.rodata);
1004       BUILD_DIR/assets/demo_data.o(.data);
1005       gSoundDataADSR = .;
1006       BUILD_DIR/sound/sound_data.ctl.o(.data);
1007       gSoundDataRaw = .;
1008       BUILD_DIR/sound/sound_data.tbl.o(.data);
1009       gMusicData = .;
1010       BUILD_DIR/sound/sequences.bin.o(.data);
1011       gBankSetsData = .;
1012       BUILD_DIR/sound/bank_sets.o(.data);
1013    }
1014    END_SEG(assets)
1016    /* Discard everything not specifically mentioned above. */
1017    /DISCARD/ :
1018    {
1019       *(*);
1020    }