mirror of
https://github.com/zeldaret/tmc
synced 2026-07-02 20:46:44 -04:00
Match bigGoron/sub_0806CF30
This commit is contained in:
@@ -1,115 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0806CF5E
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
strb r0, [r5, #0xd]
|
||||
ldrh r1, [r5, #0x2e]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x68
|
||||
strh r1, [r0]
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
bl sub_0805E3A0
|
||||
adds r0, r5, #0
|
||||
bl sub_0806D0B0
|
||||
adds r0, r5, #0
|
||||
bl sub_0807DD64
|
||||
b _0806CF6C
|
||||
_0806CF5E:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DDAC
|
||||
adds r0, r5, #0
|
||||
bl sub_0807DDE4
|
||||
_0806CF6C:
|
||||
ldrb r0, [r5, #0xd]
|
||||
cmp r0, #2
|
||||
beq _0806CFD4
|
||||
cmp r0, #2
|
||||
bgt _0806D000
|
||||
cmp r0, #0
|
||||
blt _0806D000
|
||||
ldr r0, _0806CFCC @ =gScreenTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0806D000
|
||||
ldr r0, _0806CFD0 @ =gLinkEntity
|
||||
movs r1, #0x2e
|
||||
ldrsh r2, [r0, r1]
|
||||
ldrh r3, [r5, #0x2e]
|
||||
movs r4, #0x2e
|
||||
ldrsh r1, [r5, r4]
|
||||
adds r4, r0, #0
|
||||
cmp r2, r1
|
||||
bge _0806CFA8
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x68
|
||||
ldrh r0, [r0]
|
||||
subs r0, #0x20
|
||||
cmp r0, r1
|
||||
bge _0806CFA8
|
||||
subs r0, r3, #1
|
||||
strh r0, [r5, #0x2e]
|
||||
_0806CFA8:
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r4, r3]
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r4, #0x2e
|
||||
ldrsh r0, [r5, r4]
|
||||
cmp r1, r0
|
||||
ble _0806D000
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x68
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0x20
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r5, r3]
|
||||
cmp r0, r1
|
||||
ble _0806D000
|
||||
adds r0, r2, #1
|
||||
strh r0, [r5, #0x2e]
|
||||
b _0806D000
|
||||
.align 2, 0
|
||||
_0806CFCC: .4byte gScreenTransition
|
||||
_0806CFD0: .4byte gLinkEntity
|
||||
_0806CFD4:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0806D000
|
||||
bl Random
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0806D008 @ =gUnk_081140CC
|
||||
movs r0, #3
|
||||
ands r0, r4
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
bl PlaySFX
|
||||
movs r0, #7
|
||||
ands r4, r0
|
||||
lsls r4, r4, #4
|
||||
adds r4, #0x80
|
||||
strb r4, [r5, #0xe]
|
||||
_0806D000:
|
||||
adds r0, r5, #0
|
||||
bl sub_0806D02C
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0806D008: .4byte gUnk_081140CC
|
||||
.syntax divided
|
||||
+21
-33
@@ -1,11 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern void (*gUnk_081140D4[])(Entity*);
|
||||
|
||||
extern u16 gUnk_081140CC[];
|
||||
extern u32 gScreenTransition;
|
||||
extern void sub_0805E3A0(Entity*, u32);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0807DD64(Entity*);
|
||||
@@ -20,16 +20,11 @@ void BigGoron(Entity* this) {
|
||||
gUnk_081140D4[this->entityType.form](this);
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void sub_0806CF30(Entity* this) {
|
||||
u8 bVar1;
|
||||
u32 uVar2;
|
||||
int iVar3;
|
||||
|
||||
if (this->action == 0) {
|
||||
this->action = 1;
|
||||
this->previousActionFlag = 1;
|
||||
this->field_0x68 = (this->x).HALF.HI;
|
||||
this->field_0x68.HWORD = this->x.HALF.HI;
|
||||
sub_0805E3A0(this, 2);
|
||||
sub_0806D0B0(this);
|
||||
sub_0807DD64(this);
|
||||
@@ -37,39 +32,32 @@ void sub_0806CF30(Entity* this) {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDE4(this);
|
||||
}
|
||||
if (this->previousActionFlag != 2) {
|
||||
|
||||
if (this->previousActionFlag < 3) {
|
||||
if ((gScreenTransition & 3) == 0) {
|
||||
iVar3 = this->x.HALF.HI;
|
||||
if (gLinkEntity.x.HALF.HI < iVar3) {
|
||||
if ((this->field_0x68 - 32) < iVar3) {
|
||||
this->x.HALF.HI = -1;
|
||||
}
|
||||
switch (this->previousActionFlag) {
|
||||
case 0:
|
||||
case 1:
|
||||
if (gScreenTransition.frameCount % 4 == 0) {
|
||||
if (gLinkEntity.x.HALF.HI < this->x.HALF.HI && this->field_0x68.HWORD - 32 < this->x.HALF.HI) {
|
||||
this->x.HALF.HI--;
|
||||
}
|
||||
if (this->x.HALF.HI > gLinkEntity.x.HALF.HI) {
|
||||
if (this->x.HALF.HI < (this->field_0x68 + 32)) {
|
||||
this->x.HALF.HI += 1;
|
||||
}
|
||||
if (gLinkEntity.x.HALF.HI > this->x.HALF.HI && this->field_0x68.HWORD + 32 > this->x.HALF.HI) {
|
||||
this->x.HALF.HI++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
bVar1 = this->actionDelay -= 1;
|
||||
if (bVar1 == 0) {
|
||||
uVar2 = Random();
|
||||
PlaySFX(gUnk_081140CC[uVar2 & 3]);
|
||||
this->actionDelay = ((u8)uVar2 & 7) * 10 + 128;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (--this->actionDelay == 0) {
|
||||
u32 uVar2 = Random();
|
||||
PlaySFX(gUnk_081140CC[uVar2 % 4]);
|
||||
this->actionDelay = ((u8)uVar2 & 7) * 16;
|
||||
this->actionDelay += 128;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
sub_0806D02C(this);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_0806CF30(Entity* this) {
|
||||
asm(".include \"asm/non_matching/bigGoron/sub_0806CF30.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_0806D00C(Entity* this) {
|
||||
Entity* pEVar1;
|
||||
|
||||
Reference in New Issue
Block a user