This commit is contained in:
lemon-sherbet 2020-06-15 19:11:52 +02:00
parent a54ec31a56
commit 98f6999b3d
4 changed files with 143 additions and 341 deletions

View File

@ -1,339 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080692D0
sub_080692D0: @ 0x080692D0
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080692F4
ldr r0, _080692F0 @ =gUnk_08111A8C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0806930A
.align 2, 0
_080692F0: .4byte gUnk_08111A8C
_080692F4:
ldr r0, _0806930C @ =gUnk_08111A80
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0806ED78
_0806930A:
pop {r4, pc}
.align 2, 0
_0806930C: .4byte gUnk_08111A80
thumb_func_start sub_08069310
sub_08069310: @ 0x08069310
push {r4, lr}
adds r4, r0, #0
bl sub_08078778
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #2
bl InitAnimationForceUpdate
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08069328
sub_08069328: @ 0x08069328
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x10
bls _0806934E
movs r0, #0
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #0x28
movs r2, #0x28
bl sub_0806ED9C
cmp r0, #0
blt _0806934E
strb r0, [r4, #0x14]
_0806934E:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
ldrb r1, [r4, #0x14]
cmp r0, r1
beq _08069362
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitAnimationForceUpdate
_08069362:
adds r0, r4, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _0806938E
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_0805E47C
adds r0, r4, #0
movs r1, #8
bl InitAnimationForceUpdate
ldrb r0, [r4, #0xe]
movs r1, #0x90
lsls r1, r1, #5
adds r0, r0, r1
bl TextboxNoOverlapFollow
_0806938E:
pop {r4, pc}
thumb_func_start sub_08069390
sub_08069390: @ 0x08069390
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
ldr r0, _080693C0 @ =gTextBox
ldrb r0, [r0]
movs r1, #0x7f
ands r1, r0
cmp r1, #0
bne _080693BC
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x39
strb r1, [r0]
adds r0, r4, #0
bl sub_0805E584
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitAnimationForceUpdate
_080693BC:
pop {r4, pc}
.align 2, 0
_080693C0: .4byte gTextBox
thumb_func_start sub_080693C4
sub_080693C4: @ 0x080693C4
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
bl sub_0807DD50
pop {pc}
thumb_func_start sub_080693D0
sub_080693D0: @ 0x080693D0
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r1, #0
bl sub_0807DD94
adds r0, r5, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #8
bne _08069422
adds r0, r5, #0
adds r0, #0x82
ldrh r0, [r0]
movs r1, #0xf
ands r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r6, r0, #0x1f
adds r4, r5, #0
adds r4, #0x5a
ldrb r0, [r4]
cmp r0, #1
bne _0806940C
movs r0, #0
strb r0, [r4]
ldr r1, _08069424 @ =0xFFF80000
adds r0, r5, #0
adds r2, r6, #0
bl sub_08069428
_0806940C:
ldrb r0, [r4]
cmp r0, #2
bne _08069422
movs r0, #0
strb r0, [r4]
movs r1, #0x80
lsls r1, r1, #0xc
adds r0, r5, #0
adds r2, r6, #0
bl sub_08069428
_08069422:
pop {r4, r5, r6, pc}
.align 2, 0
_08069424: .4byte 0xFFF80000
thumb_func_start sub_08069428
sub_08069428: @ 0x08069428
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r7, r1, #0
adds r6, r2, #0
movs r1, #4
movs r2, #0
bl CreateFx
adds r4, r0, #0
cmp r4, #0
beq _08069452
ldr r3, _0806947C @ =0xFFF00000
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl PositionRelative
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAB0
_08069452:
cmp r6, #0
beq _0806947A
adds r0, r5, #0
movs r1, #0x41
movs r2, #0
bl CreateFx
adds r4, r0, #0
cmp r4, #0
beq _0806947A
ldr r3, _0806947C @ =0xFFF00000
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl PositionRelative
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAB0
_0806947A:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806947C: .4byte 0xFFF00000
thumb_func_start sub_08069480
sub_08069480: @ 0x08069480
push {lr}
bl sub_0801E99C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {pc}
thumb_func_start sub_0806948C
sub_0806948C: @ 0x0806948C
push {r4, lr}
adds r4, r1, #0
bl sub_08069480
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl CheckKinstoneFused
str r0, [r4, #0x14]
ldr r2, _080694AC @ =gUnk_02033280
ldrb r1, [r2, #7]
movs r0, #1
orrs r0, r1
strb r0, [r2, #7]
pop {r4, pc}
.align 2, 0
_080694AC: .4byte gUnk_02033280
thumb_func_start sub_080694B0
sub_080694B0: @ 0x080694B0
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08069480
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
adds r0, r5, #0
bl CheckKinstoneFused
cmp r0, #0
beq _080694CE
adds r0, r4, #0
bl sub_08078778
b _080694D6
_080694CE:
adds r0, r4, #0
adds r1, r5, #0
bl sub_08078784
_080694D6:
pop {r4, r5, pc}
thumb_func_start sub_080694D8
sub_080694D8: @ 0x080694D8
push {lr}
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
ldr r2, _080694E8 @ =gUnk_08111A94
adds r1, r1, r2
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_080694E8: .4byte gUnk_08111A94
thumb_func_start sub_080694EC
sub_080694EC: @ 0x080694EC
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #4
strb r0, [r4, #0x14]
movs r5, #2
movs r0, #0x2f
bl CheckKinstoneFused
cmp r0, #0
bne _08069502
movs r5, #8
_08069502:
adds r0, r4, #0
adds r1, r5, #0
bl InitAnimationForceUpdate
adds r0, r4, #0
adds r0, #0x80
strh r5, [r0]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08069514
sub_08069514: @ 0x08069514
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xc]
cmp r0, #0
bne _0806953A
adds r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
adds r0, r2, #0
movs r1, #2
bl InitAnimationForceUpdate
b _08069540
_0806953A:
adds r0, r2, #0
bl UpdateAnimationSingleFrame
_08069540:
pop {pc}
.align 2, 0

View File

@ -20,6 +20,9 @@ extern u32 __modsi3(u32, u32);
extern void DoFade(u32, u32);
extern void UpdateAnimationSingleFrame(Entity*);
extern u32 GetInventoryValue(u32);
extern void TextboxNoOverlapFollow(u32 index);
extern Entity* CreateFx(Entity*, u32, u32);
extern u32 CheckKinstoneFused(u32);
// Unidentified
extern void sub_0806ED78(Entity*);
@ -59,4 +62,7 @@ extern s32* sub_0807DAD0(Entity*, u8*);
extern void sub_0806FF60(Entity*, u32, u32);
extern void sub_0806FF88(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
#endif
extern void sub_0805E47C(Entity*);
extern void sub_0805E584(Entity*);
extern void sub_0806FAB0(Entity*, Entity*);
#endif

View File

@ -513,7 +513,7 @@ SECTIONS {
src/bladeBrothers.o(.text);
asm/bladeBrothers.o(.text);
src/cow.o(.text);
asm/goron.o(.text);
src/goron.o(.text);
asm/goronMerchant.o(.text);
asm/gorman.o(.text);
asm/dog.o(.text);

135
src/goron.c Normal file
View File

@ -0,0 +1,135 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "textbox.h"
extern void (*gUnk_08111A80[])(Entity*);
extern void (*gUnk_08111A8C[])(Entity*);
extern u8 gUnk_02033280[];
void sub_080692D0(Entity* this) {
if (this->flags & 2) {
gUnk_08111A8C[this->action](this);
} else {
gUnk_08111A80[this->action](this);
sub_0806ED78(this);
}
}
void sub_08069310(Entity* this) {
sub_08078778(this);
this->action = 1;
InitAnimationForceUpdate(this, 2);
}
void sub_08069328(Entity* this) {
if (((u32)(++this->field_0xf << 24) >> 24) > 16) {
int action;
this->field_0xf = 0;
action = sub_0806ED9C(this, 40, 40);
if (action >= 0) {
this->animationState = action;
}
}
if (this->field_0x58 != this->animationState) {
InitAnimationForceUpdate(this, this->animationState);
}
if (this->interactType != 0) {
this->action = 2;
sub_0805E47C(this);
InitAnimationForceUpdate(this, 8);
TextboxNoOverlapFollow(this->parameter3 + (0x90 << 5));
}
}
void sub_08069390(Entity* this) {
UpdateAnimationSingleFrame(this);
if ((gTextBox.doTextBox & 0x7F) == 0) {
this->action = 1;
this->interactType = 0;
sub_0805E584(this);
InitAnimationForceUpdate(this, this->animationState);
}
}
void sub_080693C4(Entity* this) {
this->action = 1;
sub_0807DD50(this);
}
void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65);
void sub_080693D0(Entity* this) {
sub_0807DD94(this, 0);
if (this->field_0x58 == 8) {
u32 var0 = this->field_0x82 & 0xF;
bool32 createFx65 = ((-var0) | var0) >> 0x1F; // = !var0
if (this->frames.all == 1) {
this->frames.all = 0;
sub_08069428(this, 0xFFF80000, createFx65);
}
if (this->frames.all == 2) {
this->frames.all = 0;
sub_08069428(this, 0x80<<12, createFx65);
}
}
}
void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65) {
Entity* fx = CreateFx(this, 4, 0);
if (fx) {
PositionRelative(this, fx, offsetX, 0xFFF00000);
sub_0806FAB0(this, fx);
}
if (createFx65 != 0) {
fx = CreateFx(this, 65, 0);
if (fx) {
PositionRelative(this, fx, offsetX, 0xFFF00000);
sub_0806FAB0(this, fx);
}
}
}
u32 sub_08069480(Entity* this) {
return (sub_0801E99C(this) << 24) >> 24;
}
void sub_0806948C(Entity* this, u32* param_1) {
param_1[5] = CheckKinstoneFused((sub_08069480(this) << 24) >> 24);
gUnk_02033280[7] |= 1;
}
void sub_080694B0(Entity* this) {
u32 kinstone = (sub_08069480(this) << 24) >> 24;
if (CheckKinstoneFused(kinstone)) {
sub_08078778(this);
} else {
sub_08078784(this, kinstone);
}
}
extern u64 gUnk_08111A94[]; //array of unknown 64 bit structure type
void sub_080694D8(Entity* this) {
ShowNPCDialogue(this, (u32*)&gUnk_08111A94[this->entityType.parameter1]);
}
void sub_080694EC(Entity* this) {
u32 anim;
this->animationState = 4;
anim = 2;
if (!CheckKinstoneFused(47)) anim = 8;
InitAnimationForceUpdate(this, anim);
this->field_0x80 = anim;
}
void sub_08069514(Entity* this) {
if (this->action == 0) {
this->action++;
this->spriteSettings.b.ss0 = 1;
InitAnimationForceUpdate(this, 2);
} else {
UpdateAnimationSingleFrame(this);
}
}