1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-06-07 17:11:50 +00:00

Introduce OOT_VERSION and OOT_REGION defines for build info and ROM header (#2003)

* Use version defines for build info and ROM header

* Use existing REGION_ defines for OOT_REGION instead
This commit is contained in:
cadmic 2024-07-27 21:46:55 -07:00 committed by GitHub
parent 5515aa1705
commit ec5068c58d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 72 additions and 21 deletions

View file

@ -53,18 +53,25 @@ endif
# Version-specific settings # Version-specific settings
ifeq ($(VERSION),gc-us) ifeq ($(VERSION),gc-us)
REGION := US
PAL := 0
MQ := 0
DEBUG := 0 DEBUG := 0
COMPARE := 0
CPP_DEFINES += -DOOT_NTSC=1 -DOOT_PAL=0 -DOOT_MQ=0
else ifeq ($(VERSION),gc-eu) else ifeq ($(VERSION),gc-eu)
REGION := EU
PAL := 1
MQ := 0
DEBUG := 0 DEBUG := 0
CPP_DEFINES += -DOOT_NTSC=0 -DOOT_PAL=1 -DOOT_MQ=0
else ifeq ($(VERSION),gc-eu-mq) else ifeq ($(VERSION),gc-eu-mq)
REGION := EU
PAL := 1
MQ := 1
DEBUG := 0 DEBUG := 0
CPP_DEFINES += -DOOT_NTSC=0 -DOOT_PAL=1 -DOOT_MQ=1
else ifeq ($(VERSION),gc-eu-mq-dbg) else ifeq ($(VERSION),gc-eu-mq-dbg)
REGION := EU
PAL := 1
MQ := 1
DEBUG := 1 DEBUG := 1
CPP_DEFINES += -DOOT_NTSC=0 -DOOT_PAL=1 -DOOT_MQ=1
else else
$(error Unsupported version $(VERSION)) $(error Unsupported version $(VERSION))
endif endif
@ -79,11 +86,27 @@ VENV := .venv
MAKE = make MAKE = make
CPPFLAGS += -P -xc -fno-dollars-in-identifiers CPPFLAGS += -P -xc -fno-dollars-in-identifiers
# Converts e.g. ntsc-1.0 to OOT_NTSC_1_0
CPP_DEFINES += -DOOT_VERSION=OOT_$(shell echo $(VERSION) | tr a-z-. A-Z__)
CPP_DEFINES += -DOOT_REGION=REGION_$(REGION)
ifeq ($(PAL),0)
CPP_DEFINES += -DOOT_NTSC=1
else
CPP_DEFINES += -DOOT_PAL=1
endif
ifeq ($(MQ),0)
CPP_DEFINES += -DOOT_MQ=0
else
CPP_DEFINES += -DOOT_MQ=1
endif
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
CPP_DEFINES += -DOOT_DEBUG=1 CPP_DEFINES += -DOOT_DEBUG=1
OPTFLAGS := -O2 OPTFLAGS := -O2
else else
CPP_DEFINES += -DNDEBUG -DOOT_DEBUG=0 CPP_DEFINES += -DOOT_DEBUG=0 -DNDEBUG
OPTFLAGS := -O2 -g3 OPTFLAGS := -O2 -g3
endif endif

View file

@ -1,6 +1,16 @@
#ifndef MACROS_H #ifndef MACROS_H
#define MACROS_H #define MACROS_H
// OOT versions in build order
#define OOT_GC_JP 1
#define OOT_GC_JP_MQ 2
#define OOT_GC_US 3
#define OOT_GC_US_MQ 4
#define OOT_GC_EU_MQ_DBG 5
#define OOT_GC_EU 6
#define OOT_GC_EU_MQ 7
#define OOT_GC_JP_CE 8
#ifndef AVOID_UB #ifndef AVOID_UB
#define BAD_RETURN(type) type #define BAD_RETURN(type) type
#else #else

9
include/region.h Normal file
View file

@ -0,0 +1,9 @@
#ifndef REGION_H
#define REGION_H
#define REGION_NULL 0
#define REGION_JP 1
#define REGION_US 2
#define REGION_EU 3
#endif

View file

@ -70,11 +70,6 @@
#define SCREEN_WIDTH 320 #define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240 #define SCREEN_HEIGHT 240
#define REGION_NULL 0
#define REGION_JP 1
#define REGION_US 2
#define REGION_EU 3
#define THREAD_PRI_IDLE_INIT 10 #define THREAD_PRI_IDLE_INIT 10
#define THREAD_PRI_MAIN_INIT 10 #define THREAD_PRI_MAIN_INIT 10
#define THREAD_PRI_DMAMGR_LOW 10 // Used when decompressing files #define THREAD_PRI_DMAMGR_LOW 10 // Used when decompressing files
@ -104,9 +99,6 @@
#define STACK_TOP(stack) \ #define STACK_TOP(stack) \
((u8*)(stack) + sizeof(stack)) ((u8*)(stack) + sizeof(stack))
// NOTE: Once we start supporting other builds, this can be changed with an ifdef
#define REGION_NATIVE REGION_EU
typedef struct { typedef struct {
/* 0x00 */ void* loadedRamAddr; /* 0x00 */ void* loadedRamAddr;
/* 0x04 */ RomFile file; /* 0x04 */ RomFile file;

View file

@ -1,12 +1,17 @@
#include "macros.h"
const char gBuildTeam[] = "zelda@srd022j"; const char gBuildTeam[] = "zelda@srd022j";
// TODO: Use per-version preprocessor defines #if OOT_VERSION == OOT_GC_US
#if OOT_DEBUG // gc-eu-mq-dbg const char gBuildDate[] = "02-12-19 13:28:09";
#elif OOT_VERSION == OOT_GC_EU_MQ_DBG
const char gBuildDate[] = "03-02-21 00:16:31"; const char gBuildDate[] = "03-02-21 00:16:31";
#elif !OOT_MQ // gc-eu #elif OOT_VERSION == OOT_GC_EU
const char gBuildDate[] = "03-02-21 20:12:23"; const char gBuildDate[] = "03-02-21 20:12:23";
#else // gc-eu-mq #elif OOT_VERSION == OOT_GC_EU_MQ
const char gBuildDate[] = "03-02-21 20:37:19"; const char gBuildDate[] = "03-02-21 20:37:19";
#else
#error "Unsupported OOT_VERSION"
#endif #endif
const char gBuildMakeOption[] = ""; const char gBuildMakeOption[] = "";

View file

@ -1,4 +1,5 @@
#include "global.h" #include "global.h"
#include "region.h"
#include "terminal.h" #include "terminal.h"
u32 gCurrentRegion = 0; u32 gCurrentRegion = 0;
@ -35,7 +36,7 @@ void Locale_ResetRegion(void) {
#if OOT_DEBUG #if OOT_DEBUG
u32 func_80001F48(void) { u32 func_80001F48(void) {
if (gCurrentRegion == REGION_NATIVE) { if (gCurrentRegion == OOT_REGION) {
return 0; return 0;
} }
@ -47,7 +48,7 @@ u32 func_80001F48(void) {
} }
u32 func_80001F8C(void) { u32 func_80001F8C(void) {
if (gCurrentRegion == REGION_NATIVE) { if (gCurrentRegion == OOT_REGION) {
return 0; return 0;
} }
@ -60,6 +61,6 @@ u32 func_80001F8C(void) {
// This function appears to be unused? // This function appears to be unused?
u32 Locale_IsRegionNative(void) { u32 Locale_IsRegionNative(void) {
return gCurrentRegion == REGION_NATIVE; return gCurrentRegion == OOT_REGION;
} }
#endif #endif

View file

@ -1,4 +1,5 @@
#include "rom_header.h" #include "rom_header.h"
#include "region.h"
/* 0x00 */ ENDIAN_IDENTIFIER /* 0x00 */ ENDIAN_IDENTIFIER
/* 0x01 */ PI_DOMAIN_1_CFG(64, 18, 7, 3) /* 0x01 */ PI_DOMAIN_1_CFG(64, 18, 7, 3)
@ -9,7 +10,17 @@
/* 0x18 */ PADDING(8) /* 0x18 */ PADDING(8)
/* 0x20 */ ROM_NAME("THE LEGEND OF ZELDA") /* 0x20 */ ROM_NAME("THE LEGEND OF ZELDA")
/* 0x34 */ PADDING(7) /* 0x34 */ PADDING(7)
#if OOT_NTSC
/* 0x3B */ MEDIUM(CARTRIDGE_EXPANDABLE)
#else
/* 0x3B */ MEDIUM(CARTRIDGE) /* 0x3B */ MEDIUM(CARTRIDGE)
#endif
/* 0x3C */ GAME_ID("ZL") /* 0x3C */ GAME_ID("ZL")
#if OOT_REGION == REGION_US
/* 0x3E */ REGION(US)
#elif OOT_REGION == REGION_JP
/* 0x3E */ REGION(JP)
#elif OOT_REGION == REGION_EU
/* 0x3E */ REGION(PAL) /* 0x3E */ REGION(PAL)
#endif
/* 0x3F */ GAME_REVISION(15) /* 0x3F */ GAME_REVISION(15)