diff --git a/Makefile b/Makefile index fb37d6433..77ae24611 100644 --- a/Makefile +++ b/Makefile @@ -123,9 +123,10 @@ TARGET := sm64.$(VERSION) # f3d_new - default for EU and Shindou versions # f3dex - # f3dex2 - +# l3dex2 - F3DEX2 version that only renders in wireframe # 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 f3dex2pl f3d_new f3dzex super3d)) +$(eval $(call validate-option,GRUCODE,f3d_old f3dex f3dex2 f3dex2pl f3d_new f3dzex super3d l3dex2)) ifeq ($(GRUCODE),f3d_old) DEFINES += F3D_OLD=1 @@ -135,6 +136,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),l3dex2) # Line3DEX2 + DEFINES += L3DEX2_GBI=1 L3DEX2_ALONE=1 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) diff --git a/src/game/area.c b/src/game/area.c index a4897758f..e80502e45 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -301,6 +301,7 @@ void area_update_objects(void) { * transition type, time in frames, and the RGB color that will fill the screen. */ void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue) { +#ifndef L3DEX2_ALONE gWarpTransition.isActive = TRUE; gWarpTransition.type = transType; gWarpTransition.time = time; @@ -351,6 +352,7 @@ void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue) { gWarpTransition.data.endTexRadius = GFX_DIMENSIONS_FULL_RADIUS; } } +#endif } /* diff --git a/src/game/game_init.c b/src/game/game_init.c index 775e84f4c..eed3def97 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -278,7 +278,10 @@ void create_gfx_task_structure(void) { gGfxSPTask->task.t.ucode_boot = rspbootTextStart; gGfxSPTask->task.t.ucode_boot_size = ((u8 *) rspbootTextEnd - (u8 *) rspbootTextStart); gGfxSPTask->task.t.flags = 0; -#ifdef F3DZEX_GBI_2 +#ifdef L3DEX2_ALONE + gGfxSPTask->task.t.ucode = gspL3DEX2_fifoTextStart; + gGfxSPTask->task.t.ucode_data = gspL3DEX2_fifoDataStart; +#elif F3DZEX_GBI_2 gGfxSPTask->task.t.ucode = gspF3DZEX2_PosLight_fifoTextStart; gGfxSPTask->task.t.ucode_data = gspF3DZEX2_PosLight_fifoDataStart; #elif F3DEX2PL_GBI diff --git a/src/game/level_geo.c b/src/game/level_geo.c index f7e40543f..113bcd1a3 100644 --- a/src/game/level_geo.c +++ b/src/game/level_geo.c @@ -70,9 +70,11 @@ Gfx *geo_skybox_main(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) struct GraphNodePerspective *camFrustum = (struct GraphNodePerspective *) camNode->fnNode.node.parent; +#ifndef L3DEX2_ALONE gfx = create_skybox_facing_camera(0, backgroundNode->background, camFrustum->fov, gLakituState.pos[0], gLakituState.pos[1], gLakituState.pos[2], gLakituState.focus[0], gLakituState.focus[1], gLakituState.focus[2]); +#endif } return gfx; diff --git a/src/game/screen_transition.c b/src/game/screen_transition.c index 9347e223a..a2bf00189 100644 --- a/src/game/screen_transition.c +++ b/src/game/screen_transition.c @@ -298,7 +298,9 @@ Gfx *geo_cannon_circle_base(s32 callContext, struct GraphNode *node, UNUSED Mat4 if (callContext == GEO_CONTEXT_RENDER && gCurrentArea != NULL && gCurrentArea->camera->mode == CAMERA_MODE_INSIDE_CANNON) { graphNode->fnNode.node.flags = (graphNode->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT << 8); +#ifndef L3DEX2_ALONE dlist = render_cannon_circle_base(); +#endif } return dlist; }