sub_08064B88 ok

This commit is contained in:
theo3 2022-03-30 19:27:53 -07:00
parent 135ac0a8f4
commit 42cf7ea569
2 changed files with 39 additions and 84 deletions

View File

@ -1,83 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x39
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #1
beq _08064BFA
cmp r0, #1
bgt _08064BA2
cmp r0, #0
beq _08064BA8
b _08064BFA
_08064BA2:
cmp r0, #2
beq _08064BCE
b _08064BFA
_08064BA8:
adds r0, r4, #0
bl sub_0806EE20
adds r2, r0, #0
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
strb r0, [r4, #0x14]
cmp r2, #0
beq _08064BC6
movs r1, #0x7f
ands r1, r2
adds r0, r4, #0
bl InitializeAnimation
_08064BC6:
adds r0, r4, #0
bl GetNextFrame
b _08064C28
_08064BCE:
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
bl GetAnimationState
adds r1, r0, #0
cmp r1, #0
bge _08064BE0
ldrb r1, [r4, #0x14]
_08064BE0:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
strb r0, [r4, #0xf]
adds r0, r4, #0
bl InitializeAnimation
movs r0, #0
strb r0, [r5]
adds r0, r4, #0
bl sub_0806F118
b _08064C28
_08064BFA:
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
bl GetAnimationState
adds r1, r0, #0
cmp r1, #0
bge _08064C0C
ldrb r1, [r4, #0x14]
_08064C0C:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
strb r0, [r4, #0xf]
adds r0, r4, #0
bl InitializeAnimation
adds r1, r4, #0
adds r1, #0x39
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_08064CD8
_08064C28:
pop {r4, r5, pc}
.align 2, 0
.syntax divided

View File

@ -14,6 +14,8 @@ void sub_08064CC0(Entity* this);
extern void (*const gUnk_0810FA44[])(Entity*);
void sub_08064C9C(Entity* this);
void sub_08064CD8(Entity* this);
void Sturgeon(Entity* this) {
if ((this->flags & ENT_SCRIPTED) == 0) {
gUnk_0810FA44[this->action](this);
@ -57,7 +59,43 @@ void sub_08064B44(Entity* this) {
}
}
ASM_FUNC("asm/non_matching/sturgeon/sub_08064B88.inc", void sub_08064B88(Entity* this))
void sub_08064B88(Entity* this) {
s32 temp;
s32 temp2;
switch (this->interactType) {
case 0:
temp = sub_0806EE20(this);
this->animationState = this->knockbackDirection;
if (temp != 0) {
InitializeAnimation(this, temp & 0x7f);
}
GetNextFrame(this);
break;
case 2:
this->action = 3;
temp2 = GetAnimationState(this);
if (temp2 < 0) {
temp2 = this->animationState;
}
this->subtimer = this->animIndex;
InitializeAnimation(this, temp2);
this->interactType = 0;
sub_0806F118(this);
break;
case 1:
default:
this->action = 2;
temp2 = GetAnimationState(this);
if (temp2 < 0) {
temp2 = this->animationState;
}
this->subtimer = this->animIndex;
InitializeAnimation(this, temp2);
this->interactType = 0;
sub_08064CD8(this);
}
}
void sub_08064C2C(Entity* this) {
if ((gMessage.doTextBox & 0x7f) == 0) {