From 1fe697b02e03b5aaa17700a620b60a6068b38ac5 Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Sat, 8 May 2021 22:40:59 -0400 Subject: [PATCH] Add F3DEX2PL --- Makefile | 4 +++- include/ique/PR/gbi.h | 2 +- include/ique/PR/ucode.h | 3 +++ include/n64/PR/ucode.h | 3 +++ lib/PR/f3dex2pl/F3DEX2_PosLight.bin | Bin 0 -> 5680 bytes lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin | Bin 0 -> 1056 bytes lib/rsp.s | 12 ++++++++++-- src/game/game_init.c | 3 +++ 8 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 lib/PR/f3dex2pl/F3DEX2_PosLight.bin create mode 100644 lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin diff --git a/Makefile b/Makefile index 05d9afc2..8025c2ba 100644 --- a/Makefile +++ b/Makefile @@ -113,7 +113,7 @@ TARGET := sm64.$(VERSION) # f3dex2 - # f3dzex - newer, experimental microcode used in Animal Crossing # super3d - extremely experimental version of Fast3D lacking many features for speed -$(eval $(call validate-option,GRUCODE,f3d_old f3dex f3dex2 f3d_new f3dzex super3d)) +$(eval $(call validate-option,GRUCODE,f3d_old f3dex f3dex2 f3dex2pl f3d_new f3dzex super3d)) ifeq ($(GRUCODE),f3d_old) DEFINES += F3D_OLD=1 @@ -123,6 +123,8 @@ else ifeq ($(GRUCODE),f3dex) # Fast3DEX DEFINES += F3DEX_GBI=1 F3DEX_GBI_SHARED=1 else ifeq ($(GRUCODE),f3dex2) # Fast3DEX2 DEFINES += F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1 +else ifeq ($(GRUCODE),f3dex2pl) # Fast3DEX2_PosLight + DEFINES += F3DEX2PL_GBI=1 F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1 else ifeq ($(GRUCODE),f3dzex) # Fast3DZEX (2.08J / Animal Forest - Dōbutsu no Mori) DEFINES += F3DZEX_GBI_2=1 F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1 else ifeq ($(GRUCODE),super3d) # Super3D diff --git a/include/ique/PR/gbi.h b/include/ique/PR/gbi.h index eea18d5b..986de97c 100755 --- a/include/ique/PR/gbi.h +++ b/include/ique/PR/gbi.h @@ -4795,7 +4795,7 @@ typedef union { #define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag) #define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag) -#if defined(F3DZEX_GBI_2) || defined(F3DZEX_NON_GBI_2) || defined(L3DZEX_GBI) +#if defined(F3DZEX_GBI_2) || defined(F3DZEX_NON_GBI_2) || defined(L3DZEX_GBI) || defined(F3DEX2PL_GBI) #include "gbi-poslight.h" #endif diff --git a/include/ique/PR/ucode.h b/include/ique/PR/ucode.h index 23b94102..5389a017 100644 --- a/include/ique/PR/ucode.h +++ b/include/ique/PR/ucode.h @@ -178,6 +178,9 @@ extern u64 gspF3DLX2_Rej_fifoDataStart[],gspF3DLX2_Rej_fifoDataEnd[]; extern u64 gspL3DEX2_fifoTextStart[], gspL3DEX2_fifoTextEnd[]; extern u64 gspL3DEX2_fifoDataStart[], gspL3DEX2_fifoDataEnd[]; +extern u64 gspF3DEX2_PosLight_fifoTextStart[], gspF3DEX2_PosLight_fifoTextEnd[]; +extern u64 gspF3DEX2_PosLight_fifoDataStart[], gspF3DEX2_PosLight_fifoDataEnd[]; + /* XBUS version */ extern u64 gspF3DEX2_xbusTextStart[], gspF3DEX2_xbusTextEnd[]; extern u64 gspF3DEX2_xbusDataStart[], gspF3DEX2_xbusDataEnd[]; diff --git a/include/n64/PR/ucode.h b/include/n64/PR/ucode.h index 23b94102..5389a017 100644 --- a/include/n64/PR/ucode.h +++ b/include/n64/PR/ucode.h @@ -178,6 +178,9 @@ extern u64 gspF3DLX2_Rej_fifoDataStart[],gspF3DLX2_Rej_fifoDataEnd[]; extern u64 gspL3DEX2_fifoTextStart[], gspL3DEX2_fifoTextEnd[]; extern u64 gspL3DEX2_fifoDataStart[], gspL3DEX2_fifoDataEnd[]; +extern u64 gspF3DEX2_PosLight_fifoTextStart[], gspF3DEX2_PosLight_fifoTextEnd[]; +extern u64 gspF3DEX2_PosLight_fifoDataStart[], gspF3DEX2_PosLight_fifoDataEnd[]; + /* XBUS version */ extern u64 gspF3DEX2_xbusTextStart[], gspF3DEX2_xbusTextEnd[]; extern u64 gspF3DEX2_xbusDataStart[], gspF3DEX2_xbusDataEnd[]; diff --git a/lib/PR/f3dex2pl/F3DEX2_PosLight.bin b/lib/PR/f3dex2pl/F3DEX2_PosLight.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c4b4561a20106bdd1fb1299ca917c1368c221e4 GIT binary patch literal 5680 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 NfrEi{uh&#{4* zEnmS%&%i=KAu_)>BeNtiJ5eDrvA8rhza(GZJFz^mI5j0-!O+suQjd#)ff4K~CI$$L z3Bv#X55fo23=E9_A%0^7vsf57>KXq3abRFksQ+L8M}$Fufsx_=hyOnq1Q-+!Ft}XK z*~|bohmnDM1=w^L(EwwNB$~g0VY&bV1A~ABW4-_b=LH53c3^nG_<==%p@H!hV*|qv z#s^Faj5io=2~H5G5S$=51q=@eXbAWS-Vpd8U?Hd=zea#T@QvUU0Ruq?K^p-b0UaR` zC=?I^K_4LjAqOD=AqFrHB!Y?+gg{V4yg{Br?u6V2DHkalDI38lED9_hECnnxSPrnf zU=?7sU`=4{VBNragN=brgDrrqf^7lY3APXH66_A_8SE3-cd$R;;NUReh~Q}8Siy0D w;|Hh0|NoF^ZD24kaBv_xWpF literal 0 HcmV?d00001 diff --git a/lib/rsp.s b/lib/rsp.s index 6e5edfe3..4c82b25a 100644 --- a/lib/rsp.s +++ b/lib/rsp.s @@ -23,7 +23,11 @@ glabel gspFast3D_fifoTextEnd #else /* Use one of the Fast3DEX series grucodes. */ #ifndef F3DZEX_GBI_2 - #if F3DEX_GBI_2 == 1 + #if F3DEX2PL_GBI == 1 + glabel gspF3DEX2_PosLight_fifoTextStart + .incbin "lib/PR/f3dex2pl/F3DEX2_PosLight.bin" + glabel gspF3DEX2_PosLight_fifoTextEnd + #elif F3DEX_GBI_2 == 1 glabel gspF3DEX2_fifoTextStart .incbin "lib/PR/f3dex2/F3DEX2.bin" glabel gspF3DEX2_fifoTextEnd @@ -175,7 +179,11 @@ glabel gspFast3D_fifoDataEnd #else /* Using one of the Fast3DEX series grucodes */ #ifndef F3DZEX_GBI_2 - #if F3DEX_GBI_2 == 1 + #if F3DEX2PL_GBI == 1 + glabel gspF3DEX2_PosLight_fifoDataStart + .incbin "lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin" + glabel gspF3DEX2_PosLight_fifoDataEnd + #elif F3DEX_GBI_2 == 1 glabel gspF3DEX2_fifoDataStart .incbin "lib/PR/f3dex2/F3DEX2_data.bin" glabel gspF3DEX2_fifoDataEnd diff --git a/src/game/game_init.c b/src/game/game_init.c index 35ec669c..24f02cf2 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -242,6 +242,9 @@ void create_task_structure(void) { #ifdef F3DZEX_GBI_2 gGfxSPTask->task.t.ucode = gspF3DZEX2_PosLight_fifoTextStart; gGfxSPTask->task.t.ucode_data = gspF3DZEX2_PosLight_fifoDataStart; +#elif F3DEX2PL_GBI + gGfxSPTask->task.t.ucode = gspF3DEX2_PosLight_fifoTextStart; + gGfxSPTask->task.t.ucode_data = gspF3DEX2_PosLight_fifoDataStart; #elif F3DEX_GBI_2 gGfxSPTask->task.t.ucode = gspF3DEX2_fifoTextStart; gGfxSPTask->task.t.ucode_data = gspF3DEX2_fifoDataStart;