Attempt to decompile anim00023ab0

This commit is contained in:
Ryan Dwyer 2021-11-07 14:19:21 +10:00
parent 3fe4637188
commit ad21e2c8b8
4 changed files with 54 additions and 8 deletions

View File

@ -35,7 +35,7 @@ extern u32 var80095200;
extern struct var80095210 var80095210;
extern OSMesgQueue g_PiMesgQueue;
extern struct g_vars g_Vars;
extern void *var8009a874;
extern u8 **var8009a874;
extern s32 *var8009a888;
extern union filedataptr g_TileFileData;
extern s32 g_TileNumRooms;

View File

@ -10,11 +10,11 @@ void anim0002373c(void);
s32 animGetNumFrames(s16 anim_id);
bool animHasFrames(s16 animnum);
s32 animGetNumAnimations(void);
u8 *animDma(u8 *dst, u32 segoffset, s32 len);
u8 *animDma(u8 *dst, u32 segoffset, u32 len);
s32 anim0002384c(s16 animnum, s32 frame);
u32 anim00023908(void);
s32 anim00023908(s16 animnum, s32 frame, s32 *frameptr);
bool anim000239e0(s16 animnum, s32 frame);
s32 anim00023ab0(s16 animnum, s32 framenum);
u8 anim00023ab0(s16 animnum, s32 framenum);
void anim00023d0c(void);
void anim00023d38(s16 animnum);
u32 anim00023f50(void);

View File

@ -6016,7 +6016,7 @@ struct modelthing {
struct animheader {
/*0x00*/ u16 numframes;
/*0x02*/ u16 framelen; // in bytes
/*0x04*/ u8 *data;
/*0x04*/ u32 data;
/*0x08*/ u16 initialposbytes;
/*0x0a*/ u8 initialposbitsperentry;
/*0x0b*/ u8 flags;

View File

@ -13,8 +13,8 @@
#include "data.h"
#include "types.h"
void *var8009a870;
void *var8009a874;
u8 *var8009a870;
u8 **var8009a874;
s16 *var8009a878;
s16 *var8009a87c;
u8 *var8009a880;
@ -130,7 +130,7 @@ s32 animGetNumAnimations(void)
extern u8 _animationsSegmentRomStart;
u8 *animDma(u8 *dst, u32 segoffset, s32 len)
u8 *animDma(u8 *dst, u32 segoffset, u32 len)
{
if (g_AnimHostEnabled) {
bcopy(&g_AnimHostSegment[segoffset], dst, len);
@ -432,6 +432,52 @@ glabel anim00023ab0
/* 23d08: 30e200ff */ andi $v0,$a3,0xff
);
// Mismatch: regalloc near tmp1 and tmp2
//u8 anim00023ab0(s16 animnum, s32 framenum)
//{
// s32 index = -1;
// s32 i;
// s32 tmp1;
// s32 tmp2;
// s32 sp2c = framenum;
//
// for (i = 0; i < 32; i++) {
// if (var8009a878[i] == animnum && var8009a87c[i] == sp2c) {
// index = i;
// break;
// }
// }
//
// if (index >= 0) {
// var8009a880[index] = 1;
// } else {
// index = var8005f000;
//
// while (var8009a880[index]) {
// index = (index + 1) % 32;
// }
//
// if (g_Anims[animnum].flags & ANIMFLAG_04) {
// anim00023908(animnum, framenum, &sp2c);
// }
//
// if (g_Anims[animnum].framelen) {
// tmp1 = g_Anims[animnum].framelen * sp2c;
// tmp2 = tmp1 + (g_Anims[animnum].data + g_Anims[animnum].initialposbytes);
// var8009a874[index] = animDma(&var8009a870[index * var8005f018], tmp2, g_Anims[animnum].framelen);
// } else {
// var8009a874[index] = &var8009a870[index * var8005f018];
// }
//
// var8009a878[index] = animnum;
// var8009a87c[index] = framenum;
// var8009a880[index] = 1;
// var8005f000 = (index + 1) % 32;
// }
//
// return index;
//}
void anim00023d0c(void)
{
s32 i;