This commit is contained in:
theo3 2020-06-15 15:48:22 -07:00
commit 8c45cd3f5d
5 changed files with 144 additions and 546 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

@ -1,204 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0806581C
sub_0806581C: @ 0x0806581C
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08065840
ldr r0, _0806583C @ =gUnk_0810FF64
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0806585C
.align 2, 0
_0806583C: .4byte gUnk_0810FF64
_08065840:
ldr r1, _08065860 @ =gUnk_0810FF5C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _0806585C
adds r0, r4, #0
bl sub_0806ED78
_0806585C:
pop {r4, pc}
.align 2, 0
_08065860: .4byte gUnk_0810FF5C
thumb_func_start sub_08065864
sub_08065864: @ 0x08065864
push {lr}
movs r3, #1
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
orrs r1, r3
strb r1, [r0, #0x18]
movs r1, #0xc
bl InitAnimationForceUpdate
pop {pc}
.align 2, 0
thumb_func_start sub_08065880
sub_08065880: @ 0x08065880
push {lr}
bl UpdateAnimationSingleFrame
pop {pc}
thumb_func_start sub_08065888
sub_08065888: @ 0x08065888
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #4
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0801E99C
adds r1, r4, #0
adds r1, #0x68
strb r0, [r1]
ldrb r1, [r1]
adds r0, r4, #0
bl sub_08078784
adds r0, r4, #0
bl sub_0807DD50
pop {r4, pc}
thumb_func_start sub_080658BC
sub_080658BC: @ 0x080658BC
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x39
movs r1, #0
ldrsb r1, [r2, r1]
cmp r1, #2
bne _080658F4
movs r0, #0
strb r1, [r4, #0xc]
strb r0, [r2]
ldr r1, _080658F0 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
bl sub_0806F5A4
adds r1, r0, #0
adds r0, r4, #0
bl InitAnimationForceUpdate
adds r0, r4, #0
bl sub_0806F118
b _080658FC
.align 2, 0
_080658F0: .4byte gLinkEntity
_080658F4:
adds r0, r4, #0
movs r1, #0
bl sub_0807DD94
_080658FC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08065900
sub_08065900: @ 0x08065900
push {r4, lr}
adds r4, r0, #0
bl UpdateFuseInteraction
cmp r0, #0
beq _08065910
movs r0, #1
strb r0, [r4, #0xc]
_08065910:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08065914
sub_08065914: @ 0x08065914
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #7
movs r1, #0x1f
movs r2, #7
bl sub_0805EB00
adds r4, r0, #0
cmp r4, #0
beq _08065938
movs r2, #0xc0
lsls r2, r2, #0xd
ldr r3, _0806595C @ =0xFFFF0000
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
str r5, [r4, #0x50]
_08065938:
movs r0, #7
movs r1, #0x20
movs r2, #7
bl sub_0805EB00
adds r4, r0, #0
cmp r4, #0
beq _08065958
movs r2, #0xa0
lsls r2, r2, #0xe
adds r0, r5, #0
adds r1, r4, #0
movs r3, #0
bl PositionRelative
str r5, [r4, #0x50]
_08065958:
pop {r4, r5, pc}
.align 2, 0
_0806595C: .4byte 0xFFFF0000
thumb_func_start sub_08065960
sub_08065960: @ 0x08065960
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xc]
cmp r0, #0
bne _08065986
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, #0xc
bl InitAnimationForceUpdate
b _0806598C
_08065986:
adds r0, r2, #0
bl UpdateAnimationSingleFrame
_0806598C:
pop {pc}
.align 2, 0

View File

@ -20,6 +20,9 @@ extern u32 __modsi3(u32, u32);
extern void DoFade(u32, u32); extern void DoFade(u32, u32);
extern void UpdateAnimationSingleFrame(Entity*); extern void UpdateAnimationSingleFrame(Entity*);
extern u32 GetInventoryValue(u32); extern u32 GetInventoryValue(u32);
extern void TextboxNoOverlapFollow(u32 index);
extern Entity* CreateFx(Entity*, u32, u32);
extern u32 CheckKinstoneFused(u32);
// Unidentified // Unidentified
extern void sub_0806ED78(Entity*); 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_0806FF60(Entity*, u32, u32);
extern void sub_0806FF88(Entity*, u32, u32); extern void sub_0806FF88(Entity*, u32, u32);
extern void sub_0807000C(Entity*); extern void sub_0807000C(Entity*);
extern void sub_0805E47C(Entity*);
extern void sub_0805E584(Entity*);
extern void sub_0806FAB0(Entity*, Entity*);
#endif #endif

View File

@ -491,7 +491,7 @@ SECTIONS {
asm/tingleSiblings.o(.text); asm/tingleSiblings.o(.text);
asm/stockwell.o(.text); asm/stockwell.o(.text);
src/talon.o(.text); src/talon.o(.text);
asm/malon.o(.text); src/malon.o(.text);
src/epona.o(.text); src/epona.o(.text);
src/milkCart.o(.text); src/milkCart.o(.text);
asm/ghostBrothers.o(.text); asm/ghostBrothers.o(.text);
@ -512,7 +512,7 @@ SECTIONS {
asm/melari.o(.text); asm/melari.o(.text);
src/bladeBrothers.o(.text); src/bladeBrothers.o(.text);
src/cow.o(.text); src/cow.o(.text);
asm/goron.o(.text); src/goron.o(.text);
asm/goronMerchant.o(.text); asm/goronMerchant.o(.text);
asm/gorman.o(.text); asm/gorman.o(.text);
asm/dog.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);
}
}