mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-29 03:34:07 +00:00
Ido Static Recomp (#337)
* Ido Recomp test * try 2 * Recomp by default * Fix Jenkinsfile * Fix 2 * CFE errors * CFE fix -O2 * Update Makefile Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> * Update README.md Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> * Update README.md Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> * PR suggestions * PR updates Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>
This commit is contained in:
parent
3cb03b2b2f
commit
6f54edd365
15 changed files with 2557 additions and 19 deletions
18
Jenkinsfile
vendored
18
Jenkinsfile
vendored
|
@ -11,13 +11,25 @@ pipeline {
|
||||||
steps {
|
steps {
|
||||||
echo 'Setting up...'
|
echo 'Setting up...'
|
||||||
sh 'cp /usr/local/etc/roms/baserom_oot.z64 baserom_original.z64'
|
sh 'cp /usr/local/etc/roms/baserom_oot.z64 baserom_original.z64'
|
||||||
sh 'make -j`nproc` setup'
|
sh 'make -j setup'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Build (qemu-irix)') {
|
||||||
|
when {
|
||||||
|
branch 'master'
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh 'ORIG_COMPILER=1 make -j'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
|
when {
|
||||||
|
not {
|
||||||
|
branch 'master'
|
||||||
|
}
|
||||||
|
}
|
||||||
steps {
|
steps {
|
||||||
echo 'Building...'
|
sh 'make -j'
|
||||||
sh 'make -j`nproc`'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Report Progress') {
|
stage('Report Progress') {
|
||||||
|
|
16
Makefile
16
Makefile
|
@ -6,6 +6,8 @@
|
||||||
COMPARE ?= 1
|
COMPARE ?= 1
|
||||||
# If NON_MATCHING is 1, define the NON_MATCHING C flag when building
|
# If NON_MATCHING is 1, define the NON_MATCHING C flag when building
|
||||||
NON_MATCHING ?= 0
|
NON_MATCHING ?= 0
|
||||||
|
# If ORIG_COMPILER is 1, compile with QEMU_IRIX and the original compiler
|
||||||
|
ORIG_COMPILER ?= 0
|
||||||
|
|
||||||
ifeq ($(NON_MATCHING),1)
|
ifeq ($(NON_MATCHING),1)
|
||||||
CFLAGS := -DNON_MATCHING
|
CFLAGS := -DNON_MATCHING
|
||||||
|
@ -21,12 +23,19 @@ else
|
||||||
$(error Please install or build mips-linux-gnu)
|
$(error Please install or build mips-linux-gnu)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# check that either QEMU_IRIX is set or qemu-irix package installed
|
CC := tools/ido_recomp/linux/7.1/cc
|
||||||
ifndef QEMU_IRIX
|
CC_OLD := tools/ido_recomp/linux/5.3/cc
|
||||||
|
|
||||||
|
# if ORIG_COMPILER is 1, check that either QEMU_IRIX is set or qemu-irix package installed
|
||||||
|
ifeq ($(ORIG_COMPILER),1)
|
||||||
|
ifndef QEMU_IRIX
|
||||||
QEMU_IRIX := $(shell which qemu-irix)
|
QEMU_IRIX := $(shell which qemu-irix)
|
||||||
ifeq (, $(QEMU_IRIX))
|
ifeq (, $(QEMU_IRIX))
|
||||||
$(error Please install qemu-irix package or set QEMU_IRIX env var to the full qemu-irix binary path)
|
$(error Please install qemu-irix package or set QEMU_IRIX env var to the full qemu-irix binary path)
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
CC = $(QEMU_IRIX) -L tools/ido7.1_compiler tools/ido7.1_compiler/usr/bin/cc
|
||||||
|
CC_OLD = $(QEMU_IRIX) -L tools/ido5.3_compiler tools/ido5.3_compiler/usr/bin/cc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
AS := $(MIPS_BINUTILS_PREFIX)as
|
AS := $(MIPS_BINUTILS_PREFIX)as
|
||||||
|
@ -34,9 +43,6 @@ LD := $(MIPS_BINUTILS_PREFIX)ld
|
||||||
OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy
|
OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy
|
||||||
OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump
|
OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump
|
||||||
|
|
||||||
CC := $(QEMU_IRIX) -L tools/ido7.1_compiler tools/ido7.1_compiler/usr/bin/cc
|
|
||||||
CC_OLD := $(QEMU_IRIX) -L tools/ido5.3_compiler tools/ido5.3_compiler/usr/bin/cc
|
|
||||||
|
|
||||||
# Check code syntax with host compiler
|
# Check code syntax with host compiler
|
||||||
CC_CHECK := gcc -fno-builtin -fsyntax-only -fsigned-char -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces -D _LANGUAGE_C -D NON_MATCHING -Iinclude -Isrc -include stdarg.h
|
CC_CHECK := gcc -fno-builtin -fsyntax-only -fsigned-char -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces -D _LANGUAGE_C -D NON_MATCHING -Iinclude -Isrc -include stdarg.h
|
||||||
|
|
||||||
|
|
16
README.md
16
README.md
|
@ -55,22 +55,22 @@ sudo apt-get update
|
||||||
sudo apt-get install git build-essential binutils-mips-linux-gnu python3
|
sudo apt-get install git build-essential binutils-mips-linux-gnu python3
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Download qemu-irix
|
#### 2. Download and set up qemu-irix (optional)
|
||||||
|
|
||||||
|
Note: We are currently testing a recompiled version of the compiler that does not require qemu-irix.
|
||||||
|
This step allows you to build with qemu-irix and the original compiler by adding `ORIG_COMPILER=1` to the `make` command in step 6, for example if you experience issues with the recompiled version.
|
||||||
|
|
||||||
Download qemu-irix from the Releases section in the repository. Place it at a location of your choosing.
|
Download qemu-irix from the Releases section in the repository. Place it at a location of your choosing.
|
||||||
|
|
||||||
#### 3. Set environment variables
|
|
||||||
|
|
||||||
Open up your .bashrc file (~/.bashrc), scroll to the bottom, and add the following, replacing the paths as necessary:
|
Open up your .bashrc file (~/.bashrc), scroll to the bottom, and add the following, replacing the paths as necessary:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
export QEMU_IRIX="path/to/your/qemu-irix"
|
export QEMU_IRIX="path/to/your/qemu-irix"
|
||||||
export MIPS_BINUTILS_PREFIX=mips-linux-gnu-
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Save and close/reopen your terminal window.
|
Save and close/reopen your terminal window.
|
||||||
|
|
||||||
#### 4. Clone the repository
|
#### 3. Clone the repository
|
||||||
|
|
||||||
Clone `https://github.com/zeldaret/oot.git` where you wish to have the project, with a command such as:
|
Clone `https://github.com/zeldaret/oot.git` where you wish to have the project, with a command such as:
|
||||||
|
|
||||||
|
@ -78,12 +78,12 @@ Clone `https://github.com/zeldaret/oot.git` where you wish to have the project,
|
||||||
git clone https://github.com/zeldaret/oot.git
|
git clone https://github.com/zeldaret/oot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5. Prepare a base ROM
|
#### 4. Prepare a base ROM
|
||||||
|
|
||||||
Copy over your copy of the Master Quest (Debug) ROM inside the root of this new project directory.
|
Copy over your copy of the Master Quest (Debug) ROM inside the root of this new project directory.
|
||||||
Rename the file to "baserom_original.z64" or "baserom_original.n64", depending on the original extension.
|
Rename the file to "baserom_original.z64" or "baserom_original.n64", depending on the original extension.
|
||||||
|
|
||||||
#### 6. Setup the ROM and build process
|
#### 5. Setup the ROM and build process
|
||||||
|
|
||||||
Setup and extract everything from your ROM with the following command:
|
Setup and extract everything from your ROM with the following command:
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ make setup
|
||||||
This will generate a new ROM called "baserom.z64" that will have the overdump removed and the header patched.
|
This will generate a new ROM called "baserom.z64" that will have the overdump removed and the header patched.
|
||||||
It will also extract the individual assets from the ROM.
|
It will also extract the individual assets from the ROM.
|
||||||
|
|
||||||
#### 7. Build the ROM
|
#### 6. Build the ROM
|
||||||
|
|
||||||
Run make to build the ROM.
|
Run make to build the ROM.
|
||||||
Make sure your path to the project is not too long, otherwise this process may error.
|
Make sure your path to the project is not too long, otherwise this process may error.
|
||||||
|
|
BIN
tools/ido_recomp/linux/5.3/as1
Executable file
BIN
tools/ido_recomp/linux/5.3/as1
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/5.3/cc
Executable file
BIN
tools/ido_recomp/linux/5.3/cc
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/5.3/cfe
Executable file
BIN
tools/ido_recomp/linux/5.3/cfe
Executable file
Binary file not shown.
1260
tools/ido_recomp/linux/5.3/err.english.cc
Executable file
1260
tools/ido_recomp/linux/5.3/err.english.cc
Executable file
File diff suppressed because it is too large
Load diff
BIN
tools/ido_recomp/linux/5.3/ugen
Executable file
BIN
tools/ido_recomp/linux/5.3/ugen
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/5.3/uopt
Executable file
BIN
tools/ido_recomp/linux/5.3/uopt
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/7.1/as1
Executable file
BIN
tools/ido_recomp/linux/7.1/as1
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/7.1/cc
Executable file
BIN
tools/ido_recomp/linux/7.1/cc
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/7.1/cfe
Executable file
BIN
tools/ido_recomp/linux/7.1/cfe
Executable file
Binary file not shown.
1260
tools/ido_recomp/linux/7.1/err.english.cc
Executable file
1260
tools/ido_recomp/linux/7.1/err.english.cc
Executable file
File diff suppressed because it is too large
Load diff
BIN
tools/ido_recomp/linux/7.1/ugen
Executable file
BIN
tools/ido_recomp/linux/7.1/ugen
Executable file
Binary file not shown.
BIN
tools/ido_recomp/linux/7.1/uopt
Executable file
BIN
tools/ido_recomp/linux/7.1/uopt
Executable file
Binary file not shown.
Loading…
Reference in a new issue