From 52e7483392c9fa046adb120be1d238ba4b019443 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:49:07 +0100 Subject: [PATCH] Sync gbi.h with MM, move ucode defines to makefile (#1968) * Sync gbi.h with MM, move ucode defines to makefile, use GBI_DEBUG instead of OOT_DEBUG * UCODE_DEFS -> GBI_DEFINES, add GBI_DOWHILE toggle --- Makefile | 12 ++++++++++-- include/ultra64/gbi.h | 33 ++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 6ed8f3e2c1..8c57181891 100644 --- a/Makefile +++ b/Makefile @@ -156,6 +156,14 @@ ifeq ($(COMPILER),gcc) OPTFLAGS := -Os -ffast-math -fno-unsafe-math-optimizations endif +# TODO PL and DOWHILE should be disabled for non-gamecube +GBI_DEFINES := -DF3DEX_GBI_2 -DF3DEX_GBI_PL -DGBI_DOWHILE +ifeq ($(DEBUG),1) + GBI_DEFINES += -DGBI_DEBUG +endif + +CFLAGS += $(GBI_DEFINES) + ASFLAGS := -march=vr4300 -32 -no-pad-sections -Iinclude ifeq ($(COMPILER),gcc) @@ -172,7 +180,7 @@ endif ifeq ($(COMPILER),ido) # Have CC_CHECK pretend to be a MIPS compiler MIPS_BUILTIN_DEFS := -D_MIPS_ISA_MIPS2=2 -D_MIPS_ISA=_MIPS_ISA_MIPS2 -D_ABIO32=1 -D_MIPS_SIM=_ABIO32 -D_MIPS_SZINT=32 -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 - CC_CHECK = gcc -fno-builtin -fsyntax-only -funsigned-char -std=gnu90 -D_LANGUAGE_C $(CPP_DEFINES) $(MIPS_BUILTIN_DEFS) $(INC) $(CHECK_WARNINGS) + CC_CHECK = gcc -fno-builtin -fsyntax-only -funsigned-char -std=gnu90 -D_LANGUAGE_C $(CPP_DEFINES) $(MIPS_BUILTIN_DEFS) $(GBI_DEFINES) $(INC) $(CHECK_WARNINGS) ifeq ($(shell getconf LONG_BIT), 32) # Work around memory allocation bug in QEMU export QEMU_GUEST_BASE := 1 @@ -301,7 +309,7 @@ $(BUILD_DIR)/src/libultra/libc/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/rmon/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/gu/%.o: OPTFLAGS := -O2 -$(BUILD_DIR)/assets/misc/z_select_static/%.o: CFLAGS += -DF3DEX_GBI +$(BUILD_DIR)/assets/misc/z_select_static/%.o: GBI_DEFINES := -DF3DEX_GBI $(BUILD_DIR)/src/libultra/gu/%.o: CC := $(CC_OLD) $(BUILD_DIR)/src/libultra/io/%.o: CC := $(CC_OLD) diff --git a/include/ultra64/gbi.h b/include/ultra64/gbi.h index c84a7b9a22..058fcb3cd2 100644 --- a/include/ultra64/gbi.h +++ b/include/ultra64/gbi.h @@ -3,21 +3,17 @@ #ifndef ULTRA64_GBI_H #define ULTRA64_GBI_H +#ifdef GBI_DOWHILE +/* Private macro to wrap other macros in do {...} while (0) */ +#define _DW(macro) do { macro } while (0) +#else +#define _DW(macro) { macro } (void)0 +#endif + /* To enable Fast3DEX grucode support, define F3DEX_GBI. */ /* Types */ -/* Private macro to wrap other macros in do {...} while (0) */ -#define _DW(macro) do {macro} while (0) - -#ifndef F3DEX_GBI - #define F3DEX_GBI_2 - - /* F3DEX2 with Point Lighting */ - /* TODO this should have version defines, gamecube versions have point light ucode but n64 versions don't */ - #define F3DEX_GBI_PL -#endif - #ifdef F3DEX_GBI_2 # ifndef F3DEX_GBI # define F3DEX_GBI @@ -2015,7 +2011,9 @@ typedef union { Gquad quad; #endif Gline3D line; +#if (defined(F3DLP_GBI) || defined(F3DEX_GBI)) Gcull cull; +#endif Gmovewd movewd; Gmovemem movemem; Gpopmtx popmtx; @@ -3455,6 +3453,15 @@ _DW({ \ gsSPSetOtherMode( G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) #endif +/* + * Majora's Mask Extension, sets both RGB and Alpha dither modes in the same + * macro. `mode` should use both G_CD_* and G_AD_* constants. + */ +#define gDPSetDither(pkt, mode) \ + gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 4, mode) +#define gsDPSetDither(mode) \ + gsSPSetOtherMode( G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 4, mode) + /* 'blendmask' is not supported anymore. * The bits are reserved for future use. * Fri May 26 13:45:55 PDT 1995 @@ -5143,7 +5150,7 @@ _DW({ \ #define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag) #define gsDPNoOpTag(tag) gsDPParam( G_NOOP, tag) -#if OOT_DEBUG +#ifdef GBI_DEBUG #define gDPNoOpHere(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 1) #define gDPNoOpString(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 2) @@ -5169,7 +5176,7 @@ _DW({ \ #define gDPNoOpCloseDisp(pkt, file, line) #define gDPNoOpTag3(pkt, type, data, n) -#endif /* OOT_DEBUG */ +#endif /* GBI_DEBUG */ #endif