mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Document camera and sprites (#614)
This commit is contained in:
@@ -7,9 +7,9 @@ All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fd
|
||||
<!-- README_SCORE_SUMMARY_BEGIN -->
|
||||
As of June 11, 2025, this is our current score:
|
||||
|
||||
    Decomp progress: 90.89%
|
||||
    Decomp progress: 90.87%
|
||||
|
||||
    Documentation progress: 59.17%
|
||||
    Documentation progress: 59.40%
|
||||
<!-- README_SCORE_SUMMARY_END -->
|
||||
|
||||
---
|
||||
@@ -121,11 +121,11 @@ As of June 11, 2025, this is our current score:
|
||||
```
|
||||
====================================================================
|
||||
ADVENTURE ONE (ASM -> C Decompilation)
|
||||
-------------- 90.89% Complete (91.67% NON_MATCHING) ---------------
|
||||
-------------- 90.87% Complete (91.65% NON_MATCHING) ---------------
|
||||
# Decompiled functions: 1913
|
||||
# GLOBAL_ASM remaining: 38
|
||||
# GLOBAL_ASM remaining: 37
|
||||
# NON_MATCHING functions: 4
|
||||
# NON_EQUIVALENT WIP functions: 19
|
||||
# NON_EQUIVALENT WIP functions: 29
|
||||
--------------------------- Game Status ----------------------------
|
||||
Balloons: 42/47, Keys: 4/4, Trophies: 4/5
|
||||
T.T. Amulets: 4/4, Wizpig Amulets: 4/4
|
||||
@@ -133,14 +133,14 @@ As of June 11, 2025, this is our current score:
|
||||
We are racing in Star City. (Lap 3/3)
|
||||
====================================================================
|
||||
ADVENTURE TWO (Cleanup & Documentation)
|
||||
------------------------- 59.17% Complete --------------------------
|
||||
# Documented functions: 1206
|
||||
# Undocumented remaining: 447
|
||||
------------------------- 59.40% Complete --------------------------
|
||||
# Documented functions: 1208
|
||||
# Undocumented remaining: 445
|
||||
--------------------------- Game Status ----------------------------
|
||||
Balloons: 29/47, Keys: 3/4, Trophies: 2/5
|
||||
T.T. Amulets: 3/4, Wizpig Amulets: 2/4
|
||||
--------------------------------------------------------------------
|
||||
We are collecting silver coins in Treasure Caves. (0/8 silver coins)
|
||||
We are collecting silver coins in Treasure Caves. (1/8 silver coins)
|
||||
====================================================================
|
||||
```
|
||||
<!-- README_SCORE_END -->
|
||||
|
||||
@@ -6,6 +6,44 @@
|
||||
|
||||
// This file is an extension of PR/gbi.h
|
||||
|
||||
/**
|
||||
* This section explains how billboarding works from a 3D geometry perspective.
|
||||
* Several modifications were made to the RSP to implement billboarding:
|
||||
*
|
||||
* 1) For the gSPVertexDKR command, the last parameter is either 0 or 1 (G_VTX_APPEND):
|
||||
* - If 0: Vertices are always written to the beginning of RSP's internal vertex array, and their count is stored.
|
||||
* - If 1: Vertices are appended after those written with flag 0.
|
||||
*
|
||||
* 2) The commands gDkrEnableBillboard and gDkrDisableBillboard control billboarding:
|
||||
* - When gDkrEnableBillboard is active, vertices processed by gSPVertexDKR have their coordinates added to
|
||||
* the coordinates of vertex 0 in RSP's vertex array.
|
||||
* - This addition occurs after MVP matrix transformation but before perspective division (normalization of (x,y,z,w) to (x/w,y/w,z/w,1)).
|
||||
*
|
||||
* Implementation Steps:
|
||||
* 1) First, push an anchor vertex using gSPVertexDKR. This vertex should have a standard MVP matrix applied
|
||||
* (with normal perspective and camera setup like other 3D objects). Inside RSP, this vertex gets transformed
|
||||
* to clip coordinates (x,y,z,w). Note: with standard perspective, w represents the vertex's distance from the camera.
|
||||
*
|
||||
* 2) Create a billboard matrix (simplest case: identity matrix) and store it in slot G_MTX_DKR_INDEX_2.
|
||||
* More complex versions can tilt the sprite or scale it along two axes. This matrix will be used for subsequent
|
||||
* billboard vertices (without camera or projection transformations).
|
||||
*
|
||||
* 3) Enable billboarding with gDkrEnableBillboard. All subsequent billboard vertices will be added to the anchor vertex.
|
||||
*
|
||||
* 4) Push billboard vertices using gSPVertexDKR and render primitives with gSPPolygon. These vertices use sprite-space coordinates.
|
||||
* Example: For a 32×64 sprite, vertices would be (0,0,0), (32,0,0), (32,64,0), (0,64,0).
|
||||
*
|
||||
* How Coordinate Addition Works (Perspective Explanation):
|
||||
* Let the anchor vertex have coordinates (x,y,z,w) and our sprite be 32×64 as above. After normalization:
|
||||
* anchor becomes (x/w,y/w,z/w,1). A billboard vertex would have (x+32,y,z,w) → ((x+32)/w,y/w,z/w,1).
|
||||
*
|
||||
* Screen-space implications (assuming 320px viewport width):
|
||||
* The sprite's on-screen width becomes (32/w)*160 pixels. Since w equals distance from camera, sprites
|
||||
* farther away appear smaller (creating perspective). However, additional scaling is needed because
|
||||
* without accounting for field of view and aspect ratio, a 32×64 sprite wouldn't match the size of
|
||||
* a 32×64 3D object at the same location.
|
||||
*/
|
||||
|
||||
// Color combiner values.
|
||||
|
||||
// cycle 1 modes
|
||||
@@ -112,6 +150,7 @@
|
||||
#define G_MTX_DKR_INDEX_2 2
|
||||
#define G_MW_BILLBOARD 0x02 //0x01 = billboarding enabled, 0x00 = disabled
|
||||
#define G_MW_MVPMATRIX 0x0A //Specifies the index of the mvp matrix.
|
||||
#define G_VTX_APPEND 1
|
||||
|
||||
#define gDkrEnableBillboard(pkt) \
|
||||
gMoveWd(pkt, G_MW_BILLBOARD, 0, 1)
|
||||
|
||||
+16
-14
@@ -112,8 +112,8 @@ typedef struct TextureHeader {
|
||||
// 6 = IA4
|
||||
// 7 = CI4 (16 colors)
|
||||
// 8 = CI8 (64 colors)
|
||||
/* 0x03 */ s8 unk3;
|
||||
/* 0x04 */ s8 unk4;
|
||||
/* 0x03 */ s8 posX; // X coordinate of the texture in the sprite's 2D space
|
||||
/* 0x04 */ s8 posY; // Y coordinate of the texture in the sprite's 2D space
|
||||
/* 0x05 */ u8 numberOfInstances; // Always 1 in the ROM.
|
||||
/* 0x06 */ s16 flags;
|
||||
// 0x04 = Interlaced texture
|
||||
@@ -151,19 +151,21 @@ typedef struct ShadowHeapProperties {
|
||||
s16 vtxCount; // Offset from the center of the screen.
|
||||
} ShadowHeapProperties;
|
||||
|
||||
typedef struct SpriteAsset {
|
||||
/* 0x00 */ s16 baseTextureId;
|
||||
/* 0x02 */ s16 numberOfFrames; // 1 means static texture
|
||||
/* 0x04 */ Vec2s anchor; // 2D coordinates on the sprite used as the anchor point for positioning in 3D space
|
||||
/* 0x08 */ s32 unused_field;
|
||||
/* 0x0C */ u8 frameTexOffsets[1]; // actual size is numberOfFrames + 1
|
||||
} SpriteAsset;
|
||||
|
||||
typedef struct Sprite {
|
||||
/* 0x00 */ s16 baseTextureId;
|
||||
/* 0x02 */ s16 numberOfFrames; // 1 means static texture
|
||||
/* 0x04 */ s16 numberOfInstances;
|
||||
/* 0x06 */ s16 drawFlags;
|
||||
union {
|
||||
/* 0x08 */ TextureHeader **frames;
|
||||
/* 0x08 */ Gfx *gfx[1];
|
||||
};
|
||||
union {
|
||||
/* 0x0C */ u8 val[1]; // Actual size varies.
|
||||
/* 0x0C */ u8 *ptr[1]; // Display list?
|
||||
} unkC;
|
||||
/* 0x00 */ s16 numberOfFrames; // 1 means static texture
|
||||
/* 0x02 */ s16 numberOfTextures;
|
||||
/* 0x04 */ s16 numberOfInstances;
|
||||
/* 0x06 */ s16 drawFlags;
|
||||
/* 0x08 */ TextureHeader **textures;
|
||||
/* 0x0C */ Gfx *frames[1]; // Actual size varies.
|
||||
} Sprite;
|
||||
|
||||
/* Size: 0x20 bytes */
|
||||
|
||||
+1
-1
@@ -194,7 +194,7 @@ void audspat_update_all(Object **objList, s32 numObjects, s32 updateRate) {
|
||||
jingleVolume = 0;
|
||||
viewportLayout = cam_get_viewport_layout();
|
||||
numCameras = cam_set_layout(viewportLayout);
|
||||
cameras = get_cutscene_camera_segment();
|
||||
cameras = cam_get_cameras();
|
||||
|
||||
// Update audio points
|
||||
for (i = 0; i < gNumAudioPoints; i++) {
|
||||
|
||||
+254
-171
File diff suppressed because it is too large
Load Diff
+7
-2
@@ -37,6 +37,11 @@
|
||||
|
||||
#define VIEWPORT_AUTO 0x8000
|
||||
|
||||
enum SpriteAnimMode {
|
||||
SPRITE_ANIM_NORMALIZED, // animFrame is a normalized value from 0 to 255 mapped across frames
|
||||
SPRITE_ANIM_FRAME_INDEX // animFrame is treated as the exact frame ID (e.g., 0, 1, 2...)
|
||||
};
|
||||
|
||||
enum ViewportCount {
|
||||
VIEWPORT_LAYOUT_1_PLAYER,
|
||||
VIEWPORT_LAYOUT_2_PLAYERS,
|
||||
@@ -124,10 +129,10 @@ void mtx_perspective(Gfx **dList, Mtx **mtx);
|
||||
void viewport_rsp_set(Gfx **dList, s32 halfWidth, s32 halfHeight, s32 centerX, s32 centerY);
|
||||
void viewport_reset(Gfx **dList);
|
||||
void mtx_world_origin(Gfx **dList, Mtx **mtx);
|
||||
void sprite_anim_off(s32 setting);
|
||||
void cam_set_sprite_anim_mode(s32 setting);
|
||||
Camera *cam_get_active_camera_no_cutscenes(void);
|
||||
Camera *cam_get_active_camera(void);
|
||||
Camera *get_cutscene_camera_segment(void);
|
||||
Camera *cam_get_cameras(void);
|
||||
MtxF *get_projection_matrix_f32(void);
|
||||
Mtx *get_projection_matrix_s16(void);
|
||||
MtxF *get_camera_matrix(void);
|
||||
|
||||
+32
-32
@@ -804,9 +804,9 @@ void hud_render_player(Gfx **dList, Mtx **mtx, Vertex **vertexList, Object *obj,
|
||||
hud_main_time_trial(countdown, obj, updateRate);
|
||||
} else {
|
||||
if (cutscene_id() == 10) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_balloons(racer);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
} else {
|
||||
switch (get_current_level_race_type()) {
|
||||
case RACETYPE_DEFAULT:
|
||||
@@ -836,7 +836,7 @@ void hud_render_player(Gfx **dList, Mtx **mtx, Vertex **vertexList, Object *obj,
|
||||
}
|
||||
}
|
||||
if (racer->raceFinished == TRUE) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
if (is_in_time_trial()) {
|
||||
hud_time_trial_finish(racer, updateRate);
|
||||
} else if (cam_get_viewport_layout() == VIEWPORT_LAYOUT_1_PLAYER && racer->finishPosition == 1) {
|
||||
@@ -852,7 +852,7 @@ void hud_render_player(Gfx **dList, Mtx **mtx, Vertex **vertexList, Object *obj,
|
||||
block_95:
|
||||
hud_race_finish_multiplayer(racer, updateRate);
|
||||
}
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
gMinimapFade = FALSE;
|
||||
sprite_opaque(TRUE);
|
||||
@@ -949,7 +949,7 @@ void hud_audio_update(s32 updateRate) {
|
||||
void hud_main_race(s32 countdown, Object *obj, s32 updateRate) {
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_course_arrows(racer, updateRate);
|
||||
hud_wrong_way(racer, updateRate);
|
||||
hud_race_start(countdown, updateRate);
|
||||
@@ -968,7 +968,7 @@ void hud_main_race(s32 countdown, Object *obj, s32 updateRate) {
|
||||
}
|
||||
|
||||
hud_weapon(obj, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1080,7 +1080,7 @@ void hud_main_treasure(s32 countdown, Object *obj, s32 updateRate) {
|
||||
|
||||
racer = &obj->unk64->racer;
|
||||
racers = get_racer_objects(&numRacers);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_race_start(countdown, updateRate);
|
||||
switch (gNumActivePlayers) {
|
||||
case 1:
|
||||
@@ -1107,7 +1107,7 @@ void hud_main_treasure(s32 countdown, Object *obj, s32 updateRate) {
|
||||
rendermode_reset(&gHudDL);
|
||||
hud_bananas(racer, updateRate);
|
||||
hud_weapon(obj, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1116,7 +1116,7 @@ void hud_main_treasure(s32 countdown, Object *obj, s32 updateRate) {
|
||||
void hud_main_eggs(s32 countdown, Object *obj, s32 updateRate) {
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
if (racer->raceFinished == FALSE) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_race_start(countdown, updateRate);
|
||||
hud_weapon(obj, updateRate);
|
||||
if ((127 - (updateRate * 2)) >= gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].challengeEggs.alphaTimer) {
|
||||
@@ -1129,7 +1129,7 @@ void hud_main_eggs(s32 countdown, Object *obj, s32 updateRate) {
|
||||
if (gNumActivePlayers != 2) {
|
||||
hud_draw_eggs(obj, updateRate);
|
||||
}
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1167,7 +1167,7 @@ void hud_draw_eggs(Object *racerObj, s32 updateRate) {
|
||||
racer = &racers[0]->unk64->racer;
|
||||
}
|
||||
if (numRacers == MAXCONTROLLERS) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
portraitX = gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.x;
|
||||
portraitY = gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y;
|
||||
diffX = (gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.x - portraitX);
|
||||
@@ -1196,7 +1196,7 @@ void hud_draw_eggs(Object *racerObj, s32 updateRate) {
|
||||
gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.x = portraitX + diffX;
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = portraitY;
|
||||
gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.y = portraitY + diffY;
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1253,7 +1253,7 @@ void hud_main_battle(s32 countdown, Object *obj, s32 updateRate) {
|
||||
|
||||
racer = &obj->unk64->racer;
|
||||
if (gNumActivePlayers != 1 || racer->raceFinished == FALSE) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_race_start(countdown, updateRate);
|
||||
hud_weapon(obj, updateRate);
|
||||
racerObjs = get_racer_objects(&numRacers);
|
||||
@@ -1277,7 +1277,7 @@ void hud_main_battle(s32 countdown, Object *obj, s32 updateRate) {
|
||||
hud_bananas(racer, updateRate);
|
||||
break;
|
||||
}
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1302,7 +1302,7 @@ void func_800A1E48(Object *racerObj, s32 updateRate) {
|
||||
racer = &racers[PLAYER_ONE]->unk64->racer;
|
||||
}
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
if (numRacers == 4) {
|
||||
offsetX = 0;
|
||||
offsetY = 0;
|
||||
@@ -1350,7 +1350,7 @@ void func_800A1E48(Object *racerObj, s32 updateRate) {
|
||||
gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_2].pos.y += tempY;
|
||||
}
|
||||
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1397,7 +1397,7 @@ void hud_main_boss(s32 countdown, Object *obj, s32 updateRate) {
|
||||
LevelHeader *level;
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_wrong_way(racer, updateRate);
|
||||
hud_race_start(countdown, updateRate);
|
||||
hud_race_time(racer, updateRate);
|
||||
@@ -1410,7 +1410,7 @@ void hud_main_boss(s32 countdown, Object *obj, s32 updateRate) {
|
||||
|
||||
hud_speedometre(obj, updateRate);
|
||||
hud_race_position(racer, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1419,14 +1419,14 @@ void hud_main_boss(s32 countdown, Object *obj, s32 updateRate) {
|
||||
void hud_main_taj(s32 countdown, Object *obj, s32 updateRate) {
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_wrong_way(racer, updateRate);
|
||||
hud_lap_count(racer, updateRate);
|
||||
hud_race_position(racer, updateRate);
|
||||
hud_race_time(racer, updateRate);
|
||||
hud_race_start(countdown, updateRate);
|
||||
hud_speedometre(obj, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1439,7 +1439,7 @@ void hud_main_hub(Object *obj, s32 updateRate) {
|
||||
|
||||
if (cam_get_viewport_layout() == PLAYER_ONE) {
|
||||
racer = &obj->unk64->racer;
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_balloons(racer);
|
||||
hud_speedometre(obj, updateRate);
|
||||
if (is_in_two_player_adventure()) {
|
||||
@@ -1447,7 +1447,7 @@ void hud_main_hub(Object *obj, s32 updateRate) {
|
||||
portrait->spriteID = (get_settings()->racers[1].character + HUD_SPRITE_PORTRAIT);
|
||||
hud_element_render(&gHudDL, &gHudMtx, &gHudVtx, portrait);
|
||||
}
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1576,7 +1576,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) {
|
||||
}
|
||||
|
||||
obj68->animUpdateTimer = 0;
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
hud_course_arrows(curRacer, updateRate);
|
||||
if (curRacer->raceFinished == FALSE) {
|
||||
spB8 = gCurrentHud->entry[HUD_LAP_TIME_TEXT].pos.y;
|
||||
@@ -1761,7 +1761,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) {
|
||||
set_kerning(FALSE);
|
||||
}
|
||||
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
void hud_stopwatch_face(u8 arg0, u8 arg1, u8 animID, u8 arg3, u8 arg4) {
|
||||
@@ -2019,13 +2019,13 @@ void hud_bananas(Object_Racer *racer, s32 updateRate) {
|
||||
}
|
||||
} else {
|
||||
gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].spriteOffset = prevSprite + 128;
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sprite_opaque(TRUE);
|
||||
enable_pal_viewport_height_adjust(TRUE);
|
||||
hud_element_render(&gHudDL, &gHudMtx, &gHudVtx, &gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN]);
|
||||
sprite_opaque(FALSE);
|
||||
enable_pal_viewport_height_adjust(FALSE);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].spriteOffset -= 128;
|
||||
}
|
||||
temp_lo = bananas / 10;
|
||||
@@ -3435,11 +3435,11 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
} else if (gHudLevelHeader->race_type == RACETYPE_CHALLENGE_BATTLE) {
|
||||
// Show life counter and icons in 2 player.
|
||||
if (gNumActivePlayers == 2 && gHudToggleSettings[gHUDNumPlayers] == 0) {
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
sprite_opaque(FALSE);
|
||||
mtx_ortho(&gHudDL, &gHudMtx);
|
||||
func_800A1E48(0, updateRate);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
rendermode_reset(&gHudDL);
|
||||
sprite_opaque(TRUE);
|
||||
} else {
|
||||
@@ -3457,7 +3457,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
spE0 = gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y;
|
||||
sprite_opaque(FALSE);
|
||||
mtx_ortho(&gHudDL, &gHudMtx);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.x = 225.0f;
|
||||
if (osTvType == OS_TV_TYPE_PAL) {
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = 181.5f;
|
||||
@@ -3514,7 +3514,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = spE0;
|
||||
sprite_opaque(TRUE);
|
||||
rendermode_reset(&gHudDL);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3606,7 +3606,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
return;
|
||||
}
|
||||
someObjSeg = cam_get_active_camera();
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
minimap = (Sprite *) lvlMdl->minimapSpriteIndex;
|
||||
switch (gHUDNumPlayers) {
|
||||
case TWO_PLAYERS:
|
||||
@@ -3761,7 +3761,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
}
|
||||
}
|
||||
gDPPipeSync(gHudDL++);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sprite_opaque(TRUE);
|
||||
*dList = gHudDL;
|
||||
*mtx = gHudMtx;
|
||||
|
||||
+17
-17
@@ -2692,7 +2692,7 @@ void menu_timestamp_render(s32 frameCount, s32 xPos, s32 yPos, u8 red, u8 green,
|
||||
xOffset3 = 5;
|
||||
}
|
||||
get_timestamp_from_frames(frameCount, &minutes, &seconds, &hundredths);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
sprite_opaque(FALSE);
|
||||
|
||||
gMenuImages[imageIndex].spriteOffset = minutes / 10;
|
||||
@@ -2732,7 +2732,7 @@ void menu_timestamp_render(s32 frameCount, s32 xPos, s32 yPos, u8 red, u8 green,
|
||||
gMenuImages[imageIndex].trans.x_position = xPos;
|
||||
menu_element_render(imageIndex);
|
||||
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sprite_opaque(TRUE);
|
||||
sMenuGuiColourR = 255;
|
||||
sMenuGuiColourG = 255;
|
||||
@@ -2786,7 +2786,7 @@ void menu_number_render(s32 number, s32 x, s32 y, s32 r, s32 g, s32 b, s32 a, UN
|
||||
sMenuGuiColourB = b;
|
||||
sMenuGuiOpacity = a;
|
||||
sprite_opaque(0);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
if (powerOfTen && number) {} // Fakematch
|
||||
gMenuImages[0].trans.y_position = y;
|
||||
for (i = 0; i < strLen; i++) {
|
||||
@@ -2796,7 +2796,7 @@ void menu_number_render(s32 number, s32 x, s32 y, s32 r, s32 g, s32 b, s32 a, UN
|
||||
x += 12;
|
||||
}
|
||||
sprite_opaque(1);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sMenuGuiColourR = 255;
|
||||
sMenuGuiColourG = 255;
|
||||
sMenuGuiColourB = 255;
|
||||
@@ -2976,7 +2976,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
shouldResetRenderSettings = FALSE;
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
}
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
sprite_opaque(FALSE);
|
||||
gMenuImages[elems->t.assetID].trans.x_position = xPos - SCREEN_WIDTH_HALF;
|
||||
gMenuImages[elems->t.assetID].trans.y_position =
|
||||
@@ -2992,7 +2992,7 @@ void draw_menu_elements(s32 state, MenuElement *elems, f32 scale) {
|
||||
sMenuGuiColourBlendFactor = elems->filterBlendFactor;
|
||||
sMenuGuiOpacity = elems->opacity;
|
||||
menu_element_render(elems->t.assetID);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sprite_opaque(TRUE);
|
||||
break;
|
||||
case 6:
|
||||
@@ -3377,7 +3377,7 @@ void render_title_screen(UNUSED s32 updateRate, f32 updateRateF) {
|
||||
mtx_ortho(&sMenuCurrDisplayList, &sMenuCurrHudMat);
|
||||
scale = (f32) gTitleRevealTimer * (1.0f / 32.0f);
|
||||
sMenuGuiOpacity = (gTitleRevealTimer * 8) - 1;
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
if (scale != 1.0f) {
|
||||
texrect_draw_scaled(&sMenuCurrDisplayList, sGameTitleTileOffsets, SCREEN_WIDTH_FLOAT_HALF, 52.0f, scale,
|
||||
scale, COLOUR_RGBA32(255, 255, 255, 254), TEXRECT_POINT);
|
||||
@@ -4294,7 +4294,7 @@ void savemenu_render_element(SaveFileData *file, s32 x, s32 y) {
|
||||
} else {
|
||||
i = 120;
|
||||
}
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
offsetY = (i - y);
|
||||
gMenuImages[2].trans.y_position = offsetY - 49;
|
||||
gMenuImages[spriteID].trans.y_position = offsetY - 24;
|
||||
@@ -4308,7 +4308,7 @@ void savemenu_render_element(SaveFileData *file, s32 x, s32 y) {
|
||||
sprite_opaque(1);
|
||||
gMenuImages[spriteID].trans.x_position = x - (128 - SAVE_MENU_SPRITE_OFFSET);
|
||||
menu_element_render(spriteID);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
if (drawTexture != NULL) {
|
||||
texrect_draw(&sMenuCurrDisplayList, drawTexture, x + (60 + SAVE_MENU_TEXT_OFFSET_1), y + 6, 255, 255, 255, 255);
|
||||
@@ -7609,14 +7609,14 @@ void fileselect_render(UNUSED s32 updateRate) {
|
||||
}
|
||||
fileselect_render_element(var_s2, gFileSelectButtons[i].x + gFileSelectElementPos[2],
|
||||
gFileSelectButtons[i].y + gFileSelectElementPos[3], 0, 0, 0, 128);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
gMenuImages->spriteOffset = gSavefileInfo[i].balloonCount / 10;
|
||||
fileselect_render_element(0, gFileSelectButtons[i].x + gFileSelectElementPos[6] - 6,
|
||||
gFileSelectButtons[i].y + gFileSelectElementPos[7], 0, 0, 0, 128);
|
||||
gMenuImages->spriteOffset = gSavefileInfo[i].balloonCount % 10;
|
||||
fileselect_render_element(0, gFileSelectButtons[i].x + gFileSelectElementPos[6] + 6,
|
||||
gFileSelectButtons[i].y + gFileSelectElementPos[7], 0, 0, 0, 128);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sMenuGuiColourG = 64;
|
||||
sMenuGuiColourB = 64;
|
||||
fileselect_render_element(10, gFileSelectButtons[i].x + gFileSelectElementPos[8],
|
||||
@@ -9365,7 +9365,7 @@ void trackmenu_setup_render(UNUSED s32 updateRate) {
|
||||
(gTwoPlayerRacerCountMenu.textPos[0] + gTwoPlayerRacerCountMenu.x) - 1,
|
||||
(gTwoPlayerRacerCountMenu.textPos[1] + gTwoPlayerRacerCountMenu.y + regionOffset) - 1,
|
||||
gMenuText[ASSET_MENU_TEXT_NUMBEROFRACERS], ALIGN_MIDDLE_CENTER);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
sprite_opaque(FALSE);
|
||||
|
||||
for (temp2 = 0; temp2 < 3; temp2++) {
|
||||
@@ -9389,7 +9389,7 @@ void trackmenu_setup_render(UNUSED s32 updateRate) {
|
||||
sMenuGuiColourB = 255;
|
||||
}
|
||||
sprite_opaque(TRUE);
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11298,7 +11298,7 @@ void results_render(UNUSED s32 updateRate, f32 opacity) {
|
||||
draw_text(&sMenuCurrDisplayList, time - 34, y2 + offsetY + 2, gRacePlacementsArray[spA0], ALIGN_MIDDLE_CENTER);
|
||||
#endif
|
||||
rendermode_reset(&sMenuCurrDisplayList);
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
sprite_opaque(FALSE);
|
||||
sMenuGuiColourR = 255;
|
||||
sMenuGuiColourG = 255 - 64 * spA0;
|
||||
@@ -11342,7 +11342,7 @@ void results_render(UNUSED s32 updateRate, f32 opacity) {
|
||||
menu_element_render(0);
|
||||
}
|
||||
y2 += 17;
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
sprite_opaque(TRUE);
|
||||
sMenuGuiColourG = 255;
|
||||
sMenuGuiColourBlendFactor = 0;
|
||||
@@ -14579,7 +14579,7 @@ void dialogue_tt_gamestatus(void) {
|
||||
return;
|
||||
}
|
||||
settings = get_settings();
|
||||
sprite_anim_off(TRUE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_FRAME_INDEX);
|
||||
if (osTvType == OS_TV_TYPE_PAL) {
|
||||
y = 10;
|
||||
} else {
|
||||
@@ -14657,7 +14657,7 @@ void dialogue_tt_gamestatus(void) {
|
||||
}
|
||||
menu_element_render(14);
|
||||
}
|
||||
sprite_anim_off(FALSE);
|
||||
cam_set_sprite_anim_mode(SPRITE_ANIM_NORMALIZED);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3044,7 +3044,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) {
|
||||
if (var_f2 < 1000.0f) {
|
||||
var_f2 = 1000.0f - var_f2;
|
||||
sp3C = (127.0f * var_f2) / 1000.0f;
|
||||
temp_v0_22 = get_cutscene_camera_segment();
|
||||
temp_v0_22 = cam_get_cameras();
|
||||
xPosDiff = obj->segment.trans.x_position - temp_v0_22->trans.x_position;
|
||||
zPosDiff = obj->segment.trans.z_position - temp_v0_22->trans.z_position;
|
||||
arctan = audspat_calculate_spatial_pan(xPosDiff, zPosDiff, temp_v0_22->trans.rotation.y_rotation);
|
||||
|
||||
+1
-1
@@ -1104,7 +1104,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) {
|
||||
}
|
||||
cutsceneID = -1;
|
||||
if (is_time_trial_enabled() && raceType == RACETYPE_DEFAULT) {
|
||||
cutsceneCameraSegment = get_cutscene_camera_segment();
|
||||
cutsceneCameraSegment = cam_get_cameras();
|
||||
cutsceneID = (u8) cutsceneCameraSegment->zoom;
|
||||
cutsceneCameraSegment->zoom = 1;
|
||||
}
|
||||
|
||||
+5
-5
@@ -1555,7 +1555,7 @@ Particle *create_general_particle(Object *obj, ParticleEmitter *emitter) {
|
||||
if (particle->kind == PARTICLE_KIND_SPRITE) {
|
||||
particle->sprite = (Sprite *) tex_load_sprite(descriptor->textureID, 0);
|
||||
if (particle->sprite != NULL) {
|
||||
if (particle->sprite->frames[0]->flags & 4) {
|
||||
if (particle->sprite->textures[0]->flags & 4) {
|
||||
if (particle->descFlags & PARTICLE_DESC_FLAG_1000) {
|
||||
particle->trans.flags |= OBJ_FLAGS_UNK_0100;
|
||||
} else {
|
||||
@@ -1563,7 +1563,7 @@ Particle *create_general_particle(Object *obj, ParticleEmitter *emitter) {
|
||||
}
|
||||
}
|
||||
if (behaviour->flags & PARTICLE_RANDOM_TEXTURE_FRAME) {
|
||||
particle->textureFrame = rand_range(0, particle->sprite->baseTextureId - 1) << 8;
|
||||
particle->textureFrame = rand_range(0, particle->sprite->numberOfFrames - 1) << 8;
|
||||
if ((particle->descFlags &
|
||||
(PARTICLE_TEXTURE_ANIM_FORWARD_ENABLED | PARTICLE_TEXTURE_ANIM_BACKWARD_ENABLED)) ==
|
||||
PARTICLE_TEXTURE_ANIM_BACKWARD_ENABLED) {
|
||||
@@ -1572,7 +1572,7 @@ Particle *create_general_particle(Object *obj, ParticleEmitter *emitter) {
|
||||
} else if ((particle->descFlags &
|
||||
(PARTICLE_TEXTURE_ANIM_FORWARD_ENABLED | PARTICLE_TEXTURE_ANIM_BACKWARD_ENABLED)) ==
|
||||
PARTICLE_TEXTURE_ANIM_BACKWARD_ENABLED) {
|
||||
particle->textureFrame = (particle->sprite->baseTextureId << 8) - 1;
|
||||
particle->textureFrame = (particle->sprite->numberOfFrames << 8) - 1;
|
||||
} else {
|
||||
particle->textureFrame = 0;
|
||||
}
|
||||
@@ -2173,7 +2173,7 @@ void update_particle_texture_frame(Particle *particle) {
|
||||
|
||||
keepGoing = -1;
|
||||
i = 0; // required to match
|
||||
textureCount = particle->kind == PARTICLE_KIND_SPRITE ? particle->sprite->baseTextureId * 256
|
||||
textureCount = particle->kind == PARTICLE_KIND_SPRITE ? particle->sprite->numberOfFrames * 256
|
||||
: particle->model->texture->numOfTextures;
|
||||
|
||||
forwardEnabled = particle->descFlags & PARTICLE_TEXTURE_ANIM_FORWARD_ENABLED;
|
||||
@@ -2406,7 +2406,7 @@ void render_particle(Particle *particle, Gfx **dList, Mtx **mtx, Vertex **vtx, s
|
||||
if (particle->kind == PARTICLE_KIND_SPRITE) {
|
||||
temp = particle->textureFrame;
|
||||
particle->textureFrame >>= 8;
|
||||
particle->textureFrame = (particle->textureFrame * 255) / (particle->sprite->baseTextureId);
|
||||
particle->textureFrame = (particle->textureFrame * 255) / (particle->sprite->numberOfFrames);
|
||||
render_sprite_billboard(dList, mtx, vtx, (Object *) particle, particle->sprite, renderFlags);
|
||||
particle->textureFrame = temp;
|
||||
} else {
|
||||
|
||||
+207
-172
File diff suppressed because it is too large
Load Diff
@@ -170,7 +170,7 @@ TextureHeader *set_animated_texture_header(TextureHeader *texHead, s32 offset);
|
||||
TextureHeader *load_texture(s32 arg0);
|
||||
s32 tex_asset_size(s32 id);
|
||||
s32 tex_cache_asset_id(s32 cacheID);
|
||||
s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut,
|
||||
s32 load_sprite_info(s32 spriteIndex, s32 *anchorXOut, s32 *anchorYOut, s32 *numFramesOut, s32 *formatOut,
|
||||
s32 *sizeOut);
|
||||
void gfx_init_basic_xlu(Gfx **dList, u32 index, u32 primitiveColor, u32 environmentColor);
|
||||
void func_8007CA68(s32 arg0, s32 arg1, s32 *arg2, s32 *arg3, s32 *arg4);
|
||||
@@ -179,6 +179,6 @@ void tex_init_textures(void);
|
||||
void material_set_blinking_lights(Gfx **dList, TextureHeader *texture_list, u32 flags,
|
||||
s32 texture_index);
|
||||
void material_init(TextureHeader *tex, Gfx *_dList);
|
||||
void func_8007CDC0(Sprite *sprite1, Sprite *sprite2, s32 arg2);
|
||||
void sprite_init_frame(SpriteAsset *sprite1, Sprite *sprite2, s32 arg2);
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -4443,7 +4443,7 @@ void obj_loop_fogchanger(Object *obj) {
|
||||
camera = NULL;
|
||||
|
||||
if (check_if_showing_cutscene_camera()) {
|
||||
camera = get_cutscene_camera_segment();
|
||||
camera = cam_get_cameras();
|
||||
views = cam_get_viewport_layout() + 1;
|
||||
} else {
|
||||
racers = get_racer_objects(&views);
|
||||
|
||||
@@ -913,7 +913,7 @@ mtx_perspective = 0x8006814C;
|
||||
viewport_rsp_set = 0x80068228;
|
||||
viewport_reset = 0x8006837C;
|
||||
mtx_world_origin = 0x800684D8;
|
||||
sprite_anim_off = 0x800685D8;
|
||||
cam_set_sprite_anim_mode = 0x800685D8;
|
||||
render_sprite_billboard = 0x800685E4;
|
||||
render_ortho_triangle_image = 0x80068CC4;
|
||||
mtx_shear_push = 0x80069078;
|
||||
@@ -926,7 +926,7 @@ cam_move_dir = 0x80069C40;
|
||||
cam_rotate = 0x80069D84;
|
||||
cam_get_active_camera_no_cutscenes = 0x80069DCC;
|
||||
cam_get_active_camera = 0x80069DF0;
|
||||
get_cutscene_camera_segment = 0x80069E4C;
|
||||
cam_get_cameras = 0x80069E4C;
|
||||
get_projection_matrix_f32 = 0x80069E74;
|
||||
get_projection_matrix_s16 = 0x80069E80;
|
||||
get_camera_matrix = 0x80069E8C;
|
||||
@@ -1292,7 +1292,7 @@ sprite_cache_asset_id = 0x8007CBB0;
|
||||
load_sprite_info = 0x8007CBF0;
|
||||
func_8007CA68 = 0x8007CD78;
|
||||
sprite_free = 0x8007CFC0;
|
||||
func_8007CDC0 = 0x8007D0D0;
|
||||
sprite_init_frame = 0x8007D0D0;
|
||||
material_init = 0x8007D404;
|
||||
tex_palette_id = 0x8007F274;
|
||||
tex_animate_texture = 0x8007F290;
|
||||
@@ -3943,7 +3943,7 @@ gNumCameras = 0x80122758;
|
||||
D_80120CEC = 0x8012275C;
|
||||
gCameraTransform = 0x80122760;
|
||||
gMtxOriginID = 0x80122778;
|
||||
gSpriteAnimOff = 0x8012277C;
|
||||
gSpriteAnimMode = 0x8012277C;
|
||||
gCurCamFOV = 0x80122780;
|
||||
gCutsceneCameraActive = 0x80122784;
|
||||
gAdjustViewportHeight = 0x80122785;
|
||||
@@ -3951,21 +3951,21 @@ gNoCamShake = 0x80122788;
|
||||
gModelMatrixStackPos = 0x8012278C;
|
||||
gCameraMatrixPos = 0x80122790;
|
||||
D_80120D24 = 0x80122794;
|
||||
gModelMatrixViewX = 0x80122798;
|
||||
gModelMatrixViewY = 0x801227B0;
|
||||
gModelMatrixViewZ = 0x801227C8;
|
||||
gCameraRelPosStackX = 0x80122798;
|
||||
gCameraRelPosStackY = 0x801227B0;
|
||||
gCameraRelPosStackZ = 0x801227C8;
|
||||
perspNorm = 0x801227DC;
|
||||
gModelMatrixF = 0x801227E0;
|
||||
gModelMatrix = 0x801227F8;
|
||||
D_80120DA0 = 0x80122810;
|
||||
gPerspectiveMatrixF = 0x80122950;
|
||||
gViewMatrixF = 0x80122990;
|
||||
gCameraMatrixF = 0x801229D0;
|
||||
gProjectionMatrixF = 0x80122A10;
|
||||
gProjectionMatrix = 0x80122A50;
|
||||
gUnusedProjectionMatrix = 0x80122A90;
|
||||
gViewProjMatrixF = 0x80122990;
|
||||
gViewMatrixF = 0x801229D0;
|
||||
gInverseViewMatrixF = 0x80122A10;
|
||||
gPerspectiveMatrix = 0x80122A50;
|
||||
gInverseViewMatrix = 0x80122A90;
|
||||
gCurrentModelMatrixF = 0x80122AD0;
|
||||
gCurrentModelMatrixS = 0x80122B10;
|
||||
gCurrentMVPMatrixF = 0x80122B10;
|
||||
|
||||
// controller .bss
|
||||
sSIMesgQueue = 0x80122B50;
|
||||
@@ -4140,13 +4140,13 @@ gCiPalettesSize = 0x80127DD0;
|
||||
gFirstTexIsLoaded = 0x80127DD4;
|
||||
gSpriteOffsetTable = 0x80127DD8;
|
||||
gSpriteCache = 0x80127DDC;
|
||||
gCurrentSprite = 0x80127DE0;
|
||||
gCurrentSpriteAsset = 0x80127DE0;
|
||||
gSpriteTableSize = 0x80127DE4;
|
||||
gSpriteCacheCount = 0x80127DE8;
|
||||
D_8012635C = 0x80127DEC;
|
||||
D_80126360 = 0x80127DF0;
|
||||
D_80126364 = 0x80127DF4;
|
||||
D_80126368 = 0x80127DF8;
|
||||
gSpriteVertices = 0x80127DF0;
|
||||
gSpriteDLists = 0x80127DF4;
|
||||
gSpriteTriangles = 0x80127DF8;
|
||||
gTempTextureHeader = 0x80127DFC;
|
||||
D_80126370 = 0x80127E00;
|
||||
gCurrentRenderFlags = 0x80127E04;
|
||||
|
||||
@@ -911,7 +911,7 @@ mtx_perspective = 0x8006807C;
|
||||
viewport_rsp_set = 0x80068158;
|
||||
viewport_reset = 0x800682AC;
|
||||
mtx_world_origin = 0x80068408;
|
||||
sprite_anim_off = 0x80068508;
|
||||
cam_set_sprite_anim_mode = 0x80068508;
|
||||
render_sprite_billboard = 0x80068514;
|
||||
render_ortho_triangle_image = 0x80068BF4;
|
||||
mtx_shear_push = 0x80068FA8;
|
||||
@@ -924,7 +924,7 @@ cam_move_dir = 0x80069B70;
|
||||
cam_rotate = 0x80069CB4;
|
||||
cam_get_active_camera_no_cutscenes = 0x80069CFC;
|
||||
cam_get_active_camera = 0x80069D20;
|
||||
get_cutscene_camera_segment = 0x80069D7C;
|
||||
cam_get_cameras = 0x80069D7C;
|
||||
get_projection_matrix_f32 = 0x80069DA4;
|
||||
get_projection_matrix_s16 = 0x80069DB0;
|
||||
get_camera_matrix = 0x80069DBC;
|
||||
@@ -1288,7 +1288,7 @@ sprite_cache_asset_id = 0x8007C8A0;
|
||||
load_sprite_info = 0x8007C8E0;
|
||||
func_8007CA68 = 0x8007CA68;
|
||||
sprite_free = 0x8007CCB0;
|
||||
func_8007CDC0 = 0x8007CDC0;
|
||||
sprite_init_frame = 0x8007CDC0;
|
||||
material_init = 0x8007D0F4;
|
||||
tex_palette_id = 0x8007EF64;
|
||||
tex_animate_texture = 0x8007EF80;
|
||||
@@ -3653,7 +3653,7 @@ gNumCameras = 0x80120D78;
|
||||
D_80120CEC = 0x80120D7C;
|
||||
gCameraTransform = 0x80120D80;
|
||||
gMtxOriginID = 0x80120D98;
|
||||
gSpriteAnimOff = 0x80120D9C;
|
||||
gSpriteAnimMode = 0x80120D9C;
|
||||
gCurCamFOV = 0x80120DA0;
|
||||
gCutsceneCameraActive = 0x80120DA4;
|
||||
gAdjustViewportHeight = 0x80120DA5;
|
||||
@@ -3661,21 +3661,21 @@ gNoCamShake = 0x80120DA8;
|
||||
gModelMatrixStackPos = 0x80120DAC;
|
||||
gCameraMatrixPos = 0x80120DB0;
|
||||
D_80120D24 = 0x80120DB4;
|
||||
gModelMatrixViewX = 0x80120DB8;
|
||||
gModelMatrixViewY = 0x80120DD0;
|
||||
gModelMatrixViewZ = 0x80120DE8;
|
||||
gCameraRelPosStackX = 0x80120DB8;
|
||||
gCameraRelPosStackY = 0x80120DD0;
|
||||
gCameraRelPosStackZ = 0x80120DE8;
|
||||
perspNorm = 0x80120DFC;
|
||||
gModelMatrixF = 0x80120E00;
|
||||
gModelMatrix = 0x80120E18;
|
||||
D_80120DA0 = 0x80120E30;
|
||||
gPerspectiveMatrixF = 0x80120F70;
|
||||
gViewMatrixF = 0x80120FB0;
|
||||
gCameraMatrixF = 0x80120FF0;
|
||||
gProjectionMatrixF = 0x80121030;
|
||||
gProjectionMatrix = 0x80121070;
|
||||
gUnusedProjectionMatrix = 0x801210B0;
|
||||
gViewProjMatrixF = 0x80120FB0;
|
||||
gViewMatrixF = 0x80120FF0;
|
||||
gInverseViewMatrixF = 0x80121030;
|
||||
gPerspectiveMatrix = 0x80121070;
|
||||
gInverseViewMatrix = 0x801210B0;
|
||||
gCurrentModelMatrixF = 0x801210F0;
|
||||
gCurrentModelMatrixS = 0x80121130;
|
||||
gCurrentMVPMatrixF = 0x80121130;
|
||||
sSIMesgQueue = 0x80121170;
|
||||
sSIMesgBuf = 0x80121188;
|
||||
gSIMesg = 0x8012118C;
|
||||
@@ -3826,13 +3826,13 @@ gCiPalettesSize = 0x801263D0;
|
||||
gFirstTexIsLoaded = 0x801263D4;
|
||||
gSpriteOffsetTable = 0x801263D8;
|
||||
gSpriteCache = 0x801263DC;
|
||||
gCurrentSprite = 0x801263E0;
|
||||
gCurrentSpriteAsset = 0x801263E0;
|
||||
gSpriteTableSize = 0x801263E4;
|
||||
gSpriteCacheCount = 0x801263E8;
|
||||
D_8012635C = 0x801263EC;
|
||||
D_80126360 = 0x801263F0;
|
||||
D_80126364 = 0x801263F4;
|
||||
D_80126368 = 0x801263F8;
|
||||
gSpriteVertices = 0x801263F0;
|
||||
gSpriteDLists = 0x801263F4;
|
||||
gSpriteTriangles = 0x801263F8;
|
||||
gTempTextureHeader = 0x801263FC;
|
||||
D_80126370 = 0x80126400;
|
||||
gCurrentRenderFlags = 0x80126404;
|
||||
|
||||
@@ -857,7 +857,7 @@ mtx_perspective = 0x800682BC;
|
||||
viewport_rsp_set = 0x80068398;
|
||||
viewport_reset = 0x800684EC;
|
||||
mtx_world_origin = 0x80068648;
|
||||
sprite_anim_off = 0x80068748;
|
||||
cam_set_sprite_anim_mode = 0x80068748;
|
||||
render_sprite_billboard = 0x80068754;
|
||||
render_ortho_triangle_image = 0x80068E34;
|
||||
mtx_shear_push = 0x800691E8;
|
||||
@@ -870,7 +870,7 @@ cam_move_dir = 0x80069DB0;
|
||||
cam_rotate = 0x80069EF4;
|
||||
cam_get_active_camera_no_cutscenes = 0x80069F3C;
|
||||
cam_get_active_camera = 0x80069F60;
|
||||
get_cutscene_camera_segment = 0x80069FBC;
|
||||
cam_get_cameras = 0x80069FBC;
|
||||
get_projection_matrix_f32 = 0x80069FE4;
|
||||
get_projection_matrix_s16 = 0x80069FF0;
|
||||
get_camera_matrix = 0x80069FFC;
|
||||
@@ -1211,7 +1211,7 @@ sprite_cache_asset_id = 0x8007CCF0;
|
||||
load_sprite_info = 0x8007CD30;
|
||||
func_8007CA68 = 0x8007CEB8;
|
||||
sprite_free = 0x8007D100;
|
||||
func_8007CDC0 = 0x8007D210;
|
||||
sprite_init_frame = 0x8007D210;
|
||||
material_init = 0x8007D544;
|
||||
tex_palette_id = 0x8007F3B4;
|
||||
tex_animate_texture = 0x8007F3D0;
|
||||
@@ -3583,7 +3583,7 @@ gNumCameras = 0x801212F8;
|
||||
D_80120CEC = 0x801212FC;
|
||||
gCameraTransform = 0x80121300;
|
||||
gMtxOriginID = 0x80121318;
|
||||
gSpriteAnimOff = 0x8012131C;
|
||||
gSpriteAnimMode = 0x8012131C;
|
||||
gCurCamFOV = 0x80121320;
|
||||
gCutsceneCameraActive = 0x80121324;
|
||||
gAdjustViewportHeight = 0x80121325;
|
||||
@@ -3591,21 +3591,21 @@ gNoCamShake = 0x80121328;
|
||||
gModelMatrixStackPos = 0x8012132C;
|
||||
gCameraMatrixPos = 0x80121330;
|
||||
D_80120D24 = 0x80121334;
|
||||
gModelMatrixViewX = 0x80121338;
|
||||
gModelMatrixViewY = 0x80121350;
|
||||
gModelMatrixViewZ = 0x80121368;
|
||||
gCameraRelPosStackX = 0x80121338;
|
||||
gCameraRelPosStackY = 0x80121350;
|
||||
gCameraRelPosStackZ = 0x80121368;
|
||||
perspNorm = 0x8012137C;
|
||||
gModelMatrixF = 0x80121380;
|
||||
gModelMatrix = 0x80121398;
|
||||
D_80120DA0 = 0x801213B0;
|
||||
gPerspectiveMatrixF = 0x801214F0;
|
||||
gViewMatrixF = 0x80121530;
|
||||
gCameraMatrixF = 0x80121570;
|
||||
gProjectionMatrixF = 0x801215B0;
|
||||
gProjectionMatrix = 0x801215F0;
|
||||
gUnusedProjectionMatrix = 0x80121630;
|
||||
gViewProjMatrixF = 0x80121530;
|
||||
gViewMatrixF = 0x80121570;
|
||||
gInverseViewMatrixF = 0x801215B0;
|
||||
gPerspectiveMatrix = 0x801215F0;
|
||||
gInverseViewMatrix = 0x80121630;
|
||||
gCurrentModelMatrixF = 0x80121670;
|
||||
gCurrentModelMatrixS = 0x801216B0;
|
||||
gCurrentMVPMatrixF = 0x801216B0;
|
||||
sSIMesgQueue = 0x801216F0;
|
||||
sSIMesgBuf = 0x80121708;
|
||||
gSIMesg = 0x8012170C;
|
||||
@@ -3758,13 +3758,13 @@ gCiPalettesSize = 0x80126970;
|
||||
gFirstTexIsLoaded = 0x80126974;
|
||||
gSpriteOffsetTable = 0x80126978;
|
||||
gSpriteCache = 0x8012697C;
|
||||
gCurrentSprite = 0x80126980;
|
||||
gCurrentSpriteAsset = 0x80126980;
|
||||
gSpriteTableSize = 0x80126984;
|
||||
gSpriteCacheCount = 0x80126988;
|
||||
D_8012635C = 0x8012698C;
|
||||
D_80126360 = 0x80126990;
|
||||
D_80126364 = 0x80126994;
|
||||
D_80126368 = 0x80126998;
|
||||
gSpriteVertices = 0x80126990;
|
||||
gSpriteDLists = 0x80126994;
|
||||
gSpriteTriangles = 0x80126998;
|
||||
gTempTextureHeader = 0x8012699C;
|
||||
D_80126370 = 0x801269A0;
|
||||
gCurrentRenderFlags = 0x801269A4;
|
||||
|
||||
@@ -911,7 +911,7 @@ mtx_perspective = 0x8006807C;
|
||||
viewport_rsp_set = 0x80068158;
|
||||
viewport_reset = 0x800682AC;
|
||||
mtx_world_origin = 0x80068408;
|
||||
sprite_anim_off = 0x80068508;
|
||||
cam_set_sprite_anim_mode = 0x80068508;
|
||||
render_sprite_billboard = 0x80068514;
|
||||
render_ortho_triangle_image = 0x80068BF4;
|
||||
mtx_shear_push = 0x80068FA8;
|
||||
@@ -924,7 +924,7 @@ cam_move_dir = 0x80069B70;
|
||||
cam_rotate = 0x80069CB4;
|
||||
cam_get_active_camera_no_cutscenes = 0x80069CFC;
|
||||
cam_get_active_camera = 0x80069D20;
|
||||
get_cutscene_camera_segment = 0x80069D7C;
|
||||
cam_get_cameras = 0x80069D7C;
|
||||
get_projection_matrix_f32 = 0x80069DA4;
|
||||
get_projection_matrix_s16 = 0x80069DB0;
|
||||
get_camera_matrix = 0x80069DBC;
|
||||
@@ -1288,7 +1288,7 @@ sprite_cache_asset_id = 0x8007C8A0;
|
||||
load_sprite_info = 0x8007C8E0;
|
||||
func_8007CA68 = 0x8007CA68;
|
||||
sprite_free = 0x8007CCB0;
|
||||
func_8007CDC0 = 0x8007CDC0;
|
||||
sprite_init_frame = 0x8007CDC0;
|
||||
material_init = 0x8007D0F4;
|
||||
tex_palette_id = 0x8007EF64;
|
||||
tex_animate_texture = 0x8007EF80;
|
||||
@@ -4058,7 +4058,7 @@ gNumCameras = 0x80120CE8;
|
||||
D_80120CEC = 0x80120CEC;
|
||||
gCameraTransform = 0x80120CF0;
|
||||
gMtxOriginID = 0x80120D08;
|
||||
gSpriteAnimOff = 0x80120D0C;
|
||||
gSpriteAnimMode = 0x80120D0C;
|
||||
gCurCamFOV = 0x80120D10;
|
||||
gCutsceneCameraActive = 0x80120D14;
|
||||
gAdjustViewportHeight = 0x80120D15;
|
||||
@@ -4066,21 +4066,21 @@ gNoCamShake = 0x80120D18;
|
||||
gModelMatrixStackPos = 0x80120D1C;
|
||||
gCameraMatrixPos = 0x80120D20;
|
||||
D_80120D24 = 0x80120D24;
|
||||
gModelMatrixViewX = 0x80120D28;
|
||||
gModelMatrixViewY = 0x80120D40;
|
||||
gModelMatrixViewZ = 0x80120D58;
|
||||
gCameraRelPosStackX = 0x80120D28;
|
||||
gCameraRelPosStackY = 0x80120D40;
|
||||
gCameraRelPosStackZ = 0x80120D58;
|
||||
perspNorm = 0x80120D6C;
|
||||
gModelMatrixF = 0x80120D70;
|
||||
gModelMatrix = 0x80120D88;
|
||||
D_80120DA0 = 0x80120DA0;
|
||||
gPerspectiveMatrixF = 0x80120EE0;
|
||||
gViewMatrixF = 0x80120F20;
|
||||
gCameraMatrixF = 0x80120F60;
|
||||
gProjectionMatrixF = 0x80120FA0;
|
||||
gProjectionMatrix = 0x80120FE0;
|
||||
gUnusedProjectionMatrix = 0x80121020;
|
||||
gViewProjMatrixF = 0x80120F20;
|
||||
gViewMatrixF = 0x80120F60;
|
||||
gInverseViewMatrixF = 0x80120FA0;
|
||||
gPerspectiveMatrix = 0x80120FE0;
|
||||
gInverseViewMatrix = 0x80121020;
|
||||
gCurrentModelMatrixF = 0x80121060;
|
||||
gCurrentModelMatrixS = 0x801210A0;
|
||||
gCurrentMVPMatrixF = 0x801210A0;
|
||||
|
||||
// controller .bss
|
||||
sSIMesgQueue = 0x801210E0;
|
||||
@@ -4253,13 +4253,13 @@ gCiPalettesSize = 0x80126340;
|
||||
gFirstTexIsLoaded = 0x80126344;
|
||||
gSpriteOffsetTable = 0x80126348;
|
||||
gSpriteCache = 0x8012634C;
|
||||
gCurrentSprite = 0x80126350;
|
||||
gCurrentSpriteAsset = 0x80126350;
|
||||
gSpriteTableSize = 0x80126354;
|
||||
gSpriteCacheCount = 0x80126358;
|
||||
D_8012635C = 0x8012635C;
|
||||
D_80126360 = 0x80126360;
|
||||
D_80126364 = 0x80126364;
|
||||
D_80126368 = 0x80126368;
|
||||
gSpriteVertices = 0x80126360;
|
||||
gSpriteDLists = 0x80126364;
|
||||
gSpriteTriangles = 0x80126368;
|
||||
gTempTextureHeader = 0x8012636C;
|
||||
D_80126370 = 0x80126370;
|
||||
gCurrentRenderFlags = 0x80126374;
|
||||
|
||||
@@ -857,7 +857,7 @@ mtx_perspective = 0x800682BC;
|
||||
viewport_rsp_set = 0x80068398;
|
||||
viewport_reset = 0x800684EC;
|
||||
mtx_world_origin = 0x80068648;
|
||||
sprite_anim_off = 0x80068748;
|
||||
cam_set_sprite_anim_mode = 0x80068748;
|
||||
render_sprite_billboard = 0x80068754;
|
||||
render_ortho_triangle_image = 0x80068E34;
|
||||
mtx_shear_push = 0x800691E8;
|
||||
@@ -870,7 +870,7 @@ cam_move_dir = 0x80069DB0;
|
||||
cam_rotate = 0x80069EF4;
|
||||
cam_get_active_camera_no_cutscenes = 0x80069F3C;
|
||||
cam_get_active_camera = 0x80069F60;
|
||||
get_cutscene_camera_segment = 0x80069FBC;
|
||||
cam_get_cameras = 0x80069FBC;
|
||||
get_projection_matrix_f32 = 0x80069FE4;
|
||||
get_projection_matrix_s16 = 0x80069FF0;
|
||||
get_camera_matrix = 0x80069FFC;
|
||||
@@ -1211,7 +1211,7 @@ sprite_cache_asset_id = 0x8007CCF0;
|
||||
load_sprite_info = 0x8007CD30;
|
||||
func_8007CA68 = 0x8007CEB8;
|
||||
sprite_free = 0x8007D100;
|
||||
func_8007CDC0 = 0x8007D210;
|
||||
sprite_init_frame = 0x8007D210;
|
||||
material_init = 0x8007D544;
|
||||
tex_palette_id = 0x8007F3B4;
|
||||
tex_animate_texture = 0x8007F3D0;
|
||||
@@ -3579,7 +3579,7 @@ gNumCameras = 0x80121268;
|
||||
D_80120CEC = 0x8012126C;
|
||||
gCameraTransform = 0x80121270;
|
||||
gMtxOriginID = 0x80121288;
|
||||
gSpriteAnimOff = 0x8012128C;
|
||||
gSpriteAnimMode = 0x8012128C;
|
||||
gCurCamFOV = 0x80121290;
|
||||
gCutsceneCameraActive = 0x80121294;
|
||||
gAdjustViewportHeight = 0x80121295;
|
||||
@@ -3587,21 +3587,21 @@ gNoCamShake = 0x80121298;
|
||||
gModelMatrixStackPos = 0x8012129C;
|
||||
gCameraMatrixPos = 0x801212A0;
|
||||
D_80120D24 = 0x801212A4;
|
||||
gModelMatrixViewX = 0x801212A8;
|
||||
gModelMatrixViewY = 0x801212C0;
|
||||
gModelMatrixViewZ = 0x801212D8;
|
||||
gCameraRelPosStackX = 0x801212A8;
|
||||
gCameraRelPosStackY = 0x801212C0;
|
||||
gCameraRelPosStackZ = 0x801212D8;
|
||||
perspNorm = 0x801212EC;
|
||||
gModelMatrixF = 0x801212F0;
|
||||
gModelMatrix = 0x80121308;
|
||||
D_80120DA0 = 0x80121320;
|
||||
gPerspectiveMatrixF = 0x80121460;
|
||||
gViewMatrixF = 0x801214A0;
|
||||
gCameraMatrixF = 0x801214E0;
|
||||
gProjectionMatrixF = 0x80121520;
|
||||
gProjectionMatrix = 0x80121560;
|
||||
gUnusedProjectionMatrix = 0x801215A0;
|
||||
gViewProjMatrixF = 0x801214A0;
|
||||
gViewMatrixF = 0x801214E0;
|
||||
gInverseViewMatrixF = 0x80121520;
|
||||
gPerspectiveMatrix = 0x80121560;
|
||||
gInverseViewMatrix = 0x801215A0;
|
||||
gCurrentModelMatrixF = 0x801215E0;
|
||||
gCurrentModelMatrixS = 0x80121620;
|
||||
gCurrentMVPMatrixF = 0x80121620;
|
||||
sSIMesgQueue = 0x80121660;
|
||||
sSIMesgBuf = 0x80121678;
|
||||
gSIMesg = 0x8012167C;
|
||||
@@ -3754,13 +3754,13 @@ gCiPalettesSize = 0x801268E0;
|
||||
gFirstTexIsLoaded = 0x801268E4;
|
||||
gSpriteOffsetTable = 0x801268E8;
|
||||
gSpriteCache = 0x801268EC;
|
||||
gCurrentSprite = 0x801268F0;
|
||||
gCurrentSpriteAsset = 0x801268F0;
|
||||
gSpriteTableSize = 0x801268F4;
|
||||
gSpriteCacheCount = 0x801268F8;
|
||||
D_8012635C = 0x801268FC;
|
||||
D_80126360 = 0x80126900;
|
||||
D_80126364 = 0x80126904;
|
||||
D_80126368 = 0x80126908;
|
||||
gSpriteVertices = 0x80126900;
|
||||
gSpriteDLists = 0x80126904;
|
||||
gSpriteTriangles = 0x80126908;
|
||||
gTempTextureHeader = 0x8012690C;
|
||||
D_80126370 = 0x80126910;
|
||||
gCurrentRenderFlags = 0x80126914;
|
||||
|
||||
Reference in New Issue
Block a user