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 00000000..6c4b4561 Binary files /dev/null and b/lib/PR/f3dex2pl/F3DEX2_PosLight.bin differ diff --git a/lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin b/lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin new file mode 100644 index 00000000..6fdb0aa0 Binary files /dev/null and b/lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin differ 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;