gc-eu-dbg OK (#2700)

* gc-eu-dbg OK

* cleanup/fortify makefile and line_numbers.h changes

* fill segments.csv

* add gc-eu-dbg to Jenkinsfile

* cleanup/fortify dmadata_table.h

* add gc-eu-dbg to readme

* fix checksum check and compressed checksum
This commit is contained in:
Dragorn421
2026-03-02 16:45:07 +01:00
committed by GitHub
parent 3d51e21020
commit e66e6f8f1d
14 changed files with 2861 additions and 50 deletions
Vendored
+7
View File
@@ -127,6 +127,13 @@ pipeline {
}
}
}
stage('Build gc-eu-dbg') {
steps {
script {
build('gc-eu-dbg', 'oot-gc-eu-dbg.z64')
}
}
}
stage('Generate patch') {
when {
not {
+8
View File
@@ -141,6 +141,14 @@ else ifeq ($(VERSION),gc-eu-mq-dbg)
BUILD_DATE := 03-02-21
BUILD_TIME := 00:16:31
REVISION := 15
else ifeq ($(VERSION),gc-eu-dbg)
REGION ?= EU
PLATFORM := GC
DEBUG_FEATURES ?= 1
BUILD_CREATOR := zelda@srd022j
BUILD_DATE := 03-02-21
BUILD_TIME := 00:49:18
REVISION := 15
else ifeq ($(VERSION),gc-eu)
REGION ?= EU
PLATFORM := GC
+1
View File
@@ -39,6 +39,7 @@ It builds the following versions:
| 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-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` |
| gc-eu-mq | 03-02-21 20:37:19 | GameCube Europe/PAL Master Quest | `1618403427e4344a57833043db5ce3c3` |
| gc-jp-ce | 03-10-08 21:53:00 | GameCube Japan (Collector's Edition Disc) | `0c13e0449a28ea5b925cdb8af8d29768` |
@@ -0,0 +1 @@
414fdf77955f510da713c12cbc90d6f0 build/gc-eu-dbg/oot-gc-eu-dbg-compressed.z64
+1
View File
@@ -0,0 +1 @@
382dc484e317d6522745c95387e7d5b9 build/gc-eu-dbg/oot-gc-eu-dbg.z64
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+26 -20
View File
@@ -7,33 +7,35 @@
// 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, 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_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, 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_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, 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_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, 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_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, 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_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, 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_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, 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_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, 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_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, 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_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (gc_us_mq)
#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, 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_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)
#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, 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_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, 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_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, 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_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, 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_mq_dbg, gc_eu_dbg, gc_eu, gc_eu_mq, gc_jp_ce, ique_cn) (ique_cn)
#else
#error "Unsupported OOT version"
#endif
@@ -48,22 +50,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)
LN(ntsc_1_0, 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)
LN(ntsc_1_0, ntsc_1_1, 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, ique)
LN(ntsc_1_0, other, other, other, other, 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, ique)
LN(ntsc_1_0, ntsc_1_1, other, other, other, 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
// 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_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_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)
#endif
+2 -2
View File
@@ -3,8 +3,8 @@
/**
* Select dmadata table for version
*/
#if OOT_VERSION == GC_EU_MQ_DBG && !NON_MATCHING
#include "dmadata_table_mqdbg.h"
#if (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
#include "dmadata_table_spec.h"
@@ -1,5 +1,5 @@
/**
* Matching dmadata layout for PAL MQ Debug
* Matching dmadata layout for PAL MQ Debug and PAL Debug
*
* DEFINE_DMA_ENTRY should be used for all dmadata entries
* - Argument 1: Name of the spec segment
+7 -6
View File
@@ -12,13 +12,14 @@
#define GC_US 8
#define GC_US_MQ 9
#define GC_EU_MQ_DBG 10
#define GC_EU 11
#define GC_EU_MQ 12
#define GC_JP_CE 13
#define IQUE_CN 14
#define GC_EU_DBG 11
#define GC_EU 12
#define GC_EU_MQ 13
#define GC_JP_CE 14
#define IQUE_CN 15
// 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_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 || OOT_VERSION == GC_EU_MQ_DBG
#define OOT_NTSC 0
#define OOT_PAL 1
#else
@@ -50,7 +51,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 && DEBUG_FEATURES
#if (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-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-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"
+19 -18
View File
@@ -15,6 +15,7 @@
#include "play_state.h"
#include "player.h"
#include "save.h"
#include "line_numbers.h"
#include "assets/scenes/indoors/miharigoya/miharigoya_scene.h"
#include "assets/scenes/indoors/souko/souko_scene.h"
@@ -233,7 +234,7 @@ void* sDekuTreeEntranceTextures[] = {
void Scene_DrawConfigDekuTree(PlayState* play) {
u32 gameplayFrames = play->gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 4763);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(4763, 4810));
gSPSegment(POLY_XLU_DISP++, 0x09,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, 127 - (gameplayFrames % 128),
@@ -246,7 +247,7 @@ void Scene_DrawConfigDekuTree(PlayState* play) {
gSPSegment(POLY_OPA_DISP++, 0x08,
SEGMENTED_TO_VIRTUAL(sDekuTreeEntranceTextures[((void)0, gSaveContext.save.nightFlag)]));
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 4783);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(4783, 4830));
}
void Scene_DrawConfigDekuTreeBoss(PlayState* play) {
@@ -279,7 +280,7 @@ void Scene_DrawConfigDodongosCavern(PlayState* play) {
s32 pad;
Gfx* displayListHead = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx[3]));
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 4905);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(4905, 5001));
gameplayFrames = play->gameplayFrames;
gSPSegment(POLY_OPA_DISP++, 0x08,
@@ -308,7 +309,7 @@ void Scene_DrawConfigDodongosCavern(PlayState* play) {
gDPSetEnvColor(displayListHead++, 255, 255, 255, play->roomCtx.drawParams[BGDODOAGO_EYE_RIGHT]);
gSPEndDisplayList(displayListHead++);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 4956);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(4956, 5052));
}
void Scene_DrawConfigTempleOfTime(PlayState* play) {
@@ -496,7 +497,7 @@ void Scene_DrawConfigFairysFountain(PlayState* play) {
void Scene_DrawConfigShadowTempleAndWell(PlayState* play) {
u32 gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 5384);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(5384, 5432));
gameplayFrames = play->gameplayFrames;
@@ -516,7 +517,7 @@ void Scene_DrawConfigShadowTempleAndWell(PlayState* play) {
gDPPipeSync(POLY_XLU_DISP++);
gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 5416);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(5416, 5464));
}
void* sThievesHideoutEntranceTextures[] = {
@@ -548,7 +549,7 @@ void Scene_DrawConfigWaterTemple(PlayState* play) {
s32 spB0;
s32 spAC;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 5535);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(5535, 5671));
spB0 = (play->roomCtx.drawParams[1] >> 8) & 0xFF;
spAC = play->roomCtx.drawParams[1] & 0xFF;
@@ -613,7 +614,7 @@ void Scene_DrawConfigWaterTemple(PlayState* play) {
Gfx_TwoTexScrollEnvColor(play->state.gfxCtx, G_TX_RENDERTILE, gameplayFrames * 4, 0, 32, 32, 1,
gameplayFrames * 4, 0, 32, 32, 0, 0, 0, 128));
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 5644);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(5644, 5776));
}
void Scene_DrawConfigWaterTempleBoss(PlayState* play) {
@@ -774,7 +775,7 @@ void* sIceCavernEntranceTextures[] = {
void Scene_DrawConfigIceCavern(PlayState* play) {
u32 gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6042);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6042, 6102));
gameplayFrames = play->gameplayFrames;
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -794,7 +795,7 @@ void Scene_DrawConfigIceCavern(PlayState* play) {
gDPPipeSync(POLY_XLU_DISP++);
gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6076);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6076, 6136));
}
void Scene_DrawConfigRoyalFamilysTomb(PlayState* play) {
@@ -875,7 +876,7 @@ void* sGTGEntranceTextures[] = {
void Scene_DrawConfigGerudoTrainingGround(PlayState* play) {
u32 gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6290);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6290, 6345));
gameplayFrames = play->gameplayFrames;
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -895,7 +896,7 @@ void Scene_DrawConfigGerudoTrainingGround(PlayState* play) {
gDPPipeSync(POLY_XLU_DISP++);
gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6320);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6320, 6375));
}
Gfx* Gfx_TwoTexScrollPrimColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2,
@@ -1039,7 +1040,7 @@ void* sForestTempleEntranceTextures[] = {
void Scene_DrawConfigForestTemple(PlayState* play) {
u32 gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6640);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6640, 6695));
gameplayFrames = play->gameplayFrames;
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -1059,7 +1060,7 @@ void Scene_DrawConfigForestTemple(PlayState* play) {
gDPPipeSync(POLY_XLU_DISP++);
gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6671);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6671, 6726));
}
void* sSpiritTempleEntranceTextures[] = {
@@ -1068,12 +1069,12 @@ void* sSpiritTempleEntranceTextures[] = {
};
void Scene_DrawConfigSpiritTemple(PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6752);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6752, 6786));
gSPSegment(POLY_XLU_DISP++, 0x08,
SEGMENTED_TO_VIRTUAL(sSpiritTempleEntranceTextures[((void)0, gSaveContext.save.nightFlag)]));
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 6762);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(6762, 6796));
}
void Scene_DrawConfigHyruleField(PlayState* play) {
@@ -1558,7 +1559,7 @@ void Scene_DrawConfigLonLonRanch(PlayState* play) {
void Scene_DrawConfigFireTemple(PlayState* play) {
u32 gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", 7630);
OPEN_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(7630, 7667));
gameplayFrames = play->gameplayFrames;
gSPSegment(POLY_OPA_DISP++, 0x08,
@@ -1575,7 +1576,7 @@ void Scene_DrawConfigFireTemple(PlayState* play) {
gDPPipeSync(POLY_XLU_DISP++);
gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 64);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", 7653);
CLOSE_DISPS(play->state.gfxCtx, "../z_scene_table.c", LN6(7653, 7690));
}
f32 D_8012A398 = 0.0f;
+6 -1
View File
@@ -141,6 +141,11 @@ 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":
# Strip the overdump, which consists of an area of 0xFF bytes (which may
# be erased flash memory) and some unknown data
print("Stripping overdump...")
file_content = file_content[0:0x035C3000]
return file_content
@@ -228,7 +233,7 @@ def main():
# Check to see if the ROM is a "vanilla" ROM
str_hash = get_str_hash(file_content)
if version == "gc-eu-mq-dbg":
if version in {"gc-eu-mq-dbg", "gc-eu-dbg"}:
correct_str_hashes = decompressed_str_hashes
else:
correct_str_hashes = compressed_str_hashes