Remove support for qemu-irix and require the use of recomp
This commit is contained in:
parent
d93df41cba
commit
c51c4c1573
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "tools/recomp"]
|
||||||
|
path = tools/recomp
|
||||||
|
url = https://github.com/Emill/ido-static-recomp.git
|
101
Makefile
101
Makefile
|
@ -4,18 +4,14 @@ ROMID ?= ntsc-final
|
||||||
PIRACYCHECKS ?= 1
|
PIRACYCHECKS ?= 1
|
||||||
|
|
||||||
# In PD, some code is compiled with IDO 5.3 and some is IDO 7.1.
|
# In PD, some code is compiled with IDO 5.3 and some is IDO 7.1.
|
||||||
# The project provides both versions of the IDO compiler so that the project can
|
# The project requires the ido-static-recomp project, which deconstructs the IDO
|
||||||
# be compiled out of the box by running these compilers using qemu-irix.
|
# compiler and related binaries and recompiles them for your computer's
|
||||||
# Recomp can be used for almost all files, but some must be compiled with qemu.
|
# architecture. These recompiled compilers and binaries are then used to compile
|
||||||
|
# the game's source.
|
||||||
|
|
||||||
# These are the qemu-irix versions. These variables are constant.
|
# These are paths to the recompiled compilers
|
||||||
CCQEMU53 = tools/irix/qemu-irix -silent -L tools/irix/root53 tools/irix/root53/usr/bin/cc
|
CC53 ?= build/recomp/5.3/cc
|
||||||
CCQEMU71 = tools/irix/qemu-irix -silent -L tools/irix/root71 tools/irix/root71/usr/bin/cc
|
CC71 ?= build/recomp/7.1/cc
|
||||||
|
|
||||||
# The user can use recomp by setting $CC53 and $CC71 in their environment.
|
|
||||||
# If not set, fall back to using the qemu-irix compilers.
|
|
||||||
CC53 ?= $(CCQEMU53)
|
|
||||||
CC71 ?= $(CCQEMU71)
|
|
||||||
|
|
||||||
# By default we'll compile everything using 5.3,
|
# By default we'll compile everything using 5.3,
|
||||||
# as this is what most of the project uses.
|
# as this is what most of the project uses.
|
||||||
|
@ -235,12 +231,12 @@ $(GLOBALASM_O_FILES): CC := /usr/bin/env python3 tools/asm_processor/build.py $(
|
||||||
# Create names such as $(B_DIR)/assets/files/PfooZ.
|
# Create names such as $(B_DIR)/assets/files/PfooZ.
|
||||||
# These names (with .o added) will be dependenices for ld.
|
# These names (with .o added) will be dependenices for ld.
|
||||||
ASSET_FILES := \
|
ASSET_FILES := \
|
||||||
$(patsubst $(A_DIR)/files/audio/%.mp3, $(B_DIR)/assets/files/A%M, $(shell find $(A_DIR)/files/audio -name '*.mp3')) \
|
$(patsubst $(A_DIR)/files/audio/%.mp3, $(B_DIR)/assets/files/A%M, $(shell find $(A_DIR) -path '*/files/audio/*.mp3')) \
|
||||||
$(patsubst $(A_DIR)/files/chrs/%.bin, $(B_DIR)/assets/files/C%Z, $(shell find $(A_DIR)/files/chrs -name '*.bin')) \
|
$(patsubst $(A_DIR)/files/chrs/%.bin, $(B_DIR)/assets/files/C%Z, $(shell find $(A_DIR) -path '*/files/chrs/*.bin')) \
|
||||||
$(patsubst $(A_DIR)/files/guns/%.bin, $(B_DIR)/assets/files/G%Z, $(shell find $(A_DIR)/files/guns -name '*.bin')) \
|
$(patsubst $(A_DIR)/files/guns/%.bin, $(B_DIR)/assets/files/G%Z, $(shell find $(A_DIR) -path '*/files/guns/*.bin')) \
|
||||||
$(patsubst $(A_DIR)/files/props/%.bin, $(B_DIR)/assets/files/P%Z, $(shell find $(A_DIR)/files/props -name '*.bin')) \
|
$(patsubst $(A_DIR)/files/props/%.bin, $(B_DIR)/assets/files/P%Z, $(shell find $(A_DIR) -path '*/files/props/*.bin')) \
|
||||||
$(patsubst src/files/setup/%.c, $(B_DIR)/assets/files/U%Z, $(shell find src/files/setup -name '*.c')) \
|
$(patsubst src/files/setup/%.c, $(B_DIR)/assets/files/U%Z, $(shell find src/files/setup -name '*.c')) \
|
||||||
$(patsubst $(A_DIR)/files/bgdata/%.seg, $(B_DIR)/assets/files/bgdata/%.seg, $(shell find $(A_DIR)/files/bgdata -name '*.seg')) \
|
$(patsubst $(A_DIR)/files/bgdata/%.seg, $(B_DIR)/assets/files/bgdata/%.seg, $(shell find $(A_DIR) -path '*/files/bgdata/*.seg')) \
|
||||||
$(B_DIR)/assets/files/ob/ob_mid.seg.o
|
$(B_DIR)/assets/files/ob/ob_mid.seg.o
|
||||||
|
|
||||||
LANG_JSON_FILES := $(shell find $(A_DIR) -path '*/lang/*.json')
|
LANG_JSON_FILES := $(shell find $(A_DIR) -path '*/lang/*.json')
|
||||||
|
@ -325,6 +321,69 @@ $(B_DIR)/pd.z64: $(B_DIR)/stage1.bin tools/mkrom/mkrom
|
||||||
tools/mkrom/mkrom:
|
tools/mkrom/mkrom:
|
||||||
$(MAKE) -C tools/mkrom
|
$(MAKE) -C tools/mkrom
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Recomp
|
||||||
|
# ---------------------
|
||||||
|
# The ido-static-recomp project is installed as a git submodule at tools/recomp.
|
||||||
|
# The IRIX binaries are taken from that project and they are recompiled to
|
||||||
|
# build/recomp/<version>/
|
||||||
|
|
||||||
|
RECOMP_FILES := \
|
||||||
|
build/recomp/5.3/as1 \
|
||||||
|
build/recomp/5.3/cc \
|
||||||
|
build/recomp/5.3/cfe \
|
||||||
|
build/recomp/5.3/err.english.cc \
|
||||||
|
build/recomp/5.3/ugen \
|
||||||
|
build/recomp/5.3/ujoin \
|
||||||
|
build/recomp/5.3/uld \
|
||||||
|
build/recomp/5.3/umerge \
|
||||||
|
build/recomp/5.3/uopt \
|
||||||
|
build/recomp/5.3/usplit \
|
||||||
|
build/recomp/7.1/as1 \
|
||||||
|
build/recomp/7.1/cc \
|
||||||
|
build/recomp/7.1/cfe \
|
||||||
|
build/recomp/7.1/err.english.cc \
|
||||||
|
build/recomp/7.1/ugen \
|
||||||
|
build/recomp/7.1/uopt
|
||||||
|
|
||||||
|
tools/recomp/recomp.cpp:
|
||||||
|
@echo "Please install ido-static-recomp by running:"
|
||||||
|
@echo
|
||||||
|
@echo " git submodule update --init --recursive"
|
||||||
|
@echo
|
||||||
|
@exit 1
|
||||||
|
|
||||||
|
build/recomp/recomp: tools/recomp/recomp.cpp
|
||||||
|
@mkdir -p build/recomp/5.3
|
||||||
|
@mkdir -p build/recomp/7.1
|
||||||
|
g++ tools/recomp/recomp.cpp -o build/recomp/recomp -g -lcapstone
|
||||||
|
|
||||||
|
build/recomp/5.3/ugen:
|
||||||
|
@mkdir -p build/recomp/5.3
|
||||||
|
g++ tools/recomp/recomp.cpp -o build/recomp/recomp-ugen53 -g -lcapstone -Dugen53
|
||||||
|
./build/recomp/recomp-ugen53 tools/recomp/ido/5.3/usr/lib/ugen > build/recomp/5.3/ugen.c
|
||||||
|
gcc tools/recomp/libc_impl.c build/recomp/5.3/ugen.c -Itools/recomp -o build/recomp/5.3/ugen -O2 -fno-strict-aliasing -lm -no-pie -DIDO53
|
||||||
|
|
||||||
|
build/recomp/5.3/cc: build/recomp/recomp
|
||||||
|
./build/recomp/recomp tools/recomp/ido/5.3/usr/bin/cc > build/recomp/5.3/cc.c
|
||||||
|
gcc tools/recomp/libc_impl.c build/recomp/5.3/cc.c -Itools/recomp -o build/recomp/5.3/cc -O2 -fno-strict-aliasing -lm -no-pie -DIDO53
|
||||||
|
|
||||||
|
build/recomp/5.3/%: build/recomp/recomp
|
||||||
|
./build/recomp/recomp tools/recomp/ido/5.3/usr/lib/$* > build/recomp/5.3/$*.c
|
||||||
|
gcc tools/recomp/libc_impl.c build/recomp/5.3/$*.c -Itools/recomp -o build/recomp/5.3/$* -O2 -fno-strict-aliasing -lm -no-pie -DIDO53
|
||||||
|
|
||||||
|
build/recomp/7.1/cc: build/recomp/recomp
|
||||||
|
./build/recomp/recomp tools/recomp/ido/7.1/usr/bin/cc > build/recomp/7.1/cc.c
|
||||||
|
gcc tools/recomp/libc_impl.c build/recomp/7.1/cc.c -Itools/recomp -o build/recomp/7.1/cc -O2 -fno-strict-aliasing -lm -no-pie -DIDO71
|
||||||
|
|
||||||
|
build/recomp/7.1/%: build/recomp/recomp
|
||||||
|
./build/recomp/recomp tools/recomp/ido/7.1/usr/lib/$* > build/recomp/7.1/$*.c
|
||||||
|
gcc tools/recomp/libc_impl.c build/recomp/7.1/$*.c -Itools/recomp -o build/recomp/7.1/$* -O2 -fno-strict-aliasing -lm -no-pie -DIDO71
|
||||||
|
|
||||||
|
build/recomp/%/err.english.cc:
|
||||||
|
@mkdir -p build/recomp/$?
|
||||||
|
cp tools/err.english.cc build/recomp/$*
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Testing Related
|
# Testing Related
|
||||||
# ---------------------
|
# ---------------------
|
||||||
|
@ -453,7 +512,7 @@ $(B_DIR)/assets/files/P%Z: $(A_DIR)/files/props/%.bin
|
||||||
# -> B_DIR/assets/files/setup/foo.bin (done here)
|
# -> B_DIR/assets/files/setup/foo.bin (done here)
|
||||||
# -> B_DIR/assets/files/UsetupfooZ (done here)
|
# -> B_DIR/assets/files/UsetupfooZ (done here)
|
||||||
# -> B_DIR/assets/files/UsetupfooZ.o (done elsewhere)
|
# -> B_DIR/assets/files/UsetupfooZ.o (done elsewhere)
|
||||||
$(B_DIR)/assets/files/setup/%.o: src/files/setup/%.c $(ASSETMGR_O_FILES)
|
$(B_DIR)/assets/files/setup/%.o: src/files/setup/%.c $(ASSETMGR_O_FILES) $(RECOMP_FILES)
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CFLAGS) -o $@ $<
|
$(CC) -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
|
@ -508,17 +567,17 @@ $(B_DIR)/rsp/%.bin: $(E_DIR)/rsp/%.bin
|
||||||
$(B_DIR)/rsp/%.o: $(B_DIR)/rsp/%.bin
|
$(B_DIR)/rsp/%.o: $(B_DIR)/rsp/%.bin
|
||||||
TOOLCHAIN=$(TOOLCHAIN) ROMID=$(ROMID) tools/mkrawobject $< $@
|
TOOLCHAIN=$(TOOLCHAIN) ROMID=$(ROMID) tools/mkrawobject $< $@
|
||||||
|
|
||||||
$(B_DIR)/lib/ultra/libc/llcvt.o: src/lib/ultra/libc/llcvt.c $(ASSETMGR_O_FILES)
|
$(B_DIR)/lib/ultra/libc/llcvt.o: src/lib/ultra/libc/llcvt.c $(ASSETMGR_O_FILES) $(RECOMP_FILES)
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CFLAGS) -o $@ $<
|
$(CC) -c $(CFLAGS) -o $@ $<
|
||||||
tools/patchmips3 $@ || rm $@
|
tools/patchmips3 $@ || rm $@
|
||||||
|
|
||||||
$(B_DIR)/lib/ultra/libc/ll.o: src/lib/ultra/libc/ll.c $(ASSETMGR_O_FILES)
|
$(B_DIR)/lib/ultra/libc/ll.o: src/lib/ultra/libc/ll.c $(ASSETMGR_O_FILES) $(RECOMP_FILES)
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CFLAGS) $< -o $@
|
$(CC) -c $(CFLAGS) $< -o $@
|
||||||
tools/patchmips3 $@ || rm $@
|
tools/patchmips3 $@ || rm $@
|
||||||
|
|
||||||
$(B_DIR)/%.o: src/%.c $(ASSETMGR_O_FILES)
|
$(B_DIR)/%.o: src/%.c $(ASSETMGR_O_FILES) $(RECOMP_FILES)
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CFLAGS) -o $@ $<
|
$(CC) -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
|
@ -526,7 +585,7 @@ $(B_DIR)/%.o: src/%.s
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
cpp -P -Wno-trigraphs -I include -I include/PR -I src/include $(C_DEFINES) -D_LANGUAGE_ASSEMBLY -D_MIPSEB $< | $(AS) $(ASFLAGS) -o $@
|
cpp -P -Wno-trigraphs -I include -I include/PR -I src/include $(C_DEFINES) -D_LANGUAGE_ASSEMBLY -D_MIPSEB $< | $(AS) $(ASFLAGS) -o $@
|
||||||
|
|
||||||
$(B_DIR)/assets/%.o: $(A_DIR)/%.c
|
$(B_DIR)/assets/%.o: $(A_DIR)/%.c $(RECOMP_FILES)
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CFLAGS) -o $@ $<
|
$(CC) -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
|
|
19
README.md
19
README.md
|
@ -15,21 +15,21 @@ For Arch Linux:
|
||||||
|
|
||||||
For Debian and Ubuntu:
|
For Debian and Ubuntu:
|
||||||
|
|
||||||
* Install these packages: `binutils-mips-linux-gnu make`
|
* Install these packages: `binutils-mips-linux-gnu build-essential libc6-dev-i386 libcapstone3 libcapstone-dev make`
|
||||||
* Compile and install `armips`
|
* Compile and install `armips`
|
||||||
|
|
||||||
## ROM Versions
|
## ROM Versions
|
||||||
|
|
||||||
Perfect Dark has six known versions:
|
Perfect Dark has six known versions:
|
||||||
|
|
||||||
| ROM ID | Description |
|
| ROM ID | Description | MD5 Checksum |
|
||||||
|------------|---------------------------------------------------------------|
|
|------------|---------------------------------------------|----------------------------------|
|
||||||
| ntsc-beta | NTSC 6.4 beta - supported but mismatching |
|
| ntsc-beta | NTSC 6.4 beta | aa93f4df16fceada399a749f5ad2f273 |
|
||||||
| ntsc-1.0 | NTSC 8.7 final (the initial, buggy release) - fully supported |
|
| ntsc-1.0 | NTSC 8.7 final (the initial, buggy release) | 7f4171b0c8d17815be37913f535e4e93 |
|
||||||
| ntsc-final | NTSC 8.7 final - fully supported |
|
| ntsc-final | NTSC 8.7 final | e03b088b6ac9e0080440efed07c1e40f |
|
||||||
| pal-beta | PAL 28.7 beta - can extract assets only |
|
| pal-beta | PAL 28.7 beta | ad2de210a3455ba5ec541f0c78d91444 |
|
||||||
| pal-final | PAL 8.7 final - supported but mismatching |
|
| pal-final | PAL 8.7 final | d9b5cd305d228424891ce38e71bc9213 |
|
||||||
| jpn-final | Japanese 8.7 final - can extract assets only |
|
| jpn-final | JPN 8.9 final | 538d2b75945eae069b29c46193e74790 |
|
||||||
|
|
||||||
The project uses the `$ROMID` environment variable to know which version to work with. If not set, it defaults to `ntsc-final`. You can change it by running something like `export ROMID=ntsc-1.0`.
|
The project uses the `$ROMID` environment variable to know which version to work with. If not set, it defaults to `ntsc-final`. You can change it by running something like `export ROMID=ntsc-1.0`.
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ The extract command will also create an `extracted/ntsc-final` directory. This d
|
||||||
|
|
||||||
## Compiling
|
## Compiling
|
||||||
|
|
||||||
|
* Run `git submodule update --init --recursive`. You only have to do this once.
|
||||||
* Run `make -j` to build the ROM. The ROM will be written to `build/ntsc-final/pd.z64`.
|
* Run `make -j` to build the ROM. The ROM will be written to `build/ntsc-final/pd.z64`.
|
||||||
|
|
||||||
## How do I know the built files are matching?
|
## How do I know the built files are matching?
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 421e546956ceae984927e609b083195e9e81659e
|
Loading…
Reference in New Issue