diff options
| author | rozlette <uberpanzermensch@gmail.com> | 2019-12-29 21:34:58 -0600 |
|---|---|---|
| committer | rozlette <uberpanzermensch@gmail.com> | 2019-12-29 21:34:58 -0600 |
| commit | 8d8df1848ea442c05d480e04f76e15bdb02ae23f (patch) | |
| tree | d64c28d0228e5698b6a345f7296eeb62dec4568b /include | |
| parent | fe8a5a216e3e86a00019dd15405701c75fa94e5e (diff) | |
More work on z_scene_proc.c 31/36 matching, 3 non-matching, 2 not attempted
Diffstat (limited to 'include')
| -rw-r--r-- | include/PR/gbi.h | 12 | ||||
| -rw-r--r-- | include/functions.h | 71 | ||||
| -rw-r--r-- | include/structs.h | 44 | ||||
| -rw-r--r-- | include/variables.h | 16 |
4 files changed, 92 insertions, 51 deletions
diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 1c16bb582..e32b91881 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -2732,12 +2732,12 @@ _DW({ \ #endif /* F3DEX_GBI_2 */ #define gSPEndDisplayList(pkt) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = _SHIFTL(G_ENDDL, 24, 8); \ _g->words.w1 = 0; \ -} +}) #define gsSPEndDisplayList() \ { \ @@ -3035,12 +3035,12 @@ _DW({ \ #define gsDPSetCombineMode(a, b) gsDPSetCombineLERP(a, b) #define gDPSetColor(pkt, c, d) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = _SHIFTL(c, 24, 8); \ _g->words.w1 = (unsigned int)(d); \ -} +}) #define gsDPSetColor(c, d) \ { \ @@ -4325,12 +4325,12 @@ _DW({ \ } #define gDPNoParam(pkt, cmd) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = _SHIFTL(cmd, 24, 8); \ _g->words.w1 = 0; \ -} +}) #define gsDPNoParam(cmd) \ { \ diff --git a/include/functions.h b/include/functions.h index 0946e59f9..0903c67f1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -484,6 +484,7 @@ void func_80096410(void); // func_80096410 void func_800964D0(void); // func_800964D0 s32 __osSpSetPc(u32 data); // func_80096510 void func_80096540(void); // func_80096540 +// UNK_RET func_80096770(UNK_ARGS); void func_800967A0(void); // func_800967A0 u32 __osGetWatchLo(void); // func_80096810 void __osSetWatchLo(u32 value); // func_80096820 @@ -1860,10 +1861,10 @@ void Lib_TranslateAndRotateYVec3f(Vector3f* translation, s16 rotation, Vector3f* void Lib_LerpRGB(RGB* a, RGB* b, f32 t, RGB* dst); // func_801001B8 f32 Lib_PushAwayVec3f(Vector3f* start, Vector3f* pusher, f32 distanceToApproach); // func_80100448 void Lib_Nop801004FC(void); // func_801004FC -u32 Lib_PtrSegToVirt(u32 ptr); // func_80100504 -u32 Lib_PtrSegToVirtNull(u32 ptr); // func_8010053C -u32 Lib_PtrSegToK0(u32 ptr); // func_80100584 -u32 Lib_PtrSegToK0Null(u32 ptr); // func_801005A0 +u32 Lib_PtrSegToVirt(void* ptr); // func_80100504 +u32 Lib_PtrSegToVirtNull(void* ptr); // func_8010053C +u32 Lib_PtrSegToK0(void* ptr); // func_80100584 +u32 Lib_PtrSegToK0Null(void* ptr); // func_801005A0 void LifeMeter_Init(GlobalContext* ctxt); // func_801005C0 void LifeMeter_UpdateColors(GlobalContext* ctxt); // func_8010069C UNK_TYPE4 func_80100A80(GlobalContext* ctxt); // func_80100A80 @@ -2439,42 +2440,42 @@ void func_801306A4(GlobalContext* ctxt); // func_801306A4 s32 Scene_ProcessHeader(GlobalContext* ctxt, SceneHeaderEntry* header); // func_801306E8 u32 Scene_CreateEntrance(u32 sceneIndex, u32 spawnIndex, u32 offset); // func_80130768 void func_80130784(void); // func_80130784 -void func_801307C0(GlobalContext* ctxt); // func_801307C0 -void func_801307F4(GlobalContext* ctxt); // func_801307F4 -void func_80130834(void); // func_80130834 -void SceneProc_DrawType0Texture(GlobalContext* ctxt, unsigned int param_2, UNK_TYPE4 param_3); // func_801308A0 -void func_80130940(void); // func_80130940 -void SceneProc_DrawType1Texture(void); // func_801309F4 -void func_80130A94(GlobalContext* ctxt, unsigned int param_2, u8* param_3, u8* param_4); // func_80130A94 -void SceneProc_DrawType2Texture(void); // func_80130C5C -void func_80130D0C(void); // func_80130D0C -void SceneProc_DrawType3Texture(void); // func_80130D3C -void func_80130F58(void); // func_80130F58 -void func_8013115C(void); // func_8013115C -void SceneProc_DrawType4Texture(void); // func_801311B4 -void SceneProc_DrawType5Texture(void); // func_80131580 -void SceneProc_DrawAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, f32 param_3, u32 step, u32 flags); // func_80131690 +void SceneProc_DrawCurrentSceneAnimatedTextures(GlobalContext* ctxt); // func_801307C0 +void SceneProc_DrawSceneConfig0(GlobalContext* ctxt); // func_801307F4 +Gfx* SceneProc_SetTile1Layer(GlobalContext* ctxt, ScrollingTextureParams* params); // func_80130834 +void SceneProc_DrawType0Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params); // func_801308A0 +Gfx* SceneProc_SetTile2Layers(GlobalContext* ctxt, ScrollingTextureParams* params); // func_80130940 +void SceneProc_DrawType1Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params); // func_801309F4 +void SceneProc_DrawFlashingTexture(GlobalContext* ctxt, u32 segment, FlashingTexturePrimColor* primColor, RGBA8* envColor); // func_80130A94 +void SceneProc_DrawType2Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params); // func_80130C5C +s32 SceneProc_Lerp(s32 a, s32 b, f32 t); // func_80130D0C +void SceneProc_DrawType3Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params); // func_80130D3C +f32 SceneProc_Interpolate(u32 numKeyFrames, f32* keyFrames, f32* values, f32 frame); // func_80130F58 +u8 SceneProc_InterpolateClamped(u32 numKeyFrames, f32* keyFrames, f32* values, f32 frame); // func_8013115C +void SceneProc_DrawType4Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params); // func_801311B4 +void SceneProc_DrawType5Texture(GlobalContext* ctxt, u32 segment, CyclingTextureParams* params); // func_80131580 +void SceneProc_DrawAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, f32 flashingAlpha, u32 step, u32 flags); // func_80131690 void SceneProc_DrawAllSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures); // func_80131758 void SceneProc_DrawOpaqueSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures); // func_8013178C void SceneProc_DrawTranslucentSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures); // func_801317C0 -void func_801317F4(void); // func_801317F4 -void func_8013182C(void); // func_8013182C -void func_80131864(void); // func_80131864 +void SceneProc_DrawAllSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha); // func_801317F4 +void SceneProc_DrawOpaqueSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha); // func_8013182C +void SceneProc_DrawTranslucentSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha); // func_80131864 void SceneProc_DrawAllAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step); // func_8013189C void SceneProc_DrawOpaqueAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step); // func_801318C8 void SceneProc_DrawTranslucentAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step); // func_801318F4 -void func_80131920(void); // func_80131920 -void func_8013194C(void); // func_8013194C -void func_80131978(void); // func_80131978 -void func_801319A4(GlobalContext* ctxt); // func_801319A4 -void func_801319CC(GlobalContext* ctxt); // func_801319CC -void func_80131CDC(GlobalContext* ctxt); // func_80131CDC -void func_80131DE4(GlobalContext* ctxt); // func_80131DE4 -void func_80131DF0(void); // func_80131DF0 -void func_80131E58(s32* param_1, s32 param_2, u32 param_3); // func_80131E58 -void func_80131EC0(GlobalContext* ctxt); // func_80131EC0 -void func_80131F90(GlobalContext* ctxt); // func_80131F90 -void func_80131FC0(GlobalContext* ctxt); // func_80131FC0 +void SceneProc_DrawAllAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step); // func_80131920 +void SceneProc_DrawOpaqueAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step); // func_8013194C +void SceneProc_DrawTranslucentAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step); // func_80131978 +void SceneProc_DrawSceneConfig1(GlobalContext* ctxt); // func_801319A4 +void SceneProc_DrawSceneConfig3(GlobalContext* ctxt); // func_801319CC +void SceneProc_DrawSceneConfig4(GlobalContext* ctxt); // func_80131CDC +void SceneProc_DrawSceneConfig2(GlobalContext* ctxt); // func_80131DE4 +void func_80131DF0(GlobalContext* ctxt, u32 param_2, u32 flags); // func_80131DF0 +void func_80131E58(GlobalContext* ctxt, u32 param_2, u32 flags); // func_80131E58 +void SceneProc_DrawSceneConfig5(GlobalContext* ctxt); // func_80131EC0 +void SceneProc_DrawSceneConfig7(GlobalContext* ctxt); // func_80131F90 +void SceneProc_DrawSceneConfig6(GlobalContext* ctxt); // func_80131FC0 EntranceRecord* SceneTable_LookupEntrance(u32 entrance); // func_801322C0 s32 SceneTable_LookupEntranceScene(u32 entrance); // func_8013230C s32 SceneTable_LookupEntranceAbsoluteScene(u32 entrance); // func_80132338 @@ -3735,6 +3736,8 @@ void func_8019AB40(void); // func_8019AB40 void func_8019AC10(void); // func_8019AC10 void func_8019ACEC(void); // func_8019ACEC void func_8019ADBC(void); // func_8019ADBC +// UNK_RET func_8019AE40(UNK_ARGS); +// UNK_RET func_8019AEC0(UNK_ARGS); void func_8019AF00(void); // func_8019AF00 void func_8019AF58(void); // func_8019AF58 void func_8019AFE8(void); // func_8019AFE8 diff --git a/include/structs.h b/include/structs.h index 099795a2d..a0a16b25f 100644 --- a/include/structs.h +++ b/include/structs.h @@ -48,7 +48,7 @@ typedef struct { typedef struct { /* 0x0 */ s8 segment; /* 0x2 */ s16 type; -/* 0x4 */ u32 params; +/* 0x4 */ void* params; } AnimatedTexture; typedef struct { @@ -189,6 +189,12 @@ typedef struct { } CycleSceneFlags; typedef struct { +/* 0x0 */ u16 cycleLength; +/* 0x4 */ Gfx** textureDls; +/* 0x8 */ u8* textureDlOffsets; +} CyclingTextureParams; + +typedef struct { /* 0x0 */ u32 size; /* 0x4 */ void* unk4; /* 0x8 */ Gfx* append; @@ -308,6 +314,14 @@ typedef struct { /* 0x7 */ u8 unk7; } FireObjLightParams; +typedef struct { +/* 0x0 */ u8 red; +/* 0x1 */ u8 green; +/* 0x2 */ u8 blue; +/* 0x3 */ u8 alpha; +/* 0x4 */ u8 lodFrac; +} FlashingTexturePrimColor; + // Font textures are loaded into here typedef struct { /* 0x0000 */ u8 unk0[2][120][128]; @@ -443,6 +457,13 @@ typedef struct { } RGB; typedef struct { +/* 0x0 */ u8 red; +/* 0x1 */ u8 green; +/* 0x2 */ u8 blue; +/* 0x3 */ u8 alpha; +} RGBA8; + +typedef struct { /* 0x00 */ s16 intPart[16]; /* 0x20 */ u16 fracPart[16]; } RSPMatrix; @@ -538,13 +559,20 @@ typedef struct { /* 0x0 */ u32 romStart; /* 0x4 */ u32 romEnd; /* 0x8 */ UNK_TYPE1 pad8[3]; -/* 0xB */ u8 unkB; +/* 0xB */ u8 sceneConfig; // TODO: This at least controls the behavior of animated textures. Does it do more? /* 0xC */ UNK_TYPE1 padC[1]; /* 0xD */ u8 unkD; /* 0xE */ UNK_TYPE1 padE[2]; } SceneTableEntry; typedef struct { +/* 0x0 */ s8 xStep; +/* 0x1 */ s8 yStep; +/* 0x2 */ u8 width; +/* 0x3 */ u8 height; +} ScrollingTextureParams; + +typedef struct { /* 0x0 */ s8 letterboxTarget; /* 0x1 */ s8 letterboxMagnitude; /* 0x2 */ s8 pillarboxTarget; @@ -893,6 +921,14 @@ typedef union { } F3DVertex; typedef struct { +/* 0x0 */ u16 cycleLength; +/* 0x2 */ u16 numKeyFrames; +/* 0x4 */ FlashingTexturePrimColor* primColors; +/* 0x8 */ RGBA8* envColors; +/* 0xC */ u16* keyFrames; +} FlashingTextureParams; + +typedef struct { /* 0x00 */ u32 ramLocation; /* 0x04 */ u32 vromStart; /* 0x08 */ u32 vromEnd; @@ -1564,6 +1600,8 @@ typedef struct { typedef void(*scene_header_func)(GlobalContext* ctxt, SceneHeaderEntry* entry); +typedef void(*scene_proc_draw_func)(GlobalContext* ctxt, u32 segment, void* params); + typedef struct LightsList LightsList; typedef struct LoadedParticleEntry LoadedParticleEntry; @@ -1913,7 +1951,7 @@ struct ActorPostDrawParams { struct GlobalContext { /* 0x00000 */ ContextCommon common; /* 0x000A4 */ s16 currentScene; -/* 0x000A6 */ u8 unkA6; +/* 0x000A6 */ u8 sceneConfig; // TODO: This at least controls the behavior of animated textures. Does it do more? /* 0x000A7 */ UNK_TYPE1 padA7[9]; /* 0x000B0 */ void* currentSceneVram; /* 0x000B4 */ UNK_TYPE1 padB4[4]; diff --git a/include/variables.h b/include/variables.h index ed5aa647e..d52f90a92 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1023,12 +1023,12 @@ extern UNK_TYPE1 D_801C2660; // D_801C2660 extern scene_header_func sceneHeaderFuncTable[31]; // D_801C26A8 extern UNK_TYPE1 D_801C2730; // D_801C2730 extern ObjectFileTableEntry objectFileTable[643]; // D_801C2740 -extern Gfx D_801C3B60[11]; // D_801C3B60 -extern global_context_func D_801C3BB8[8]; // D_801C3BB8 -extern UNK_PTR gSceneProcDrawFuncs; // D_801C3BD8 -extern UNK_TYPE1 D_801C3C50; // D_801C3C50 -extern UNK_TYPE1 D_801C3C80; // D_801C3C80 -extern UNK_TYPE1 D_801C3C88; // D_801C3C88 +extern Gfx gSceneProcDefaultDl[11]; // D_801C3B60 +extern global_context_func gSceneProcSceneDrawFuncs[8]; // D_801C3BB8 +extern scene_proc_draw_func gSceneProcDrawFuncs[6]; // D_801C3BD8 +extern Gfx* D_801C3C50[3]; // D_801C3C50 +extern Gfx* D_801C3C80[2]; // D_801C3C80 +extern Gfx D_801C3C88[2]; // D_801C3C88 extern SceneTableEntry gSceneTable[113]; // D_801C3CA0 extern SceneEntranceTableEnty gSceneEntranceTable[110]; // D_801C5720 extern UNK_PTR D_801C5C50; // D_801C5C50 @@ -2710,9 +2710,9 @@ extern UNK_TYPE1 D_801F5A2C; // D_801F5A2C extern GlobalContext* D_801F5A90; // D_801F5A90 extern UNK_TYPE1 D_801F5A96; // D_801F5A96 extern UNK_TYPE2 D_801F5A98; // D_801F5A98 -extern u32 gSceneProcStep; // D_801F5AA0 +extern s32 gSceneProcStep; // D_801F5AA0 extern u32 gSceneProcFlags; // D_801F5AA4 -extern UNK_TYPE1 D_801F5AA8; // D_801F5AA8 +extern f32 gSceneProcFlashingAlpha; // D_801F5AA8 extern UNK_TYPE1 D_801F5AB0; // D_801F5AB0 extern UNK_TYPE1 D_801F5AB4; // D_801F5AB4 extern UNK_TYPE1 D_801F5AC0; // D_801F5AC0 |
