Matched ShapeExec, esprite, and jmp
This commit is contained in:
parent
3a586d8505
commit
91bce77fda
18 changed files with 350 additions and 40 deletions
145
src/game/esprite.c
Executable file
145
src/game/esprite.c
Executable file
|
|
@ -0,0 +1,145 @@
|
|||
#include "game/esprite.h"
|
||||
#include "game/data.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 unk00;
|
||||
/* 0x04 */ u16 unk04;
|
||||
/* 0x06 */ char unk06[2];
|
||||
/* 0x08 */ AnimData *unk08;
|
||||
} UnkEspriteStruct01; // Size 0xC
|
||||
|
||||
s16 esprite[0x180][2];
|
||||
UnkEspriteStruct01 espanim[0x180];
|
||||
|
||||
static s16 gid;
|
||||
|
||||
void espInit(void) {
|
||||
s32 i;
|
||||
|
||||
gid = HuSprGrpCreate(0x180);
|
||||
for (i = 0; i < 0x180; i++) {
|
||||
esprite[i][0] = i;
|
||||
esprite[i][1] = -1;
|
||||
}
|
||||
for (i = 0; i < 0x180; i++) {
|
||||
espanim[i].unk04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s16 espEntry(s32 arg0, s16 arg1, s16 arg2) {
|
||||
UnkEspriteStruct01 *var_r30;
|
||||
UnkEspriteStruct01 *var_r31;
|
||||
s16 (*var_r29)[2];
|
||||
void *temp_r26;
|
||||
s16 temp_r25;
|
||||
s16 var_r28;
|
||||
s32 var_r27;
|
||||
|
||||
var_r29 = esprite;
|
||||
for (var_r28 = 0; var_r28 < 0x180; var_r29++, var_r28++) {
|
||||
if (var_r29[0][1] == -1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (var_r28 == 0x180) {
|
||||
return -1;
|
||||
}
|
||||
var_r31 = espanim;
|
||||
var_r30 = NULL;
|
||||
for (var_r27 = 0; var_r27 < 0x180; var_r31++, var_r27++) {
|
||||
if (var_r31->unk04 != 0) {
|
||||
if (var_r31->unk00 == arg0) {
|
||||
var_r30 = NULL;
|
||||
break;
|
||||
}
|
||||
} else if (var_r30 == NULL) {
|
||||
var_r30 = var_r31;
|
||||
}
|
||||
}
|
||||
if (var_r27 == 0x180) {
|
||||
if (var_r30 == NULL) {
|
||||
return -1;
|
||||
}
|
||||
temp_r26 = HuDataSelHeapReadNum(arg0, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
if (temp_r26 == NULL) {
|
||||
return -1;
|
||||
}
|
||||
var_r30->unk00 = arg0;
|
||||
var_r30->unk08 = HuSprAnimRead(temp_r26);
|
||||
var_r31 = var_r30;
|
||||
}
|
||||
temp_r25 = HuSprCreate(var_r31->unk08, arg1, arg2);
|
||||
if (temp_r25 == -1) {
|
||||
if (var_r30 != NULL) {
|
||||
HuSprAnimKill(var_r31->unk08);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
var_r31->unk04++;
|
||||
var_r29[0][1] = var_r31 - espanim;
|
||||
HuSprGrpMemberSet(gid, var_r29[0][0], temp_r25);
|
||||
return var_r28;
|
||||
}
|
||||
|
||||
void espKill(s16 arg0) {
|
||||
HuSprGrpMemberKill(gid, esprite[arg0][0]);
|
||||
espanim[esprite[arg0][1]].unk04--;
|
||||
esprite[arg0][1] = -1;
|
||||
}
|
||||
|
||||
s16 espGrpIDGet(void) {
|
||||
return gid;
|
||||
}
|
||||
|
||||
void espDispOn(s16 arg0) {
|
||||
HuSprAttrReset(gid, esprite[arg0][0], 4);
|
||||
}
|
||||
|
||||
void espDispOff(s16 arg0) {
|
||||
HuSprAttrSet(gid, esprite[arg0][0], 4);
|
||||
}
|
||||
|
||||
void espAttrSet(s16 arg0, u16 arg1) {
|
||||
HuSprAttrSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espAttrReset(s16 arg0, u16 arg1) {
|
||||
HuSprAttrReset(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espPosSet(s16 arg0, float arg1, float arg2) {
|
||||
HuSprPosSet(gid, esprite[arg0][0], arg1, arg2);
|
||||
}
|
||||
|
||||
void espScaleSet(s16 arg0, float arg1, float arg2) {
|
||||
HuSprScaleSet(gid, esprite[arg0][0], arg1, arg2);
|
||||
}
|
||||
|
||||
void espZRotSet(s16 arg0, float arg1) {
|
||||
HuSprZRotSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espTPLvlSet(s16 arg0, float arg1) {
|
||||
HuSprTPLvlSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espColorSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3) {
|
||||
HuSprColorSet(gid, esprite[arg0][0], arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void espSpeedSet(s16 arg0, float arg1) {
|
||||
HuSprSpeedSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espBankSet(s16 arg0, s16 arg1) {
|
||||
HuSprBankSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espDrawNoSet(s16 arg0, s16 arg1) {
|
||||
HuSprDrawNoSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
|
||||
void espPriSet(s16 arg0, s16 arg1) {
|
||||
HuSprPriSet(gid, esprite[arg0][0], arg1);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue