Match sub_080A2D98

This commit is contained in:
Tal Hayon 2022-02-18 06:15:03 +02:00
parent 2c39b8ccf9
commit 378049e424
2 changed files with 22 additions and 53 deletions

View File

@ -1,52 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldr r0, _080A2DD0 @ =gPlayerState
str r4, [r0, #0x2c]
movs r2, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x11]
subs r0, #0x11
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r4, #0x11]
movs r0, #0xff
strb r0, [r4, #0x1e]
adds r0, r4, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0xe
bne _080A2DD8
movs r0, #0x27
str r0, [r4, #0x70]
ldr r1, _080A2DD4 @ =gUnk_081271DC
ldrb r0, [r1, #1]
str r0, [r4, #0x78]
str r2, [r4, #0x74]
str r1, [r4, #0x7c]
b _080A2DDA
.align 2, 0
_080A2DD0: .4byte gPlayerState
_080A2DD4: .4byte gUnk_081271DC
_080A2DD8:
str r2, [r4, #0x70]
_080A2DDA:
ldr r0, _080A2DFC @ =gPlayerEntity
ldrb r1, [r0, #0x14]
movs r0, #0xe
ands r0, r1
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08079BD8
adds r0, r4, #0
movs r1, #1
movs r2, #3
bl LoadSwapGFX
adds r0, r4, #0
bl sub_080A2E00
pop {r4, pc}
.align 2, 0
_080A2DFC: .4byte gPlayerEntity
.syntax divided

View File

@ -1,7 +1,11 @@
#include "entity.h"
#include "player.h"
#include "functions.h"
extern void (*const gUnk_081271D4[])(Entity*);
extern u8 gUnk_081271DC[];
void sub_080A2E00(Entity* this);
void PlayerItemShield(Entity* this) {
if (*(int*)&this->field_0x6c != 0) {
@ -10,6 +14,23 @@ void PlayerItemShield(Entity* this) {
gUnk_081271D4[this->action](this);
}
ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2D98.inc", void sub_080A2D98(Entity* this))
void sub_080A2D98(Entity* this) {
gPlayerState.item = this;
this->action = 1;
this->updatePriority = 6;
this->frameIndex = 0xff;
if (this->field_0x68.HALF.LO == 14) {
this->field_0x70.WORD = 0x27;
*(u32*)&this->field_0x78 = gUnk_081271DC[1];
*(u32*)&this->field_0x74 = 0;
*(u8**)&this->field_0x7c = gUnk_081271DC;
} else {
this->field_0x70.WORD = 0;
}
this->animationState = gPlayerEntity.animationState & 0xe;
sub_08079BD8(this);
LoadSwapGFX(this, 1, 3);
sub_080A2E00(this);
}
ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2E00.inc", void sub_080A2E00(Entity* this))