mirror of https://github.com/zeldaret/tmc.git
decompile ladderHoleInBookshelf
This commit is contained in:
parent
4e10e89cca
commit
5f6405bf84
|
|
@ -1,123 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start LadderHoleInBookshelf
|
||||
LadderHoleInBookshelf: @ 0x08093FB4
|
||||
push {lr}
|
||||
ldr r2, _08093FC8 @ =gUnk_081229B4
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08093FC8: .4byte gUnk_081229B4
|
||||
|
||||
thumb_func_start sub_08093FCC
|
||||
sub_08093FCC: @ 0x08093FCC
|
||||
push {lr}
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xc]
|
||||
adds r2, r0, #0
|
||||
adds r2, #0x38
|
||||
movs r1, #2
|
||||
strb r1, [r2]
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08093FE0
|
||||
sub_08093FE0: @ 0x08093FE0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08094064
|
||||
cmp r0, #0
|
||||
beq _08094062
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x38
|
||||
ldrb r0, [r3]
|
||||
cmp r0, #2
|
||||
bne _08094024
|
||||
ldr r0, _08094020 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0xc]
|
||||
cmp r0, #0x1e
|
||||
bgt _08094002
|
||||
cmp r0, #0x1d
|
||||
bge _08094062
|
||||
_08094002:
|
||||
movs r0, #1
|
||||
strb r0, [r3]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #5
|
||||
orrs r0, r1
|
||||
b _08094060
|
||||
.align 2, 0
|
||||
_08094020: .4byte gPlayerEntity
|
||||
_08094024:
|
||||
ldr r0, _0809404C @ =gPlayerEntity
|
||||
ldrb r2, [r0, #0xc]
|
||||
cmp r2, #0x1e
|
||||
bgt _08094050
|
||||
cmp r2, #0x1d
|
||||
blt _08094050
|
||||
movs r0, #2
|
||||
strb r0, [r3]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
b _08094060
|
||||
.align 2, 0
|
||||
_0809404C: .4byte gPlayerEntity
|
||||
_08094050:
|
||||
adds r2, r0, #0
|
||||
adds r2, #0x38
|
||||
ldrb r1, [r2]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08094062
|
||||
movs r0, #1
|
||||
_08094060:
|
||||
strb r0, [r2]
|
||||
_08094062:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08094064
|
||||
sub_08094064: @ 0x08094064
|
||||
push {lr}
|
||||
movs r2, #1
|
||||
ldr r1, _08094080 @ =gPlayerEntity
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r1, r3]
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r0, r3]
|
||||
subs r1, r1, r0
|
||||
adds r1, #0x1c
|
||||
cmp r1, #0x38
|
||||
bls _0809407C
|
||||
movs r2, #0
|
||||
_0809407C:
|
||||
adds r0, r2, #0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08094080: .4byte gPlayerEntity
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_081229B4:: @ 081229B4
|
||||
.4byte sub_08093FCC
|
||||
.4byte sub_08093FE0
|
||||
|
|
@ -747,7 +747,7 @@ SECTIONS {
|
|||
src/object/giantTwig.o(.text);
|
||||
asm/object/object63.o(.text);
|
||||
asm/object/object64.o(.text);
|
||||
asm/object/ladderHoleInBookshelf.o(.text);
|
||||
src/object/ladderHoleInBookshelf.o(.text);
|
||||
asm/object/object66.o(.text);
|
||||
asm/object/object67.o(.text);
|
||||
src/object/object68.o(.text);
|
||||
|
|
@ -1492,7 +1492,7 @@ SECTIONS {
|
|||
data/const/object/object63.o(.rodata);
|
||||
data/const/object/object64.o(.rodata);
|
||||
data/animations/object/object64.o(.rodata);
|
||||
data/const/object/ladderHoleInBookshelf.o(.rodata);
|
||||
src/object/ladderHoleInBookshelf.o(.rodata);
|
||||
data/const/object/object67.o(.rodata);
|
||||
src/object/object68.o(.rodata);
|
||||
src/object/object6A.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
#include "entity.h"
|
||||
#include "player.h"
|
||||
|
||||
void sub_08093FCC(Entity* this);
|
||||
void sub_08093FE0(Entity* this);
|
||||
bool32 sub_08094064(Entity* this);
|
||||
|
||||
void LadderHoleInBookshelf(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_08093FCC,
|
||||
sub_08093FE0,
|
||||
};
|
||||
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08093FCC(Entity* this) {
|
||||
this->action = 1;
|
||||
this->collisionLayer = 2;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
}
|
||||
|
||||
void sub_08093FE0(Entity* this) {
|
||||
if (sub_08094064(this)) {
|
||||
if (this->collisionLayer == 2) {
|
||||
switch (gPlayerEntity.action) {
|
||||
case 0x1d:
|
||||
case 0x1e:
|
||||
return;
|
||||
}
|
||||
this->collisionLayer = 1;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
this->spritePriority.b0 = 5;
|
||||
} else {
|
||||
switch (gPlayerEntity.action) {
|
||||
case 0x1d:
|
||||
case 0x1e:
|
||||
this->collisionLayer = 2;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
this->spritePriority.b0 = 1;
|
||||
break;
|
||||
default:
|
||||
if ((gPlayerEntity.collisionLayer & 2) == 0) {
|
||||
break;
|
||||
}
|
||||
gPlayerEntity.collisionLayer = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08094064(Entity* this) {
|
||||
bool32 rv = 1;
|
||||
if (gPlayerEntity.x.HALF.HI - this->x.HALF.HI + 0x1cU >= 0x39) {
|
||||
rv = 0;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
Loading…
Reference in New Issue