From f8a9eaea4b4e791b2fae1da0ad7d6025d9a20d64 Mon Sep 17 00:00:00 2001 From: Arceveti <73617174+Arceveti@users.noreply.github.com> Date: Tue, 28 Sep 2021 23:43:44 -0700 Subject: [PATCH] Fix GRAPH_RENDER_FLAGS_SIZE + Add OBJ_FLAG_OCCLUDE_SILHOUETTE + name Bowser 1 painting dl's --- data/behavior_data.c | 5 -- include/behavior_data.h | 1 - include/macro_presets.h | 2 +- include/object_constants.h | 3 +- levels/castle_inside/areas/1/1/model.inc.c | 22 ++++---- levels/castle_inside/areas/1/geo.inc.c | 4 +- levels/castle_inside/areas/2/14/model.inc.c | 16 +++--- levels/castle_inside/areas/2/15/model.inc.c | 8 +-- levels/castle_inside/areas/2/6/model.inc.c | 2 +- levels/castle_inside/areas/2/9/model.inc.c | 8 +-- levels/castle_inside/header.h | 2 +- levels/castle_inside/texture.inc.c | 18 +++--- levels/scripts.c | 4 +- src/engine/behavior_script.c | 20 +++---- src/engine/graph_node.h | 23 ++++---- src/game/behaviors/water_bomb.inc.c | 61 ++++++++++----------- src/game/camera.c | 3 +- src/game/rendering_graph_node.c | 8 ++- 18 files changed, 104 insertions(+), 106 deletions(-) diff --git a/data/behavior_data.c b/data/behavior_data.c index fc7fc59e..9866d749 100644 --- a/data/behavior_data.c +++ b/data/behavior_data.c @@ -2218,11 +2218,6 @@ const BehaviorScript bhvMacroUkiki[] = { END_LOOP(), }; -const BehaviorScript bhvStub1D0C[] = { - BEGIN(OBJ_LIST_DEFAULT), - DEACTIVATE(), -}; - const BehaviorScript bhvLllRotatingHexagonalPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OR_LONG(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_DONT_CALC_COLL_DIST | OBJ_FLAG_UCODE_LARGE)), diff --git a/include/behavior_data.h b/include/behavior_data.h index adb9d2dd..1a62944c 100644 --- a/include/behavior_data.h +++ b/include/behavior_data.h @@ -176,7 +176,6 @@ extern const BehaviorScript bhvMoatGrills[]; extern const BehaviorScript bhvClockMinuteHand[]; extern const BehaviorScript bhvClockHourHand[]; extern const BehaviorScript bhvMacroUkiki[]; -extern const BehaviorScript bhvStub1D0C[]; extern const BehaviorScript bhvLllRotatingHexagonalPlatform[]; extern const BehaviorScript bhvLllSinkingRockBlock[]; extern const BehaviorScript bhvStub1D70[]; diff --git a/include/macro_presets.h b/include/macro_presets.h index 698e3bdf..2ad5c23c 100644 --- a/include/macro_presets.h +++ b/include/macro_presets.h @@ -109,7 +109,7 @@ struct MacroPreset MacroObjectPresets[] = { {bhvSmallBully, MODEL_BULLY, 0}, {bhvSmallBully, MODEL_BULLY_BOSS, 0}, // unused {bhvYellowCoin, MODEL_YELLOW_COIN, 0}, - {bhvStub1D0C, MODEL_UNKNOWN_58, 0}, // unused + {bhvYellowCoin, MODEL_UNKNOWN_58, 0}, // unused {bhvBouncingFireball, MODEL_NONE, 0}, {bhvFlamethrower, MODEL_NONE, 4}, {bhvYellowCoin, MODEL_YELLOW_COIN, 0}, diff --git a/include/object_constants.h b/include/object_constants.h index 23e51fb2..7b9a3526 100644 --- a/include/object_constants.h +++ b/include/object_constants.h @@ -47,7 +47,8 @@ #define OBJ_FLAG_EMIT_LIGHT (1 << 17) // 0x00020000 #define OBJ_FLAG_UCODE_LARGE (1 << 18) // 0x00040000 #define OBJ_FLAG_SILHOUETTE (1 << 19) // 0x00080000 -#define OBJ_FLAG_OPACITY_FROM_CAMERA_DIST (1 << 20) // 0x00100000 +#define OBJ_FLAG_OCCLUDE_SILHOUETTE (1 << 20) // 0x00100000 +#define OBJ_FLAG_OPACITY_FROM_CAMERA_DIST (1 << 21) // 0x00200000 #define OBJ_FLAG_HITBOX_WAS_SET (1 << 30) // 0x40000000 /* oHeldState */ diff --git a/levels/castle_inside/areas/1/1/model.inc.c b/levels/castle_inside/areas/1/1/model.inc.c index e79a050b..c5ed78a9 100644 --- a/levels/castle_inside/areas/1/1/model.inc.c +++ b/levels/castle_inside/areas/1/1/model.inc.c @@ -1,5 +1,5 @@ // 0x07023CB0 - 0x07023DB0 -static const Vtx inside_castle_seg7_vertex_07023CB0[] = { +static const Vtx inside_castle_seg7_vertex_bowser_1_painting[] = { {{{ -7395, 1126, -5772}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}}, {{{ -7178, 1126, -5989}, 0, { 992, 992}, {0xff, 0xff, 0xff, 0xff}}}, {{{ -7178, 1434, -5989}, 0, { 992, 0}, {0xff, 0xff, 0xff, 0xff}}}, @@ -19,7 +19,7 @@ static const Vtx inside_castle_seg7_vertex_07023CB0[] = { }; // 0x07023DB0 - 0x07023FE0 -const Gfx inside_castle_seg7_dl_07023DB0[] = { +const Gfx inside_castle_seg7_dl_bowser_1_painting[] = { gsDPPipeSync(), gsDPSetCycleType(G_CYC_2CYCLE), gsDPSetCombineMode(G_CC_TRILERP, G_CC_DECALRGB2), @@ -33,46 +33,46 @@ const Gfx inside_castle_seg7_dl_07023DB0[] = { gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, G_TX_RENDERTILE + 1, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD), gsDPSetTileSize(1, 0, 0, 124, 124), gsSPTexture(0xFFFF, 0xFFFF, 1, G_TX_RENDERTILE, G_ON), - gsSPVertex(inside_castle_seg7_vertex_07023CB0, 16, 0), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000), + gsSPVertex(inside_castle_seg7_vertex_bowser_1_painting, 16, 0), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_left), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_left), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_right), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_right), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_left), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_left), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_right), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_right), gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), diff --git a/levels/castle_inside/areas/1/geo.inc.c b/levels/castle_inside/areas/1/geo.inc.c index 78d3e442..dd4a5a14 100644 --- a/levels/castle_inside/areas/1/geo.inc.c +++ b/levels/castle_inside/areas/1/geo.inc.c @@ -26,7 +26,7 @@ const GeoLayout castle_geo_000F88[] = { GEO_NODE_START(), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702FD30), - GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023DB0), + GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_bowser_1_painting), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -138,7 +138,7 @@ const GeoLayout castle_geo_001158[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20), GEO_ASM(0, geo_exec_inside_castle_light), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702FD30), - GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023DB0), + GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_bowser_1_painting), GEO_CLOSE_NODE(), GEO_RETURN(), }; diff --git a/levels/castle_inside/areas/2/14/model.inc.c b/levels/castle_inside/areas/2/14/model.inc.c index 57e95f8e..0e564b5e 100644 --- a/levels/castle_inside/areas/2/14/model.inc.c +++ b/levels/castle_inside/areas/2/14/model.inc.c @@ -412,7 +412,7 @@ static const Vtx inside_castle_seg7_vertex_07056BB0[] = { // 0x07056BF0 - 0x07056CE0 static const Gfx inside_castle_seg7_dl_07056BF0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1), @@ -438,7 +438,7 @@ static const Gfx inside_castle_seg7_dl_07056BF0[] = { // 0x07056CE0 - 0x07056DD0 static const Gfx inside_castle_seg7_dl_07056CE0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1), @@ -464,7 +464,7 @@ static const Gfx inside_castle_seg7_dl_07056CE0[] = { // 0x07056DD0 - 0x07056EC0 static const Gfx inside_castle_seg7_dl_07056DD0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1), @@ -490,7 +490,7 @@ static const Gfx inside_castle_seg7_dl_07056DD0[] = { // 0x07056EC0 - 0x07056FB0 static const Gfx inside_castle_seg7_dl_07056EC0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1), @@ -516,7 +516,7 @@ static const Gfx inside_castle_seg7_dl_07056EC0[] = { // 0x07056FB0 - 0x07057078 static const Gfx inside_castle_seg7_dl_07056FB0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1), @@ -538,7 +538,7 @@ static const Gfx inside_castle_seg7_dl_07056FB0[] = { // 0x07057078 - 0x07057130 static const Gfx inside_castle_seg7_dl_07057078[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_07056590, 15, 0), @@ -558,7 +558,7 @@ static const Gfx inside_castle_seg7_dl_07057078[] = { // 0x07057130 - 0x070571E8 static const Gfx inside_castle_seg7_dl_07057130[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_070567B0, 15, 0), @@ -578,7 +578,7 @@ static const Gfx inside_castle_seg7_dl_07057130[] = { // 0x070571E8 - 0x070572A0 static const Gfx inside_castle_seg7_dl_070571E8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_070569D0, 15, 0), diff --git a/levels/castle_inside/areas/2/15/model.inc.c b/levels/castle_inside/areas/2/15/model.inc.c index 6798a28f..7baf47c5 100644 --- a/levels/castle_inside/areas/2/15/model.inc.c +++ b/levels/castle_inside/areas/2/15/model.inc.c @@ -235,7 +235,7 @@ static const Gfx inside_castle_seg7_dl_07057C20[] = { // 0x07057D30 - 0x07057D88 static const Gfx inside_castle_seg7_dl_07057D30[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPLight(&inside_castle_seg7_lights_07057398.l, 1), @@ -248,7 +248,7 @@ static const Gfx inside_castle_seg7_dl_07057D30[] = { // 0x07057D88 - 0x07057DD0 static const Gfx inside_castle_seg7_dl_07057D88[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_top_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_07057850, 8, 0), @@ -259,7 +259,7 @@ static const Gfx inside_castle_seg7_dl_07057D88[] = { // 0x07057DD0 - 0x07057E18 static const Gfx inside_castle_seg7_dl_07057DD0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_070578D0, 8, 0), @@ -270,7 +270,7 @@ static const Gfx inside_castle_seg7_dl_07057DD0[] = { // 0x07057E18 - 0x07057E60 static const Gfx inside_castle_seg7_dl_07057E18[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_bowser_bottom_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_07057950, 8, 0), diff --git a/levels/castle_inside/areas/2/6/model.inc.c b/levels/castle_inside/areas/2/6/model.inc.c index 556333c2..e28c39b5 100644 --- a/levels/castle_inside/areas/2/6/model.inc.c +++ b/levels/castle_inside/areas/2/6/model.inc.c @@ -36,7 +36,7 @@ const Gfx inside_castle_seg7_dl_0704A2E0[] = { gsDPPipeSync(), gsSPSetGeometryMode(G_TEXTURE_GEN), gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPLoadTextureBlock(inside_castle_seg7_texture_0700A000, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock(inside_castle_seg7_texture_light_radial_inverse, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON), gsSPDisplayList(inside_castle_seg7_dl_0704A290), gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_OFF), diff --git a/levels/castle_inside/areas/2/9/model.inc.c b/levels/castle_inside/areas/2/9/model.inc.c index 455aba04..b62fc80a 100644 --- a/levels/castle_inside/areas/2/9/model.inc.c +++ b/levels/castle_inside/areas/2/9/model.inc.c @@ -1265,7 +1265,7 @@ static const Gfx inside_castle_seg7_dl_07050080[] = { // 0x070501E8 - 0x07050230 static const Gfx inside_castle_seg7_dl_070501E8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_0704E288, 8, 0), @@ -1276,7 +1276,7 @@ static const Gfx inside_castle_seg7_dl_070501E8[] = { // 0x07050230 - 0x07050278 static const Gfx inside_castle_seg7_dl_07050230[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_left), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_0704E308, 8, 0), @@ -1287,7 +1287,7 @@ static const Gfx inside_castle_seg7_dl_07050230[] = { // 0x07050278 - 0x070502C0 static const Gfx inside_castle_seg7_dl_07050278[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_bottom_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_0704E388, 8, 0), @@ -1298,7 +1298,7 @@ static const Gfx inside_castle_seg7_dl_07050278[] = { // 0x070502C0 - 0x07050308 static const Gfx inside_castle_seg7_dl_070502C0[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_peach_top_right), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(inside_castle_seg7_vertex_0704E408, 8, 0), diff --git a/levels/castle_inside/header.h b/levels/castle_inside/header.h index 043e3383..891fee82 100644 --- a/levels/castle_inside/header.h +++ b/levels/castle_inside/header.h @@ -73,7 +73,7 @@ extern struct Painting ttm_painting; extern struct Painting ttc_painting; extern struct Painting sl_painting; extern struct Painting thi_huge_painting; -extern const Gfx inside_castle_seg7_dl_07023DB0[]; +extern const Gfx inside_castle_seg7_dl_bowser_1_painting[]; extern const Gfx inside_castle_seg7_dl_07028FD0[]; extern const Gfx inside_castle_seg7_dl_07029578[]; extern const Gfx inside_castle_seg7_dl_0702A650[]; diff --git a/levels/castle_inside/texture.inc.c b/levels/castle_inside/texture.inc.c index a3157f23..6ffde7f9 100644 --- a/levels/castle_inside/texture.inc.c +++ b/levels/castle_inside/texture.inc.c @@ -38,47 +38,47 @@ ALIGNED8 static const Texture inside_castle_seg7_texture_07005800[] = { }; // 0x07006000 - 0x07006800 -ALIGNED8 static const Texture inside_castle_seg7_texture_07006000[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_peach_top_left[] = { #include "levels/castle_inside/8.rgba16.inc.c" }; // 0x07006800 - 0x07007000 -ALIGNED8 static const Texture inside_castle_seg7_texture_07006800[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_peach_top_right[] = { #include "levels/castle_inside/9.rgba16.inc.c" }; // 0x07007000 - 0x07007800 -ALIGNED8 static const Texture inside_castle_seg7_texture_07007000[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_peach_bottom_left[] = { #include "levels/castle_inside/10.rgba16.inc.c" }; // 0x07007800 - 0x07008000 -ALIGNED8 static const Texture inside_castle_seg7_texture_07007800[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_peach_bottom_right[] = { #include "levels/castle_inside/11.rgba16.inc.c" }; // 0x07008000 - 0x07008800 -ALIGNED8 static const Texture inside_castle_seg7_texture_07008000[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_bowser_top_left[] = { #include "levels/castle_inside/12.rgba16.inc.c" }; // 0x07008800 - 0x07009000 -ALIGNED8 static const Texture inside_castle_seg7_texture_07008800[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_bowser_top_right[] = { #include "levels/castle_inside/13.rgba16.inc.c" }; // 0x07009000 - 0x07009800 -ALIGNED8 static const Texture inside_castle_seg7_texture_07009000[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_bowser_bottom_left[] = { #include "levels/castle_inside/14.rgba16.inc.c" }; // 0x07009800 - 0x0700A000 -ALIGNED8 static const Texture inside_castle_seg7_texture_07009800[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_bowser_bottom_right[] = { #include "levels/castle_inside/15.rgba16.inc.c" }; // 0x0700A000 - 0x0700A800 -ALIGNED8 static const Texture inside_castle_seg7_texture_0700A000[] = { +ALIGNED8 static const Texture inside_castle_seg7_texture_light_radial_inverse[] = { #include "levels/castle_inside/16.ia16.inc.c" }; diff --git a/levels/scripts.c b/levels/scripts.c index d13d0d5b..a4f2aaab 100644 --- a/levels/scripts.c +++ b/levels/scripts.c @@ -59,8 +59,8 @@ static const LevelScript goto_debug_level_select[6]; #undef STUB_LEVEL const LevelScript level_main_scripts_entry[] = { - LOAD_YAY0(/*seg*/ 0x04, _group0_yay0SegmentRomStart, _group0_yay0SegmentRomEnd), - LOAD_YAY0(/*seg*/ 0x03, _common1_yay0SegmentRomStart, _common1_yay0SegmentRomEnd), + LOAD_YAY0( /*seg*/ 0x04, _group0_yay0SegmentRomStart, _group0_yay0SegmentRomEnd), + LOAD_YAY0( /*seg*/ 0x03, _common1_yay0SegmentRomStart, _common1_yay0SegmentRomEnd), LOAD_RAW_WITH_CODE( /*seg*/ 0x17, _group0_geoSegmentRomStart, _group0_geoSegmentRomEnd, _group0_geoSegmentBssStart, _group0_geoSegmentBssEnd), LOAD_RAW_WITH_CODE( /*seg*/ 0x16, _common1_geoSegmentRomStart, _common1_geoSegmentRomEnd, _common1_geoSegmentBssStart, _common1_geoSegmentBssEnd), LOAD_RAW_WITH_CODE( /*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd, _behaviorSegmentBssStart, _behaviorSegmentBssEnd), diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c index ee839837..44eb3838 100644 --- a/src/engine/behavior_script.c +++ b/src/engine/behavior_script.c @@ -76,7 +76,7 @@ f32 random_float(void) { // Return either -1 or 1 with a 50:50 chance. s32 random_sign(void) { if (random_u16() >= 0x7FFF) { - return 1; + return 1; } else { return -1; } @@ -84,18 +84,15 @@ s32 random_sign(void) { // Update an object's graphical position and rotation to match its real position and rotation. void obj_update_gfx_pos_and_angle(struct Object *obj) { - obj->header.gfx.pos[0] = obj->oPosX; - obj->header.gfx.pos[1] = obj->oPosY + obj->oGraphYOffset; - obj->header.gfx.pos[2] = obj->oPosZ; - - obj->header.gfx.angle[0] = obj->oFaceAnglePitch & 0xFFFF; - obj->header.gfx.angle[1] = obj->oFaceAngleYaw & 0xFFFF; - obj->header.gfx.angle[2] = obj->oFaceAngleRoll & 0xFFFF; + vec3_copy_y_off(obj->header.gfx.pos, &obj->oPosVec, obj->oGraphYOffset); + obj->header.gfx.angle[0] = (obj->oFaceAnglePitch & 0xFFFF); + obj->header.gfx.angle[1] = (obj->oFaceAngleYaw & 0xFFFF); + obj->header.gfx.angle[2] = (obj->oFaceAngleRoll & 0xFFFF); } #ifdef OBJ_OPACITY_BY_CAM_DIST void obj_set_opacity_from_cam_dist(struct Object *obj) { - f32 dist; + f32 dist; //! Should this be done via LOD's instead? Vec3f d; if (obj->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) { d[0] = (obj->oPosX - gCamera->pos[0]); @@ -995,8 +992,9 @@ void cur_obj_update(void) { obj_update_gfx_pos_and_angle(gCurrentObject); } - COND_BIT((!(objFlags & OBJ_FLAG_UCODE_LARGE)), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_UCODE_REJ ); - COND_BIT( (objFlags & OBJ_FLAG_SILHOUETTE ), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_SILHOUETTE); + COND_BIT((!(objFlags & OBJ_FLAG_UCODE_LARGE )), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_UCODE_REJ ); + COND_BIT(( objFlags & OBJ_FLAG_SILHOUETTE ), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_SILHOUETTE ); + COND_BIT(( objFlags & OBJ_FLAG_OCCLUDE_SILHOUETTE ), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_OCCLUDE_SILHOUETTE); #ifdef OBJ_OPACITY_BY_CAM_DIST if (objFlags & OBJ_FLAG_OPACITY_FROM_CAMERA_DIST) { diff --git a/src/engine/graph_node.h b/src/engine/graph_node.h index f497efb8..626511c5 100644 --- a/src/engine/graph_node.h +++ b/src/engine/graph_node.h @@ -9,22 +9,23 @@ #include "geo_commands.h" #include "game/memory.h" -#define GRAPH_RENDER_ACTIVE (1 << 0) // 0x0001 -#define GRAPH_RENDER_CHILDREN_FIRST (1 << 1) // 0x0002 -#define GRAPH_RENDER_BILLBOARD (1 << 2) // 0x0004 -#define GRAPH_RENDER_Z_BUFFER (1 << 3) // 0x0008 -#define GRAPH_RENDER_INVISIBLE (1 << 4) // 0x0010 -#define GRAPH_RENDER_HAS_ANIMATION (1 << 5) // 0x0020 -#define GRAPH_RENDER_UCODE_REJ (1 << 6) // 0x0040 -#define GRAPH_RENDER_SILHOUETTE (1 << 7) // 0x0080 +#define GRAPH_RENDER_ACTIVE (1 << 0) // 0x0001 +#define GRAPH_RENDER_CHILDREN_FIRST (1 << 1) // 0x0002 +#define GRAPH_RENDER_BILLBOARD (1 << 2) // 0x0004 +#define GRAPH_RENDER_Z_BUFFER (1 << 3) // 0x0008 +#define GRAPH_RENDER_INVISIBLE (1 << 4) // 0x0010 +#define GRAPH_RENDER_HAS_ANIMATION (1 << 5) // 0x0020 +#define GRAPH_RENDER_SILHOUETTE (1 << 6) // 0x0040 +#define GRAPH_RENDER_OCCLUDE_SILHOUETTE (1 << 7) // 0x0080 +#define GRAPH_RENDER_UCODE_REJ (1 << 8) // 0x0100 // The amount of bits to use for the above flags out of a s16 variable. // The remaining bits to the left are used for the render layers. // The vanilla value is 8, allowing for 8 flags and 255 layers. -#define GRAPH_RENDER_FLAGS_SIZE 8 +#define GRAPH_RENDER_FLAGS_SIZE 12 -#define GRAPH_RENDER_LAYERS_MASK (BITMASK(16 - GRAPH_RENDER_FLAGS_SIZE) << GRAPH_RENDER_FLAGS_SIZE) -#define GRAPH_RENDER_FLAGS_MASK BITMASK(GRAPH_RENDER_FLAGS_SIZE) +#define GRAPH_RENDER_LAYERS_MASK (BITMASK(16 - GRAPH_RENDER_FLAGS_SIZE) << GRAPH_RENDER_FLAGS_SIZE) // 8:0xFF00 12:0xF000 +#define GRAPH_RENDER_FLAGS_MASK BITMASK(GRAPH_RENDER_FLAGS_SIZE) // 8:0x00FF 12:0x0FFF #define SET_GRAPH_NODE_LAYER(flags, layer) ((flags) = ((flags) & GRAPH_RENDER_FLAGS_MASK) | (((layer) << GRAPH_RENDER_FLAGS_SIZE) & GRAPH_RENDER_LAYERS_MASK)) #define GET_GRAPH_NODE_LAYER(flags ) ((flags & GRAPH_RENDER_LAYERS_MASK) >> GRAPH_RENDER_FLAGS_SIZE) diff --git a/src/game/behaviors/water_bomb.inc.c b/src/game/behaviors/water_bomb.inc.c index 2321ff6a..445e0217 100644 --- a/src/game/behaviors/water_bomb.inc.c +++ b/src/game/behaviors/water_bomb.inc.c @@ -58,25 +58,25 @@ void bhv_water_bomb_spawner_update(void) { } } +static struct SpawnParticlesInfo sWaterBombExplodeParticles = { + /* behParam: */ 0, + /* count: */ 5, + /* model: */ MODEL_BUBBLE, + /* offsetY: */ 20, + /* forwardVelBase: */ 20, + /* forwardVelRange: */ 60, + /* velYBase: */ 10, + /* velYRange: */ 10, + /* gravity: */ -2, + /* dragStrength: */ 0, + /* sizeBase: */ 35.0f, + /* sizeRange: */ 10.0f, +}; + /** * Spawn particles when the water bomb explodes. */ void water_bomb_spawn_explode_particles(s8 offsetY, s8 forwardVelRange, s8 velYBase) { - static struct SpawnParticlesInfo sWaterBombExplodeParticles = { - /* behParam: */ 0, - /* count: */ 5, - /* model: */ MODEL_BUBBLE, - /* offsetY: */ 20, - /* forwardVelBase: */ 20, - /* forwardVelRange: */ 60, - /* velYBase: */ 10, - /* velYRange: */ 10, - /* gravity: */ -2, - /* dragStrength: */ 0, - /* sizeBase: */ 35.0f, - /* sizeRange: */ 10.0f, - }; - sWaterBombExplodeParticles.offsetY = offsetY; sWaterBombExplodeParticles.forwardVelRange = forwardVelRange; sWaterBombExplodeParticles.velYBase = velYBase; @@ -165,26 +165,25 @@ static void water_bomb_act_explode(void) { obj_mark_for_deletion(o); } +static struct SpawnParticlesInfo sWaterBombCannonParticle = { + /* behParam: */ 0, + /* count: */ 1, + /* model: */ MODEL_BUBBLE, + /* offsetY: */ 236, + /* forwardVelBase: */ 20, + /* forwardVelRange: */ 5, + /* velYBase: */ 0, + /* velYRange: */ 0, + /* gravity: */ -2, + /* dragStrength: */ 0, + /* sizeBase: */ 20.0f, + /* sizeRange: */ 5.0f, +}; + /** * Despawn after 100 frames. */ static void water_bomb_act_shot_from_cannon(void) { - - static struct SpawnParticlesInfo sWaterBombCannonParticle = { - /* behParam: */ 0, - /* count: */ 1, - /* model: */ MODEL_BUBBLE, - /* offsetY: */ 236, - /* forwardVelBase: */ 20, - /* forwardVelRange: */ 5, - /* velYBase: */ 0, - /* velYRange: */ 0, - /* gravity: */ -2, - /* dragStrength: */ 0, - /* sizeBase: */ 20.0f, - /* sizeRange: */ 5.0f, - }; - if (o->oTimer > 100) { obj_mark_for_deletion(o); } else { diff --git a/src/game/camera.c b/src/game/camera.c index 14c67381..db3f5a7d 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -2713,8 +2713,7 @@ void set_camera_mode(struct Camera *c, s16 mode, s16 frames) { */ void update_lakitu(struct Camera *c) { struct Surface *floor = NULL; - Vec3f newPos; - Vec3f newFoc; + Vec3f newPos, newFoc; f32 distToFloor; s16 newYaw; diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c index da0773aa..8ca441f7 100644 --- a/src/game/rendering_graph_node.c +++ b/src/game/rendering_graph_node.c @@ -333,6 +333,12 @@ void geo_append_display_list(void *displayList, s32 layer) { case LAYER_ALPHA: layer = LAYER_SILHOUETTE_ALPHA; break; } } + if (gCurGraphNodeObject->node.flags & GRAPH_RENDER_OCCLUDE_SILHOUETTE) { + switch (layer) { + case LAYER_OPAQUE: layer = LAYER_OCCLUDE_SILHOUETTE_OPAQUE; break; + case LAYER_ALPHA: layer = LAYER_OCCLUDE_SILHOUETTE_ALPHA; break; + } + } #endif } #endif @@ -360,7 +366,7 @@ void inc_mat_stack() { void append_dl_and_return(struct GraphNodeDisplayList *node) { if (node->displayList != NULL) { - geo_append_display_list(node->displayList, node->node.flags >> 8); + geo_append_display_list(node->displayList, GET_GRAPH_NODE_LAYER(node->node.flags)); } if (node->node.children != NULL) { geo_process_node_and_siblings(node->node.children);