1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# Project-wise definitions
PROJECT = AIRPORT
# 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 -Os -Wfatal-errors
# Path definitions
PSXSDK_PATH = /usr/local/psxsdk
PATH := $(PATH):$(PSXSDK_PATH)/bin/
PROJECT_DIR = ~/$(PROJECT)
#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
# PCSX-R
EMULATOR_DIR = ~/pcsxr
EMULATOR = pcsxr.exe
# 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)
# Source dependencies:
DEPS = $(OBJECTS:.o=.d)
# CD-DA objects:
MUSIC_TRACKS = --track=../Bin/TRACK01.bin --track=../Bin/TRACK02.bin --track=../Bin/TRACK03.bin
FFMPEG = ffmpeg
FFMPEG_DIR = ../Music/ffmpeg/bin
FFMPEG_FLAGS = -f s16le -acodec pcm_s16le
# VAG objects:
SOURCE_SOUNDS_FOLDER = ../Sounds
SOUNDS_FOLDER = ../cdimg/DATA/SOUNDS
SOUND_OBJECTS = $(addprefix $(SOUNDS_FOLDER)/, BELL.VAG \
ACCEPT.VAG \
TRAYCL.VAG \
SPINDISK.VAG \
BEEP.VAG \
TAKEOFF1.VAG \
RCTM1F1.VAG \
RCPW1A1.VAG \
RCPM1A1.VAG )
# ------------------------------------
# Instructions
# ------------------------------------
build: sounds levels $(PROJECT).bin
rebuild: clean build
-include $(DEPS)
music_objects: $(addprefix ../Music/, TRACK01.bin TRACK02.bin TRACK03.bin)
clean:
rm -f Obj/*.o
rm -f ../cdimg/DATA/SOUNDS/*.VAG
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(OBJ_DIR)/%.d
$(CC) $< -o $@ $(DEFINE) $(CC_FLAGS) -MMD
$(PROJECT).elf: $(OBJECTS)
$(LINKER) Obj/*.o -o Exe/$(PROJECT).elf $(LIBS) -Wl,--gc-sections
$(PROJECT).iso: $(PROJECT).exe
# rm -f $@
mkisofs -o $(PROJECT).iso -V $(PROJECT) -sysid PLAYSTATION ../cdimg
$(PROJECT).bin: $(PROJECT).iso
rm -f $@
rm -f $(PROJECT).cue
mkpsxiso $(PROJECT).iso $(PROJECT).bin $(LICENSE_FILE) $(MUSIC_TRACKS)
# $(PROJECT).cue is automatically generated by mkpsxiso
rm -f $^
mv $@ ../Bin
mv $(PROJECT).cue ../Bin
$(GNU_SIZE) Exe/$(PROJECT).elf
$(PROJECT).exe: $(PROJECT).elf
$(ELF2EXE) Exe/$(PROJECT).elf Exe/$(PROJECT).exe $(ELF2EXE_FLAGS)
cp Exe/$(PROJECT).exe ../cdimg
emulator:
export PATH=$$PATH:$(EMULATOR_DIR)
$(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS)
remove_elf_iso:
rm -f $(PROJECT).elf cdimg/$(PROJECT).exe $(PROJECT).bin $(PROJECT).cue cdimg/README.txt
rm -f $(PROJECT).iso $(PROJECT).exe $(PROJECT).elf
tiles:
rm -f ../cdimg/DATA/SPRITES/*.TIM
rm -f ../cdimg/DATA/FONTS/*.FNT
bmp2tim ../Sprites/PSXDisk.bmp ../cdimg/DATA/SPRITES/PSXDISK.TIM 16 -org=384,0 -mpink
bmp2tim ../Sprites/IntroFnt.bmp ../cdimg/DATA/SPRITES/INTROFNT.TIM 16 -org=384,76 -mpink
bmp2tim ../Sprites/Tileset1.bmp ../cdimg/DATA/SPRITES/TILESET1.TIM 16 -org=384,0 -mpink
bmp2tim ../Sprites/Tileset2.bmp ../cdimg/DATA/SPRITES/TILESET2.TIM 16 -org=640,0 -mpink
bmp2tim ../Sprites/MainMenu.bmp ../cdimg/DATA/SPRITES/MAINMENU.TIM 16 -org=768,384 -mpink
bmp2tim ../Sprites/Loading.bmp ../cdimg/DATA/SPRITES/LOADING.TIM 4 -mpink -org=768,256 -clut=384,496
bmp2tim ../Sprites/Plane.bmp ../cdimg/DATA/SPRITES/PLANE.TIM 16 -org=536,240 -mpink
bmp2tim ../Sprites/Buttons.bmp ../cdimg/DATA/SPRITES/BUTTONS.TIM 16 -org=384,240 -mpink
bmp2tim ../Sprites/GamePln.bmp ../cdimg/DATA/SPRITES/GAMEPLN.TIM 8 -mpink -org=800,256 -clut=384,497
bmp2tim ../Sprites/GamePln_Blue.bmp ../cdimg/DATA/SPRITES/PLNBLUE.CLT 8 -mpink -clut=384,501
bmp2tim ../Sprites/Bubble.bmp ../cdimg/DATA/SPRITES/BUBBLE.TIM 8 -org=584,240 -mpink -clut=384,498
bmp2tim ../Sprites/Font_1_4bit.bmp ../cdimg/DATA/FONTS/FONT_1.FNT 4 -org=960,256 -mpink -clut=384,500
bmp2tim ../Sprites/Font_2_4bit.bmp ../cdimg/DATA/FONTS/FONT_2.FNT 4 -org=768,288 -mpink -clut=384,499
bmp2tim ../Sprites/GPL_4bit.bmp ../cdimg/DATA/SPRITES/GPL.TIM 4 -org=384,174 -mpink -clut=384,502
bmp2tim ../Sprites/OpSrc_8bit.bmp ../cdimg/DATA/SPRITES/OPENSRC.TIM 8 -org=464,0 -mpink -clut=384,503
bmp2tim ../Sprites/Mouse.bmp ../cdimg/DATA/SPRITES/MOUSE.TIM 16 -org=596,240 -mpink
bmp2tim ../Sprites/DepArr.bmp ../cdimg/DATA/SPRITES/DEPARR.TIM 16 -org=552,240 -mpink
bmp2tim ../Sprites/PageUpDn.bmp ../cdimg/DATA/SPRITES/PAGEUPDN.TIM 16 -org=504,240 -mpink
bmp2tim ../Sprites/Bldngs1.bmp ../cdimg/DATA/SPRITES/BLDNGS1.TIM 16 -org=640,128 -mpink
$(SOUNDS_FOLDER)/%.VAG: $(SOURCE_SOUNDS_FOLDER)/%.wav
wav2vag $^ $@
sounds: $(SOUND_OBJECTS)
levels: LEVEL1.LVL LEVEL1.PLT
%.LVL:
cp ../Levels/$@ ../cdimg/DATA/LEVELS/
%.PLT:
cp ../Levels/$@ ../cdimg/DATA/LEVELS
music: clean_music music_objects
clean_music:
rm -f ../Music/*.bin
%.bin: %.mp3
rm -f ../Bin/$@1
$(FFMPEG) -i $< $(FFMPEG_FLAGS) $@
cp ../Music/$@ ../Bin/
|