2024-12-26 11:10:17 +02:00
|
|
|
#
|
|
|
|
# Basic KallistiOS skeleton / test program
|
|
|
|
# Copyright (C)2001-2004 Megan Potter
|
|
|
|
#
|
|
|
|
|
|
|
|
# Put the filename of the output binary here
|
2025-03-09 13:33:04 +02:00
|
|
|
PROJECT_NAME = dca-miami
|
|
|
|
TEAM_NAME ="the gang"
|
2025-03-09 20:09:24 +02:00
|
|
|
DISC_SERIAL = DCA-MIAM
|
2025-03-09 13:33:04 +02:00
|
|
|
RELEASE_DATE = 20250401
|
|
|
|
TARGET ?= dca-miami.elf
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
HAVE_CDI4DC := $(shell which cdi4dc > /dev/null 2>&1 && echo "yes" || echo "no")
|
|
|
|
IS_MAC := $(shell uname -s | grep -i "darwin" > /dev/null && echo "yes" || echo "no")
|
|
|
|
|
|
|
|
MOD_NAME?=
|
|
|
|
|
2025-02-22 15:36:37 +02:00
|
|
|
GTA_DIR?=../../miami
|
2025-03-12 01:15:24 +02:00
|
|
|
GTA_GAMEFILES_LOOSE_DIR?=../gamefiles/miami
|
2025-02-22 15:36:37 +02:00
|
|
|
GTA_MOD_DIR?=../../miami_mod$(MOD_NAME)
|
2024-12-26 11:10:17 +02:00
|
|
|
GTA_MOD_IMG_DIR?=$(GTA_MOD_DIR)/img
|
2025-03-04 17:25:59 +01:00
|
|
|
GTA_MOD_CUTS_DIR=$(GTA_MOD_DIR)/cuts
|
2024-12-26 11:10:17 +02:00
|
|
|
GTA_MOD_SFX_DIR?=$(GTA_MOD_DIR)/sfx
|
|
|
|
GTA_MOD_LOOSE_DIR?=$(GTA_MOD_DIR)/loose
|
|
|
|
|
|
|
|
REPACK_DIR?=repack-data
|
2025-02-22 15:36:37 +02:00
|
|
|
REPACK_GTA_DIR?=$(REPACK_DIR)/miami
|
|
|
|
REPACK_IMG_ORIG_DIR?=$(REPACK_DIR)/miami-img-orig
|
|
|
|
REPACK_IMG_DC_DIR?=$(REPACK_DIR)/miami-img-dc
|
|
|
|
REPACK_SFX_ORIG_DIR?=$(REPACK_DIR)/miami-sfx-orig
|
|
|
|
REPACK_SFX_DC_DIR?=$(REPACK_DIR)/miami-sfx-dc
|
|
|
|
REPACK_STREAM_DECODED_DIR?=$(REPACK_DIR)/miami-stream-decoded
|
2025-03-11 19:32:29 +02:00
|
|
|
REPACK_STREAM_DEST_DIR=$(REPACK_GTA_DIR)/stream
|
2025-03-04 17:25:59 +01:00
|
|
|
REPACK_CUTS_ORIG_DIR?=$(REPACK_DIR)/miami-cuts-orig
|
|
|
|
REPACK_CUTS_DC_DIR?=$(REPACK_DIR)/miami-cuts-dc
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
LIBS :=
|
|
|
|
TEXCONV_FLAGS :=
|
|
|
|
|
|
|
|
ifeq ($(IS_MAC), yes)
|
|
|
|
TEXCONV_FLAGS += -DMACOS64
|
|
|
|
endif
|
|
|
|
|
|
|
|
AUDIO_STREAM_OPTION=-t
|
|
|
|
MKDCDISC_PAD_OPTION=-N
|
|
|
|
ifeq ($(FOR_DISC),1)
|
|
|
|
AUDIO_STREAM_OPTION=-q
|
|
|
|
MKDCDISC_PAD_OPTION=
|
2025-03-01 11:20:17 -07:00
|
|
|
else ifeq ($(FOR_DISC),2)
|
|
|
|
AUDIO_STREAM_OPTION=-m
|
|
|
|
MKDCDISC_PAD_OPTION=
|
2024-12-26 11:10:17 +02:00
|
|
|
endif
|
|
|
|
|
2024-12-27 19:07:30 +02:00
|
|
|
all: $(TARGET)
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
include common.mk
|
|
|
|
|
|
|
|
OBJS = $(RE3_OBJS) $(RW_OBJS) \
|
2025-03-09 13:02:48 +02:00
|
|
|
../src/miami/audio/sampman_dc.o \
|
|
|
|
../src/common/prof/profiler.o
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
OBJS_TEXCONV = $(RW_OBJS:.o=.texconv.o)
|
|
|
|
OBJS_TEXCONV += \
|
|
|
|
../vendor/koshle/hlekos.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_mem.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_prim.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_scene.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_misc.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_init_term.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_buffers.texconv.o \
|
|
|
|
../vendor/koshle/hlepvr_irq.texconv.o \
|
|
|
|
../vendor/koshle/hlematrix3d.texconv.o \
|
|
|
|
../vendor/librw/src/dc/vq.texconv.o \
|
2025-03-09 13:42:19 +02:00
|
|
|
../src/miami/fakerw/fake.texconv.o \
|
|
|
|
../src/miami/skel/crossplatform.texconv.o \
|
|
|
|
../src/miami/rw/TxdStore.texconv.o \
|
|
|
|
../src/miami/rw/RwHelper.texconv.o \
|
|
|
|
../src/tools/texconv.texconv.o \
|
2024-12-26 11:10:17 +02:00
|
|
|
../vendor/TriStripper/src/connectivity_graph.texconv.o \
|
|
|
|
../vendor/TriStripper/src/policy.texconv.o \
|
|
|
|
../vendor/TriStripper/src/tri_stripper.texconv.o \
|
2025-03-09 13:42:19 +02:00
|
|
|
../src/miami/rw/VisibilityPlugins.texconv.o \
|
|
|
|
../src/miami/rw/NodeName.texconv.o \
|
|
|
|
../src/miami/animation/RpAnimBlend.texconv.o \
|
|
|
|
../src/miami/animation/Bones.texconv.o \
|
|
|
|
../src/miami/animation/AnimBlendAssociation.texconv.o \
|
|
|
|
../src/miami/animation/AnimBlendNode.texconv.o \
|
|
|
|
../src/miami/animation/AnimBlendClumpData.texconv.o \
|
|
|
|
../src/miami/rw/MemoryMgr.texconv.o \
|
|
|
|
../src/miami/math/Quaternion.texconv.o \
|
2025-02-22 15:36:37 +02:00
|
|
|
../vendor/librw/src/ps2-x/ps2.texconv.o \
|
|
|
|
../vendor/librw/src/ps2-x/ps2device.texconv.o \
|
|
|
|
../vendor/librw/src/ps2-x/ps2raster.texconv.o \
|
|
|
|
../vendor/librw/src/ps2-x/ps2skin.texconv.o \
|
2024-12-26 11:10:17 +02:00
|
|
|
../vendor/librw/src/d3d-x/d3d.texconv.o \
|
|
|
|
../vendor/librw/src/d3d-x/d3d8.texconv.o \
|
|
|
|
../vendor/librw/src/d3d-x/d3d8render.texconv.o \
|
2025-02-07 19:06:03 +02:00
|
|
|
../vendor/librw/src/bmp.texconv.o \
|
|
|
|
../vendor/librw/src/png.texconv.o \
|
2025-02-22 15:36:37 +02:00
|
|
|
../vendor/librw/src/lodepng/lodepng.texconv.o
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
# Add compilation units to this list to explicity compile them with
|
|
|
|
# -O3 optimizations, while the rest get the default (-Os) treatment
|
|
|
|
# to conserve RAM.
|
|
|
|
OBJS_O3 = \
|
|
|
|
../vendor/librw/src/dc/rwdc.o \
|
2025-03-09 13:02:48 +02:00
|
|
|
../src/miami/core/World.o \
|
|
|
|
../src/miami/collision/Collision.o \
|
|
|
|
../src/miami/math/math.o \
|
|
|
|
../src/miami/math/Matrix.o \
|
|
|
|
../src/miami/math/Quaternion.o \
|
|
|
|
../src/miami/math/Rect.o \
|
|
|
|
../src/miami/math/Vector.o \
|
|
|
|
../src/vendor/librw/src/base.o \
|
|
|
|
../src/miami/renderer/Shadows.o
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
OBJS_NO_FAST_MATH = \
|
2025-03-09 13:02:48 +02:00
|
|
|
../src/miami/core/Cam.o \
|
|
|
|
../src/miami/core/Camera.o \
|
|
|
|
../src/miami/vehicles/Bike.o \
|
2025-03-28 00:17:25 -05:00
|
|
|
../src/miami/vehicles/Boat.o \
|
2025-03-09 13:02:48 +02:00
|
|
|
../src/miami/renderer/Particle.o
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
KOS_CPPFLAGS += -fbuiltin -ffast-math -ffp-contract=fast \
|
|
|
|
-mfsrra -mfsca
|
|
|
|
|
2024-12-26 13:23:28 +02:00
|
|
|
ifdef KOS_BASE
|
2025-03-09 13:33:04 +02:00
|
|
|
include $(KOS_BASE)/Makefile.rules
|
2024-12-26 13:23:28 +02:00
|
|
|
else
|
|
|
|
$(warning "KOS_BASE is not set. Only prebuilt targets will work.")
|
|
|
|
endif
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
DEPS = $(OBJS:.o=.d) $(OBJS_TEXCONV:.o:.d)
|
|
|
|
|
|
|
|
CXXFLAGS += $(if $(WITH_32MB),-O3,-Os) \
|
|
|
|
$(if $(WITH_IDE),-DWITH_IDE) \
|
|
|
|
$(if $(WITH_PROF),-DWITH_PROF=\"$(WITH_PROF)\") \
|
|
|
|
-MMD -MP -ffunction-sections -fdata-sections -ffast-math \
|
|
|
|
-fmerge-all-constants -fomit-frame-pointer -ml -std=gnu++20 \
|
2025-03-15 20:02:23 -05:00
|
|
|
-fno-exceptions -fno-rtti -fipa-pta -fno-PIC -Wno-write-strings \
|
2024-12-26 11:10:17 +02:00
|
|
|
-Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion \
|
|
|
|
-Wno-multichar -Wno-unused-value -Wno-char-subscripts -Wno-reorder \
|
|
|
|
-Wno-unused-function -Wno-class-memaccess -fno-permissive \
|
|
|
|
-fno-asynchronous-unwind-tables -fno-enforce-eh-specs -fno-non-call-exceptions \
|
2025-03-09 13:02:48 +02:00
|
|
|
-fno-strict-aliasing -fwrapv -Wno-unknown-pragmas
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
clean-texconv:
|
|
|
|
-rm -f $(OBJS_TEXCONV)
|
|
|
|
-rm -f texconv
|
|
|
|
|
|
|
|
clean-pvrtex:
|
2025-03-09 13:42:19 +02:00
|
|
|
$(MAKE) -C ../vendor/pvrtex clean
|
|
|
|
-rm -f ../vendor/pvrtex/pvrtex
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
clean-objs:
|
|
|
|
-rm -f $(OBJS)
|
|
|
|
|
|
|
|
clean:
|
|
|
|
-rm -f $(OBJS)
|
|
|
|
-rm -f $(OBJS_TEXCONV)
|
|
|
|
-rm -f $(TARGET)
|
|
|
|
-rm -f $(TARGET).bin
|
|
|
|
-rm -f 1ST_READ.BIN
|
|
|
|
-rm -f IP.BIN
|
|
|
|
-rm -f $(PROJECT_NAME).iso
|
|
|
|
-rm -f $(PROJECT_NAME).ds.iso
|
2025-03-31 15:05:06 +02:00
|
|
|
-rm -f $(PROJECT_NAME)-prebuilt.ds.iso
|
2024-12-26 11:10:17 +02:00
|
|
|
-rm -f $(PROJECT_NAME).cdi
|
|
|
|
-rm -f $(DEPS)
|
|
|
|
-rm -rf $(REPACK_DIR)
|
|
|
|
-rm -rf analyze-profile
|
|
|
|
|
|
|
|
$(OBJS_O3): %.o: %.cpp
|
|
|
|
kos-c++ $(CXXFLAGS) $(CPPFLAGS) -O3 -c $< -o $@
|
|
|
|
|
|
|
|
$(OBJS_NO_FAST_MATH): %.o: %.cpp
|
|
|
|
kos-c++ $(CXXFLAGS) $(CPPFLAGS) -O3 -c $< -o $@ -fno-fast-math
|
|
|
|
|
|
|
|
$(TARGET): $(OBJS)
|
|
|
|
kos-c++ -o $(TARGET) $(OBJS) -Wl,--gc-sections -Wl,--as-needed -Wl,-Map,output.map \
|
2025-02-22 22:20:33 +02:00
|
|
|
$(if $(WITH_IDE),-lkosfat) $(if $(WITH_SD),-lkosfat) -Wl,--build-id=sha1
|
2025-03-09 13:33:04 +02:00
|
|
|
@echo && echo && echo "*** Build Completed Successfully ($(TARGET)) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
run: $(TARGET)
|
|
|
|
$(KOS_LOADER) $(TARGET)
|
|
|
|
|
2025-03-25 20:39:07 +02:00
|
|
|
$(REPACK_GTA_DIR)/GTAVCSF8.b: assets/GTAVCSF8.b
|
|
|
|
mkdir -p $(@D)
|
|
|
|
cp $< $@
|
|
|
|
|
|
|
|
$(REPACK_GTA_DIR)/0GDTEX.PVR: assets/0GDTEX.PVR
|
2025-03-10 23:33:13 +02:00
|
|
|
mkdir -p $(@D)
|
|
|
|
cp $< $@
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-30 03:54:01 -05:00
|
|
|
$(REPACK_GTA_DIR)/%.ico: assets/%.ico
|
2025-03-29 22:53:49 -05:00
|
|
|
mkdir -p $(@D)
|
|
|
|
cp $< $@
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
1ST_READ.BIN: $(TARGET)
|
|
|
|
rm -f $(TARGET).bin
|
|
|
|
rm -f 1ST_READ.BIN
|
|
|
|
kos-objcopy -R .stack -O binary $(TARGET) $(TARGET).bin
|
|
|
|
$(KOS_BASE)/utils/scramble/scramble $(TARGET).bin 1ST_READ.BIN
|
|
|
|
|
2024-12-27 19:07:30 +02:00
|
|
|
.PHONY: pvrtex
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
pvrtex:
|
2025-03-09 13:42:19 +02:00
|
|
|
$(MAKE) -C ../vendor/pvrtex
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
IP.BIN:
|
|
|
|
rm -f IP.BIN
|
|
|
|
$(KOS_BASE)/utils/makeip/makeip ip.txt IP.BIN
|
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME).iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2024-12-26 11:10:17 +02:00
|
|
|
rm -f $(PROJECT_NAME).iso
|
|
|
|
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
cp 1ST_READ.BIN $(REPACK_GTA_DIR)
|
|
|
|
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME).iso $(REPACK_GTA_DIR)
|
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME)-no-repack.iso: IP.BIN 1ST_READ.BIN $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2024-12-26 11:10:17 +02:00
|
|
|
rm -f $(PROJECT_NAME)-no-repack.iso
|
|
|
|
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
cp 1ST_READ.BIN $(REPACK_GTA_DIR)
|
|
|
|
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME)-no-repack.iso $(REPACK_GTA_DIR)
|
|
|
|
|
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME).ds.iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2024-12-26 11:10:17 +02:00
|
|
|
rm -f $(PROJECT_NAME).ds.iso
|
|
|
|
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
cp $(TARGET).bin $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
mkisofs -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME).ds.iso $(REPACK_GTA_DIR)
|
|
|
|
|
|
|
|
1ST_READ_PREBUILT.BIN:
|
|
|
|
kos-objcopy -R .stack -O binary $(TARGET) $(TARGET)-prebuilt.bin
|
|
|
|
$(KOS_BASE)/utils/scramble/scramble $(TARGET)-prebuilt.bin 1ST_READ_PREBUILT.BIN
|
|
|
|
mkdir -p $(REPACK_GTA_DIR)
|
|
|
|
|
2025-03-31 15:05:06 +02:00
|
|
|
$(PROJECT_NAME)-prebuilt.ds.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
|
|
|
rm -f $(PROJECT_NAME)-prebuilt.ds.iso
|
|
|
|
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
cp 1ST_READ_PREBUILT.BIN $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
mkisofs -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME)-prebuilt.ds.iso $(REPACK_GTA_DIR)
|
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME)-prebuilt.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2024-12-26 11:10:17 +02:00
|
|
|
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
cp 1ST_READ_PREBUILT.BIN $(REPACK_GTA_DIR)/1ST_READ.BIN
|
|
|
|
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME).iso $(REPACK_GTA_DIR)
|
|
|
|
|
|
|
|
ifeq ($(HAVE_CDI4DC), yes)
|
|
|
|
$(PROJECT_NAME).cdi: $(PROJECT_NAME).iso
|
|
|
|
cdi4dc $(PROJECT_NAME).iso $(PROJECT_NAME).cdi > cdi.log
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(PROJECT_NAME)-no-repack.cdi: $(PROJECT_NAME)-no-repack.iso
|
|
|
|
cdi4dc $(PROJECT_NAME)-no-repack.iso $(PROJECT_NAME)-no-repack.cdi > cdi.log
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(PROJECT_NAME)-prebuilt.cdi: $(PROJECT_NAME)-prebuilt.iso
|
|
|
|
cdi4dc $(PROJECT_NAME).iso $(PROJECT_NAME).cdi > cdi.log
|
|
|
|
rm 1ST_READ_PREBUILT.BIN
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
else
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME).cdi: $(TARGET) $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2025-03-09 13:33:04 +02:00
|
|
|
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME)-no-repack.cdi: $(TARGET) $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2025-03-09 13:33:04 +02:00
|
|
|
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME)-no-repack.cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-29 22:53:49 -05:00
|
|
|
$(PROJECT_NAME)-prebuilt.cdi: $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
2025-03-09 13:33:04 +02:00
|
|
|
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
cdi: $(PROJECT_NAME).cdi
|
|
|
|
|
|
|
|
cdi-no-repack: $(PROJECT_NAME)-no-repack.cdi
|
|
|
|
|
|
|
|
dsiso: $(PROJECT_NAME).ds.iso
|
|
|
|
|
2025-03-31 15:05:06 +02:00
|
|
|
dsiso-prebuilt: $(PROJECT_NAME)-prebuilt.ds.iso
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
cdi-prebuilt: $(PROJECT_NAME)-prebuilt.cdi
|
|
|
|
|
|
|
|
sim: $(REPACK_DIR)/repacked
|
|
|
|
$(MAKE) -f sim.mk
|
|
|
|
|
|
|
|
run-flycast:
|
|
|
|
flycast ./$(PROJECT_NAME).cdi
|
|
|
|
|
|
|
|
repack-dc: $(REPACK_DIR)/repacked
|
|
|
|
|
|
|
|
gprof:
|
|
|
|
@sh-elf-gprof $(TARGET) $(REPACK_DIR)/kernel_gmon_1.out > gprof.out
|
|
|
|
@cat gprof.out | gprof2dot | dot -Tpng -o $(TARGET)-kernel.png
|
|
|
|
@-rm -rf gprof.out
|
|
|
|
@echo "\033[42m Profiling data saved to $(TARGET)-kernel.png \033[0m"
|
|
|
|
|
|
|
|
# tools
|
2025-03-09 14:37:37 +02:00
|
|
|
imgtool: ../src/tools/imgtool.cpp
|
2024-12-26 11:10:17 +02:00
|
|
|
$(CXX) -std=c++17 -o $@ -Og $<
|
|
|
|
|
2025-03-09 14:37:37 +02:00
|
|
|
extract-sfx: ../src/tools/extract-sfx.cpp
|
2024-12-26 11:10:17 +02:00
|
|
|
$(CXX) -std=c++17 -o $@ -Og $<
|
|
|
|
|
2025-03-09 14:37:37 +02:00
|
|
|
pack-sfx: ../src/tools/pack-sfx.cpp
|
2024-12-26 11:10:17 +02:00
|
|
|
$(CXX) -std=c++17 -o $@ -Og $<
|
|
|
|
|
2025-03-09 14:37:37 +02:00
|
|
|
adf2mp3: ../src/tools/adf2mp3.cpp
|
2025-02-24 01:47:16 +02:00
|
|
|
$(CXX) -o $@ -O3 -g $<
|
|
|
|
|
2025-03-09 14:37:37 +02:00
|
|
|
aud2adpcm: ../src/tools/aud2adpcm.c
|
2024-12-26 11:10:17 +02:00
|
|
|
$(CC) -o $@ -O3 -g $< -I../vendor/minimp3
|
|
|
|
|
|
|
|
texconv: $(OBJS_TEXCONV) | pvrtex # You'll have to rebuild pvrtex manually if you change it
|
|
|
|
$(CXX) -o $@ $(OBJS_TEXCONV)
|
|
|
|
|
|
|
|
%.texconv.o: %.cpp
|
2025-02-23 10:19:39 +02:00
|
|
|
$(CXX) -std=c++2a -c -O0 -g -MMD -MP -o $@ -I../vendor/koshle -I../vendor/librw/src $(INCLUDE) -I../vendor/emu -I../vendor/crypto -I../vendor/TriStripper/include $(DEFINES) -DDC_TEXCONV -DDC_SIM $(TEXCONV_FLAGS) $<
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-09 20:05:15 +02:00
|
|
|
animtool: ../src/tools/animtool.cpp
|
2025-03-04 17:25:59 +01:00
|
|
|
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
|
|
|
|
2025-03-09 22:52:14 +02:00
|
|
|
coltool: ../src/tools/coltool.cpp
|
2025-03-09 15:25:14 +02:00
|
|
|
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
|
|
|
|
2025-03-11 19:32:29 +02:00
|
|
|
streamheaderpack: ../src/tools/streamheaderpack.cpp
|
|
|
|
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
-include $(DEPS)
|
|
|
|
|
|
|
|
#### Repacking ####
|
|
|
|
|
|
|
|
TXD_OPTS_fonts = 256 256
|
2025-02-24 16:42:00 +02:00
|
|
|
TXD_OPTS_fronten1 = 512 512
|
|
|
|
TXD_OPTS_fronten2 = 512 512
|
|
|
|
# TXD_OPTS_generic = 512 512
|
|
|
|
# TXD_OPTS_wheels = 512 512
|
2024-12-26 11:10:17 +02:00
|
|
|
TXD_OPTS_hud = 128 128
|
2025-02-24 16:42:00 +02:00
|
|
|
TXD_OPTS_INTRO = 512 512
|
|
|
|
# TXD_OPTS_MISC = 512 512
|
|
|
|
# TXD_OPTS_particle = 512 512
|
|
|
|
TXD_OPTS_intro1 = 512 512
|
|
|
|
TXD_OPTS_intro2 = 512 512
|
|
|
|
TXD_OPTS_INTRO3 = 512 512
|
|
|
|
TXD_OPTS_intro4 = 512 512
|
2024-12-26 11:10:17 +02:00
|
|
|
TXD_OPTS_LOADSC0 = 512 512
|
|
|
|
TXD_OPTS_LOADSC1 = 512 512
|
|
|
|
TXD_OPTS_LOADSC10 = 512 512
|
|
|
|
TXD_OPTS_LOADSC11 = 512 512
|
|
|
|
TXD_OPTS_LOADSC12 = 512 512
|
|
|
|
TXD_OPTS_LOADSC13 = 512 512
|
2025-03-06 00:49:27 +02:00
|
|
|
TXD_OPTS_LOADSC2 = 512 512
|
2024-12-26 11:10:17 +02:00
|
|
|
TXD_OPTS_LOADSC3 = 512 512
|
|
|
|
TXD_OPTS_LOADSC4 = 512 512
|
|
|
|
TXD_OPTS_LOADSC5 = 512 512
|
|
|
|
TXD_OPTS_LOADSC6 = 512 512
|
|
|
|
TXD_OPTS_LOADSC7 = 512 512
|
|
|
|
TXD_OPTS_LOADSC8 = 512 512
|
|
|
|
TXD_OPTS_LOADSC9 = 512 512
|
2025-02-24 16:42:00 +02:00
|
|
|
TXD_OPTS_NEWS = 128 128
|
|
|
|
TXD_OPTS_outro = 512 512
|
2024-12-26 11:10:17 +02:00
|
|
|
TXD_OPTS_SPLASH1 = 512 512
|
|
|
|
TXD_OPTS_SPLASH2 = 512 512
|
|
|
|
TXD_OPTS_SPLASH3 = 512 512
|
2025-02-07 19:06:03 +02:00
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
DEFAULT_RES = 512
|
|
|
|
|
|
|
|
PVR_ENCODER ?= PVRTEX
|
|
|
|
TEXTURE_DOWNSAMPLE_TXD ?= NONE
|
|
|
|
TEXTURE_DOWNSAMPLE_IMG ?= HALF
|
|
|
|
|
|
|
|
-include texlist.mk
|
|
|
|
-include modlist.mk
|
2025-02-22 15:36:37 +02:00
|
|
|
-include imgmisc.mk
|
2024-12-26 11:10:17 +02:00
|
|
|
-include gta3files.mk
|
|
|
|
-include sfxlist.mk
|
|
|
|
-include sfxlooplist.mk
|
|
|
|
-include wavlist.mk
|
|
|
|
-include mp3list.mk
|
2025-03-04 17:25:59 +01:00
|
|
|
-include cuts.mk
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
IMG_TEXTURES_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_TEXTURES))
|
|
|
|
IMG_MODELS_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_MODELS))
|
2025-03-04 17:25:59 +01:00
|
|
|
IMG_IFP_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_IFP))
|
2025-03-09 15:25:14 +02:00
|
|
|
IMG_COL_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_COL))
|
2025-03-04 17:25:59 +01:00
|
|
|
|
|
|
|
CUTS_IFP_DC = $(addprefix $(REPACK_CUTS_DC_DIR)/, $(CUTS_IFP))
|
|
|
|
CUTS_MISC_DC = $(addprefix $(REPACK_CUTS_DC_DIR)/, $(CUTS_MISC))
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
LOOSE_FILES_DC = $(addprefix $(REPACK_GTA_DIR)/, $(MISC_FILES))
|
2025-03-04 17:25:59 +01:00
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
SFX_DC_DIR = $(REPACK_GTA_DIR)/sfx
|
|
|
|
SFX_DC_RAW = $(SFX_DC_DIR)/sfx_all.raw
|
|
|
|
SFX_DC_DSC = $(SFX_DC_DIR)/sfx_all.dsc
|
2025-03-11 19:32:29 +02:00
|
|
|
STREAM_ADPCM_DC = $(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_WAV:.wav=.APM)) \
|
|
|
|
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_MP3:.mp3=.APM)) \
|
|
|
|
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_ADF:.adf=.APM))
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
IMG_TEXTURES_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_TEXTURES))
|
|
|
|
IMG_MODELS_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_MODELS))
|
2025-03-04 17:25:59 +01:00
|
|
|
IMG_IFP_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_IFP))
|
2025-03-09 15:25:14 +02:00
|
|
|
IMG_COL_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_COL))
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-04 17:25:59 +01:00
|
|
|
CUTS_IFP_ORIG = $(addprefix $(REPACK_CUTS_ORIG_DIR)/, $(CUTS_IFP))
|
|
|
|
CUTS_MISC_ORIG = $(addprefix $(REPACK_CUTS_ORIG_DIR)/, $(CUTS_MISC))
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
SFX_ORIG = $(addprefix $(REPACK_SFX_ORIG_DIR)/, $(SFX_WAV))
|
|
|
|
SFX_ORIG_LOOP = $(addprefix $(REPACK_SFX_ORIG_DIR)/, $(SFX_LOOP_WAV))
|
|
|
|
SFX_REPACK_DC_WAV = $(addprefix $(REPACK_SFX_DC_DIR)/, $(SFX_WAV) $(SFX_LOOP_WAV))
|
|
|
|
SFX_REPACK_DC = $(SFX_REPACK_DC_WAV:.wav=.pcm)
|
2025-02-24 11:22:21 +02:00
|
|
|
STREAM_ADF_DECODED = $(addprefix $(REPACK_STREAM_DECODED_DIR)/, $(STREAM_ADF:.adf=.mp3))
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-02-24 11:22:21 +02:00
|
|
|
.PRECIOUS: $(SFX_ORIG) $(SFX_REPACK_DC) $(STREAM_ADF_DECODED)
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-11 19:32:29 +02:00
|
|
|
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC) streamheaderpack
|
2024-12-26 11:10:17 +02:00
|
|
|
mkdir -p $(@D)
|
2025-03-11 19:32:29 +02:00
|
|
|
# $(REPACK_GTA_DIR) needed as first argument as paths in the game prefix with stream/
|
|
|
|
./streamheaderpack miami $(REPACK_GTA_DIR) $(REPACK_STREAM_DEST_DIR)/hdr.bin
|
2024-12-27 18:22:42 +02:00
|
|
|
@git archive --format zip --output "$(REPACK_GTA_DIR)/DCA3-$(GIT_VERSION).zip" HEAD
|
2024-12-26 17:17:46 +02:00
|
|
|
@touch $@
|
2025-03-09 14:37:37 +02:00
|
|
|
@echo && echo && echo "*** Repack Completed Successfully ($(PROJECT_NAME)) ***" && echo && echo
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(REPACK_DIR)/unpacked: imgtool $(GTA_DIR)/models/gta3.img $(GTA_DIR)/models/gta3.dir
|
|
|
|
mkdir -p $(@D)
|
|
|
|
./imgtool unpack "$(GTA_DIR)/models/gta3" "$(REPACK_IMG_ORIG_DIR)"
|
|
|
|
@touch $@
|
|
|
|
|
2025-03-09 15:25:14 +02:00
|
|
|
$(IMG_TEXTURES_ORIG) $(IMG_MODELS_ORIG) $(IMG_IFP_ORIG) $(IMG_COL_ORIG): $(REPACK_DIR)/unpacked
|
2025-03-04 17:25:59 +01:00
|
|
|
@test -f $@
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(REPACK_DIR)/unpacked-cuts: imgtool $(GTA_DIR)/anim/cuts.img $(GTA_DIR)/anim/cuts.dir
|
|
|
|
mkdir -p $(@D)
|
|
|
|
./imgtool unpack "$(GTA_DIR)/anim/cuts" "$(REPACK_CUTS_ORIG_DIR)"
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(CUTS_IFP_ORIG) $(CUTS_MISC_ORIG): $(REPACK_DIR)/unpacked-cuts
|
2025-02-22 15:36:37 +02:00
|
|
|
@test -f $@
|
2024-12-26 11:10:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
# First try the mods img directory
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.dff: $(GTA_MOD_IMG_DIR)/%.dff texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.DFF: $(GTA_MOD_IMG_DIR)/%.DFF texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
|
|
|
|
# if not, the extracted img directory
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.dff: $(REPACK_IMG_ORIG_DIR)/%.dff texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.DFF: $(REPACK_IMG_ORIG_DIR)/%.DFF texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
|
|
|
|
# first try the mods img directory. NB, the textures are not resized here, unlike normal .img textures
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.txd: $(GTA_MOD_IMG_DIR)/%.txd texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ 1024 1024 -e $(PVR_ENCODER) -d NONE
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.TXD: $(GTA_MOD_IMG_DIR)/%.TXD texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ 1024 1024 -e $(PVR_ENCODER) -d NONE
|
|
|
|
|
|
|
|
# if not, the extracted img directory
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.txd: $(REPACK_IMG_ORIG_DIR)/%.txd texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(DEFAULT_RES) $(DEFAULT_RES) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_IMG)
|
|
|
|
$(REPACK_IMG_DC_DIR)/%.TXD: $(REPACK_IMG_ORIG_DIR)/%.TXD texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(DEFAULT_RES) $(DEFAULT_RES) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_IMG)
|
|
|
|
|
2025-02-22 15:36:37 +02:00
|
|
|
# First try the mods img directory
|
2025-03-09 15:25:14 +02:00
|
|
|
$(REPACK_IMG_DC_DIR)/%.col: $(GTA_MOD_IMG_DIR)/%.col coltool
|
2025-02-22 15:36:37 +02:00
|
|
|
@mkdir -p $(@D)
|
2025-03-09 15:25:14 +02:00
|
|
|
./coltool $< $@
|
2025-03-04 17:25:59 +01:00
|
|
|
$(REPACK_IMG_DC_DIR)/%.ifp: $(GTA_MOD_IMG_DIR)/%.ifp animtool
|
2025-02-22 15:36:37 +02:00
|
|
|
@mkdir -p $(@D)
|
2025-03-04 17:25:59 +01:00
|
|
|
./animtool $< $@
|
2025-02-22 15:36:37 +02:00
|
|
|
|
|
|
|
# if not, the extracted img directory
|
2025-03-09 15:25:14 +02:00
|
|
|
$(REPACK_IMG_DC_DIR)/%.col: $(REPACK_IMG_ORIG_DIR)/%.col coltool
|
2025-02-22 15:36:37 +02:00
|
|
|
@mkdir -p $(@D)
|
2025-03-09 15:25:14 +02:00
|
|
|
./coltool $< $@
|
2025-03-04 17:25:59 +01:00
|
|
|
$(REPACK_IMG_DC_DIR)/%.ifp: $(REPACK_IMG_ORIG_DIR)/%.ifp animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
|
|
|
|
### cuts
|
|
|
|
# First try the mods img directory
|
|
|
|
$(REPACK_CUTS_DC_DIR)/%.dat: $(GTA_MOD_CUTS_DIR)/%.dat
|
2025-02-22 15:36:37 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
cp $< $@
|
2025-03-04 17:25:59 +01:00
|
|
|
$(REPACK_CUTS_DC_DIR)/%.ifp: $(GTA_MOD_CUTS_DIR)/%.ifp animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
|
|
|
|
# if not, the extracted img directory
|
|
|
|
$(REPACK_CUTS_DC_DIR)/%.dat: $(REPACK_CUTS_ORIG_DIR)/%.dat
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
cp $< $@
|
|
|
|
$(REPACK_CUTS_DC_DIR)/%.ifp: $(REPACK_CUTS_ORIG_DIR)/%.ifp animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
|
2025-02-22 15:36:37 +02:00
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
# first try the mods loose directory
|
|
|
|
$(REPACK_GTA_DIR)/%.dff: $(GTA_MOD_LOOSE_DIR)/%.dff texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.DFF: $(GTA_MOD_LOOSE_DIR)/%.DFF texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
|
|
|
|
#if not, the original files
|
|
|
|
$(REPACK_GTA_DIR)/%.dff: $(GTA_DIR)/%.dff texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.DFF: $(GTA_DIR)/%.DFF texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@
|
|
|
|
|
|
|
|
# first try the mods loose directory
|
|
|
|
# Note the mods loose directory is not resized, unlike the normal .txd textures
|
|
|
|
$(REPACK_GTA_DIR)/%.txd: $(GTA_MOD_LOOSE_DIR)/%.txd texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ 1024 1024 -e $(PVR_ENCODER) -d NONE
|
|
|
|
$(REPACK_GTA_DIR)/%.TXD: $(GTA_MOD_LOOSE_DIR)/%.TXD texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ 1024 1024 -e $(PVR_ENCODER) -d NONE
|
|
|
|
|
2025-03-12 01:15:24 +02:00
|
|
|
# then the gamefiles directory
|
|
|
|
$(REPACK_GTA_DIR)/%.txd: $(GTA_GAMEFILES_LOOSE_DIR)/%.txd texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
|
|
|
$(REPACK_GTA_DIR)/%.TXD: $(GTA_GAMEFILES_LOOSE_DIR)/%.TXD texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
# if not, the original files
|
|
|
|
$(REPACK_GTA_DIR)/%.txd: $(GTA_DIR)/%.txd texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
|
|
|
$(REPACK_GTA_DIR)/%.TXD: $(GTA_DIR)/%.TXD texconv
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
|
|
|
|
2025-03-04 17:25:59 +01:00
|
|
|
# first try the mods loose directory
|
|
|
|
$(REPACK_GTA_DIR)/%.ifp: $(GTA_MOD_LOOSE_DIR)/%.ifp animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.IFP: $(GTA_MOD_LOOSE_DIR)/%.IFP animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
|
|
|
|
#if not, the original files
|
|
|
|
$(REPACK_GTA_DIR)/%.ifp: $(GTA_DIR)/%.ifp animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.IFP: $(GTA_DIR)/%.IFP animtool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./animtool $< $@
|
|
|
|
|
2025-03-09 15:25:14 +02:00
|
|
|
# first try the mods loose directory
|
|
|
|
$(REPACK_GTA_DIR)/%.col: $(GTA_MOD_LOOSE_DIR)/%.col coltool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./coltool $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.COL: $(GTA_MOD_LOOSE_DIR)/%.COL coltool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./coltool $< $@
|
|
|
|
|
|
|
|
#if not, the original files
|
|
|
|
$(REPACK_GTA_DIR)/%.col: $(GTA_DIR)/%.col coltool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./coltool $< $@
|
|
|
|
$(REPACK_GTA_DIR)/%.COL: $(GTA_DIR)/%.COL coltool
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./coltool $< $@
|
|
|
|
|
|
|
|
$(REPACK_DIR)/packed: $(IMG_TEXTURES_DC) $(IMG_MODELS_DC) $(IMG_IFP_DC) $(IMG_COL_DC)
|
2024-12-26 11:10:17 +02:00
|
|
|
mkdir -p $(@D)
|
|
|
|
mkdir -p "$(REPACK_GTA_DIR)/models/gta3"
|
|
|
|
./imgtool pack "$(REPACK_GTA_DIR)/models/gta3" "$(REPACK_IMG_DC_DIR)"
|
2024-12-26 17:17:46 +02:00
|
|
|
@touch $@
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir: $(REPACK_DIR)/packed
|
2024-12-26 17:17:46 +02:00
|
|
|
@touch $@
|
2024-12-26 11:10:17 +02:00
|
|
|
|
2025-03-04 17:25:59 +01:00
|
|
|
$(REPACK_DIR)/packed-cuts: $(CUTS_IFP_DC) $(CUTS_MISC_DC)
|
|
|
|
mkdir -p $(@D)
|
|
|
|
mkdir -p "$(REPACK_GTA_DIR)/anim/cuts"
|
|
|
|
./imgtool pack "$(REPACK_GTA_DIR)/anim/cuts" "$(REPACK_CUTS_DC_DIR)"
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir: $(REPACK_DIR)/packed-cuts
|
|
|
|
@touch $@
|
|
|
|
|
2024-12-26 11:10:17 +02:00
|
|
|
# sfx processing
|
2025-02-22 15:36:37 +02:00
|
|
|
$(REPACK_DIR)/unpacked-sfx: extract-sfx $(GTA_DIR)/Audio/sfx.SDT $(GTA_DIR)/Audio/sfx.RAW
|
2024-12-26 11:10:17 +02:00
|
|
|
mkdir -p $(@D)
|
|
|
|
mkdir -p "$(REPACK_SFX_ORIG_DIR)"
|
2025-02-22 15:36:37 +02:00
|
|
|
./extract-sfx "$(GTA_DIR)/Audio/sfx.SDT" "$(GTA_DIR)/Audio/sfx.RAW" "$(REPACK_SFX_ORIG_DIR)"
|
2024-12-26 17:17:46 +02:00
|
|
|
@touch $@
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(SFX_ORIG): $(REPACK_DIR)/unpacked-sfx
|
2025-02-22 15:36:37 +02:00
|
|
|
@test -f $@
|
2024-12-26 17:17:46 +02:00
|
|
|
@touch $@
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(SFX_ORIG_LOOP): $(SFX_ORIG)
|
2025-02-22 15:36:37 +02:00
|
|
|
@test -f $@
|
2024-12-26 11:10:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
# try first mods sfx directory
|
|
|
|
$(REPACK_SFX_DC_DIR)/%.pcm: $(GTA_MOD_SFX_DIR)/%.wav aud2adpcm
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm -raw $< $@
|
|
|
|
|
|
|
|
# then original (extracted) sfx directory
|
|
|
|
$(REPACK_SFX_DC_DIR)/%.pcm: $(REPACK_SFX_ORIG_DIR)/%.wav aud2adpcm
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm -raw $< $@
|
|
|
|
|
|
|
|
# stream processing
|
|
|
|
|
|
|
|
# first try the mods loose directory
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.wav aud2adpcm
|
2025-02-22 15:36:37 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_MOD_LOOSE_DIR)/Audio/%.adf adf2mp3
|
2025-02-24 01:47:16 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./adf2mp3 $< $@
|
|
|
|
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.mp3 aud2adpcm
|
2024-12-26 11:10:17 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
2025-03-11 19:32:29 +02:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
2024-12-26 11:10:17 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
|
|
|
# then original folder
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.wav aud2adpcm
|
2024-12-26 11:10:17 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_DIR)/Audio/%.adf adf2mp3
|
2025-02-24 01:47:16 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./adf2mp3 $< $@
|
|
|
|
|
2025-03-26 07:24:47 +00:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.mp3 aud2adpcm
|
2024-12-26 11:10:17 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
2025-03-11 19:32:29 +02:00
|
|
|
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
2025-02-24 01:47:16 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
|
|
|
|
2025-03-12 01:15:24 +02:00
|
|
|
# Note: These are last so they have least priority, files should be processed if possible
|
|
|
|
|
|
|
|
# first try mods dir
|
|
|
|
$(REPACK_GTA_DIR)/%: $(GTA_MOD_LOOSE_DIR)/%
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
cp $< $@
|
|
|
|
|
|
|
|
# then gamefiles
|
|
|
|
$(REPACK_GTA_DIR)/%: $(GTA_GAMEFILES_LOOSE_DIR)/%
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
cp $< $@
|
2025-02-24 01:47:16 +02:00
|
|
|
|
2025-03-12 01:15:24 +02:00
|
|
|
# then original files
|
2024-12-26 11:10:17 +02:00
|
|
|
$(REPACK_GTA_DIR)/%: $(GTA_DIR)/%
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
cp $< $@
|
|
|
|
|
|
|
|
$(SFX_DC_RAW): pack-sfx $(SFX_REPACK_DC)
|
|
|
|
mkdir -p $(@D)
|
2025-02-22 15:36:37 +02:00
|
|
|
./pack-sfx "$(GTA_DIR)/Audio/sfx.SDT" $(SFX_DC_RAW) $(SFX_DC_DSC) $(REPACK_SFX_DC_DIR)
|
2024-12-26 11:10:17 +02:00
|
|
|
|
|
|
|
$(SFX_DC_DSC): $(SFX_DC_RAW)
|
|
|
|
ls -l $@
|
|
|
|
|
|
|
|
analyze-profile: analyze-profile.cpp
|
|
|
|
$(CXX) -std=c++17 -O3 analyze-profile.cpp -o analyze-profile
|