197 lines
5.5 KiB
Makefile
197 lines
5.5 KiB
Makefile
# Project-wise definitions
|
|
PROJECT = AIRPORT
|
|
|
|
# Make flags
|
|
MAKEFLAGS := -j$(NUMBER_OF_PROCESSORS)
|
|
|
|
# GNU Toolchain definitions
|
|
CC = psx-gcc
|
|
LINKER = psx-gcc
|
|
GNU_SIZE = mipsel-unknown-elf-size
|
|
|
|
# Custom define flags for GCC
|
|
DEFINE= -DFIXMATH_FAST_SIN -D_PAL_MODE_
|
|
#DEFINE += -DPSXSDK_DEBUG
|
|
DEFINE += -DNO_CDDA
|
|
#DEFINE += -DNO_INTRO
|
|
|
|
# Compiler flags
|
|
LIBS= -lfixmath
|
|
CC_FLAGS = -Wall -Werror -c -O3 -Wfatal-errors
|
|
|
|
# Path definitions
|
|
PSXSDK_PATH = /usr/local/psxsdk
|
|
PATH := $(PATH):$(PSXSDK_PATH)/bin/
|
|
PROJECT_DIR = ~/Airport
|
|
CDROM_ROOT=$(PROJECT_DIR)/cdimg
|
|
BIN_TARGET_PATH = $(PROJECT_DIR)/Bin
|
|
|
|
#Uncomment this DEFINE below to use Airport together with OpenSend + QPSXSerial toolchain.
|
|
#DEFINE += -DSERIAL_INTERFACE
|
|
|
|
# PSXSDK tools definitions
|
|
# ELF2EXE:
|
|
ELF2EXE = elf2exe
|
|
ELF2EXE_FLAGS = -mark="A homebrew game created with PSXSDK"
|
|
LICENSE_FILE = /usr/local/psxsdk/share/licenses/infoeur.dat
|
|
EXE_PATH = Exe
|
|
|
|
# PCSX-R
|
|
EMULATOR_DIR = ~/pcsxr
|
|
EMULATOR = pcsxr
|
|
# Uncomment the line below if you get no sound output under Linux.
|
|
SOUND_INTERFACE += padsp
|
|
EMULATOR_FLAGS = -nogui -psxout
|
|
|
|
# Objects definition
|
|
# Compiled objects list
|
|
OBJ_DIR = Obj
|
|
SRC_DIR = .
|
|
OBJECTS = $(addprefix $(OBJ_DIR)/, main.o System.o Menu.o Gfx.o Pad.o MainMenuBtnAni.o \
|
|
LoadMenu.o GameGui.o Sfx.o Camera.o EndAnimation.o \
|
|
PSXSDKIntro.o PltParser.o Game.o Font.o MemCard.o \
|
|
Aircraft.o Serial.o Timer.o Message.o)
|
|
|
|
# Source dependencies:
|
|
DEPS = $(OBJECTS:.o=.d)
|
|
|
|
# CD-DA objects:
|
|
MUSIC_OBJ_DIR = ../Bin
|
|
MUSIC_SRC_DIR = ../Music
|
|
MUSIC_TRACKS = $(addprefix $(MUSIC_OBJ_DIR)/, TRACK01.bin TRACK02.bin TRACK03.bin)
|
|
FFMPEG = ffmpeg
|
|
FFMPEG_DIR =
|
|
#FFMPEG_DIR = $(MUSIC_SRC_DIR)/$(FFMPEG)/bin/
|
|
FFMPEG_FLAGS = -f s16le -acodec pcm_s16le
|
|
|
|
# VAG objects:
|
|
SOURCE_SOUNDS_FOLDER = ../Sounds
|
|
OBJ_SOUNDS_DIR = ../cdimg/DATA/SOUNDS
|
|
SOUND_OBJECTS = $(addprefix $(OBJ_SOUNDS_DIR)/, BELL.VAG \
|
|
ACCEPT.VAG \
|
|
TRAYCL.VAG \
|
|
SPINDISK.VAG \
|
|
BEEP.VAG \
|
|
TAKEOFF1.VAG \
|
|
RCTM1F1.VAG \
|
|
RCPW1A1.VAG \
|
|
RCPM1A1.VAG )
|
|
# Level objects:
|
|
SRC_LEVELS_DIR = $(PROJECT_DIR)/Levels
|
|
OBJ_LEVELS_DIR = $(CDROM_ROOT)/DATA/LEVELS
|
|
LEVEL_OBJECTS = $(addprefix $(OBJ_LEVELS_DIR)/, \
|
|
LEVEL1.LVL \
|
|
LEVEL2.LVL \
|
|
LEVEL3.LVL \
|
|
LEVEL18.LVL \
|
|
XAMI.LVL \
|
|
LEVEL1.PLT \
|
|
LEVEL2.PLT \
|
|
LEVEL3.PLT \
|
|
LEVEL18.PLT \
|
|
XAMI.PLT \
|
|
EASY.PLT \
|
|
TUTORIA1.PLT)
|
|
|
|
# Sprite objects:
|
|
BMP2TIM = bmp2tim
|
|
SRC_SPRITES_PATH = $(PROJECT_DIR)/Sprites
|
|
OBJ_SPRITES_PATH = $(CDROM_ROOT)/DATA/SPRITES
|
|
# NOTE: Fonts, despite still being .TIM files, are separated into another folder,
|
|
# so SPRITE_OBJECTS are splitted in two parts.
|
|
OBJ_FONTS_PATH = $(CDROM_ROOT)/DATA/FONTS
|
|
SPRITE_OBJECTS = $(addprefix $(OBJ_SPRITES_PATH)/, PSXDISK.TIM \
|
|
TILESET1.TIM \
|
|
TILESET2.TIM \
|
|
MAINMENU.TIM \
|
|
LOADING.TIM \
|
|
PLANE.TIM \
|
|
BUTTONS.TIM \
|
|
GAMEPLN.TIM \
|
|
PLNBLUE.CLT \
|
|
BUBBLE.TIM \
|
|
GPL.TIM \
|
|
OPENSRC.TIM \
|
|
MOUSE.TIM \
|
|
DEPARR.TIM \
|
|
PAGEUPDN.TIM \
|
|
BLDNGS1.TIM \
|
|
LFRARROW.TIM \
|
|
UDNARROW.TIM \
|
|
BCNGW.TIM \
|
|
MENUSTAR.TIM )
|
|
|
|
SPRITE_OBJECTS += $(addprefix $(OBJ_FONTS_PATH)/, INTROFNT.TIM \
|
|
FONT_1.TIM \
|
|
FONT_2.TIM )
|
|
# ------------------------------------
|
|
# Instructions
|
|
# ------------------------------------
|
|
|
|
$(BIN_TARGET_PATH)/$(PROJECT).bin: $(EXE_PATH)/$(PROJECT).iso
|
|
#~ mkpsxiso $< $@ $(LICENSE_FILE) -s $(addprefix --track=, $(MUSIC_TRACKS))
|
|
mkpsxiso $< $@ $(LICENSE_FILE) -s
|
|
# $(PROJECT).cue is automatically generated by mkpsxiso
|
|
|
|
rebuild:
|
|
make clean
|
|
make $(BIN_TARGET_PATH)/$(PROJECT).bin
|
|
|
|
-include $(DEPS)
|
|
|
|
clean:
|
|
rm -f $(OBJ_DIR)/*.d
|
|
rm -f $(OBJ_DIR)/*.o
|
|
rm -f $(OBJ_SOUNDS_DIR)/*.VAG
|
|
rm -f $(OBJ_LEVELS_DIR)/*.LVL
|
|
rm -f $(OBJ_LEVELS_DIR)/*.PLT
|
|
rm -f $(OBJ_SPRITES_PATH)/*.TIM
|
|
rm -f $(OBJ_FONTS_PATH)/*.TIM
|
|
|
|
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.c
|
|
$(CC) $< $(DEFINE) $(CC_FLAGS) -MM > $@
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(OBJ_DIR)/%.d
|
|
$(CC) $< -o $@ $(DEFINE) $(CC_FLAGS) -MMD
|
|
|
|
$(EXE_PATH)/$(PROJECT).elf: $(OBJECTS)
|
|
$(LINKER) $^ -o $@ $(LIBS) -Wl,--gc-sections
|
|
$(GNU_SIZE) $@
|
|
|
|
$(EXE_PATH)/$(PROJECT).iso: $(EXE_PATH)/$(PROJECT).exe $(SOUND_OBJECTS) $(LEVEL_OBJECTS) $(SPRITE_OBJECTS)
|
|
mkisofs -o $@ -V $(PROJECT) -sysid PLAYSTATION $(CDROM_ROOT)
|
|
|
|
|
|
$(EXE_PATH)/$(PROJECT).exe: $(EXE_PATH)/$(PROJECT).elf
|
|
$(ELF2EXE) $< $@ $(ELF2EXE_FLAGS)
|
|
cp $@ $(CDROM_ROOT)
|
|
|
|
run: $(BIN_TARGET_PATH)/$(PROJECT).bin
|
|
export PATH=$$PATH:$(EMULATOR_DIR)
|
|
$(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS)
|
|
|
|
$(OBJ_SPRITES_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_FONTS_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_SPRITES_PATH)/%.CLT: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_SOUNDS_DIR)/%.VAG: $(SOURCE_SOUNDS_FOLDER)/%.wav
|
|
wav2vag $^ $@
|
|
|
|
$(OBJ_LEVELS_DIR)/%.LVL: $(SRC_LEVELS_DIR)/%.LVL
|
|
cp $^ $@
|
|
$(OBJ_LEVELS_DIR)/%.PLT: $(SRC_LEVELS_DIR)/%.PLT
|
|
cp $^ $@
|
|
|
|
$(MUSIC_OBJ_DIR)/%.bin: $(MUSIC_SRC_DIR)/%.mp3
|
|
$(FFMPEG_DIR)$(FFMPEG) -i $< $(FFMPEG_FLAGS) $@
|
|
|
|
# ----------------------------------------
|
|
# Phony targets
|
|
# ----------------------------------------
|
|
.PHONY: clean run
|