mirror of https://github.com/zeldaret/tmc.git
code_08077B98
This commit is contained in:
parent
fc0727243d
commit
882aef9fdc
|
|
@ -316,7 +316,7 @@ _080193C2:
|
|||
movs r0, #4
|
||||
movs r1, #1
|
||||
movs r3, #9
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
beq _080193FA
|
||||
ldr r2, _0801940C @ =gLinkState
|
||||
|
|
|
|||
|
|
@ -1006,7 +1006,7 @@ _0806F444:
|
|||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
beq _0806F4B4
|
||||
str r5, [r0, #0x54]
|
||||
|
|
|
|||
|
|
@ -3130,7 +3130,7 @@ sub_08071EB0: @ 0x08071EB0
|
|||
bl sub_08077B2C
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xe
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
cmp r0, #0
|
||||
beq _08071F12
|
||||
ldr r3, _08071EE4 @ =gLinkState
|
||||
|
|
|
|||
|
|
@ -4597,7 +4597,7 @@ _080754F2:
|
|||
bne _08075538
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xf
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
cmp r5, #0xf
|
||||
bne _08075530
|
||||
adds r1, r7, #0
|
||||
|
|
@ -4976,7 +4976,7 @@ _080757D4:
|
|||
beq _08075816
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08075816
|
||||
|
|
@ -6040,7 +6040,7 @@ _08076036:
|
|||
bls _08076076
|
||||
adds r0, r6, #0
|
||||
movs r1, #2
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08076076
|
||||
|
|
@ -6174,7 +6174,7 @@ _08076138:
|
|||
_0807614A:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x13
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r3, r0, #0
|
||||
cmp r3, #0
|
||||
bne _08076162
|
||||
|
|
@ -7319,7 +7319,7 @@ _080769CC:
|
|||
bl sub_08077DF4
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08076A70
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ _08076CD2:
|
|||
beq _08076CE2
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x12
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
_08076CE2:
|
||||
adds r0, r4, #0
|
||||
bl UpdateItemAnim
|
||||
|
|
@ -281,7 +281,7 @@ _08076E7A:
|
|||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08076EC6
|
||||
|
|
@ -446,7 +446,7 @@ _08076FAC:
|
|||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
bne _08076FF6
|
||||
b _08077110
|
||||
|
|
@ -521,7 +521,7 @@ _08077060:
|
|||
movs r0, #0x11
|
||||
movs r1, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
_0807708C:
|
||||
ldr r0, _080770B0 @ =gLinkState
|
||||
ldr r0, [r0, #0x30]
|
||||
|
|
|
|||
7033
asm/code_08077B98.s
7033
asm/code_08077B98.s
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -578,7 +578,7 @@ _080A2E9C:
|
|||
movs r0, #0x15
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
str r1, [r4, #0x54]
|
||||
cmp r1, #0
|
||||
|
|
@ -966,7 +966,7 @@ _080A31D6:
|
|||
movs r0, #0x15
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
str r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _080A3200
|
||||
|
|
|
|||
|
|
@ -16027,7 +16027,7 @@ sub_080ACECC: @ 0x080ACECC
|
|||
movs r0, #0x10
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080ACF0C
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r0, #0
|
||||
mov r8, r1
|
||||
ldr r3, _08077D94 @ =gLinkState
|
||||
movs r7, #8
|
||||
adds r1, r7, #0
|
||||
mov r0, r8
|
||||
asrs r1, r0
|
||||
ldrb r2, [r3, #0xa]
|
||||
adds r0, r1, #0
|
||||
orrs r0, r2
|
||||
strb r0, [r3, #0xa]
|
||||
ldrb r0, [r3, #0xb]
|
||||
orrs r1, r0
|
||||
strb r1, [r3, #0xb]
|
||||
ldr r0, _08077D98 @ =gLinkEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
strb r0, [r4, #0xa]
|
||||
ldrb r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
bne _08077D6A
|
||||
adds r0, #1
|
||||
strb r0, [r4, #4]
|
||||
_08077D6A:
|
||||
ldrb r2, [r4, #1]
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r2
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08077D9C @ =gUnk_0811BE48
|
||||
adds r5, r0, r1
|
||||
ldrh r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
beq _08077DCC
|
||||
ldr r0, [r3, #0x30]
|
||||
ands r0, r7
|
||||
cmp r0, #0
|
||||
beq _08077DC4
|
||||
cmp r2, #0xd
|
||||
beq _08077DB2
|
||||
cmp r2, #0xd
|
||||
bgt _08077DA0
|
||||
cmp r2, #1
|
||||
beq _08077DAC
|
||||
b _08077DB4
|
||||
.align 2, 0
|
||||
_08077D94: .4byte gLinkState
|
||||
_08077D98: .4byte gLinkEntity
|
||||
_08077D9C: .4byte gUnk_0811BE48
|
||||
_08077DA0:
|
||||
cmp r2, #0x1b
|
||||
bne _08077DB4
|
||||
ldr r6, _08077DA8 @ =0x00000948
|
||||
b _08077DB4
|
||||
.align 2, 0
|
||||
_08077DA8: .4byte 0x00000948
|
||||
_08077DAC:
|
||||
movs r6, #0x81
|
||||
lsls r6, r6, #3
|
||||
b _08077DB4
|
||||
_08077DB2:
|
||||
ldr r6, _08077DC0 @ =0x0000040C
|
||||
_08077DB4:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_08077DF4
|
||||
b _08077DCC
|
||||
.align 2, 0
|
||||
_08077DC0: .4byte 0x0000040C
|
||||
_08077DC4:
|
||||
ldrh r1, [r5, #4]
|
||||
adds r0, r4, #0
|
||||
bl sub_08077DF4
|
||||
_08077DCC:
|
||||
ldrb r0, [r5, #6]
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r0, [r5, #7]
|
||||
cmp r0, #0
|
||||
beq _08077DE8
|
||||
ldr r2, _08077DF0 @ =gLinkState
|
||||
movs r0, #8
|
||||
mov r1, r8
|
||||
asrs r0, r1
|
||||
lsls r1, r0, #4
|
||||
orrs r0, r1
|
||||
ldrb r1, [r2, #4]
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #4]
|
||||
_08077DE8:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08077DF0: .4byte gLinkState
|
||||
.syntax divided
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {lr}
|
||||
ldr r2, _08077F34 @ =gStats
|
||||
ldrb r3, [r0, #1]
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, r3
|
||||
bne _08077F38
|
||||
movs r2, #1
|
||||
b _08077F42
|
||||
.align 2, 0
|
||||
_08077F34: .4byte gStats
|
||||
_08077F38:
|
||||
ldrb r0, [r2, #0xd]
|
||||
movs r2, #0
|
||||
cmp r0, r3
|
||||
bne _08077F42
|
||||
movs r2, #2
|
||||
_08077F42:
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08077F4C
|
||||
movs r0, #1
|
||||
_08077F4C:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "position.h"
|
||||
#include "link.h"
|
||||
|
||||
// Identified - to be sorted into header files
|
||||
extern u32 Random(void);
|
||||
|
|
@ -21,7 +22,10 @@ extern void LoadRoomEntityList();
|
|||
void CopyPosition(Entity*, Entity*);
|
||||
extern u32* StartCutscene(Entity*, u8*);
|
||||
extern void ResolveEntityOnTop(Entity*, Entity*);
|
||||
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
Entity* CreatePlayerItem(u32, u32, u32, u32);
|
||||
extern Entity* GetEmptyEntity(void);
|
||||
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
|
||||
|
||||
// Unidentified
|
||||
extern void sub_0806ED78(Entity*);
|
||||
|
|
@ -46,7 +50,6 @@ extern void sub_0807DDAC(Entity*, u32);
|
|||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
|
|
@ -65,10 +68,19 @@ extern void sub_0801D2B4(Entity*, u32);
|
|||
extern void sub_0806FD3C(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0805ED14(u32*);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_08068BEC(Entity*, u32);
|
||||
void sub_08077E54(Entity*);
|
||||
extern void sub_080042BA(Entity*);
|
||||
extern void sub_0801D630(void*, u32);
|
||||
extern void sub_08077F24(ItemBehavior*, u32);
|
||||
extern void sub_08079184();
|
||||
void sub_08077F50(ItemBehavior *beh, u32 arg1);
|
||||
extern void sub_0807AA80(Entity*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern s32 sub_08078904();
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk;
|
||||
u8 behaviorID;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 stateID;
|
||||
u8 filler[4];
|
||||
u8 unk4;
|
||||
u8 filler2[4];
|
||||
u8 unk5;
|
||||
} ItemBehavior;
|
||||
#include "link.h"
|
||||
|
||||
void extern DebugItem(ItemBehavior*, u32);
|
||||
void extern Sword(ItemBehavior*, u32);
|
||||
|
|
|
|||
|
|
@ -50,7 +50,9 @@ typedef struct {
|
|||
/*0x3f*/ u8 field_0x3f;
|
||||
/*0x40*/ u8 field_0x40[75];
|
||||
/*0x8b*/ u8 field_0x8b;
|
||||
/*0x8c*/ u32 field_0x8c[7];
|
||||
/*0x8c*/ u32 field_0x8c;
|
||||
/*0x90*/ union SplitWord field_0x90;
|
||||
/*0x94*/ u32 field_0x94[5];
|
||||
/*0xa8*/ u8 field_0xa8[3];
|
||||
/*0xab*/ u8 field_0xab;
|
||||
/*0xac*/ u32 field_0xac;
|
||||
|
|
@ -74,6 +76,14 @@ typedef struct {
|
|||
u8 filler3[12];
|
||||
} Stats;
|
||||
|
||||
typedef struct {
|
||||
/*0x0*/ u8 field_0x0;
|
||||
/*0x1*/ u8 behaviorID;
|
||||
/*0x2*/ u8 field_0x2[2];
|
||||
/*0x4*/ u8 stateID;
|
||||
/*0x5*/ u8 field_0x5[10];
|
||||
} ItemBehavior;
|
||||
|
||||
extern u8 gBombBagSizes[];
|
||||
|
||||
extern LinkState gLinkState;
|
||||
|
|
|
|||
|
|
@ -644,7 +644,11 @@ SECTIONS {
|
|||
asm/ocarina.o(.text);
|
||||
asm/code_08076C80.o(.text);
|
||||
asm/respawnLink.o(.text);
|
||||
src/code_08077B98.o(.text);
|
||||
src/code_08077DF4.o(.text);
|
||||
asm/code_08077B98.o(.text);
|
||||
src/code_08078778.o(.text);
|
||||
asm/code_08078778.o(.text);
|
||||
src/sub_0807B7D8.o(.text);
|
||||
src/sub_0807B820.o(.text);
|
||||
src/sub_0807B8A8.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "functions.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
u8 unk[12];
|
||||
} struct_0811BE48;
|
||||
|
||||
typedef struct {
|
||||
u8 field_0x0;
|
||||
u8 field_0x1;
|
||||
} UnkItemStruct;
|
||||
|
||||
Entity* sub_08077C94(ItemBehavior*, u32);
|
||||
void* sub_08077C54(UnkItemStruct* unk);
|
||||
Entity* CreatePlayerBomb(ItemBehavior*, u32);
|
||||
extern Entity* sub_0805E744();
|
||||
extern void sub_0805EA2C(Entity*, u32);
|
||||
|
||||
extern struct_0811BE48 gUnk_0811BE48[];
|
||||
|
||||
void sub_08077B98(UnkItemStruct* unk)
|
||||
{
|
||||
if ((gLinkState.field_0x2c == NULL) || (gLinkState.field_0x2c[9] != 1)) {
|
||||
gLinkState.field_0x2c = sub_08077C54(unk);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08077BB8(UnkItemStruct* unk)
|
||||
{
|
||||
u8* temp = sub_08077C54(unk);
|
||||
if (temp != NULL) {
|
||||
temp[0x10] = 0x20;
|
||||
}
|
||||
gLinkState.field_0x2c = temp;
|
||||
}
|
||||
|
||||
Entity* sub_08077BD4(ItemBehavior *beh)
|
||||
{
|
||||
if (sub_08077C94(beh, gUnk_0811BE48[beh->behaviorID].unk[3]) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
return CreatePlayerBomb(beh, gUnk_0811BE48[beh->behaviorID].unk[3]);
|
||||
}
|
||||
}
|
||||
|
||||
Entity * sub_08077C0C(ItemBehavior *beh, u32 arg1)
|
||||
{
|
||||
u8 bVar1;
|
||||
Entity *pEVar3;
|
||||
|
||||
bVar1 = gUnk_0811BE48[arg1].unk[3];
|
||||
|
||||
if (sub_08077C94(beh, bVar1) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
return CreatePlayerBomb(beh, bVar1);
|
||||
}
|
||||
}
|
||||
|
||||
Entity * CreatePlayerBomb(ItemBehavior *beh, u32 subtype)
|
||||
{
|
||||
Entity *pEVar1;
|
||||
|
||||
pEVar1 = CreatePlayerItem(subtype, 0, 0, beh->behaviorID);
|
||||
if (pEVar1 != NULL) {
|
||||
*(ItemBehavior **)&pEVar1->parent = beh;
|
||||
}
|
||||
return pEVar1;
|
||||
}
|
||||
|
||||
void* sub_08077C54(UnkItemStruct* unk)
|
||||
{
|
||||
Entity *item;
|
||||
|
||||
item = sub_0805E744();
|
||||
if (item != NULL) {
|
||||
item->entityType.subtype = gUnk_0811BE48[unk->field_0x1].unk[3];
|
||||
item->entityType.type = 8;
|
||||
item->flags = 0xa0;
|
||||
item->parent = (Entity*)unk;
|
||||
item->field_0x68 = unk->field_0x1;
|
||||
sub_0805EA2C(item, 2);
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
Entity* sub_08077C94(ItemBehavior* arg0, u32 arg1)
|
||||
{
|
||||
Entity* iVar1;
|
||||
|
||||
iVar1 = sub_0805EB00(8, gUnk_0811BE48[arg1].unk[3], 2);
|
||||
if (iVar1 == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
Entity * CreatePlayerItem(u32 subtype, u32 form, u32 parameter, u32 unk)
|
||||
{
|
||||
Entity *ent;
|
||||
|
||||
ent = GetEmptyEntity();
|
||||
if (ent != NULL) {
|
||||
ent->flags = 0x80;
|
||||
(ent->entityType).type = 8;
|
||||
(ent->entityType).subtype = subtype;
|
||||
(ent->entityType).form = form;
|
||||
(ent->entityType).parameter = parameter;
|
||||
ent->field_0x68 = unk;
|
||||
sub_0805EA2C(ent, 2);
|
||||
}
|
||||
return ent;
|
||||
}
|
||||
|
||||
Entity * sub_08077CF8(u32 subtype, u32 form, u32 parameter, u32 unk)
|
||||
{
|
||||
Entity *ent;
|
||||
|
||||
ent = sub_0805E744();
|
||||
if (ent != NULL) {
|
||||
ent->flags = 0x80;
|
||||
(ent->entityType).type = 8;
|
||||
(ent->entityType).subtype = subtype;
|
||||
(ent->entityType).form = form;
|
||||
(ent->entityType).parameter = parameter;
|
||||
ent->field_0x68 = unk;
|
||||
sub_0805EA2C(ent, 2);
|
||||
}
|
||||
return ent;
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_08077D38(ItemBehavior *beh, u32 arg1) {
|
||||
asm(".include \"asm/non_matching/sub_08077D38.inc\"");
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u8 b0: 4;
|
||||
u8 b1: 4;
|
||||
} PACKED Unk_bitfield;
|
||||
|
||||
typedef struct {
|
||||
u8 unk[16];
|
||||
} Unk_struct;
|
||||
|
||||
void sub_08077DF4(Entity *ent, u32 arg1)
|
||||
{
|
||||
*(u16 *)&ent->flags = arg1;
|
||||
if ((arg1 & 0xff) > 0xb8) {
|
||||
arg1 += (ent->entityType).form >> 1;
|
||||
}
|
||||
gLinkEntity.spriteTileSize = (short)(arg1 >> 8);
|
||||
InitAnimationForceUpdate(&gLinkEntity, (u8)arg1);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void UpdateItemAnim(Entity *ent)
|
||||
{
|
||||
UpdateAnimationSingleFrame(&gLinkEntity);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void sub_08077E3C(Entity *ent)
|
||||
{
|
||||
sub_080042BA(&gLinkEntity);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void sub_08077E54(Entity *ent)
|
||||
{
|
||||
ent->action = gLinkEntity.animIndex;
|
||||
*(u8 *)&ent->spriteTileSize = gLinkEntity.frameIndex;
|
||||
ent->previousActionFlag = gLinkEntity.frameDuration;
|
||||
ent->actionDelay = gLinkEntity.frames.all;
|
||||
}
|
||||
|
||||
void sub_08077E78(void* arg0, u32 bits)
|
||||
{
|
||||
u8 *pbVar1;
|
||||
u32 not;
|
||||
|
||||
if (bits == 0) {
|
||||
if (gLinkState.field_0x2c != NULL) {
|
||||
((Unk_bitfield *)gLinkState.field_0x2c)[0x11].b0 = 6;
|
||||
gLinkState.field_0x2c = (u8 *)bits;
|
||||
}
|
||||
else {
|
||||
gLinkState.field_0x2c = (u8 *)bits;
|
||||
}
|
||||
}
|
||||
|
||||
not = (8 >> bits);
|
||||
gLinkState.field_0x3[1] &= ~((u8)((8 >> bits) << 4) | not);
|
||||
not = ~not;
|
||||
gLinkState.field_0xa &= not;
|
||||
gLinkState.keepFacing &= not;
|
||||
sub_0801D630(arg0, 0x1c);
|
||||
}
|
||||
|
||||
u32 sub_08077EC8(Unk_struct* arg0)
|
||||
{
|
||||
|
||||
if ((gLinkState.field_0x1a[1] & 8) != 0) {
|
||||
sub_08077DF4((Entity *)arg0,0x170);
|
||||
arg0->unk[7] = 0x28;
|
||||
arg0->unk[4] = 7;
|
||||
arg0->unk[15] = 6;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08077EFC(ItemBehavior* arg0)
|
||||
{
|
||||
sub_08077F24(arg0, (u16)gLinkState.field_0x90.HALF.LO);
|
||||
}
|
||||
|
||||
void sub_08077F10(ItemBehavior* arg0)
|
||||
{
|
||||
sub_08077F24(arg0, (u16)gLinkState.field_0x90.HALF.HI);
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_08077F24(ItemBehavior* beh, u32 arg1) {
|
||||
asm(".include \"asm/non_matching/sub_08077F24.inc\"");
|
||||
}
|
||||
|
||||
void sub_08077F50(ItemBehavior *beh, u32 arg1)
|
||||
{
|
||||
sub_08079184();
|
||||
sub_08077E78(beh, arg1);
|
||||
}
|
||||
|
||||
u32 sub_08077F64(ItemBehavior* arg0, u32 unk)
|
||||
{
|
||||
u32 temp;
|
||||
if (gLinkState.heldObject == 0) {
|
||||
sub_08077F50(arg0, unk);
|
||||
temp = 0;
|
||||
}
|
||||
else {
|
||||
temp = 1;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
void sub_08077F84(void)
|
||||
{
|
||||
Entity *obj;
|
||||
|
||||
if (((gLinkEntity.collisionLayer & 2) == 0) &&
|
||||
GetTileTypeByPos(gLinkEntity.x.HALF.HI, gLinkEntity.y.HALF.HI - 0xc, 2) - 0x343U < 4) {
|
||||
sub_0807AA80(&gLinkEntity);
|
||||
gLinkState.jumpStatus |= 8;
|
||||
obj = CreateObject(0x44, 0, 0);
|
||||
if (obj != NULL) {
|
||||
obj->x = gLinkEntity.x;
|
||||
obj->y.HALF.HI = gLinkEntity.y.HALF.HI - 0xc;
|
||||
gLinkEntity.y.HALF.HI -= 0xc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk[4];
|
||||
u32 unk2;
|
||||
u32 unk4;
|
||||
} Unk_struct;
|
||||
|
||||
extern Unk_struct gUnk_03003DF0[];
|
||||
|
||||
void sub_08078778(Entity* ent) {
|
||||
sub_0807887C(ent, 1, 0);
|
||||
}
|
||||
|
||||
void sub_08078784(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 1, arg1);
|
||||
}
|
||||
|
||||
void sub_08078790(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 2, arg1);
|
||||
}
|
||||
|
||||
void sub_0807879C(Entity* ent) {
|
||||
sub_0807887C(ent, 7, 0);
|
||||
}
|
||||
|
||||
void sub_080787A8(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 7, arg1);
|
||||
}
|
||||
|
||||
void sub_080787B4(Entity* ent) {
|
||||
sub_0807887C(ent, 9, 0);
|
||||
}
|
||||
|
||||
void sub_080787C0(Entity* ent) {
|
||||
sub_0807887C(ent, 10, 0);
|
||||
}
|
||||
|
||||
void sub_080787CC(Entity* ent) {
|
||||
sub_0807887C(ent, 5, 0);
|
||||
}
|
||||
|
||||
s32 sub_080787D8(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 8, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
s32 sub_08078800(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 6, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
s32 sub_08078828(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 3, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_08078850(u32 arg0, u32 arg1, u32 arg2, u32 arg3)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_08078904();
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[8] = arg1;
|
||||
gUnk_03003DF0[iVar1].unk[10] = arg2;
|
||||
*(&gUnk_03003DF0[iVar1].unk4 + 1) = arg3;
|
||||
}
|
||||
}
|
||||
|
|
@ -34,7 +34,7 @@ void OcarinaUse(ItemBehavior* itemBeh, s32 inputFlags) {
|
|||
if (gLinkState.linkAction == 24) {
|
||||
sub_08077E78(itemBeh, inputFlags);
|
||||
} else {
|
||||
itemBeh->unk4 |= 15;
|
||||
itemBeh->field_0x5[4] |= 15;
|
||||
gLinkEntity.animationState = 4;
|
||||
var = gLinkEntity.spriteSettings.raw & ~0x40;
|
||||
gLinkEntity.spriteSettings.raw &= var;
|
||||
|
|
|
|||
Loading…
Reference in New Issue