mirror of https://github.com/zeldaret/tmc.git
ResetPlayer decompile
This commit is contained in:
parent
e27bfa5a8b
commit
ba5155b3ac
|
|
@ -1,63 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ResetPlayer
|
||||
ResetPlayer: @ 0x08077B2C
|
||||
push {r4, r5, lr}
|
||||
movs r4, #0
|
||||
ldr r5, _08077B88 @ =gUnk_03000B80
|
||||
_08077B32:
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_08077E78
|
||||
adds r5, #0x1c
|
||||
adds r4, #1
|
||||
cmp r4, #2
|
||||
bls _08077B32
|
||||
ldr r2, _08077B8C @ =gPlayerState
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x3d
|
||||
movs r3, #0
|
||||
strb r3, [r0]
|
||||
strb r3, [r2, #0x1c]
|
||||
subs r0, #0x1c
|
||||
strb r3, [r0]
|
||||
strb r3, [r2, #1]
|
||||
strb r3, [r2, #0xe]
|
||||
strb r3, [r2, #0x1e]
|
||||
strb r3, [r2, #0x1b]
|
||||
strb r3, [r2, #3]
|
||||
strb r3, [r2, #5]
|
||||
ldr r0, [r2, #0x30]
|
||||
ldr r1, _08077B90 @ =0xF7FBFFFF
|
||||
ands r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
ldr r0, _08077B94 @ =gPlayerEntity
|
||||
str r3, [r0, #0x70]
|
||||
ldrb r1, [r2, #2]
|
||||
movs r0, #0xc0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08077B76
|
||||
strb r3, [r2, #2]
|
||||
_08077B76:
|
||||
adds r1, r2, #0
|
||||
adds r1, #0xa8
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #4
|
||||
bgt _08077B86
|
||||
cmp r0, #2
|
||||
blt _08077B86
|
||||
strb r3, [r1]
|
||||
_08077B86:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08077B88: .4byte gUnk_03000B80
|
||||
_08077B8C: .4byte gPlayerState
|
||||
_08077B90: .4byte 0xF7FBFFFF
|
||||
_08077B94: .4byte gPlayerEntity
|
||||
|
|
@ -86,10 +86,7 @@ extern u16 gBG1Buffer[0x400];
|
|||
extern u16 gBG2Buffer[0x400];
|
||||
extern u16 gBG3Buffer[0x800];
|
||||
|
||||
struct {
|
||||
u8 filler[0x70];
|
||||
} extern gUnk_03000B80;
|
||||
// TODO extern ItemBehavior gUnk_03000B80[4];
|
||||
extern ItemBehavior gUnk_03000B80[4];
|
||||
static_assert(sizeof(gUnk_03000B80) == 0x70);
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
|
|
@ -624,7 +624,7 @@ SECTIONS {
|
|||
src/item/itemMoleMitts.o(.text);
|
||||
src/item/itemJarEmpty.o(.text);
|
||||
asm/playerUtils.o(.text);
|
||||
asm/respawnPlayer.o(.text);
|
||||
src/respawnPlayer.o(.text);
|
||||
src/code_08077B98.o(.text);
|
||||
asm/code_08077B98.o(.text);
|
||||
src/code_08078778.o(.text);
|
||||
|
|
|
|||
|
|
@ -1256,7 +1256,7 @@ static void PlayerTalkEzlo(Entity* this) {
|
|||
|
||||
static void PlayerTalkEzloInit(Entity* this) {
|
||||
ResetPlayer();
|
||||
gUnk_03000B80.filler[0x63] = 0;
|
||||
gUnk_03000B80[3].field_0xf = 0;
|
||||
this->iframes = 0;
|
||||
gPriorityHandler.sys_priority = PRIO_PLAYER_EVENT;
|
||||
this->updatePriority = PRIO_PLAYER_EVENT;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
#include "player.h"
|
||||
#include "functions.h"
|
||||
|
||||
void ResetPlayer() {
|
||||
u32 index = 0;
|
||||
ItemBehavior* ptr = gUnk_03000B80;
|
||||
do {
|
||||
sub_08077E78(ptr, index);
|
||||
ptr++;
|
||||
index++;
|
||||
} while (index <= 2);
|
||||
|
||||
gPlayerState.field_0x3c[1] = 0;
|
||||
gPlayerState.field_0x1c = 0;
|
||||
gPlayerState.field_0x1f[2] = 0;
|
||||
gPlayerState.field_0x0[1] = 0;
|
||||
gPlayerState.field_0xe = 0;
|
||||
gPlayerState.dash_state = 0;
|
||||
gPlayerState.sword_state = 0;
|
||||
gPlayerState.field_0x3[0] = 0;
|
||||
gPlayerState.heldObject = 0;
|
||||
gPlayerState.flags &= 0xf7fbffff;
|
||||
|
||||
gPlayerEntity.field_0x70.WORD = 0;
|
||||
|
||||
if ((gPlayerState.jump_status & 0xc0) == 0) {
|
||||
gPlayerState.jump_status = 0;
|
||||
}
|
||||
|
||||
switch (gPlayerState.framestate) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 4: {
|
||||
gPlayerState.framestate = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue