mirror of https://github.com/zeldaret/tmc.git
Decompile objectAB
This commit is contained in:
parent
64e3013c77
commit
af9f167f12
|
@ -1,124 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start ObjectAB
|
|
||||||
ObjectAB: @ 0x080A00E0
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _080A00F4 @ =gUnk_0812486C
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080A00F4: .4byte gUnk_0812486C
|
|
||||||
|
|
||||||
thumb_func_start sub_080A00F8
|
|
||||||
sub_080A00F8: @ 0x080A00F8
|
|
||||||
push {lr}
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
adds r1, #1
|
|
||||||
movs r3, #0
|
|
||||||
strb r1, [r0, #0xc]
|
|
||||||
adds r2, r0, #0
|
|
||||||
adds r2, #0x38
|
|
||||||
movs r1, #1
|
|
||||||
strb r1, [r2]
|
|
||||||
ldrb r1, [r0, #0x19]
|
|
||||||
movs r2, #0xc0
|
|
||||||
orrs r1, r2
|
|
||||||
strb r1, [r0, #0x19]
|
|
||||||
movs r1, #0x29
|
|
||||||
adds r1, r1, r0
|
|
||||||
mov ip, r1
|
|
||||||
ldrb r1, [r1]
|
|
||||||
movs r2, #7
|
|
||||||
orrs r1, r2
|
|
||||||
mov r2, ip
|
|
||||||
strb r1, [r2]
|
|
||||||
strb r3, [r0, #0xd]
|
|
||||||
movs r1, #0
|
|
||||||
bl InitializeAnimation
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_080A012C
|
|
||||||
sub_080A012C: @ 0x080A012C
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r0, #0
|
|
||||||
bl CheckRoomFlag
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A0154
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A0154
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
_080A0154:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080A0158
|
|
||||||
sub_080A0158: @ 0x080A0158
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r0, #1
|
|
||||||
bl CheckRoomFlag
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A018A
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080A0190
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x1e
|
|
||||||
bl RequestPriorityDuration
|
|
||||||
ldr r1, _080A018C @ =gPlayerEntity
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r2, #0x10
|
|
||||||
movs r3, #0x10
|
|
||||||
bl EntityInRectRadius
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A018A
|
|
||||||
movs r0, #0x37
|
|
||||||
bl sub_0805B390
|
|
||||||
_080A018A:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080A018C: .4byte gPlayerEntity
|
|
||||||
|
|
||||||
thumb_func_start sub_080A0190
|
|
||||||
sub_080A0190: @ 0x080A0190
|
|
||||||
push {r4, lr}
|
|
||||||
movs r4, #0
|
|
||||||
movs r1, #1
|
|
||||||
strb r1, [r0, #0xd]
|
|
||||||
ldr r1, _080A01B8 @ =gPlayerEntity
|
|
||||||
bl CopyPosition
|
|
||||||
ldr r2, _080A01BC @ =gPlayerState
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r2, #0xc]
|
|
||||||
adds r0, r2, #0
|
|
||||||
adds r0, #0x38
|
|
||||||
strb r4, [r0]
|
|
||||||
ldr r0, [r2, #0x30]
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #8
|
|
||||||
orrs r0, r1
|
|
||||||
str r0, [r2, #0x30]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080A01B8: .4byte gPlayerEntity
|
|
||||||
_080A01BC: .4byte gPlayerState
|
|
|
@ -1,10 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2
|
|
||||||
|
|
||||||
gUnk_0812486C:: @ 0812486C
|
|
||||||
.4byte sub_080A00F8
|
|
||||||
.4byte sub_080A012C
|
|
||||||
.4byte sub_080A0158
|
|
|
@ -796,7 +796,7 @@ SECTIONS {
|
||||||
src/object/objectA8.o(.text);
|
src/object/objectA8.o(.text);
|
||||||
src/object/objectA9.o(.text);
|
src/object/objectA9.o(.text);
|
||||||
src/object/waterfallOpening.o(.text);
|
src/object/waterfallOpening.o(.text);
|
||||||
asm/object/objectAB.o(.text);
|
src/object/objectAB.o(.text);
|
||||||
src/object/fourElements.o(.text);
|
src/object/fourElements.o(.text);
|
||||||
asm/object/objectAD.o(.text);
|
asm/object/objectAD.o(.text);
|
||||||
src/object/floatingBlock.o(.text);
|
src/object/floatingBlock.o(.text);
|
||||||
|
@ -1549,7 +1549,7 @@ SECTIONS {
|
||||||
src/object/objectA8.o(.rodata);
|
src/object/objectA8.o(.rodata);
|
||||||
src/object/objectA9.o(.rodata);
|
src/object/objectA9.o(.rodata);
|
||||||
src/object/waterfallOpening.o(.rodata);
|
src/object/waterfallOpening.o(.rodata);
|
||||||
data/const/object/objectAB.o(.rodata);
|
src/object/objectAB.o(.rodata);
|
||||||
data/animations/object/objectAB.o(.rodata);
|
data/animations/object/objectAB.o(.rodata);
|
||||||
src/object/fourElements.o(.rodata);
|
src/object/fourElements.o(.rodata);
|
||||||
data/const/object/objectAD.o(.rodata);
|
data/const/object/objectAD.o(.rodata);
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
#define NENT_DEPRECATED
|
||||||
|
#include "entity.h"
|
||||||
|
#include "flags.h"
|
||||||
|
#include "asm.h"
|
||||||
|
#include "player.h"
|
||||||
|
#include "coord.h"
|
||||||
|
|
||||||
|
extern void sub_0805B390(u32);
|
||||||
|
|
||||||
|
void ObjectAB_Init(Entity*);
|
||||||
|
void ObjectAB_Action1(Entity*);
|
||||||
|
void ObjectAB_Action2(Entity*);
|
||||||
|
void sub_080A0190(Entity*);
|
||||||
|
|
||||||
|
void ObjectAB(Entity* this) {
|
||||||
|
static void (*const actionFuncs[])(Entity*) = {
|
||||||
|
ObjectAB_Init,
|
||||||
|
ObjectAB_Action1,
|
||||||
|
ObjectAB_Action2,
|
||||||
|
};
|
||||||
|
|
||||||
|
actionFuncs[this->action]((Entity*)this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectAB_Init(Entity* this) {
|
||||||
|
this->action++;
|
||||||
|
this->collisionLayer = 1;
|
||||||
|
this->spriteRendering.b3 = 3;
|
||||||
|
this->spritePriority.b0 = 7;
|
||||||
|
this->subAction = 0;
|
||||||
|
InitializeAnimation(this, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectAB_Action1(Entity* this) {
|
||||||
|
if (CheckRoomFlag(0)) {
|
||||||
|
GetNextFrame(this);
|
||||||
|
if (this->frame & 0x80) {
|
||||||
|
this->action++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectAB_Action2(Entity* this) {
|
||||||
|
if (CheckRoomFlag(1)) {
|
||||||
|
sub_080A0190(this);
|
||||||
|
RequestPriorityDuration(this, 0x1e);
|
||||||
|
if (EntityInRectRadius(this, &gPlayerEntity, 0x10, 0x10)) {
|
||||||
|
sub_0805B390(0x37);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080A0190(Entity* this) {
|
||||||
|
this->subAction = 1;
|
||||||
|
CopyPosition(this, &gPlayerEntity);
|
||||||
|
gPlayerState.queued_action = 3;
|
||||||
|
gPlayerState.field_0x38 = 0;
|
||||||
|
gPlayerState.flags |= PL_FLAGS8000;
|
||||||
|
}
|
Loading…
Reference in New Issue