mirror of https://github.com/zeldaret/tmc.git
Decompile Object4B
This commit is contained in:
parent
cffa1024ca
commit
53913b78d0
|
@ -1,267 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start Object4B
|
|
||||||
Object4B: @ 0x0808F77C
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _0808F790 @ =gUnk_08121EB8
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0808F790: .4byte gUnk_08121EB8
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F794
|
|
||||||
sub_0808F794: @ 0x0808F794
|
|
||||||
push {lr}
|
|
||||||
movs r1, #1
|
|
||||||
strb r1, [r0, #0xc]
|
|
||||||
movs r1, #0x3c
|
|
||||||
strb r1, [r0, #0xe]
|
|
||||||
movs r1, #0
|
|
||||||
bl InitializeAnimation
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F7A8
|
|
||||||
sub_0808F7A8: @ 0x0808F7A8
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldrb r0, [r2, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r2, #0xe]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0808F7D0
|
|
||||||
movs r0, #0x78
|
|
||||||
strb r0, [r2, #0xe]
|
|
||||||
ldrb r0, [r2, #0xc]
|
|
||||||
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]
|
|
||||||
_0808F7D0:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F7D4
|
|
||||||
sub_0808F7D4: @ 0x0808F7D4
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0808F80A
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x29
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, #0x39
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #0x18
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #2
|
|
||||||
bl InitializeAnimation
|
|
||||||
_0808F80A:
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F80C
|
|
||||||
sub_0808F80C: @ 0x0808F80C
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
lsrs r1, r0, #0x18
|
|
||||||
cmp r1, #0
|
|
||||||
bne _0808F850
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0x15]
|
|
||||||
movs r2, #0
|
|
||||||
movs r0, #0x80
|
|
||||||
lsls r0, r0, #1
|
|
||||||
strh r0, [r4, #0x24]
|
|
||||||
movs r0, #0x80
|
|
||||||
lsls r0, r0, #0xa
|
|
||||||
str r0, [r4, #0x20]
|
|
||||||
ldrb r1, [r4, #0x1b]
|
|
||||||
movs r0, #0x3f
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r4, #0x1b]
|
|
||||||
strb r2, [r4, #0xe]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #3
|
|
||||||
bl InitializeAnimation
|
|
||||||
ldr r0, _0808F854 @ =0x0000012B
|
|
||||||
bl SoundReq
|
|
||||||
_0808F850:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0808F854: .4byte 0x0000012B
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F858
|
|
||||||
sub_0808F858: @ 0x0808F858
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x10
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0808F884
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl LinearMoveUpdate
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #6
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GravityUpdate
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0808F88A
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
b _0808F88A
|
|
||||||
_0808F884:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
_0808F88A:
|
|
||||||
movs r1, #0x32
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
ldr r1, _0808F8C4 @ =gRoomControls
|
|
||||||
ldrh r2, [r1, #8]
|
|
||||||
subs r0, r0, r2
|
|
||||||
movs r1, #0x8c
|
|
||||||
lsls r1, r1, #2
|
|
||||||
cmp r0, r1
|
|
||||||
bgt _0808F8C8
|
|
||||||
adds r0, r2, r1
|
|
||||||
strh r0, [r4, #0x32]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0808F8EA
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
movs r0, #0x78
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #2
|
|
||||||
bl InitializeAnimation
|
|
||||||
b _0808F8EA
|
|
||||||
.align 2, 0
|
|
||||||
_0808F8C4: .4byte gRoomControls
|
|
||||||
_0808F8C8:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0808F8EA
|
|
||||||
movs r0, #0x80
|
|
||||||
lsls r0, r0, #0xa
|
|
||||||
str r0, [r4, #0x20]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #3
|
|
||||||
bl InitializeAnimation
|
|
||||||
ldr r0, _0808F8EC @ =0x0000012B
|
|
||||||
bl SoundReq
|
|
||||||
_0808F8EA:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0808F8EC: .4byte 0x0000012B
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F8F0
|
|
||||||
sub_0808F8F0: @ 0x0808F8F0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0808F912
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #5
|
|
||||||
bl InitializeAnimation
|
|
||||||
_0808F912:
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F914
|
|
||||||
sub_0808F914: @ 0x0808F914
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0808F93C
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
movs r0, #0x3c
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #1
|
|
||||||
bl InitializeAnimation
|
|
||||||
_0808F93C:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0808F940
|
|
||||||
sub_0808F940: @ 0x0808F940
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl GetNextFrame
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0808F960
|
|
||||||
ldr r1, _0808F964 @ =gMenu
|
|
||||||
ldrb r0, [r1, #6]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r1, #6]
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_0808F960:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0808F964: .4byte gMenu
|
|
|
@ -1,15 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2
|
|
||||||
|
|
||||||
gUnk_08121EB8:: @ 08121EB8
|
|
||||||
.4byte sub_0808F794
|
|
||||||
.4byte sub_0808F7A8
|
|
||||||
.4byte sub_0808F7D4
|
|
||||||
.4byte sub_0808F80C
|
|
||||||
.4byte sub_0808F858
|
|
||||||
.4byte sub_0808F8F0
|
|
||||||
.4byte sub_0808F914
|
|
||||||
.4byte sub_0808F940
|
|
|
@ -698,7 +698,7 @@ SECTIONS {
|
||||||
src/object/fileScreenObjects.o(.text);
|
src/object/fileScreenObjects.o(.text);
|
||||||
src/object/object49.o(.text);
|
src/object/object49.o(.text);
|
||||||
src/object/backgroundCloud.o(.text);
|
src/object/backgroundCloud.o(.text);
|
||||||
asm/object/object4B.o(.text);
|
src/object/object4B.o(.text);
|
||||||
src/object/pushableFurniture.o(.text);
|
src/object/pushableFurniture.o(.text);
|
||||||
src/object/furniture.o(.text);
|
src/object/furniture.o(.text);
|
||||||
src/object/minishSizedEntrance.o(.text);
|
src/object/minishSizedEntrance.o(.text);
|
||||||
|
@ -1435,7 +1435,7 @@ SECTIONS {
|
||||||
data/animations/object/fileScreenObjects.o(.rodata);
|
data/animations/object/fileScreenObjects.o(.rodata);
|
||||||
data/const/object/object49.o(.rodata);
|
data/const/object/object49.o(.rodata);
|
||||||
data/const/object/backgroundCloud.o(.rodata);
|
data/const/object/backgroundCloud.o(.rodata);
|
||||||
data/const/object/object4B.o(.rodata);
|
src/object/object4B.o(.rodata);
|
||||||
src/object/pushableFurniture.o(.rodata);
|
src/object/pushableFurniture.o(.rodata);
|
||||||
data/const/object/furniture.o(.rodata);
|
data/const/object/furniture.o(.rodata);
|
||||||
data/animations/object/furniture.o(.rodata);
|
data/animations/object/furniture.o(.rodata);
|
||||||
|
|
|
@ -0,0 +1,117 @@
|
||||||
|
/**
|
||||||
|
* @file object4B.c
|
||||||
|
* @ingroup Objects
|
||||||
|
*
|
||||||
|
* @brief Object4B object
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NENT_DEPRECATED
|
||||||
|
#include "global.h"
|
||||||
|
#include "object.h"
|
||||||
|
#include "functions.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/*0x00*/ Entity base;
|
||||||
|
} Object4BEntity;
|
||||||
|
|
||||||
|
void Object4B_Init(Object4BEntity*);
|
||||||
|
void Object4B_Action1(Object4BEntity*);
|
||||||
|
void Object4B_Action2(Object4BEntity*);
|
||||||
|
void Object4B_Action3(Object4BEntity*);
|
||||||
|
void Object4B_Action4(Object4BEntity*);
|
||||||
|
void Object4B_Action5(Object4BEntity*);
|
||||||
|
void Object4B_Action6(Object4BEntity*);
|
||||||
|
void Object4B_Action7(Object4BEntity*);
|
||||||
|
|
||||||
|
void Object4B(Object4BEntity* this) {
|
||||||
|
static void (*const Object4B_Actions[])(Object4BEntity*) = {
|
||||||
|
Object4B_Init, Object4B_Action1, Object4B_Action2, Object4B_Action3, Object4B_Action4, Object4B_Action5, Object4B_Action6, Object4B_Action7,
|
||||||
|
};
|
||||||
|
Object4B_Actions[super->action](this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Init(Object4BEntity* this) {
|
||||||
|
super->action = 1;
|
||||||
|
super->actionDelay = 0x3c;
|
||||||
|
InitializeAnimation(super, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action1(Object4BEntity* this) {
|
||||||
|
if (--super->actionDelay == 0) {
|
||||||
|
super->actionDelay = 0x78;
|
||||||
|
super->action++;
|
||||||
|
super->spriteSettings.draw = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action2(Object4BEntity* this) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
if ((super->frame & 0x80) != 0) {
|
||||||
|
super->action++;
|
||||||
|
super->spritePriority.b1 = 3;
|
||||||
|
InitializeAnimation(super, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action3(Object4BEntity* this) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
if (--super->actionDelay == 0) {
|
||||||
|
super->action++;
|
||||||
|
super->direction = 0;
|
||||||
|
super->speed = 0x100;
|
||||||
|
super->zVelocity = 0x20000;
|
||||||
|
super->spriteOrientation.flipY = 0;
|
||||||
|
super->actionDelay = 0;
|
||||||
|
InitializeAnimation(super, 3);
|
||||||
|
SoundReq(SFX_12B);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action4(Object4BEntity* this) {
|
||||||
|
if ((super->frame & 0x10) != 0) {
|
||||||
|
LinearMoveUpdate(super);
|
||||||
|
if (GravityUpdate(super, 0x2000) == 0) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
GetNextFrame(super);
|
||||||
|
}
|
||||||
|
if ((super->y.HALF.HI - gRoomControls.origin_y) < 0x231) {
|
||||||
|
super->y.HALF.HI = gRoomControls.origin_y + 0x230;
|
||||||
|
if ((super->frame & 0x80) != 0) {
|
||||||
|
super->action++;
|
||||||
|
super->actionDelay = 0x78;
|
||||||
|
InitializeAnimation(super, 2);
|
||||||
|
}
|
||||||
|
} else if ((super->frame & 0x80) != 0) {
|
||||||
|
super->zVelocity = 0x20000;
|
||||||
|
InitializeAnimation(super, 3);
|
||||||
|
SoundReq(SFX_12B);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action5(Object4BEntity* this) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
if (--super->actionDelay == 0) {
|
||||||
|
super->action++;
|
||||||
|
InitializeAnimation(super, 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action6(Object4BEntity* this) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
if ((super->frame & 0x80) != 0) {
|
||||||
|
super->action++;
|
||||||
|
super->actionDelay = 0x3c;
|
||||||
|
InitializeAnimation(super, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Object4B_Action7(Object4BEntity* this) {
|
||||||
|
GetNextFrame(super);
|
||||||
|
if (--super->actionDelay == 0) {
|
||||||
|
gMenu.overlayType++;
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue