mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
document textures_sprites.c (#523)
This commit is contained in:
@@ -9,7 +9,7 @@ As of April 19, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 79.89%
|
||||
|
||||
    Documentation progress: 52.64%
|
||||
    Documentation progress: 53.78%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
|
||||
---
|
||||
@@ -133,14 +133,14 @@ As of April 19, 2025, this is our current score:
|
||||
We are collecting silver coins in Haunted Woods. (6/8 silver coins)
|
||||
===================================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
------------------------- 52.64% Complete -------------------------
|
||||
# Documented functions: 1126
|
||||
# Undocumented remaining: 527
|
||||
------------------------- 53.78% Complete -------------------------
|
||||
# Documented functions: 1136
|
||||
# Undocumented remaining: 517
|
||||
--------------------------- Game Status ---------------------------
|
||||
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
|
||||
T.T. Amulets: 2/4, Wizpig Amulets: 2/4
|
||||
-------------------------------------------------------------------
|
||||
We are racing the octopus boss Bubbler. (Lap 3/3)
|
||||
We are battling in Darkwater Beach. (2 opponents remain)
|
||||
===================================================================
|
||||
```
|
||||
<!-- README_SCORE_END -->
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@
|
||||
}
|
||||
|
||||
#if defined(F3DDKR_GBI)
|
||||
// ?????? - Needed to modify this to work with matching build_tex_display_list
|
||||
// ?????? - Needed to modify this to work with matching material_init
|
||||
#undef TXL2WORDS_4b
|
||||
#define TXL2WORDS_4b(txls) ((txls)/16)
|
||||
#endif
|
||||
|
||||
@@ -75,4 +75,9 @@
|
||||
// Used to make a u32 colour value look clearer. Transforms 0xFF0000FF to 255, 0, 0, 255
|
||||
#define COLOUR_RGBA32(r, g, b, a) (((r << 24) | (g << 16) | (b << 8) | a))
|
||||
|
||||
// A few systems in the game use an array as a cache table. This gives you the asset ID
|
||||
#define ASSETCACHE_ID(x) ((x << 1) + 0)
|
||||
// A few systems in the game use an array as a cache table. This gives you the pointer to the asset
|
||||
#define ASSETCACHE_PTR(x) ((x << 1) + 1)
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -163,7 +163,7 @@ typedef struct Sprite {
|
||||
/* 0x00 */ s16 baseTextureId;
|
||||
/* 0x02 */ s16 numberOfFrames; // 1 means static texture
|
||||
/* 0x04 */ s16 numberOfInstances;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x06 */ s16 drawFlags;
|
||||
/* 0x08 */ TextureHeader **frames;
|
||||
union {
|
||||
/* 0x0C */ u8 val[1]; // Actual size varies.
|
||||
|
||||
+1
-1
@@ -576,7 +576,7 @@ void debug_render_line(Gfx **dList, Vertex **verts, Triangle **tris, f32 coords[
|
||||
|
||||
temp_verts = *verts;
|
||||
temp_tris = *tris;
|
||||
load_and_set_texture_no_offset(&temp_dlist, NULL, RENDER_NONE);
|
||||
material_set_no_tex_offset(&temp_dlist, NULL, RENDER_NONE);
|
||||
gSPVertexDKR(temp_dlist++, OS_PHYSICAL_TO_K0(temp_verts), 4, 0);
|
||||
gSPPolygon(temp_dlist++, OS_PHYSICAL_TO_K0(temp_tris), 2, 0);
|
||||
temp_verts[0].x = x1;
|
||||
|
||||
+3
-3
@@ -1143,8 +1143,8 @@ s32 render_sprite_billboard(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Obj
|
||||
if (flags & RENDER_SEMI_TRANSPARENT) {
|
||||
flags |= RENDER_ANTI_ALIASING;
|
||||
}
|
||||
func_8007BF34(dList, arg4->unk6 | (flags & (RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE |
|
||||
RENDER_ANTI_ALIASING)));
|
||||
material_load_simple(dList, arg4->drawFlags | (flags & (RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE |
|
||||
RENDER_ANTI_ALIASING)));
|
||||
if (!(flags & RENDER_Z_UPDATE)) {
|
||||
gDPSetPrimColor((*dList)++, 0, 0, 255, 255, 255, 255);
|
||||
}
|
||||
@@ -1211,7 +1211,7 @@ void render_ortho_triangle_image(Gfx **dList, MatrixS **mtx, Vertex **vtx, Objec
|
||||
if (gSpriteAnimOff == FALSE) {
|
||||
index = (((u8) index) * sprite->baseTextureId) >> 8;
|
||||
}
|
||||
func_8007BF34(dList, sprite->unk6 | flags);
|
||||
material_load_simple(dList, sprite->drawFlags | flags);
|
||||
if (index >= sprite->baseTextureId) {
|
||||
index = sprite->baseTextureId - 1;
|
||||
}
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ typedef struct unk80068514_arg4 {
|
||||
s16 textureCount;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s16 drawFlags;
|
||||
Gfx *unk8[1];
|
||||
} unk80068514_arg4;
|
||||
|
||||
|
||||
+12
-12
@@ -430,7 +430,7 @@ void transition_render_fullscreen(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vert
|
||||
gDPSetPrimColor((*dList)++, 0, 0, gCurFadeRed, gCurFadeGreen, gCurFadeBlue, gCurFadeAlpha);
|
||||
gDPSetCombineMode((*dList)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
|
||||
gDPFillRectangle((*dList)++, 0, 0, screenSize & 0x3FF, (screenSize >> 16) & 0x3FF);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -553,11 +553,11 @@ void transition_update_shape(s32 updateRate) {
|
||||
* Renders a transition effect on screen that will close in from both sides horizonally.
|
||||
*/
|
||||
void transition_render_barndoor_hor(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **vtx) {
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gSPDisplayList((*dList)++, dTransitionShapeSettings);
|
||||
gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(sTransitionVtx[sTransitionTaskNum]), 12, 0);
|
||||
gSPPolygon((*dList)++, OS_PHYSICAL_TO_K0(sTransitionTris[sTransitionTaskNum]), 8, TRIN_DISABLE_TEXTURE);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -565,11 +565,11 @@ void transition_render_barndoor_hor(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Ve
|
||||
* Codewise, exactly the same as above, but uses a different vertex layout to make the difference.
|
||||
*/
|
||||
void transition_render_barndoor_vert(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **vtx) {
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gSPDisplayList((*dList)++, dTransitionShapeSettings);
|
||||
gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(sTransitionVtx[sTransitionTaskNum]), 12, 0);
|
||||
gSPPolygon((*dList)++, OS_PHYSICAL_TO_K0(sTransitionTris[sTransitionTaskNum]), 8, TRIN_DISABLE_TEXTURE);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
void transition_init_circle(FadeTransition *transition) {
|
||||
@@ -738,7 +738,7 @@ void transition_render_circle(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex *
|
||||
Gfx *gfx;
|
||||
s32 i;
|
||||
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gfx = *dList;
|
||||
|
||||
vertsToRender = (Vertex *) sTransitionVtx[sTransitionTaskNum];
|
||||
@@ -753,7 +753,7 @@ void transition_render_circle(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex *
|
||||
}
|
||||
|
||||
*dList = gfx;
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -764,7 +764,7 @@ void transition_render_waves(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **
|
||||
s32 i;
|
||||
Vertex *v;
|
||||
Triangle *t;
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gfx = *dList;
|
||||
v = (Vertex *) sTransitionVtx[sTransitionTaskNum];
|
||||
t = (Triangle *) sTransitionTris[sTransitionTaskNum];
|
||||
@@ -791,18 +791,18 @@ void transition_render_waves(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **
|
||||
}
|
||||
}
|
||||
*dList = gfx;
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a transition effect on screen that will close in from the opposite corners of the screen.
|
||||
*/
|
||||
void transition_render_barndoor_diag(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **vtx) {
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gSPDisplayList((*dList)++, dTransitionShapeSettings);
|
||||
gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(sTransitionVtx[sTransitionTaskNum]), 10, 0);
|
||||
gSPPolygon((*dList)++, OS_PHYSICAL_TO_K0(sTransitionTris[sTransitionTaskNum]), 6, TRIN_DISABLE_TEXTURE);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -861,5 +861,5 @@ void transition_render_blank(Gfx **dList, UNUSED MatrixS **mtx, UNUSED Vertex **
|
||||
gDPSetPrimColor((*dList)++, 0, 0, (gLastFadeRed >> 16), (gLastFadeGreen >> 16), (gLastFadeBlue >> 16), 255);
|
||||
gDPSetCombineMode((*dList)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
|
||||
gDPFillRectangle((*dList)++, 0, 0, GET_VIDEO_WIDTH(screenSize), GET_VIDEO_HEIGHT(screenSize) & 0x3FF);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
+3
-3
@@ -240,7 +240,7 @@ void unload_font(s32 fontID) {
|
||||
if (fontData->loadedFonts[0] == 0) {
|
||||
s32 i = 0;
|
||||
while (i < 32 && fontData->textureID[i] != -1) {
|
||||
free_texture(fontData->texturePointers[i]);
|
||||
tex_free(fontData->texturePointers[i]);
|
||||
fontData->texturePointers[i] = NULL;
|
||||
i++;
|
||||
}
|
||||
@@ -508,7 +508,7 @@ void render_text_string(Gfx **dList, DialogueBoxBackground *box, char *text, Ali
|
||||
if (box != gDialogueBoxBackground) {
|
||||
viewport_scissor(dList);
|
||||
}
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gDPPipeSync((*dList)++);
|
||||
}
|
||||
}
|
||||
@@ -702,7 +702,7 @@ void render_text_string(Gfx **dList, DialogueBoxBackground *box, char *text, Ali
|
||||
if (box != gDialogueBoxBackground) {
|
||||
viewport_scissor(dList);
|
||||
}
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gDPPipeSync((*dList)++);
|
||||
}
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -710,7 +710,7 @@ void clear_audio_and_track(void) {
|
||||
}
|
||||
//! @bug this will never be true because skyDome is signed.
|
||||
if (gCurrentLevelHeader->skyDome == 0xFF) {
|
||||
free_texture(gCurrentLevelHeader->unkA4);
|
||||
tex_free(gCurrentLevelHeader->unkA4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+18
-18
@@ -343,11 +343,11 @@ void hud_free(void) {
|
||||
s32 i;
|
||||
for (i = 0; i < gAssetHudElementIdsCount; i++) {
|
||||
if (gAssetHudElements->entry[i] != NULL) {
|
||||
if ((gAssetHudElementIds[i] & HUD_ELEMENT_TEXTURE) == HUD_ELEMENT_TEXTURE) {
|
||||
free_texture(gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & HUD_ELEMENT_SPRITE) {
|
||||
free_sprite((Sprite *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & HUD_ELEMENT_OBJECT) {
|
||||
if ((gAssetHudElementIds[i] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) {
|
||||
tex_free(gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & ASSET_MASK_SPRITE) {
|
||||
sprite_free((Sprite *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & ASSET_MASK_OBJECT) {
|
||||
free_object((Object *) gAssetHudElements->entry[i]);
|
||||
} else {
|
||||
free_3d_model((ObjectModel **) gAssetHudElements->entry[i]);
|
||||
@@ -805,7 +805,7 @@ void hud_main_treasure(s32 countdown, Object *obj, s32 updateRate) {
|
||||
break;
|
||||
}
|
||||
racer = &obj->unk64->racer;
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
hud_bananas(racer, updateRate);
|
||||
hud_weapon(obj, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
@@ -1076,7 +1076,7 @@ void hud_lives_render(Object_Racer *racer, UNUSED s32 updateRate) {
|
||||
hud_element_render(&gHudDL, &gHudMtx, &gHudVtx, &gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT]);
|
||||
D_80126CD5 = FALSE;
|
||||
rdp_init(&gHudDL);
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
}
|
||||
if (racer->bananas < 10) {
|
||||
gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_1].spriteOffset = racer->bananas;
|
||||
@@ -1529,7 +1529,7 @@ void hud_speedometre(Object *obj, UNUSED s32 updateRate) {
|
||||
opacity = 255;
|
||||
}
|
||||
hud_element_render(&gHudDL, &gHudMtx, &gHudVtx, &gCurrentHud->entry[HUD_SPEEDOMETRE_BG]);
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
sprite_opaque(TRUE);
|
||||
gDPSetPrimColor(gHudDL++, 0, 0, 255, 255, 255, opacity);
|
||||
hud_element_render(&gHudDL, &gHudMtx, &gHudVtx, &gCurrentHud->entry[HUD_SPEEDOMETRE_ARROW]);
|
||||
@@ -3043,11 +3043,11 @@ void hud_render_general(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 updateRate
|
||||
for (i = 0; i < gAssetHudElementIdsCount; i++) {
|
||||
if (gAssetHudElements->entry[i] && i != 40) {
|
||||
if (++gAssetHudElementStaleCounter[i] > 60) {
|
||||
if ((gAssetHudElementIds[i] & HUD_ELEMENT_TEXTURE) == HUD_ELEMENT_TEXTURE) {
|
||||
free_texture((TextureHeader *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & HUD_ELEMENT_SPRITE) {
|
||||
free_sprite((Sprite *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & HUD_ELEMENT_OBJECT) {
|
||||
if ((gAssetHudElementIds[i] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) {
|
||||
tex_free((TextureHeader *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & ASSET_MASK_SPRITE) {
|
||||
sprite_free((Sprite *) gAssetHudElements->entry[i]);
|
||||
} else if (gAssetHudElementIds[i] & ASSET_MASK_OBJECT) {
|
||||
free_object((Object *) gAssetHudElements->entry[i]);
|
||||
} else {
|
||||
free_3d_model((ObjectModel **) gAssetHudElements->entry[i]);
|
||||
@@ -3065,7 +3065,7 @@ void hud_render_general(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 updateRate
|
||||
if (gHudLevelHeader->race_type == RACETYPE_CHALLENGE_EGGS) {
|
||||
if (gNumActivePlayers == 2 && gHudToggleSettings[gHUDNumPlayers] == 0) {
|
||||
hud_draw_eggs(NULL, updateRate);
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
} else {
|
||||
// Render player 4's egg challenge portrait if they are AI controlled.
|
||||
if (gNumActivePlayers == 3) {
|
||||
@@ -3107,7 +3107,7 @@ void hud_render_general(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 updateRate
|
||||
set_ortho_matrix_view(&gHudDL, &gHudMtx);
|
||||
func_800A1E48(0, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
sprite_opaque(TRUE);
|
||||
} else {
|
||||
// In 3/4 player, just show the life counter.
|
||||
@@ -3180,7 +3180,7 @@ void hud_render_general(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 updateRate
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.x = spE4;
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = spE0;
|
||||
sprite_opaque(TRUE);
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
sprite_anim_off(FALSE);
|
||||
}
|
||||
}
|
||||
@@ -3262,7 +3262,7 @@ void hud_render_general(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 updateRate
|
||||
test:
|
||||
return;
|
||||
} else {
|
||||
reset_render_settings(&gHudDL);
|
||||
rendermode_reset(&gHudDL);
|
||||
set_ortho_matrix_view(&gHudDL, &gHudMtx);
|
||||
lvlMdl = get_current_level_model();
|
||||
if (lvlMdl == NULL) {
|
||||
@@ -3510,7 +3510,7 @@ void hud_draw_model(ObjectModel *objModel) {
|
||||
} else {
|
||||
texPtr = objModel->textures[texIndex].texture;
|
||||
}
|
||||
load_and_set_texture_no_offset(&gHudDL, texPtr, flags & ~RENDER_Z_COMPARE);
|
||||
material_set_no_tex_offset(&gHudDL, texPtr, flags & ~RENDER_Z_COMPARE);
|
||||
gSPVertexDKR(gHudDL++, OS_PHYSICAL_TO_K0(verts), numVerts, 0);
|
||||
if (texPtr == NULL) {
|
||||
textureEnabled = TRIN_DISABLE_TEXTURE;
|
||||
|
||||
+7
-4
@@ -5,10 +5,13 @@
|
||||
#include "structs.h"
|
||||
#include <ultra64.h>
|
||||
|
||||
#define HUD_ELEMENT_MODEL 0x0000
|
||||
#define HUD_ELEMENT_OBJECT 0x4000
|
||||
#define HUD_ELEMENT_SPRITE 0x8000
|
||||
#define HUD_ELEMENT_TEXTURE 0xC000
|
||||
#define ASSET_MASK_MODEL 0x0000
|
||||
#define ASSET_MASK_OBJECT 0x4000
|
||||
#define ASSET_MASK_SPRITE 0x8000
|
||||
#define ASSET_MASK_TEXTURE 0xC000
|
||||
|
||||
#define ASSET_MASK_TEX2D 0x0000
|
||||
#define ASSET_MASK_TEX3D 0x8000
|
||||
|
||||
#define HUD_EGG_TOTAL 3
|
||||
|
||||
|
||||
+36
-36
@@ -2301,7 +2301,7 @@ void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s
|
||||
gDPPipeSync((*dList)++);
|
||||
gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(gMenuGeometry[gWoodPanelCount].vertices[gMenuTrisFlip]), 20, 0);
|
||||
gSPPolygon((*dList)++, OS_PHYSICAL_TO_K0(gMenuGeometry[gWoodPanelCount].triangles[gMenuTrisFlip]), 10, i);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
} else {
|
||||
gMenuGeometry[gWoodPanelCount].unk18[gMenuTrisFlip] = 0;
|
||||
}
|
||||
@@ -2342,7 +2342,7 @@ void func_80080BC8(Gfx **dList) {
|
||||
}
|
||||
gWoodPanelCount = 0;
|
||||
gMenuTrisFlip = 1 - gMenuTrisFlip;
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2444,7 +2444,7 @@ void func_80080E90(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s
|
||||
|
||||
gDPPipeSync((*dList)++);
|
||||
gDPSetPrimColor((*dList)++, 0, 0, 255, 255, 255, 255);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
}
|
||||
|
||||
void init_save_data(void) {
|
||||
@@ -2947,7 +2947,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
case 1:
|
||||
if (shouldResetRenderSettings) {
|
||||
shouldResetRenderSettings = FALSE;
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
sMenuGuiOpacity = elems->opacity;
|
||||
menu_timestamp_render(*elems->t.numberU16, xPos - SCREEN_WIDTH_HALF,
|
||||
@@ -2957,7 +2957,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
case 2: // Number
|
||||
if (shouldResetRenderSettings) {
|
||||
shouldResetRenderSettings = FALSE;
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
menu_number_render(*elems->t.number, xPos - SCREEN_WIDTH_HALF,
|
||||
(-yPos - gPostraceTimestampOffset) + SCREEN_HEIGHT_HALF, elems->filterRed,
|
||||
@@ -2980,7 +2980,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
case 5:
|
||||
if (shouldResetRenderSettings) {
|
||||
shouldResetRenderSettings = FALSE;
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
sprite_anim_off(TRUE);
|
||||
sprite_opaque(FALSE);
|
||||
@@ -3019,7 +3019,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
elems++; // Go onto the next element.
|
||||
}
|
||||
if (shouldResetRenderSettings) {
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
sMenuGuiColourR = 255;
|
||||
sMenuGuiColourG = 255;
|
||||
@@ -3872,7 +3872,7 @@ void func_80084854(UNUSED s32 updateRate) {
|
||||
255);
|
||||
texrect_draw(&sMenuCurrDisplayList, gMenuSelectionArrowLeft, (gMusicVolumeSliderValue >> 1) + 96, 160, 255, 255,
|
||||
255, 255);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
set_text_background_colour(0, 0, 0, 0);
|
||||
|
||||
// j must be here.
|
||||
@@ -5495,7 +5495,7 @@ s32 menu_boot_loop(s32 updateRate) {
|
||||
|
||||
if (y < 300) {
|
||||
texrect_draw(&sMenuCurrDisplayList, sGameTitleTileOffsets, SCREEN_WIDTH_HALF, y, 255, 255, 255, 255);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
|
||||
return out;
|
||||
@@ -5674,7 +5674,7 @@ void pakmenu_render(UNUSED s32 updateRate) {
|
||||
if ((gOptionBlinkTimer & 8) != 0) {
|
||||
texrect_draw(&sMenuCurrDisplayList, gMenuSelectionArrowDown, SCREEN_WIDTH_HALF, yPos + 8, 255, 255, 255,
|
||||
255);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
} else {
|
||||
set_text_font(ASSET_FONTS_FUNFONT);
|
||||
@@ -6831,7 +6831,7 @@ void charselect_render_text(UNUSED s32 updateRate) {
|
||||
draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, yPos, "OK?", ALIGN_MIDDLE_CENTER);
|
||||
#endif
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
update_camera_fov(40.0f);
|
||||
}
|
||||
}
|
||||
@@ -8586,7 +8586,7 @@ s32 func_8008F618(Gfx **dList, MatrixS **mtx) {
|
||||
camDisableUserView(0, TRUE);
|
||||
camera_init_tracks_menu(dList, mtx);
|
||||
set_ortho_matrix_view(dList, mtx);
|
||||
reset_render_settings(dList);
|
||||
rendermode_reset(dList);
|
||||
gDPPipeSync((*dList)++);
|
||||
sp7C = gTrackSelectX;
|
||||
temp2 = -gTrackSelectY;
|
||||
@@ -8651,7 +8651,7 @@ s32 func_8008F618(Gfx **dList, MatrixS **mtx) {
|
||||
flags = RENDER_VTX_ALPHA | RENDER_Z_UPDATE;
|
||||
}
|
||||
|
||||
load_and_set_texture(dList, bgTexture, flags, 0);
|
||||
material_set(dList, bgTexture, flags, 0);
|
||||
gSPVertexDKR((*dList)++, OS_PHYSICAL_TO_K0(vertices), 4, 0);
|
||||
gSPPolygon((*dList)++, OS_PHYSICAL_TO_K0(triangles), 2, hasTexture);
|
||||
curIndex = data[0];
|
||||
@@ -8748,7 +8748,7 @@ void trackmenu_render_2D(s32 x, s32 y, char *hubName, char *trackName, s32 rectO
|
||||
texrect_draw_scaled(&sMenuCurrDisplayList, arg7, xTemp, yTemp, sp58, sp54, (rectOpacity & 0xFF) | ~0xFF,
|
||||
0);
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
}
|
||||
gMenuImages[imageId].x = x;
|
||||
@@ -8769,7 +8769,7 @@ void trackmenu_render_2D(s32 x, s32 y, char *hubName, char *trackName, s32 rectO
|
||||
offsets[(i << 1) + 1] + yTemp - 1, 255, 255, 255, 255);
|
||||
}
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
@@ -8879,7 +8879,7 @@ void func_8008FF1C(UNUSED s32 updateRate) {
|
||||
camDisableUserView(0, TRUE);
|
||||
menu_camera_centre();
|
||||
set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
gDPPipeSync(sMenuCurrDisplayList++);
|
||||
D_80126928 = 64;
|
||||
D_8012692C = 32;
|
||||
@@ -9317,7 +9317,7 @@ void trackmenu_setup_render(UNUSED s32 updateRate) {
|
||||
texrect_draw(&sMenuCurrDisplayList, gRaceSelectionImages[gPlayerSelectVehicle[PLAYER_TWO] * 3], 176,
|
||||
y, 255, 255, 255, sMenuGuiOpacity);
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
if (gNumberOfActivePlayers <= 2 && !sp74) {
|
||||
// Draw border around vehicle images
|
||||
gMenuImages[7].y = -52.0f;
|
||||
@@ -9411,7 +9411,7 @@ void trackmenu_setup_render(UNUSED s32 updateRate) {
|
||||
trackmenu_staff_beaten(gTrackIdForPreview) >= 0) {
|
||||
texrect_draw(&sMenuCurrDisplayList, gRaceSelectionTTTexture, 204, regionOffset + 122, 255, 255, 255,
|
||||
sMenuGuiOpacity);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
if (gTrackSelectCursorX != 5) {
|
||||
if ((gMenuStage == TRACKMENU_OPT_2 && !sp74) || (gMenuStage == TRACKMENU_OPT_3 && sp74) ||
|
||||
@@ -9933,7 +9933,7 @@ void adventuretrack_render(UNUSED s32 updateRate, s32 arg1, s32 arg2) {
|
||||
}
|
||||
texrect_draw(&sMenuCurrDisplayList, gRaceSelectionImages[gPlayerSelectVehicle[0] * 3], 149, y, 255,
|
||||
255, 255, 255);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
gMenuImages[7].x = 21.0f;
|
||||
gMenuImages[7].y = -52.0f;
|
||||
menu_element_render(7);
|
||||
@@ -11286,7 +11286,7 @@ void results_render(UNUSED s32 updateRate, f32 opacity) {
|
||||
set_text_colour(255, 255, 192, 96, 255);
|
||||
draw_text(&sMenuCurrDisplayList, time - 34, y2 + offsetY + 2, gRacePlacementsArray[spA0], ALIGN_MIDDLE_CENTER);
|
||||
#endif
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
sprite_anim_off(TRUE);
|
||||
sprite_opaque(FALSE);
|
||||
sMenuGuiColourR = 255;
|
||||
@@ -12642,7 +12642,7 @@ void ghostmenu_render(UNUSED s32 updateRate) {
|
||||
}
|
||||
texrect_draw_scaled(&sMenuCurrDisplayList, vehicleSelectTex, (gGhostDataElementPositions[4] + 40),
|
||||
(gGhostDataElementPositions[5] + y), 0.625f, 0.625f, COLOUR_RGBA32(255, 255, 255, 255), 0);
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
gMenuImages[7].x = (gGhostDataElementPositions[6] - SCREEN_HEIGHT_HALF);
|
||||
gMenuImages[7].y = ((-gGhostDataElementPositions[7] - y) + heightAdjust + SCREEN_HEIGHT_HALF);
|
||||
gMenuImages[7].scale = 0.075f;
|
||||
@@ -12696,7 +12696,7 @@ void ghostmenu_render(UNUSED s32 updateRate) {
|
||||
texrect_draw(&sMenuCurrDisplayList, gMenuSelectionArrowUp, SCREEN_WIDTH_HALF + 1, 54, 0, 0, 0, 128);
|
||||
texrect_draw(&sMenuCurrDisplayList, gMenuSelectionArrowUp, SCREEN_WIDTH_HALF - 1, 52, 255, 255, 255, 255);
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13024,7 +13024,7 @@ void credits_fade(s32 x1, s32 y1, s32 x2, s32 y2, s32 a) {
|
||||
gDPPipeSync(sMenuCurrDisplayList++);
|
||||
gDPSetPrimColor(sMenuCurrDisplayList++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
|
||||
#if REGION != REGION_JP
|
||||
@@ -13087,7 +13087,7 @@ s32 menu_credits_loop(s32 updateRate) {
|
||||
(((coss_s16(var_s5) * var_s4) >> 16) + textPos) - 20, 255, 255, 255, 255);
|
||||
var_s5 += 0x1999;
|
||||
}
|
||||
reset_render_settings(&sMenuCurrDisplayList);
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
|
||||
if (D_80126BE0 != FALSE) {
|
||||
@@ -13675,16 +13675,16 @@ void menu_assetgroup_free(s16 *assetGroup) {
|
||||
void menu_asset_free(s32 assetID) {
|
||||
if (gMenuAssetActive[assetID]) {
|
||||
if (gMenuAssets[assetID] != NULL) {
|
||||
if (((*gAssetsMenuElementIds)[assetID] & HUD_ELEMENT_TEXTURE) == HUD_ELEMENT_TEXTURE &&
|
||||
if (((*gAssetsMenuElementIds)[assetID] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE &&
|
||||
gMenuAssets[assetID] != NULL) {
|
||||
mempool_free_timer(0);
|
||||
free_texture(gMenuAssets[assetID]);
|
||||
tex_free(gMenuAssets[assetID]);
|
||||
mempool_free_timer(2);
|
||||
} else {
|
||||
if ((*gAssetsMenuElementIds)[assetID] & HUD_ELEMENT_SPRITE) {
|
||||
free_sprite((Sprite *) (u32) gMenuAssets[assetID]);
|
||||
if ((*gAssetsMenuElementIds)[assetID] & ASSET_MASK_SPRITE) {
|
||||
sprite_free((Sprite *) (u32) gMenuAssets[assetID]);
|
||||
} else {
|
||||
if ((*gAssetsMenuElementIds)[assetID] & HUD_ELEMENT_OBJECT) {
|
||||
if ((*gAssetsMenuElementIds)[assetID] & ASSET_MASK_OBJECT) {
|
||||
free_object((Object *) (u32) gMenuAssets[assetID]);
|
||||
} else {
|
||||
free_3d_model((ObjectModel **) (u32) gMenuAssets[assetID]);
|
||||
@@ -13743,11 +13743,11 @@ void menu_asset_load(s32 assetID) {
|
||||
if (!gMenuAssetActive[assetID]) {
|
||||
i = (*gAssetsMenuElementIds)[assetID];
|
||||
|
||||
if ((i & HUD_ELEMENT_TEXTURE) == HUD_ELEMENT_TEXTURE) {
|
||||
if ((i & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) {
|
||||
gMenuAssets[assetID] = (TextureHeader *) load_texture(i & 0x3FFF);
|
||||
} else if (i & HUD_ELEMENT_SPRITE) {
|
||||
} else if (i & ASSET_MASK_SPRITE) {
|
||||
gMenuAssets[assetID] = (TextureHeader *) func_8007C12C(i & 0x3FFF, 0);
|
||||
} else if (i & HUD_ELEMENT_OBJECT) {
|
||||
} else if (i & ASSET_MASK_OBJECT) {
|
||||
if (gMenuElementIdCount) {} // Fakematch
|
||||
entry.objectID = i & 0xFFFF;
|
||||
entry.size = sizeof(LevelObjectEntryCommon);
|
||||
@@ -13814,8 +13814,8 @@ void menu_element_render(s32 elementID) {
|
||||
ObjectModel **model;
|
||||
|
||||
if (gMenuAssets[gMenuImages[elementID].spriteID] != NULL) {
|
||||
if (((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & HUD_ELEMENT_TEXTURE) != HUD_ELEMENT_TEXTURE) {
|
||||
if ((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & HUD_ELEMENT_OBJECT) {
|
||||
if (((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & ASSET_MASK_TEXTURE) != ASSET_MASK_TEXTURE) {
|
||||
if ((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & ASSET_MASK_OBJECT) {
|
||||
if (0) {} // Fakematch
|
||||
object = (Object *) gMenuAssets[gMenuImages[elementID].spriteID];
|
||||
asset = (MenuAsset *) &gMenuImages[elementID];
|
||||
@@ -13833,7 +13833,7 @@ void menu_element_render(s32 elementID) {
|
||||
object->segment.object.opacity = sMenuGuiOpacity;
|
||||
render_object(&sMenuCurrDisplayList, &sMenuCurrHudMat, &sMenuCurrHudVerts, object);
|
||||
} else {
|
||||
if ((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & HUD_ELEMENT_SPRITE) {
|
||||
if ((*gAssetsMenuElementIds)[gMenuImages[elementID].spriteID] & ASSET_MASK_SPRITE) {
|
||||
sprite = (Sprite *) gMenuAssets[gMenuImages[elementID].spriteID];
|
||||
gDPSetPrimColor(sMenuCurrDisplayList++, 0, 0, sMenuGuiColourR, sMenuGuiColourG, sMenuGuiColourB,
|
||||
sMenuGuiOpacity);
|
||||
@@ -13904,7 +13904,7 @@ void render_track_selection_viewport_border(ObjectModel *objMdl) {
|
||||
texEnabled = TRUE;
|
||||
texOffset = objMdl->batches[i].unk7 << 14;
|
||||
}
|
||||
load_and_set_texture(&sMenuCurrDisplayList, tex, flags, texOffset);
|
||||
material_set(&sMenuCurrDisplayList, tex, flags, texOffset);
|
||||
|
||||
gSPVertexDKR(sMenuCurrDisplayList++, OS_PHYSICAL_TO_K0(verts), numVerts, 0);
|
||||
gSPPolygon(sMenuCurrDisplayList++, OS_PHYSICAL_TO_K0(tris), numTris, texEnabled);
|
||||
|
||||
+8
-8
@@ -106,8 +106,8 @@ Object_68 *object_model_init(s32 modelID, s32 flags) {
|
||||
|
||||
// Check if the model already exists in the cache.
|
||||
for (i = 0; i < gModelCacheCount; i++) {
|
||||
if (modelID == gModelCache[MODELCACHE_ID(i)]) {
|
||||
objMdl = (ObjectModel *) gModelCache[MODELCACHE_DATA(i)];
|
||||
if (modelID == gModelCache[ASSETCACHE_ID(i)]) {
|
||||
objMdl = (ObjectModel *) gModelCache[ASSETCACHE_PTR(i)];
|
||||
ret = model_init_type(objMdl, flags);
|
||||
if (ret != NULL) {
|
||||
objMdl->references++;
|
||||
@@ -185,8 +185,8 @@ Object_68 *object_model_init(s32 modelID, s32 flags) {
|
||||
if ((func_80060EA8(objMdl) == 0) && (func_80061A00(objMdl, modelID) == 0)) {
|
||||
ret = model_init_type(objMdl, flags);
|
||||
if (ret != NULL) {
|
||||
gModelCache[MODELCACHE_ID(cacheIndex)] = modelID;
|
||||
gModelCache[MODELCACHE_DATA(cacheIndex)] = (s32) objMdl;
|
||||
gModelCache[ASSETCACHE_ID(cacheIndex)] = modelID;
|
||||
gModelCache[ASSETCACHE_PTR(cacheIndex)] = (s32) objMdl;
|
||||
if (gModelCacheCount < MODEL_LOADED_MAX) {
|
||||
ret->animUpdateTimer = 0;
|
||||
return ret;
|
||||
@@ -314,7 +314,7 @@ void free_3d_model(ObjectModel **modelPtr) {
|
||||
|
||||
modelIndex = -1;
|
||||
for (i = 0; i < gModelCacheCount; i++) {
|
||||
if (model == (ObjectModel *) gModelCache[MODELCACHE_DATA(i)]) {
|
||||
if (model == (ObjectModel *) gModelCache[ASSETCACHE_PTR(i)]) {
|
||||
modelIndex = i;
|
||||
}
|
||||
}
|
||||
@@ -323,8 +323,8 @@ void free_3d_model(ObjectModel **modelPtr) {
|
||||
free_model_data(model);
|
||||
D_8011D628[D_8011D634] = modelIndex;
|
||||
D_8011D634++;
|
||||
gModelCache[MODELCACHE_ID(modelIndex)] = -1;
|
||||
gModelCache[MODELCACHE_DATA(modelIndex)] = -1;
|
||||
gModelCache[ASSETCACHE_ID(modelIndex)] = -1;
|
||||
gModelCache[ASSETCACHE_PTR(modelIndex)] = -1;
|
||||
mempool_free(modelPtr);
|
||||
}
|
||||
}
|
||||
@@ -341,7 +341,7 @@ void free_model_data(ObjectModel *mdl) {
|
||||
do {
|
||||
TextureHeader *header = mdl->textures[textureIndex].texture;
|
||||
if (header != NULL) {
|
||||
free_texture(header);
|
||||
tex_free(header);
|
||||
numTextures = mdl->numberOfTextures;
|
||||
}
|
||||
texturesFreed++;
|
||||
|
||||
@@ -5,9 +5,6 @@
|
||||
#include "PR/gbi.h"
|
||||
#include "structs.h"
|
||||
|
||||
#define MODELCACHE_ID(x) ((x << 1) + 0)
|
||||
#define MODELCACHE_DATA(x) ((x << 1) + 1)
|
||||
|
||||
typedef enum AnimType {
|
||||
MODELTYPE_BASIC, // No shading nor animation
|
||||
MODELTYPE_SHADE, // Model is intended to be shaded.
|
||||
|
||||
+19
-19
@@ -413,12 +413,12 @@ void func_8000B290(void) {
|
||||
for (i = 0; i < 10; i++) {
|
||||
sprite = asset20[i].unk78;
|
||||
if (sprite != NULL) {
|
||||
free_sprite(sprite);
|
||||
sprite_free(sprite);
|
||||
asset20[i].unk78 = NULL;
|
||||
}
|
||||
texture = asset20[i].unk7C;
|
||||
if (texture != NULL) {
|
||||
free_texture(texture);
|
||||
tex_free(texture);
|
||||
asset20[i].unk7C = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1827,7 +1827,7 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) {
|
||||
address = (u32 *) ((uintptr_t) address + sizeOfobj);
|
||||
if (sizeOfobj == 0) {
|
||||
if (D_8011AE50 != NULL) {
|
||||
free_texture((TextureHeader *) D_8011AE50);
|
||||
tex_free((TextureHeader *) D_8011AE50);
|
||||
}
|
||||
objFreeAssets(curObj, assetCount, objType);
|
||||
try_free_object_header(var_a0);
|
||||
@@ -1855,10 +1855,10 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) {
|
||||
newObj = mempool_alloc_pool((MemoryPoolSlot *) gObjectMemoryPool, sizeOfobj);
|
||||
if (newObj == NULL) {
|
||||
if (D_8011AE50 != NULL) {
|
||||
free_texture((TextureHeader *) D_8011AE50);
|
||||
tex_free((TextureHeader *) D_8011AE50);
|
||||
}
|
||||
if (D_8011AE54 != NULL) {
|
||||
free_texture((TextureHeader *) D_8011AE54);
|
||||
tex_free((TextureHeader *) D_8011AE54);
|
||||
}
|
||||
objFreeAssets(curObj, assetCount, objType);
|
||||
try_free_object_header(var_a0);
|
||||
@@ -1925,10 +1925,10 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) {
|
||||
}
|
||||
if (newObj->segment.header->unk56 > 0 && newObj->segment.header->unk56 < 10 && func_8000F99C(newObj)) {
|
||||
if (D_8011AE50 != NULL) {
|
||||
free_texture(D_8011AE50);
|
||||
tex_free(D_8011AE50);
|
||||
}
|
||||
if (D_8011AE54 != NULL) {
|
||||
free_texture(D_8011AE54);
|
||||
tex_free(D_8011AE54);
|
||||
}
|
||||
objFreeAssets(newObj, assetCount, objType);
|
||||
try_free_object_header(var_a0);
|
||||
@@ -1964,13 +1964,13 @@ void objFreeAssets(Object *obj, s32 count, s32 objType) {
|
||||
} else if (objType == OBJECT_MODEL_TYPE_MISC) {
|
||||
for (i = 0; i < count; i++) {
|
||||
if (obj->unk68[i] != NULL) {
|
||||
free_texture((TextureHeader *) (s32) obj->unk68[i]);
|
||||
tex_free((TextureHeader *) (s32) obj->unk68[i]);
|
||||
}
|
||||
}
|
||||
} else { // Sprite
|
||||
for (i = 0; i < count; i++) {
|
||||
if (obj->unk68[i] != NULL) {
|
||||
free_sprite((Sprite *) (s32) obj->unk68[i]);
|
||||
sprite_free((Sprite *) (s32) obj->unk68[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2705,7 +2705,7 @@ void render_misc_model(Object *obj, Vertex *verts, u32 numVertices, Triangle *tr
|
||||
if (tex != NULL) {
|
||||
hasTexture = TRUE;
|
||||
}
|
||||
load_and_set_texture(&gObjectCurrDisplayList, (TextureHeader *) tex, flags, texOffset);
|
||||
material_set(&gObjectCurrDisplayList, (TextureHeader *) tex, flags, texOffset);
|
||||
gSPVertexDKR(gObjectCurrDisplayList++, OS_K0_TO_PHYSICAL(verts), numVertices, 0);
|
||||
gSPPolygon(gObjectCurrDisplayList++, OS_K0_TO_PHYSICAL(triangles), numTriangles, hasTexture);
|
||||
apply_matrix_from_stack(&gObjectCurrDisplayList);
|
||||
@@ -2972,7 +2972,7 @@ void render_3d_model(Object *obj) {
|
||||
if (obj->segment.header->unk71) {
|
||||
gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, obj->shading->unk18, obj->shading->unk19,
|
||||
obj->shading->unk1A, alpha);
|
||||
enable_primitive_colour();
|
||||
tex_primcolour_on();
|
||||
} else if (hasOpacity) {
|
||||
gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, intensity, intensity, intensity, alpha);
|
||||
} else {
|
||||
@@ -2989,7 +2989,7 @@ void render_3d_model(Object *obj) {
|
||||
} else {
|
||||
gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, 255, 255, 255, 255);
|
||||
}
|
||||
disable_primitive_colour();
|
||||
tex_primcolour_off();
|
||||
}
|
||||
if (obj->unk60 != NULL) {
|
||||
obj60_unk0 = obj->unk60->unk0;
|
||||
@@ -3075,11 +3075,11 @@ void render_3d_model(Object *obj) {
|
||||
if (obj->segment.header->unk71) {
|
||||
gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, obj->shading->unk18, obj->shading->unk19,
|
||||
obj->shading->unk1A, alpha);
|
||||
enable_primitive_colour();
|
||||
tex_primcolour_on();
|
||||
}
|
||||
render_mesh(objModel, obj, meshBatch, RENDER_SEMI_TRANSPARENT, spB0);
|
||||
if (obj->segment.header->unk71) {
|
||||
disable_primitive_colour();
|
||||
tex_primcolour_off();
|
||||
}
|
||||
}
|
||||
if (hasOpacity || obj->segment.header->unk71) {
|
||||
@@ -3526,15 +3526,15 @@ void render_racer_magnet(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o
|
||||
mdl = gfxData->objModel;
|
||||
gMagnetEffectObject->curVertData = (Vertex *) gfxData->vertices[gfxData->animationTaskNum];
|
||||
opacity = ((D_8011B078[var_t0].g * 8) & 0x7F) + 0x80;
|
||||
func_8007F594(&gObjectCurrDisplayList, 2, COLOUR_RGBA32(255, 255, 255, opacity),
|
||||
gMagnetColours[racer->magnetModelID]);
|
||||
gfx_init_basic_xlu(&gObjectCurrDisplayList, DRAW_BASIC_2CYCLE, COLOUR_RGBA32(255, 255, 255, opacity),
|
||||
gMagnetColours[racer->magnetModelID]);
|
||||
apply_object_shear_matrix(&gObjectCurrDisplayList, &gObjectCurrMatrix, gMagnetEffectObject, obj, shear);
|
||||
gObjectTexAnim = TRUE;
|
||||
render_mesh(mdl, gMagnetEffectObject, 0, RENDER_SEMI_TRANSPARENT, 0);
|
||||
gObjectTexAnim = FALSE;
|
||||
gDkrInsertMatrix(gObjectCurrDisplayList++, 0, G_MTX_DKR_INDEX_0);
|
||||
gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, 255, 255, 255, 255);
|
||||
reset_render_settings(&gObjectCurrDisplayList);
|
||||
rendermode_reset(&gObjectCurrDisplayList);
|
||||
*dList = gObjectCurrDisplayList;
|
||||
*mtx = gObjectCurrMatrix;
|
||||
*vtxList = gObjectCurrVertexList;
|
||||
@@ -3623,7 +3623,7 @@ s32 render_mesh(ObjectModel *objModel, Object *obj, s32 startIndex, s32 flags, s
|
||||
texToSetFlags |= RENDER_SEMI_TRANSPARENT;
|
||||
}
|
||||
if (gObjectTexAnim == FALSE) {
|
||||
load_and_set_texture(&dList, texToSet, texToSetFlags, texOffset);
|
||||
material_set(&dList, texToSet, texToSetFlags, texOffset);
|
||||
} else {
|
||||
texToSet = set_animated_texture_header(texToSet, texOffset);
|
||||
gDkrDmaDisplayList(gObjectCurrDisplayList++, OS_K0_TO_PHYSICAL(texToSet->cmd),
|
||||
@@ -5062,7 +5062,7 @@ Object *get_racer_object_by_port(s32 index) {
|
||||
UNUSED void debug_render_checkpoints(Gfx **dList, MatrixS **mtx, Vertex **vtx) {
|
||||
s32 i;
|
||||
|
||||
load_and_set_texture_no_offset(dList, NULL, RENDER_Z_COMPARE);
|
||||
material_set_no_tex_offset(dList, NULL, RENDER_Z_COMPARE);
|
||||
if (gNumberOfCheckpoints > 3) {
|
||||
for (i = 0; i < gNumberOfCheckpoints; i++) {
|
||||
// Ground path
|
||||
|
||||
+11
-11
@@ -178,7 +178,7 @@ void free_unknown_particle_sprites(void) {
|
||||
|
||||
if (D_800E2E60 != NULL) {
|
||||
for (i = 0; i < D_800E2E64; i++) {
|
||||
free_sprite(D_800E2E60[i]);
|
||||
sprite_free(D_800E2E60[i]);
|
||||
}
|
||||
mempool_free(D_800E2E60);
|
||||
D_800E2E60 = 0;
|
||||
@@ -1070,7 +1070,7 @@ void setup_particle_velocity(Particle *particle, Object *obj, ParticleEmitter *e
|
||||
}
|
||||
|
||||
switch (behaviour->flags & (PARTICLE_VELOCITY_RELATIVE_TO_PARENT | PARTICLE_VELOCITY_ABSOLUTE |
|
||||
PARTICLE_VELOCITY_SCALED_FROM_PARENT)) {
|
||||
PARTICLE_VELOCITY_SCALED_FROM_PARENT)) {
|
||||
case PARTICLE_VELOCITY_RELATIVE_TO_PARENT:
|
||||
particle->velocity.x += obj->segment.x_velocity;
|
||||
particle->velocity.y += obj->segment.y_velocity;
|
||||
@@ -1820,7 +1820,7 @@ void particle_deallocate(Particle *particle) {
|
||||
case PARTICLE_KIND_SPRITE:
|
||||
if (gNumSpriteParticles > 0) {
|
||||
if (particle->model) {
|
||||
free_sprite((Sprite *) particle->sprite);
|
||||
sprite_free((Sprite *) particle->sprite);
|
||||
}
|
||||
gNumSpriteParticles--;
|
||||
particle->kind = PARTICLE_KIND_NONE;
|
||||
@@ -1830,7 +1830,7 @@ void particle_deallocate(Particle *particle) {
|
||||
if (gNumTriangleParticles > 0) {
|
||||
tex = particle->model->texture;
|
||||
if (tex != NULL) {
|
||||
free_texture(tex);
|
||||
tex_free(tex);
|
||||
}
|
||||
gNumTriangleParticles--;
|
||||
particle->kind = PARTICLE_KIND_NONE;
|
||||
@@ -1840,7 +1840,7 @@ void particle_deallocate(Particle *particle) {
|
||||
if (gNumRectangleParticles > 0) {
|
||||
tex = particle->model->texture;
|
||||
if (tex != NULL) {
|
||||
free_texture(tex);
|
||||
tex_free(tex);
|
||||
}
|
||||
gNumRectangleParticles--;
|
||||
particle->kind = PARTICLE_KIND_NONE;
|
||||
@@ -1850,7 +1850,7 @@ void particle_deallocate(Particle *particle) {
|
||||
if (gNumLineParticles > 0) {
|
||||
tex = particle->model->texture;
|
||||
if (tex != NULL) {
|
||||
free_texture(tex);
|
||||
tex_free(tex);
|
||||
}
|
||||
gNumLineParticles--;
|
||||
particle->kind = PARTICLE_KIND_NONE;
|
||||
@@ -1861,7 +1861,7 @@ void particle_deallocate(Particle *particle) {
|
||||
delete_point_particle_from_sequence((PointParticle *) particle);
|
||||
tex = particle->model->texture;
|
||||
if (tex != NULL) {
|
||||
free_texture(tex);
|
||||
tex_free(tex);
|
||||
}
|
||||
gNumPointParticles--;
|
||||
particle->kind = PARTICLE_KIND_NONE;
|
||||
@@ -2418,7 +2418,7 @@ void render_particle(Particle *particle, Gfx **dList, MatrixS **mtx, Vertex **vt
|
||||
model = particle->model;
|
||||
if (model->texture) {
|
||||
camera_push_model_mtx(dList, mtx, &particle->trans, 1.0f, 0.0f);
|
||||
load_and_set_texture(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
material_set(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(model->vertices), model->vertexCount, 0);
|
||||
gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(model->triangles), model->triangleCount, TRIN_ENABLE_TEXTURE);
|
||||
apply_matrix_from_stack(dList);
|
||||
@@ -2446,7 +2446,7 @@ void render_particle(Particle *particle, Gfx **dList, MatrixS **mtx, Vertex **vt
|
||||
temp = ((PointParticle *) particle)->modelFrame;
|
||||
temp <<= 3;
|
||||
tempvtx = &model->vertices[temp];
|
||||
load_and_set_texture(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
material_set(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(tempvtx), model->vertexCount, 0);
|
||||
gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(model->triangles), model->triangleCount, TRIN_ENABLE_TEXTURE);
|
||||
if (particle->brightness != 255) {
|
||||
@@ -2457,12 +2457,12 @@ void render_particle(Particle *particle, Gfx **dList, MatrixS **mtx, Vertex **vt
|
||||
gDPSetPrimColor((*dList)++, 0, 0, particle->brightness, particle->brightness, particle->brightness, alpha);
|
||||
if (particle->lineCreationPhase >= 2) {
|
||||
model = particle->model;
|
||||
load_and_set_texture(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
material_set(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(model->vertices), model->vertexCount, 0);
|
||||
gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(model->triangles), model->triangleCount, TRIN_ENABLE_TEXTURE);
|
||||
} else if (particle->lineCreationPhase > 0) {
|
||||
model = particle->model;
|
||||
load_and_set_texture(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
material_set(dList, model->texture, renderFlags, particle->textureFrame << 8);
|
||||
gSPVertexDKR((*dList)++, OS_K0_TO_PHYSICAL(model->vertices), 4, 0);
|
||||
gSPPolygon((*dList)++, OS_K0_TO_PHYSICAL(&model->triangles[model->triangleCount]), 1,
|
||||
TRIN_ENABLE_TEXTURE);
|
||||
|
||||
+135
-92
File diff suppressed because it is too large
Load Diff
+32
-19
@@ -9,6 +9,14 @@
|
||||
#include "memory.h"
|
||||
#include <ultra64.h>
|
||||
|
||||
#define TEX_TABLE_2D 0
|
||||
#define TEX_TABLE_3D 1
|
||||
|
||||
// Gets the texture type. E.g: rgba16
|
||||
#define TEX_FORMAT(x) (x & 0xF)
|
||||
// Gets the texture render mode type. E.g: transparent
|
||||
#define TEX_RENDERMODE(x) ((x >> 4) & 0xF)
|
||||
|
||||
/**
|
||||
* First two entries are combine mode.
|
||||
* Third entry is othermode high word. (Most importantly, the cycle mode and texture filter settings)
|
||||
@@ -104,8 +112,13 @@ typedef enum HeaderFlags {
|
||||
HEADER_FLAGS_WATER_EFFECT = (1 << 4),
|
||||
} HeaderFlags;
|
||||
|
||||
#define TEX_TABLE_2D 0
|
||||
#define TEX_TABLE_3D 1
|
||||
typedef enum BasicRenderIDs {
|
||||
DRAW_BASIC_ZB_OFF,
|
||||
DRAW_BASIC_1CYCLE,
|
||||
DRAW_BASIC_2CYCLE,
|
||||
|
||||
DRAW_BASIC_IDS
|
||||
} BasicRenderIDs;
|
||||
|
||||
typedef struct TextureCacheEntry {
|
||||
s32 id;
|
||||
@@ -127,20 +140,20 @@ typedef struct TempTexHeader {
|
||||
|
||||
void tex_disable_modes(s32 flags);
|
||||
void tex_enable_modes(s32 flags);
|
||||
s32 get_loaded_2D_textures(void);
|
||||
s32 get_loaded_3D_textures(void);
|
||||
s32 func_8007AE64(void);
|
||||
s32 tex_get_table_2D(void);
|
||||
s32 tex_get_table_3D(void);
|
||||
s32 sprite_table_size(void);
|
||||
void set_texture_colour_tag(s32 tagID);
|
||||
void reset_render_settings(Gfx **dList);
|
||||
void enable_primitive_colour(void);
|
||||
void disable_primitive_colour(void);
|
||||
void load_and_set_texture_no_offset(Gfx **dList, TextureHeader *texhead, u32 flags);
|
||||
void rendermode_reset(Gfx **dList);
|
||||
void tex_primcolour_on(void);
|
||||
void tex_primcolour_off(void);
|
||||
void material_set_no_tex_offset(Gfx **dList, TextureHeader *texhead, u32 flags);
|
||||
void sprite_opaque(s32 setting);
|
||||
s32 func_8007EF64(s16 arg0);
|
||||
void load_and_set_texture(Gfx **dList, TextureHeader *texhead, s32 flags, s32 texOffset);
|
||||
void free_sprite(Sprite *sprite);
|
||||
void free_texture(TextureHeader *tex);
|
||||
void func_8007BF34(Gfx **dList, s32 flags);
|
||||
s32 tex_palette_id(s16 paletteID);
|
||||
void material_set(Gfx **dList, TextureHeader *texhead, s32 flags, s32 texOffset);
|
||||
void sprite_free(Sprite *sprite);
|
||||
void tex_free(TextureHeader *tex);
|
||||
void material_load_simple(Gfx **dList, s32 flags);
|
||||
|
||||
// There might be a file boundary here.
|
||||
void tex_animate_texture(TextureHeader *texture, u32 *triangleBatchInfoFlags, s32 *arg2, s32 updateRate);
|
||||
@@ -149,17 +162,17 @@ void init_pulsating_light_data(PulsatingLightData *data);
|
||||
void update_pulsating_light_data(PulsatingLightData *data, s32 timeDelta);
|
||||
TextureHeader *set_animated_texture_header(TextureHeader *texHead, s32 offset);
|
||||
TextureHeader *load_texture(s32 arg0); // Non Matching
|
||||
s32 get_texture_size_from_id(s32 id); // Non Matching
|
||||
s32 func_8007C860(s32 spriteIndex); // Non Matching
|
||||
s32 tex_asset_size(s32 id); // Non Matching
|
||||
s32 tex_cache_asset_id(s32 cacheID); // Non Matching
|
||||
s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut,
|
||||
s32 *sizeOut); // Non Matching
|
||||
void func_8007F594(Gfx **dList, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching
|
||||
void gfx_init_basic_xlu(Gfx **dList, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching
|
||||
void func_8007CA68(s32 spriteID, s32 arg1, s32 *arg2, s32 *arg3, s32 *arg4); // Non Matching
|
||||
MemoryPoolSlot *func_8007C12C(s32 spriteID, s32 arg1); // Non Matching
|
||||
void tex_init_textures(void); // Non Matching
|
||||
void load_blinking_lights_texture(Gfx **dList, TextureHeader *texture_list, u32 flags,
|
||||
void material_set_blinking_lights(Gfx **dList, TextureHeader *texture_list, u32 flags,
|
||||
s32 texture_index); // Non Matching
|
||||
void build_tex_display_list(TextureHeader *tex, Gfx *_dList); // Non Matching
|
||||
void material_init(TextureHeader *tex, Gfx *_dList); // Non Matching
|
||||
void func_8007CDC0(Sprite *sprite1, Sprite *sprite2, s32 arg2); // Non Matching
|
||||
|
||||
#endif
|
||||
|
||||
+13
-13
@@ -350,7 +350,7 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, Triangle **tris, s32
|
||||
flip = TRUE;
|
||||
}
|
||||
#endif
|
||||
reset_render_settings(&gSceneCurrDisplayList);
|
||||
rendermode_reset(&gSceneCurrDisplayList);
|
||||
gDkrDisableBillboard(gSceneCurrDisplayList++);
|
||||
gSPClearGeometryMode(gSceneCurrDisplayList++, G_CULL_FRONT);
|
||||
gDPSetBlendColor(gSceneCurrDisplayList++, 0, 0, 0, 0x64);
|
||||
@@ -513,7 +513,7 @@ void func_8002581C(u8 *segmentIds, s32 numberOfSegments, s32 viewportIndex) {
|
||||
D_8011D490[1] = D_8011D474[viewportIndex].unk4;
|
||||
D_8011D480[0] = D_8011D474[viewportIndex].unk8;
|
||||
D_8011D480[1] = D_8011D474[viewportIndex].unkC;
|
||||
load_and_set_texture_no_offset(&gSceneCurrDisplayList, NULL, RENDER_ANTI_ALIASING | RENDER_Z_COMPARE);
|
||||
material_set_no_tex_offset(&gSceneCurrDisplayList, NULL, RENDER_ANTI_ALIASING | RENDER_Z_COMPARE);
|
||||
D_8011D49C = 0;
|
||||
D_8011D49E = 0;
|
||||
yCameraSins = sins_f(gSceneActiveCamera->trans.rotation.y_rotation * -1);
|
||||
@@ -1355,8 +1355,8 @@ void draw_gradient_background(void) {
|
||||
headerRed1 = gCurrentLevelHeader2->BGColourBottomR;
|
||||
headerGreen1 = gCurrentLevelHeader2->BGColourBottomG;
|
||||
headerBlue1 = gCurrentLevelHeader2->BGColourBottomB;
|
||||
reset_render_settings(&gSceneCurrDisplayList);
|
||||
load_and_set_texture_no_offset(&gSceneCurrDisplayList, 0, RENDER_FOG_ACTIVE);
|
||||
rendermode_reset(&gSceneCurrDisplayList);
|
||||
material_set_no_tex_offset(&gSceneCurrDisplayList, 0, RENDER_FOG_ACTIVE);
|
||||
gSPVertexDKR(gSceneCurrDisplayList++, OS_PHYSICAL_TO_K0(verts), 4, 0);
|
||||
gSPPolygon(gSceneCurrDisplayList++, OS_PHYSICAL_TO_K0(tris), 2, 0);
|
||||
set_twenty = 20;
|
||||
@@ -1552,7 +1552,7 @@ void render_level_geometry_and_objects(void) {
|
||||
objectsVisible[1] = TRUE;
|
||||
}
|
||||
|
||||
reset_render_settings(&gSceneCurrDisplayList);
|
||||
rendermode_reset(&gSceneCurrDisplayList);
|
||||
sort_objects_by_dist(sp160, objCount - 1);
|
||||
visibleFlags = OBJ_FLAGS_INVIS_PLAYER1 << (get_current_viewport() & 1);
|
||||
|
||||
@@ -1616,8 +1616,8 @@ void render_level_geometry_and_objects(void) {
|
||||
func_800BA8E4(&gSceneCurrDisplayList, &gSceneCurrMatrix, get_current_viewport());
|
||||
}
|
||||
|
||||
reset_render_settings(&gSceneCurrDisplayList);
|
||||
load_and_set_texture_no_offset(&gSceneCurrDisplayList, 0, RENDER_FOG_ACTIVE | RENDER_Z_COMPARE);
|
||||
rendermode_reset(&gSceneCurrDisplayList);
|
||||
material_set_no_tex_offset(&gSceneCurrDisplayList, 0, RENDER_FOG_ACTIVE | RENDER_Z_COMPARE);
|
||||
func_80012C3C(&gSceneCurrDisplayList);
|
||||
|
||||
// Particles and FX
|
||||
@@ -1752,12 +1752,12 @@ void render_level_segment(s32 segmentId, s32 nonOpaque) {
|
||||
if (batchFlags & BATCH_FLAGS_PULSATING_LIGHTS) {
|
||||
color = gCurrentLevelHeader2->pulseLightData->outColorValue;
|
||||
gDPSetPrimColor(gSceneCurrDisplayList++, 0, 0, color, color, color, color);
|
||||
load_blinking_lights_texture(&gSceneCurrDisplayList, texture, batchFlags, texOffset);
|
||||
material_set_blinking_lights(&gSceneCurrDisplayList, texture, batchFlags, texOffset);
|
||||
gSPVertexDKR(gSceneCurrDisplayList++, OS_PHYSICAL_TO_K0(vertices), numberVertices, 0);
|
||||
gSPPolygon(gSceneCurrDisplayList++, OS_PHYSICAL_TO_K0(triangles), numberTriangles, TRIN_ENABLE_TEXTURE);
|
||||
gDPSetPrimColor(gSceneCurrDisplayList++, 0, 0, 255, 255, 255, 255);
|
||||
} else {
|
||||
load_and_set_texture(&gSceneCurrDisplayList, texture, batchFlags, texOffset);
|
||||
material_set(&gSceneCurrDisplayList, texture, batchFlags, texOffset);
|
||||
batchFlags = TRUE;
|
||||
if (texture == NULL) {
|
||||
batchFlags = FALSE;
|
||||
@@ -2572,12 +2572,12 @@ void free_track(void) {
|
||||
free_waves();
|
||||
}
|
||||
for (i = 0; i < gCurrentLevelModel->numberOfTextures; i++) {
|
||||
free_texture(gCurrentLevelModel->textures[i].texture);
|
||||
tex_free(gCurrentLevelModel->textures[i].texture);
|
||||
}
|
||||
mempool_free(gTrackModelHeap);
|
||||
mempool_free(D_8011D370);
|
||||
mempool_free(D_8011D374);
|
||||
free_sprite((Sprite *) gCurrentLevelModel->minimapSpriteIndex);
|
||||
sprite_free((Sprite *) gCurrentLevelModel->minimapSpriteIndex);
|
||||
for (i = 0; i < ARRAY_COUNT(gShadowHeapData); i++) {
|
||||
mempool_free(gShadowHeapData[i]);
|
||||
mempool_free(gShadowHeapTris[i]);
|
||||
@@ -2736,7 +2736,7 @@ void shadow_render(Object *obj, ShadowData *shadow) {
|
||||
gDPSetPrimColor(gSceneCurrDisplayList++, 0, 0, 255, 255, 255, alpha);
|
||||
}
|
||||
while (i < shadow->meshEnd) {
|
||||
load_and_set_texture_no_offset(&gSceneCurrDisplayList, gCurrShadowHeapData[i].texture, flags);
|
||||
material_set_no_tex_offset(&gSceneCurrDisplayList, gCurrShadowHeapData[i].texture, flags);
|
||||
// I hope we can clean this part up.
|
||||
tri2 = triCount = gCurrShadowHeapData[i].triCount; // Fakematch
|
||||
vtx2 = vtxCount = gCurrShadowHeapData[i].vtxCount;
|
||||
@@ -2786,7 +2786,7 @@ void watereffect_render(Object *obj, WaterEffect *effect) {
|
||||
gCurrShadowTris = gShadowHeapTris[gWaterEffectIndex];
|
||||
gCurrShadowVerts = gShadowHeapVerts[gWaterEffectIndex];
|
||||
while (i < effect->meshEnd) {
|
||||
load_and_set_texture_no_offset(&gSceneCurrDisplayList, gCurrShadowHeapData[i].texture, flags);
|
||||
material_set_no_tex_offset(&gSceneCurrDisplayList, gCurrShadowHeapData[i].texture, flags);
|
||||
triCount = gCurrShadowHeapData[i].triCount; // Fakematch
|
||||
vtxCount = gCurrShadowHeapData[i].vtxCount; // Fakematch
|
||||
numTris = gCurrShadowHeapData[i + 1].triCount - gCurrShadowHeapData[i].triCount;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user