# !smake 

# ------------------------------------------------------------------------------------------------------------- #

GDLTYPE = u64
default: rom

MAKEMASK = makemask6103
# MAKEMASK = makemask


# -- directories --------------------------------------------------------------------------------------------- #

GUI_DIR 	=	$(APP_DIR)/../gui
SNOW_DIR 	=	$(APP_DIR)/../snow
PLAYERS_DIR =	$(APP_DIR)/../data/players
EFFECTS_DIR =	$(APP_DIR)/../data/effects
MAPS_DIR 	=	$(APP_DIR)/../data/maps
FLOW_DIR 	=	$(APP_DIR)/../flow
WORLD_DIR 	=	$(APP_DIR)/../world

AUDIO_DIR	=	$(APP_DIR)/audio
U64AUDIO_DIR =	$(APP_DIR)/u64audio

MAKE_DIRS	=	$(GUI_DIR)	\
			$(MAPS_DIR)	\
			$(SNOW_DIR)	\
			$(PLAYERS_DIR)	\
			$(EFFECTS_DIR)	\
			$(AUDIO_DIR)	\
			$(FLOW_DIR)	\
			$(WORLD_DIR)	


MAKEOP = GLOBAL_INC="-I$(AUDIO_DIR)/include -I$(U64AUDIO_DIR)" 	\
	 U64AUDIO_DIR=$(U64AUDIO_DIR) 		\
	 SNOW_DIR=$(SNOW_DIR) 			\
	 GUI_DIR=$(GUI_DIR) 			\
	 DEFINC=$(LIB_DIR)/u64/makefile.def 	\
	 GDLPATH=$(LIB_DIR) 			\
	 FLOW_DIR=$(FLOW_DIR)		\
	 WORLD_DIR=$(WORLD_DIR)		\
	 GDLTYPE=u64         


include $(DEFINC)


# -- sound objects -------------------------------------------------------------------------------- # 


SOUND_CODE_OBJECTS = \
$(U64AUDIO_DIR)/audio.o \
$(U64AUDIO_DIR)/aspMain.o \
$(U64AUDIO_DIR)/audio_hb.o  \
$(U64AUDIO_DIR)/audio_hm.o  \
$(U64AUDIO_DIR)/audio_hs.o  \
$(U64AUDIO_DIR)/audio_hw.o  \
$(U64AUDIO_DIR)/audioheap.o \
$(U64AUDIO_DIR)/audiowork.o

SOUND_DATA_OBJECTS = \
$(U64AUDIO_DIR)/audio_bank.o \
$(U64AUDIO_DIR)/audio_seq.o \
$(U64AUDIO_DIR)/audio_wave.o

# -- ultra64 objects -------------------------------------------------------------------------------- # 

ULTRA_OBJECTS = \
/usr/lib/PR/gspLine3D.o \
/usr/lib/PR/rspboot.o \
/usr/lib/PR/gspLine3D.dram.o \
/usr/lib/PR/gspFast3DQ.fifo.o \
/usr/lib/PR/gspFast3D.o \
/usr/lib/PR/gspFast3D.dram.o \
/usr/lib/PR/gspTurbo3D.o \
/usr/lib/PR/gspF3DEX.NoN.fifo.o \
/usr/lib/PR/gspF3DEX.fifo.o \
/usr/lib/PR/gspF3DLP.NoC.fifo.o \
/usr/lib/PR/gspF3DLP.Rej.fifo.o \
/usr/lib/PR/gspF3DLX.Rej.fifo.o \
/usr/lib/PR/gspFast3D.fifo.o


# -- binary objects -------------------------------------------------------------------------------- #

BINARY_OBJECTS	=	\
			$(PLAYERS_DIR)/lookat_ca.bin  	\
			$(PLAYERS_DIR)/lookat_ca2.bin  	\
			$(PLAYERS_DIR)/cam_ca.bin  	\
			$(WORLD_DIR)/version.bin  	\
			$(PLAYERS_DIR)/tricks.bin  	\
			$(PLAYERS_DIR)/player.bin  	\
			$(PLAYERS_DIR)/player1.bin  	\
			$(PLAYERS_DIR)/player2.bin  	\
			$(PLAYERS_DIR)/player3.bin  	\
			$(PLAYERS_DIR)/player4.bin  	\
			$(PLAYERS_DIR)/player5.bin  	\
			$(PLAYERS_DIR)/player6.bin  	\
			$(PLAYERS_DIR)/player7.bin  	\
			$(PLAYERS_DIR)/player8.bin  	\
			$(PLAYERS_DIR)/board1.bin  	\
			$(PLAYERS_DIR)/board2.bin  	\
			$(PLAYERS_DIR)/board3.bin  	\
			$(PLAYERS_DIR)/board4.bin  	\
			$(PLAYERS_DIR)/board5.bin  	\
			$(PLAYERS_DIR)/board6.bin  	\
			$(PLAYERS_DIR)/board7.bin  	\
			$(PLAYERS_DIR)/board8.bin  	\
			$(PLAYERS_DIR)/board9.bin  	\
			$(PLAYERS_DIR)/anims.bin  	\
			$(EFFECTS_DIR)/flare3.bin   	\
			$(EFFECTS_DIR)/flare5.bin   	\
			$(MAPS_DIR)/onemake_item.bin	\
			$(MAPS_DIR)/onemake_mark.bin	\
			$(MAPS_DIR)/onemake03_env.bin	\
			$(MAPS_DIR)/halfpipe_item.bin	\
			$(MAPS_DIR)/halfpipe_mark.bin	\
			$(MAPS_DIR)/halfpipe_env.bin	\
			$(MAPS_DIR)/map01_item.bin	\
			$(MAPS_DIR)/map01_mark.bin	\
			$(MAPS_DIR)/map02_item.bin	\
			$(MAPS_DIR)/map02_mark.bin 	\
			$(MAPS_DIR)/map02_env.bin 	\
			$(MAPS_DIR)/map02a_env.bin 	\
			$(MAPS_DIR)/map02b_env.bin 	\
			$(MAPS_DIR)/map03_mark.bin 	\
			$(MAPS_DIR)/map03_item.bin	\
			$(MAPS_DIR)/map03_env.bin 	\
			$(MAPS_DIR)/map03a_env.bin 	\
			$(MAPS_DIR)/map03b_env.bin 	\
			$(MAPS_DIR)/map04_mark.bin	\
			$(MAPS_DIR)/map04_item.bin	\
			$(MAPS_DIR)/map04_env.bin 	\
			$(MAPS_DIR)/map04a_env.bin 	\
			$(MAPS_DIR)/map04b_env.bin 	\
			$(MAPS_DIR)/map05_mark.bin 	\
			$(MAPS_DIR)/map05_item.bin 	\
			$(MAPS_DIR)/map05_env.bin 	\
			$(MAPS_DIR)/map05a_env.bin 	\
			$(MAPS_DIR)/map05b_env.bin 	\
			$(MAPS_DIR)/map06_item.bin 	\
			$(MAPS_DIR)/map06_mark.bin	\
			$(MAPS_DIR)/map06_env.bin	\
			$(MAPS_DIR)/map06a_env.bin	\
			$(MAPS_DIR)/map07_item.bin	\
			$(MAPS_DIR)/map07_mark.bin	\
			$(FLOW_DIR)/flowimgs.bin	\
			$(FLOW_DIR)/1psel.bin		\
			$(FLOW_DIR)/2psela.bin		\
			$(FLOW_DIR)/2pselb.bin		\
			$(FLOW_DIR)/racecol.bin		\
			$(FLOW_DIR)/selinfo.bin		\
			$(FLOW_DIR)/selwin1.bin		\
			$(FLOW_DIR)/selwin2a.bin	\
			$(FLOW_DIR)/selwin2b.bin   	\
			$(PLAYERS_DIR)/cam_info.bin	

# -- All objects loaded on bootup ------------------------------------------------------------------ #


BOOTUP_OBJECTS	=	\
			$(LIB_DIR)/$(GDLTYPE)/libgdl_$(GDLTYPE).a \
			$(ULTRA_LIB) 	    		\
			$(MAPS_DIR)/obj_data.o	\
			$(AUDIO_DIR)/snowaudio.o 		\
			$(WORLD_DIR)/worldserver.o \
			$(PLAYERS_DIR)/boarder.o	\
			$(PLAYERS_DIR)/boarder_shad.o	\
			$(FLOW_DIR)/flow.o	\
			$(ULTRA_OBJECTS) 		\
			$(SOUND_CODE_OBJECTS)		\
			/usr/lib/libleo.a		# HIRATSU added this line.


bootup.o:	$(BOOTUP_OBJECTS) $(ULTRA_LIB) $(LIB_DIR)/$(GDLTYPE)/libgdl_$(GDLTYPE).a 
	rm -rf $@ 
	ld -m -r -warn_unused -o $@ $(BOOTUP_OBJECTS) $(LIBS) >bootup.map


BOOTUP_FILES = bootup.o
#BOOTUP_FILES = $(BOOTUP_OBJECTS)

COMP_EXT = co
MAPCOMP_EXT = co
BGCOMP_EXT = co

# -- All objects loaded after bootup --------------------------------------------------------------- #

LOADED_OBJECTS 	=	\
			-A $(SOUND_DATA_OBJECTS) -a		\
			$(PLAYERS_DIR)/tahoe151.o	\
			$(PLAYERS_DIR)/merlot147.o	\
			$(PLAYERS_DIR)/blin149.o	\
			$(PLAYERS_DIR)/scout156.o	\
			$(PLAYERS_DIR)/tahoe155.o	\
			$(PLAYERS_DIR)/scoutltd162.o	\
			$(PLAYERS_DIR)/merlot143.o	\
			$(PLAYERS_DIR)/blin154.o	\
			$(PLAYERS_DIR)/penguin.o	\
			$(PLAYERS_DIR)/boarder1.o	\
			$(PLAYERS_DIR)/boarder2.o	\
			$(PLAYERS_DIR)/boarder3.o	\
			$(PLAYERS_DIR)/boarder4.o	\
			$(PLAYERS_DIR)/boarder5.o	\
			$(GUI_DIR)/gui.o 		\
			$(FLOW_DIR)/n64proc.o 	\
			$(FLOW_DIR)/titproc.o 	\
			$(FLOW_DIR)/eddproc.o 	\
			$(FLOW_DIR)/mgrproc.$(COMP_EXT)	\
			$(FLOW_DIR)/arcproc.o	\
			$(FLOW_DIR)/h2hproc.o	\
			$(FLOW_DIR)/timproc.$(COMP_EXT)	\
			$(FLOW_DIR)/trkproc.$(COMP_EXT)	\
			$(FLOW_DIR)/trnproc.o	\
			$(FLOW_DIR)/genproc.$(COMP_EXT)	\
			$(FLOW_DIR)/gamegfx.o	\
			$(FLOW_DIR)/charsel.o	\
			$(FLOW_DIR)/charsps.o	\
			$(FLOW_DIR)/viewrec.o	\
			$(FLOW_DIR)/nameent.o	\
			$(FLOW_DIR)/charfir.o	\
			$(FLOW_DIR)/charmap.o	\
			$(MAPS_DIR)/map1_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map2_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map3_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map4_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map5_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map6_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map7_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map8_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map9_data.$(MAPCOMP_EXT) 		\
			$(MAPS_DIR)/map10_data.$(MAPCOMP_EXT) 		\
			$(WORLD_DIR)/game.$(COMP_EXT) 		\
			$(WORLD_DIR)/balloon.o 		\
			$(WORLD_DIR)/heli.o 		\
			$(WORLD_DIR)/fire.o 		\
			$(WORLD_DIR)/checkpoint.o 		\
			$(WORLD_DIR)/bg1tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg2tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg3tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg4tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg5tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg6tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg7tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg8tex.$(BGCOMP_EXT) 			\
			$(WORLD_DIR)/bg9tex.$(BGCOMP_EXT) 			\
			$(SNOW_DIR)/snoweffects.o	\
			$(EFFECTS_DIR)/effects.o	\
			-b $(BINARY_OBJECTS)

# -- uso  ------------------------------------------------------------------------------------------- #

ULTRA_USO = $(ULTA_OBJ:.o=.uso)

main.uso: uso.o $(BOOTUP_FILES) 	# HIRATSU
	@updver $(WORLD_DIR)/version.bin Gateway-Final-PAL/NTSC
	@echo Generating USO files...; \
	$(USO) -o main.uso $(BOOTUP_FILES)  \
               -o rom.uso $(LOADED_OBJECTS)

#	@updver $(WORLD_DIR)/version.bin Final-PAL/NTSC


uso.o: usoboot.o 
	echo Linking App...; 
	rm -rf $@ 
	$(LD) $(LDFLAGS1) -m -o $@ usoboot.o $(USOLIB) -L$(ROOT)/usr/lib -lultra >link.map


# -- clean 'n clobber ------------------------------------------------------------------------------ #

clean:
#	@for d in $(MAKE_DIRS); do \
#            ( echo $$d; cd $$d; find ./ -name "*.o" -exec rm -rf {} \; ); \
#        done;
#	rm -rf *.o; 
	rm -rf *.uso; 
	rm -rf rom; 
	rm -rf gdu64


clobber:
	@for d in $(MAKE_DIRS); do \
            ( cd $$d; make clobber $(MAKEOP) ); \
        done;

depend:
	@for d in $(MAKE_DIRS); do \
            ( echo $$d; cd $$d; echo >makedepend; make depend $(MAKEOP) ); \
        done;			   
	

# -- export / import --------------------------------------------------------------------------------------------- #

export:
	$(EXPORT)	  

import:
	$(IMPORT)

	
	



# -- link it all --------------------------------------------------------------------------------------------- #

rom:  main.uso 
	rm -rf gdu64
	makerom -m -r rom spec >rom.map; 
	$(MAKEMASK) rom

#	fillrom rom.tmp rom 128


linkrom: main.uso
	rm -rf gdu64
	makerom -m -r rom spec >rom.map; $(MAKEMASK) rom


# HIRATSU invalidated under lines.
#make_all_dirs:
#	@for d in $(MAKE_DIRS); do \
#            ( cd $$d; echo Making `pwd`; make $(MAKEOP) ); \
#        done;

