ezloReminder.c

This commit is contained in:
theo3
2020-08-09 03:12:45 -07:00
parent b7e57670d4
commit 6e9908b9c9
9 changed files with 1055 additions and 1098 deletions
+123
View File
@@ -0,0 +1,123 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "textbox.h"
typedef struct {
s8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
u8 unk8;
u8 unk9;
u8 unkA;
u8 unkB;
u16 unkC;
u16 unkE;
u16 unk10;
u8 unk12;
u8 unk13;
} Element;
typedef struct {
u8 unk0[0x24];
u8 ezloNagFuncIndex;
} struct_0200AF00;
extern struct_0200AF00 gUnk_0200AF00;
///////////////////////////////////////////////////////////////
extern void sub_0805ECEC(u32, u32, u32, u32);
extern void sub_0801CAD0(Element*);
extern void (*const gUnk_080C904C[])(Element*);
extern u16 gUnk_080C9058[];
void EzloReminder(Element* arg0) {
gUnk_080C904C[arg0->unk4](arg0);
}
#ifdef NON_MATCHING // REG SWAP
extern u32 gUnk_080C9094;
void sub_0801CED8(Element* arg0) {
if (gUnk_0200AF00.ezloNagFuncIndex == 1) {
gUnk_0200AF00.ezloNagFuncIndex = 2;
arg0->unkC = 0x10;
arg0->unkE = 0x90;
arg0->unk6 = 0;
arg0->unk1 = 7;
arg0->unk4 = 1;
arg0->unk0 |= 2;
sub_0801CAB8(arg0, &gUnk_080C9094);
}
}
#else
NAKED
void sub_0801CED8(Element* arg0) {
asm_unified("\
push {r4, lr}\n\
adds r3, r0, #0\n\
ldr r0, _0801CF10 @ =gUnk_0200AF00\n\
adds r1, r0, #0\n\
adds r1, #0x24\n\
ldrb r4, [r1]\n\
cmp r4, #1\n\
bne _0801CF0E\n\
movs r2, #2\n\
movs r0, #2\n\
strb r0, [r1]\n\
movs r1, #0\n\
movs r0, #0x10\n\
strh r0, [r3, #0xc]\n\
movs r0, #0x90\n\
strh r0, [r3, #0xe]\n\
strb r1, [r3, #6]\n\
movs r0, #7\n\
strb r0, [r3, #1]\n\
strb r4, [r3, #4]\n\
ldrb r0, [r3]\n\
orrs r0, r2\n\
strb r0, [r3]\n\
ldr r1, _0801CF14 @ =gUnk_080C9094\n\
adds r0, r3, #0\n\
bl sub_0801CAB8\n\
_0801CF0E:\n\
pop {r4, pc}\n\
.align 2, 0\n\
_0801CF10: .4byte gUnk_0200AF00\n\
_0801CF14: .4byte gUnk_080C9094");
}
#endif
void sub_0801CF18(Element* arg0) {
u32 temp;
temp = gUnk_080C9058[arg0->unk6++];
sub_0805ECEC(0, temp, temp, 0);
if (temp == 0) {
arg0->unk4 = 2;
arg0->unk1 = 8;
gUnk_0200AF00.ezloNagFuncIndex = 3;
PlaySFX(0x173);
}
}
void sub_0801CF60(Element* arg0) {
if ((gUnk_0200AF00.ezloNagFuncIndex >= 5) || (gTextBox.doTextBox & 0x7f)) {
arg0->unk4 = 0;
arg0->unk0 &= -3;
return;
}
sub_0801CAD0(arg0);
if (arg0->unk13 == 1) {
gUnk_0200AF00.ezloNagFuncIndex = 4;
}
}
-1
View File
@@ -9,7 +9,6 @@
#include "readKeyInput.h"
#include "structures.h"
extern bool32 sub_080AE008(Entity*, int, int);
extern int sub_0807A094(int);
extern u32 sub_0801D754(const u8*, u8, u8);
extern u32 sub_080041EC(int, int);
+53
View File
@@ -1,9 +1,62 @@
#include "global.h"
#include "entity.h"
#include "player.h"
#include "functions.h"
extern void (*gUnk_0811B9E0[])(Entity*);
extern BoundingBox gUnk_08114F88;
// inject
void sub_08070680(Entity* this) {
gUnk_0811B9E0[this->action](this);
}
void sub_08070698(Entity *this)
{
u32 uVar1;
int iVar2;
Entity *ent;
gPlayerState.field_0x0[0] = 0xff;
gPlayerState.field_0x14[1] = gPlayerEntity.x.HALF.HI;
gPlayerState.field_0x14[2] = gPlayerEntity.y.HALF.HI;
this->flags = this->flags | 0x80;
this->spritePriority.b0 = 0xc;
this->spritePriority.b1 = 1;
this->spriteSettings.b.shadow = 1;
this->field_0x16 = 0x20;
this->flags2 = 8;
this->damageType = 0x79;
this->boundingBox = &gUnk_08114F88;
this->spriteIndex = 1;
gPlayerState.field_0x8 = 0x100;
sub_0806FDA0(this);
sub_080AE008(this, 1, 2);
InitAnimationForceUpdate(this, 2);
if (this->collisionLayer == 0) {
sub_08016A30(this);
}
uVar1 = IsItemEquipped(0x10);
if (uVar1 != 2) {
sub_08077728();
}
sub_0807A108();
sub_0807AEE4();
iVar2 = sub_08078EFC();
if (iVar2 == 0) {
sub_0807921C();
sub_0807A1B8();
if (gPlayerState.swimState != 0) {
gPlayerState.swimState = 1;
sub_08079938();
gPlayerState.field_0xa8[0] = 7;
sub_0807ACCC(this);
ent = sub_0805EB2C(0x6, 0xf, 0x6, 0xb, 0x0);
if (ent != NULL) {
DeleteEntity(ent);
}
}
}
}