Decompile speed_meter.c and add VIEWPORT_INIT macro (#127)

* Decompile speed_meter.c and add VIEWPORT_INIT macro

- speed_meter.c: OK
- Add VIEWPORT_INIT(viewport, by, rx, ty, lx) macro

* get rid of some magic numbers

* use early return instead of a big if block in SpeedMeter_DrawTimeEntries
This commit is contained in:
Random
2020-05-13 05:05:55 +02:00
committed by GitHub
parent 74a654ecae
commit 08d9fee6e4
16 changed files with 249 additions and 749 deletions
+7 -7
View File
@@ -1602,13 +1602,13 @@ void PadMgr_Init(PadMgr* padmgr, OSMesgQueue* siIntMsgQ, UNK_TYPE arg2, OSId id,
// ? func_800C95F8(?);
void func_800C9644(u32 a0);
// ? func_800C9874(?);
// ? func_800C9940(?);
// ? func_800C9998(?);
// ? func_800C99BC(?);
// ? func_800C99C4(?);
// ? func_800C9E08(?);
// ? func_800C9E44(?);
// ? func_800CA104(?);
void SpeedMeter_InitImpl(SpeedMeter* this, u32 arg1, u32 y);
void SpeedMeter_Init(SpeedMeter* this);
void SpeedMeter_Destroy(SpeedMeter* this);
void SpeedMeter_DrawTimeEntries(SpeedMeter* this, GraphicsContext* gfxCtx);
void SpeedMeter_InitAllocEntry(SpeedMeterAllocEntry* entry, u32 maxval, u32 val, u16 backColor, u16 foreColor, u32 ulx, u32 lrx, u32 uly, u32 lry);
void SpeedMeter_DrawAllocEntry(SpeedMeterAllocEntry* this, GraphicsContext* gfxCtx);
void SpeedMeter_DrawAllocEntries(SpeedMeter* meter, GraphicsContext* gfxCtx, GameState* state);
void SysCfb_Init(s32 n64dd);
u32 SysCfb_GetFbPtr(s32 idx);
u32 SysCfb_GetFbEnd();
+6
View File
@@ -69,4 +69,10 @@
*/
#define VTX(x,y,z,s,t,crnx,cgny,cbnz,a) { { { x, y, z }, 0, { s, t }, { crnx, cgny, cbnz, a }, }, }
#define VIEWPORT_INIT(viewport, by, rx, ty, lx) \
viewport.bottomY = by; \
viewport.rightX = rx; \
viewport.topY = ty; \
viewport.leftX = lx;
#endif
+3 -3
View File
@@ -624,12 +624,12 @@ extern s32 gScreenWidth;
extern s32 gScreenHeight;
extern u32 gSystemHeapSize;
extern volatile u32 D_8012D290;
//extern ? D_8012D2A0;
extern Mtx gMtxClear;
extern MtxF gMtxFClear;
extern u8 D_8012DBB0;
extern u32 D_8012DBC0;
extern volatile u32 gIrqMgrResetStatus;
extern volatile OSTime gIrqMgrRetraceTime;
extern u32 D_8012DBA0;
extern u32 D_8012DBA4;
extern s32 gDebugArenaLogSeverity;
@@ -3488,7 +3488,7 @@ extern u8 D_801610DA;
//extern ? D_80161360;
extern s32 gTrnsnUnkState;
extern Color_RGBA8 D_801614B0;
//extern ? D_801664D0;
extern SpeedMeter gSpeedMeter;
//extern ? D_801664F0;
//extern ? D_80166500;
//extern ? D_80166510;
@@ -3528,7 +3528,7 @@ extern volatile OSTime D_8016A568;
//extern ? D_8016A570;
//extern ? D_8016A574;
extern volatile OSTime D_8016A580;
//extern ? D_8016A588;
extern SpeedMeterTimeEntry* gSpeedMeterTimeEntryPtr;
//extern ? D_8016A590;
//extern ? D_8016A594;
//extern ? D_8016A598;
+24
View File
@@ -1720,4 +1720,28 @@ typedef struct {
SkelAnime skelAnime;
} PSkinAwb; // size = 0x90
typedef struct {
/* 0x00 */ char unk_00[0x18];
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 y;
} SpeedMeter; // size = 0x20
typedef struct {
/* 0x00 */ s32 maxval;
/* 0x04 */ s32 val;
/* 0x08 */ u16 backColor;
/* 0x0A */ u16 foreColor;
/* 0x0C */ s32 ulx;
/* 0x10 */ s32 lrx;
/* 0x14 */ s32 uly;
/* 0x18 */ s32 lry;
} SpeedMeterAllocEntry; // size = 0x1C
typedef struct {
/* 0x00 */ OSTime* time;
/* 0x04 */ u8 x;
/* 0x05 */ u8 y;
/* 0x06 */ u16 color;
} SpeedMeterTimeEntry; // size = 0x08
#endif