oot-gc-eu-dbg-2 OK (#2714)

* oot-gc-eu-dbg-proto OK

* add gc-eu-dbg-proto to readme

* mention overdump trimming for all debug roms

* rename gc-eu-dbg-proto to gc-eu-dbg-2

Rationale: first version to make it into decomp (which should also be the first one that surfaces) gets an un-numbered version name, then the second version gets -2, and so on
This commit is contained in:
Dragorn421
2026-04-07 11:18:17 +02:00
committed by GitHub
parent b50e208d60
commit 177951c4db
12 changed files with 2845 additions and 43 deletions
Vendored
+7
View File
@@ -127,6 +127,13 @@ pipeline {
}
}
}
stage('Build gc-eu-dbg-2') {
steps {
script {
build('gc-eu-dbg-2', 'oot-gc-eu-dbg-proto.z64')
}
}
}
stage('Build gc-eu-dbg') {
steps {
script {
+8
View File
@@ -133,6 +133,14 @@ else ifeq ($(VERSION),gc-us-mq)
BUILD_DATE := 02-12-19
BUILD_TIME := 14:05:42
REVISION := 15
else ifeq ($(VERSION),gc-eu-dbg-2)
REGION ?= EU
PLATFORM := GC
DEBUG_FEATURES ?= 1
BUILD_CREATOR := zelda@srd022j
BUILD_DATE := 03-02-13
BUILD_TIME := 19:46:49
REVISION := 15
else ifeq ($(VERSION),gc-eu-mq-dbg)
REGION ?= EU
PLATFORM := GC
+2
View File
@@ -38,6 +38,7 @@ It builds the following versions:
| gc-jp-mq | 02-10-30 00:15:15 | GameCube Japan Master Quest | `69895c5c78442260f6eafb2506dc482a` |
| gc-us | 02-12-19 13:28:09 | GameCube US | `cd09029edcfb7c097ac01986a0f83d3f` |
| gc-us-mq | 02-12-19 14:05:42 | GameCube US Master Quest | `da35577fe54579f6a266931cc75f512d` |
| gc-eu-dbg-2 | 03-02-13 19:46:49 | GameCube Europe/PAL Debug (earlier build) | `ab1ca59d0039e3b34d82db650b54d7b9`<br>`2814fde8d6cfe23a220de6be955b4196` |
| gc-eu-mq-dbg | 03-02-21 00:16:31 | GameCube Europe/PAL Master Quest Debug | `75e344f41c26ec2ec5ad92caa9e25629`<br>`8ca71e87de4ce5e9f6ec916202a623e9`<br>`f751d1a097764e2337b1ac9ba1e27699`<br>`dde376d47187b931820d5b2957cded14` |
| gc-eu-dbg | 03-02-21 00:49:18 | GameCube Europe/PAL Debug | `3c10b67a76616ae2c162def7528724cf`<br>`382dc484e317d6522745c95387e7d5b9` |
| gc-eu | 03-02-21 20:12:23 | GameCube Europe/PAL | `2c27b4e000e85fd78dbca551f1b1c965` |
@@ -151,6 +152,7 @@ This downloads some dependencies (from pip), and compiles tools for the build pr
Then it generates a new ROM `baseroms/<the-version>/baserom-decompressed.z64`.
For retail (non-debug) versions, that ROM will be the decompressed equivalent of the ROM.
For the `gc-eu-mq-dbg` version, that ROM will have the overdump removed and the header patched.
The other debug ROMs `gc-eu-dbg-2` and `gc-eu-dbg` will also have the overdump removed.
It will also extract the individual assets from the ROM.
#### 5. Build the ROM
@@ -0,0 +1 @@
635fd8a89b9b87d16b91b7cce39ca75f build/gc-eu-dbg-2/oot-gc-eu-dbg-2-compressed.z64
+1
View File
@@ -0,0 +1 @@
2814fde8d6cfe23a220de6be955b4196 build/gc-eu-dbg-2/oot-gc-eu-dbg-2.z64
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+23 -21
View File
@@ -7,35 +7,37 @@
// The "LN" macros defined here are not meant to be used directly. See the wrapper macros below.
#if OOT_VERSION == NTSC_1_0
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_0)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_0)
#elif OOT_VERSION == NTSC_1_1
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_1)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_1)
#elif OOT_VERSION == PAL_1_0
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_0)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_0)
#elif OOT_VERSION == NTSC_1_2
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_2)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ntsc_1_2)
#elif OOT_VERSION == PAL_1_1
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_1)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (pal_1_1)
#elif OOT_VERSION == GC_JP
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp)
#elif OOT_VERSION == GC_JP_MQ
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_mq)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_mq)
#elif OOT_VERSION == GC_US
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us)
#elif OOT_VERSION == GC_US_MQ
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us_mq)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us_mq)
#elif OOT_VERSION == GC_EU_DBG_2
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_dbg_2)
#elif OOT_VERSION == GC_EU_MQ_DBG
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq_dbg)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq_dbg)
#elif OOT_VERSION == GC_EU_DBG
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_dbg)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_dbg)
#elif OOT_VERSION == GC_EU
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu)
#elif OOT_VERSION == GC_EU_MQ
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_eu_mq)
#elif OOT_VERSION == GC_JP_CE
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_ce)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_jp_ce)
#elif OOT_VERSION == IQUE_CN
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ique_cn)
#define LN(ntsc_1_0, ntsc_1_1, pal_1_0, ntsc_1_2, pal_1_1, gc_jp, gc_jp_mq, gc_us, gc_us_mq, gc_eu_dbg_2, gc_eu_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ique_cn)
#else
#error "Unsupported OOT version"
#endif
@@ -50,26 +52,26 @@
// NTSC 1.0 and all the other versions
#define LN1(ntsc_1_0, other) \
LN(ntsc_1_0, other, other, other, other, other, other, other, other, other, other, other, other, other, other)
LN(ntsc_1_0, other, other, other, other, other, other, other, other, other, other, other, other, other, other, other)
// NTSC 1.0, NTSC 1.1, and all the other versions
#define LN2(ntsc_1_0, ntsc_1_1, other) \
LN(ntsc_1_0, ntsc_1_1, other, other, other, other, other, other, other, other, other, other, other, other, other)
LN(ntsc_1_0, ntsc_1_1, other, other, other, other, other, other, other, other, other, other, other, other, other, other)
// NTSC 1.0, iQue, GameCube, and all the other versions
#define LN3(ntsc_1_0, other, ique, gc) \
LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, gc, ique)
LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, gc, gc, ique)
// NTSC 1.0, NTSC 1.1, iQue, GameCube, and all the other versions
#define LN4(ntsc_1_0, ntsc_1_1, other, ique, gc) \
LN(ntsc_1_0, ntsc_1_1, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, gc, ique)
LN(ntsc_1_0, ntsc_1_1, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, gc, gc, ique)
// NTSC 1.0, NTSC 1.1, NTSC 1.2/PAL 1.0, iQue, GameCube US/JP, GameCube EU, and GameCube CE
#define LN5(ntsc_1_0, ntsc_1_1, other, pal_1_1, ique, gc_ntsc, gc_eu, gc_jp_ce) \
LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_eu, gc_jp_ce, ique)
LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_eu, gc_eu, gc_jp_ce, ique)
// GameCube EU Debug and all the other versions
#define LN6(other, gc_eu_dbg) \
LN(other, other, other, other, other, other, other, other, other, other, gc_eu_dbg, other, other, other, other)
LN(other, other, other, other, other, other, other, other, other, gc_eu_dbg, other, gc_eu_dbg, other, other, other, other)
#endif
+1 -1
View File
@@ -3,7 +3,7 @@
/**
* Select dmadata table for version
*/
#if (OOT_VERSION == GC_EU_MQ_DBG || OOT_VERSION == GC_EU_DBG) && !NON_MATCHING
#if (OOT_VERSION == GC_EU_DBG_2 || OOT_VERSION == GC_EU_MQ_DBG || OOT_VERSION == GC_EU_DBG) && !NON_MATCHING
#include "dmadata_table_dbg.h"
#else
// For retail versions and non-matching builds, dmadata is generated from the specfile segments
+18 -17
View File
@@ -2,24 +2,25 @@
#define VERSIONS_H
// OOT versions in build order
#define NTSC_1_0 1
#define NTSC_1_1 2
#define PAL_1_0 3
#define NTSC_1_2 4
#define PAL_1_1 5
#define GC_JP 6
#define GC_JP_MQ 7
#define GC_US 8
#define GC_US_MQ 9
#define GC_EU_MQ_DBG 10
#define GC_EU_DBG 11
#define GC_EU 12
#define GC_EU_MQ 13
#define GC_JP_CE 14
#define IQUE_CN 15
#define NTSC_1_0 1
#define NTSC_1_1 2
#define PAL_1_0 3
#define NTSC_1_2 4
#define PAL_1_1 5
#define GC_JP 6
#define GC_JP_MQ 7
#define GC_US 8
#define GC_US_MQ 9
#define GC_EU_DBG_2 10
#define GC_EU_MQ_DBG 11
#define GC_EU_DBG 12
#define GC_EU 13
#define GC_EU_MQ 14
#define GC_JP_CE 15
#define IQUE_CN 16
// NTSC/PAL
#if OOT_VERSION == PAL_1_0 || OOT_VERSION == PAL_1_1 || OOT_VERSION == GC_EU || OOT_VERSION == GC_EU_MQ || OOT_VERSION == GC_EU_DBG || OOT_VERSION == GC_EU_MQ_DBG
#if OOT_VERSION == PAL_1_0 || OOT_VERSION == PAL_1_1 || OOT_VERSION == GC_EU || OOT_VERSION == GC_EU_MQ || OOT_VERSION == GC_EU_DBG_2 || OOT_VERSION == GC_EU_DBG || OOT_VERSION == GC_EU_MQ_DBG
#define OOT_NTSC 0
#define OOT_PAL 1
#else
@@ -51,7 +52,7 @@
// Debug Assets
// Due to asset extraction limitations, all versions will not have access to some assets present in debug ROMs
// To allow the inclusion of debug features in any version there is a separation between DEBUG_FEATURES and DEBUG_ASSETS
#if (OOT_VERSION == GC_EU_MQ_DBG || OOT_VERSION == GC_EU_DBG) && DEBUG_FEATURES
#if (OOT_VERSION == GC_EU_DBG_2 || OOT_VERSION == GC_EU_MQ_DBG || OOT_VERSION == GC_EU_DBG) && DEBUG_FEATURES
#define DEBUG_ASSETS 1
#else
#define DEBUG_ASSETS 0
+2 -2
View File
@@ -41,8 +41,8 @@
* DPad-Down disables sending fault pages over osSyncPrintf.
*/
#pragma increment_block_number "gc-eu:160 gc-eu-dbg:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:160 gc-jp-ce:160" \
"gc-jp-mq:160 gc-us:160 gc-us-mq:160 ique-cn:160"
#pragma increment_block_number "gc-eu:160 gc-eu-dbg:160 gc-eu-dbg-2:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:160" \
"gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160 ique-cn:160"
#include "libc64/sleep.h"
#include "libc64/sprintf.h"
+2 -2
View File
@@ -141,7 +141,7 @@ def per_version_fixes(file_content: bytearray, version: str) -> bytearray:
# Patch the header
print("Patching header...")
file_content[0x3E] = 0x50
if version == "gc-eu-dbg":
if version in {"gc-eu-dbg-2", "gc-eu-dbg"}:
# Strip the overdump, which consists of an area of 0xFF bytes (which may
# be erased flash memory) and some unknown data
print("Stripping overdump...")
@@ -233,7 +233,7 @@ def main():
# Check to see if the ROM is a "vanilla" ROM
str_hash = get_str_hash(file_content)
if version in {"gc-eu-mq-dbg", "gc-eu-dbg"}:
if version in {"gc-eu-dbg-2", "gc-eu-mq-dbg", "gc-eu-dbg"}:
correct_str_hashes = decompressed_str_hashes
else:
correct_str_hashes = compressed_str_hashes