mirror of https://github.com/zeldaret/tmc.git
commit
55345bca65
241
asm/epona.s
241
asm/epona.s
|
@ -1,241 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08065990
|
||||
sub_08065990: @ 0x08065990
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _080659B4 @ =gUnk_0811006C
|
||||
ldrb r0, [r4, #0xc]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
adds r0, r4, #0
|
||||
bl sub_08065A64
|
||||
adds r0, r4, #0
|
||||
bl sub_0806ED78
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080659B4: .4byte gUnk_0811006C
|
||||
|
||||
thumb_func_start sub_080659B8
|
||||
sub_080659B8: @ 0x080659B8
|
||||
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, #6
|
||||
strb r0, [r4, #0x14]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x69
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_0801E99C
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r4, #0x14]
|
||||
lsrs r1, r1, #1
|
||||
adds r0, r4, #0
|
||||
bl LoadAnimation
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080659F0
|
||||
sub_080659F0: @ 0x080659F0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080042B8
|
||||
adds r0, r4, #0
|
||||
bl sub_08065AA4
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08065A00
|
||||
sub_08065A00: @ 0x08065A00
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080042B8
|
||||
adds r0, r4, #0
|
||||
bl sub_08065AA4
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08065A10
|
||||
sub_08065A10: @ 0x08065A10
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _08065A30 @ =gTextBox
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08065A2E
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
ldrb r1, [r2, #0x14]
|
||||
lsrs r1, r1, #1
|
||||
adds r0, r2, #0
|
||||
bl LoadAnimation
|
||||
_08065A2E:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08065A30: .4byte gTextBox
|
||||
|
||||
thumb_func_start sub_08065A34
|
||||
sub_08065A34: @ 0x08065A34
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl UpdateFuseInteraction
|
||||
cmp r0, #0
|
||||
beq _08065A4E
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x14]
|
||||
lsrs r1, r1, #1
|
||||
adds r0, r4, #0
|
||||
bl LoadAnimation
|
||||
_08065A4E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08065A50
|
||||
sub_08065A50: @ 0x08065A50
|
||||
push {lr}
|
||||
ldrb r1, [r0, #0xa]
|
||||
lsls r1, r1, #3
|
||||
ldr r2, _08065A60 @ =gUnk_08110080
|
||||
adds r1, r1, r2
|
||||
bl sub_0806F1AC
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08065A60: .4byte gUnk_08110080
|
||||
|
||||
thumb_func_start sub_08065A64
|
||||
sub_08065A64: @ 0x08065A64
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _08065A8C @ =gLinkState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
rsbs r0, r0, #0
|
||||
lsrs r5, r0, #0x1f
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x69
|
||||
ldrb r0, [r0]
|
||||
cmp r5, r0
|
||||
beq _08065A9C
|
||||
cmp r5, #0
|
||||
bne _08065A90
|
||||
adds r0, r4, #0
|
||||
bl sub_08078778
|
||||
b _08065A9C
|
||||
.align 2, 0
|
||||
_08065A8C: .4byte gLinkState
|
||||
_08065A90:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x68
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_080787A8
|
||||
_08065A9C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x69
|
||||
strb r5, [r0]
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08065AA4
|
||||
sub_08065AA4: @ 0x08065AA4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x39
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
cmp r2, #0
|
||||
beq _08065B18
|
||||
ldr r0, _08065AD0 @ =gLinkState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08065B00
|
||||
cmp r2, #2
|
||||
bne _08065AD4
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F118
|
||||
b _08065AE6
|
||||
.align 2, 0
|
||||
_08065AD0: .4byte gLinkState
|
||||
_08065AD4:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_0805E3A0
|
||||
adds r0, r4, #0
|
||||
bl sub_08065A50
|
||||
_08065AE6:
|
||||
ldr r1, _08065AFC @ =gLinkEntity
|
||||
adds r0, r4, #0
|
||||
bl sub_080045C4
|
||||
bl sub_0806F5A4
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl LoadAnimation
|
||||
b _08065B0A
|
||||
.align 2, 0
|
||||
_08065AFC: .4byte gLinkEntity
|
||||
_08065B00:
|
||||
adds r0, r4, #0
|
||||
bl sub_08065A50
|
||||
bl sub_080791D0
|
||||
_08065B0A:
|
||||
movs r0, #0xd3
|
||||
bl PlaySFX
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x39
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
_08065B18:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08065B1C
|
||||
sub_08065B1C: @ 0x08065B1C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08065B42
|
||||
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, #7
|
||||
bl LoadAnimation
|
||||
b _08065B48
|
||||
_08065B42:
|
||||
adds r0, r2, #0
|
||||
bl sub_080042B8
|
||||
_08065B48:
|
||||
pop {pc}
|
||||
.align 2, 0
|
|
@ -127,7 +127,8 @@ typedef struct Entity
|
|||
u8 spriteOffsetX;
|
||||
u8 spriteOffsetY;
|
||||
u32 * otherEntity;
|
||||
u16 field_0x68;
|
||||
u8 field_0x68;
|
||||
u8 field_0x69;
|
||||
u16 field_0x6a;
|
||||
u8 filler4[8];
|
||||
u32 * heldObjectPtr;
|
||||
|
|
|
@ -25,6 +25,7 @@ typedef struct {
|
|||
u8 *unk4;
|
||||
union {
|
||||
u32 all;
|
||||
struct {
|
||||
u32 filler9:3;
|
||||
u32 noMinishCap:1;
|
||||
u32 pullingState:1;
|
||||
|
@ -33,6 +34,7 @@ typedef struct {
|
|||
u32 slipperyState:1;
|
||||
u32 filler11:5;
|
||||
u32 filler11b:16;
|
||||
} PACKED b;
|
||||
} flags;
|
||||
u8 filler12[6];
|
||||
u16 unk5;
|
||||
|
|
|
@ -490,7 +490,7 @@ SECTIONS {
|
|||
asm/stockwell.o(.text);
|
||||
asm/talon.o(.text);
|
||||
asm/malon.o(.text);
|
||||
asm/epona.o(.text);
|
||||
src/epona.o(.text);
|
||||
src/milkCart.o(.text);
|
||||
asm/ghostBrothers.o(.text);
|
||||
asm/smith.o(.text);
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "textbox.h"
|
||||
#include "link.h"
|
||||
|
||||
extern void sub_0806ED78(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void LoadAnimation(Entity*, u32);
|
||||
extern void sub_080042B8(Entity*);
|
||||
extern void sub_08065AA4(Entity*);
|
||||
extern u32 UpdateFuseInteraction(void);
|
||||
extern void sub_0806F1AC(Entity*, u64*);
|
||||
extern void sub_08078778(Entity*);
|
||||
extern void sub_080787A8(Entity*, u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0805E3A0(Entity*, u8);
|
||||
extern u32 sub_080045C4(Entity*, Entity*);
|
||||
extern u32 sub_0806F5A4(void);
|
||||
extern void sub_080791D0(void);
|
||||
extern void PlaySFX(u32);
|
||||
|
||||
extern TextBox gTextBox;
|
||||
extern LinkState gLinkState;
|
||||
extern Entity gLinkEntity;
|
||||
|
||||
void sub_08065A64(Entity* ent);
|
||||
|
||||
extern void (*gUnk_0811006C[])(Entity*);
|
||||
extern u64 gUnk_08110080[];
|
||||
|
||||
void sub_08065990(Entity* ent)
|
||||
{
|
||||
gUnk_0811006C[ent->action](ent);
|
||||
sub_08065A64(ent);
|
||||
sub_0806ED78(ent);
|
||||
}
|
||||
|
||||
void sub_080659B8(Entity* ent)
|
||||
{
|
||||
ent->action = 1;
|
||||
ent->spriteSettings.b.ss0 = 1;
|
||||
ent->animationState = 6;
|
||||
ent->field_0x69 = -1;
|
||||
ent->field_0x68 = sub_0801E99C(ent);
|
||||
LoadAnimation(ent, ent->animationState / 2);
|
||||
}
|
||||
|
||||
void sub_080659F0(Entity* ent)
|
||||
{
|
||||
sub_080042B8(ent);
|
||||
sub_08065AA4(ent);
|
||||
}
|
||||
|
||||
void sub_08065A00(Entity* ent)
|
||||
{
|
||||
sub_080042B8(ent);
|
||||
sub_08065AA4(ent);
|
||||
}
|
||||
|
||||
void sub_08065A10(Entity* ent)
|
||||
{
|
||||
if ((gTextBox.doTextBox & 0x7F) == 0)
|
||||
{
|
||||
ent->action = 1;
|
||||
LoadAnimation(ent, ent->animationState / 2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08065A34(Entity* ent)
|
||||
{
|
||||
if (UpdateFuseInteraction() != 0)
|
||||
{
|
||||
ent->action = 1;
|
||||
LoadAnimation(ent, ent->animationState / 2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08065A50(Entity* ent)
|
||||
{
|
||||
sub_0806F1AC(ent, &gUnk_08110080[ent->entityType.parameter1]);
|
||||
}
|
||||
|
||||
void sub_08065A64(Entity* ent)
|
||||
{
|
||||
u32 uVar2;
|
||||
|
||||
uVar2 = -(gLinkState.flags.all & 0x80) >> 0x1f;
|
||||
if (uVar2 != ent->field_0x69)
|
||||
{
|
||||
if (uVar2 == 0)
|
||||
{
|
||||
sub_08078778(ent);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_080787A8(ent, ent->field_0x68);
|
||||
}
|
||||
}
|
||||
ent->field_0x69 = uVar2;
|
||||
}
|
||||
|
||||
void sub_08065AA4(Entity* ent)
|
||||
{
|
||||
if (ent->interactType != 0)
|
||||
{
|
||||
if (gLinkState.flags.all & 0x80)
|
||||
{
|
||||
if (ent->interactType == 2)
|
||||
{
|
||||
ent->action = 4;
|
||||
sub_0806F118(ent);
|
||||
}
|
||||
else
|
||||
{
|
||||
ent->action = 3;
|
||||
sub_0805E3A0(ent, 2);
|
||||
sub_08065A50(ent);
|
||||
}
|
||||
sub_080045C4(ent, &gLinkEntity);
|
||||
LoadAnimation(ent, sub_0806F5A4());
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_08065A50(ent);
|
||||
sub_080791D0();
|
||||
}
|
||||
PlaySFX(0xD3);
|
||||
ent->interactType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08065B1C(Entity* ent)
|
||||
{
|
||||
if (ent->action == 0)
|
||||
{
|
||||
ent->action += 1;
|
||||
ent->spriteSettings.b.ss0 = 1;
|
||||
LoadAnimation(ent, 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_080042B8(ent);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue