Fix some gibdo nonmatching

This commit is contained in:
Tal Hayon 2022-01-07 09:52:05 +02:00
parent 7c082fc55a
commit a4a05e5902
3 changed files with 11 additions and 177 deletions

View File

@ -1,57 +0,0 @@
.syntax unified
.text
push {r4, lr}
adds r4, r0, #0
bl sub_080379EC
cmp r0, #0
bne _0803773A
bl ResetPlayer
ldr r2, _08037724 @ =gPlayerState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r1, r0
strb r1, [r2, #0x1a]
ldrb r1, [r2, #0xa]
orrs r0, r1
strb r0, [r2, #0xa]
ldr r0, _08037728 @ =gPlayerEntity
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0803773A
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803772C
adds r0, r4, #0
bl sub_08037A58
b _0803773A
.align 2, 0
_08037724: .4byte gPlayerState
_08037728: .4byte gPlayerEntity
_0803772C:
ldrb r0, [r2]
movs r1, #1
eors r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_08037B10
_0803773A:
pop {r4, pc}
.syntax divided

View File

@ -1,106 +0,0 @@
.syntax unified
.text
push {r4, lr}
adds r4, r0, #0
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037B88
ldrb r0, [r4, #0xe]
movs r2, #0
strb r0, [r3, #0xb]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x62
strb r2, [r0]
adds r1, r3, #0
adds r1, #0x63
movs r0, #0xfc
strb r0, [r1]
str r4, [r3, #0x50]
_08037B88:
adds r0, r4, #0
adds r0, #0x80
str r3, [r0]
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037BCA
ldrb r0, [r4, #0xe]
strb r0, [r3, #0xb]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r2, #8
rsbs r2, r2, #0
adds r0, r2, #0
ands r0, r1
movs r1, #3
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r1, r3, #0
adds r1, #0x62
movs r0, #0xfd
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x63
strb r2, [r0]
str r4, [r3, #0x50]
_08037BCA:
adds r0, r4, #0
adds r0, #0x84
str r3, [r0]
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037C06
ldrb r0, [r4, #0xe]
strb r0, [r3, #0xb]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
adds r1, r3, #0
adds r1, #0x62
movs r0, #5
strb r0, [r1]
adds r1, #1
movs r0, #0xf5
strb r0, [r1]
str r4, [r3, #0x50]
_08037C06:
str r3, [r4, #0x54]
pop {r4, pc}
.align 2, 0
.syntax divided

View File

@ -163,8 +163,8 @@ void sub_08037690(Entity* this) {
}
}
}
// Non-matching
NONMATCH("asm/non_matching/gibdo/sub_080376D0.inc", void sub_080376D0(Entity* this)) {
void sub_080376D0(Entity* this) {
u8* x;
if (sub_080379EC(this) == 0) {
ResetPlayer();
@ -172,18 +172,16 @@ NONMATCH("asm/non_matching/gibdo/sub_080376D0.inc", void sub_080376D0(Entity* th
gPlayerState.field_0xa = gPlayerState.field_0xa | 0x80;
CopyPositionAndSpriteOffset(&gPlayerEntity, this);
UpdateAnimationSingleFrame(this);
x = &this->frame;
if ((*x & 0x1) != 0) {
if (!(--this->field_0x7c.BYTES.byte0)) {
if ((this->frame & 0x1) != 0) {
if (--this->field_0x7c.BYTES.byte0 == 0) {
sub_08037A58(this);
} else {
this->frame ^= 1;
sub_08037B10(this);
}
} else {
*x = *x ^ 1;
sub_08037B10(this);
}
}
}
END_NONMATCH
void sub_0803773C(Entity* this) {
UpdateAnimationSingleFrame(this);
@ -373,12 +371,12 @@ void sub_08037B10(Entity* this) {
this->field_0x76.HALF.LO = 0xf0;
}
}
NONMATCH("asm/non_matching/gibdo/sub_08037B48.inc", void sub_08037B48(Entity* this)) {
void sub_08037B48(Entity* this) {
Entity* E;
E = CreateObject(OBJECT_2A, 3, 0);
if (E != 0) {
E->type2 = this->actionDelay;
E->spritePriority.b0 = (E->spritePriority.b0 & 0xf8) | 3;
E->spritePriority.b0 = 3;
E->spriteOffsetX = 0;
E->spriteOffsetY = 0xfc;
E->parent = this;
@ -387,7 +385,7 @@ NONMATCH("asm/non_matching/gibdo/sub_08037B48.inc", void sub_08037B48(Entity* th
E = CreateObject(OBJECT_2A, 3, 0);
if (E != 0) {
E->type2 = this->actionDelay;
E->spritePriority.b0 = (E->spritePriority.b0 & 0xf8) | 3;
E->spritePriority.b0 = 3;
E->spriteOffsetX = 0xfd;
E->spriteOffsetY = 0xf8;
E->parent = this;
@ -396,14 +394,13 @@ NONMATCH("asm/non_matching/gibdo/sub_08037B48.inc", void sub_08037B48(Entity* th
E = CreateObject(OBJECT_2A, 3, 0);
if (E != 0) {
E->type2 = this->actionDelay;
E->spritePriority.b0 = (E->spritePriority.b0 & 0xf8) | 3;
E->spritePriority.b0 = 3;
E->spriteOffsetX = 0x5;
E->spriteOffsetY = 0xf5;
E->parent = this;
}
this->child = E;
}
END_NONMATCH
NONMATCH("asm/non_matching/gibdo/sub_08037C0C.inc", void sub_08037C0C(Entity* this, Entity* that)) {
if (this->field_0x80.HWORD != 0) {