mirror of https://github.com/zeldaret/tmc.git
Decompile Object42
This commit is contained in:
parent
ae587390b4
commit
3389e2a521
|
|
@ -1,184 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Object42
|
||||
Object42: @ 0x0808DD7C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xa]
|
||||
cmp r0, #0
|
||||
beq _0808DD9C
|
||||
ldr r0, _0808DD98 @ =gUnk_081217B0
|
||||
ldrb r1, [r2, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r2, #0
|
||||
bl _call_via_r1
|
||||
b _0808DDAC
|
||||
.align 2, 0
|
||||
_0808DD98: .4byte gUnk_081217B0
|
||||
_0808DD9C:
|
||||
ldr r0, _0808DDB0 @ =gUnk_081217A8
|
||||
ldrb r1, [r2, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r2, #0
|
||||
bl _call_via_r1
|
||||
_0808DDAC:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808DDB0: .4byte gUnk_081217A8
|
||||
|
||||
thumb_func_start sub_0808DDB4
|
||||
sub_0808DDB4: @ 0x0808DDB4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _0808DDDC
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x6c
|
||||
movs r0, #0xf0
|
||||
strh r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DDE8
|
||||
_0808DDDC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808DDE0
|
||||
sub_0808DDE0: @ 0x0808DDE0
|
||||
push {lr}
|
||||
bl DeleteThisEntity
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0808DDE8
|
||||
sub_0808DDE8: @ 0x0808DDE8
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x6c
|
||||
ldrh r0, [r4]
|
||||
subs r0, #1
|
||||
strh r0, [r4]
|
||||
bl sub_0807953C
|
||||
cmp r0, #0
|
||||
beq _0808DE04
|
||||
ldrb r0, [r5, #0xf]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xf]
|
||||
_0808DE04:
|
||||
ldrb r0, [r5, #0xf]
|
||||
cmp r0, #0x1e
|
||||
bhi _0808DE1C
|
||||
ldr r0, _0808DE8C @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
ldr r1, _0808DE90 @ =0x00001810
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808DE1C
|
||||
ldrh r0, [r4]
|
||||
cmp r0, #0
|
||||
bne _0808DE2A
|
||||
_0808DE1C:
|
||||
ldr r0, _0808DE8C @ =gPlayerState
|
||||
ldr r1, [r0, #0x30]
|
||||
ldr r2, _0808DE94 @ =0xFFFFFBFF
|
||||
ands r1, r2
|
||||
str r1, [r0, #0x30]
|
||||
bl DeleteThisEntity
|
||||
_0808DE2A:
|
||||
ldr r3, _0808DE98 @ =gPlayerEntity
|
||||
ldr r1, _0808DE9C @ =gUnk_081217B8
|
||||
ldrb r0, [r3, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
ldrh r1, [r3, #0x2e]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r5, #0x2e]
|
||||
ldrh r0, [r3, #0x32]
|
||||
subs r0, #6
|
||||
strh r0, [r5, #0x32]
|
||||
ldr r0, [r3, #0x34]
|
||||
str r0, [r5, #0x34]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
ldrb r2, [r3, #0x19]
|
||||
lsrs r2, r2, #6
|
||||
lsls r2, r2, #6
|
||||
ldrb r4, [r5, #0x19]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r4
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x19]
|
||||
ldrb r0, [r3, #0x1b]
|
||||
lsrs r0, r0, #6
|
||||
lsls r0, r0, #6
|
||||
ldrb r2, [r5, #0x1b]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x1b]
|
||||
ldr r0, _0808DE8C @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808DEA0
|
||||
adds r0, r5, #0
|
||||
bl GetNextFrame
|
||||
b _0808DEA4
|
||||
.align 2, 0
|
||||
_0808DE8C: .4byte gPlayerState
|
||||
_0808DE90: .4byte 0x00001810
|
||||
_0808DE94: .4byte 0xFFFFFBFF
|
||||
_0808DE98: .4byte gPlayerEntity
|
||||
_0808DE9C: .4byte gUnk_081217B8
|
||||
_0808DEA0:
|
||||
bl DeleteThisEntity
|
||||
_0808DEA4:
|
||||
ldr r1, _0808DEC0 @ =gPlayerEntity
|
||||
ldrb r0, [r1, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
cmp r0, #2
|
||||
bne _0808DEC4
|
||||
adds r0, r1, #0
|
||||
movs r1, #3
|
||||
adds r2, r5, #0
|
||||
bl sub_0806FEBC
|
||||
ldrh r0, [r5, #0x32]
|
||||
subs r0, #5
|
||||
strh r0, [r5, #0x32]
|
||||
b _0808DECE
|
||||
.align 2, 0
|
||||
_0808DEC0: .4byte gPlayerEntity
|
||||
_0808DEC4:
|
||||
adds r0, r1, #0
|
||||
movs r1, #0
|
||||
adds r2, r5, #0
|
||||
bl sub_0806FEBC
|
||||
_0808DECE:
|
||||
pop {r4, r5, pc}
|
||||
|
|
@ -43342,11 +43342,6 @@
|
|||
"start": 1185642,
|
||||
"size": 26
|
||||
},
|
||||
{
|
||||
"path": "object42/gUnk_081217B8.bin",
|
||||
"start": 1185720,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_Object43_0.bin",
|
||||
"start": 1185760,
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_081217A8:: @ 081217A8
|
||||
.4byte sub_0808DDB4
|
||||
.4byte sub_0808DDE0
|
||||
|
||||
gUnk_081217B0:: @ 081217B0
|
||||
.4byte sub_0808DDB4
|
||||
.4byte sub_0808DDE8
|
||||
|
||||
gUnk_081217B8:: @ 081217B8
|
||||
.incbin "object42/gUnk_081217B8.bin"
|
||||
|
|
@ -689,7 +689,7 @@ SECTIONS {
|
|||
src/object/giantLeaf.o(.text);
|
||||
src/object/fairy.o(.text);
|
||||
src/object/ladderUp.o(.text);
|
||||
asm/object/object42.o(.text);
|
||||
src/object/object42.o(.text);
|
||||
src/object/object43.o(.text);
|
||||
asm/object/object44.o(.text);
|
||||
asm/object/object45.o(.text);
|
||||
|
|
@ -1420,7 +1420,7 @@ SECTIONS {
|
|||
src/object/object3E.o(.rodata);
|
||||
data/const/object/giantLeaf.o(.rodata);
|
||||
src/object/fairy.o(.rodata);
|
||||
data/const/object/object42.o(.rodata);
|
||||
src/object/object42.o(.rodata);
|
||||
src/object/object43.o(.rodata);
|
||||
data/animations/object/object43.o(.rodata);
|
||||
data/const/object/object44.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
/**
|
||||
* @file object42.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Object42 object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[4];
|
||||
/*0x6c*/ u16 unk_6c;
|
||||
} Object42Entity;
|
||||
|
||||
void sub_0808DDB4(Object42Entity*);
|
||||
void sub_0808DDE0(Object42Entity*);
|
||||
void sub_0808DDE8(Object42Entity*);
|
||||
|
||||
void Object42(Object42Entity* this) {
|
||||
static void (*const gUnk_081217A8[])(Object42Entity*) = {
|
||||
sub_0808DDB4,
|
||||
sub_0808DDE0,
|
||||
};
|
||||
static void (*const gUnk_081217B0[])(Object42Entity*) = {
|
||||
sub_0808DDB4,
|
||||
sub_0808DDE8,
|
||||
};
|
||||
if (super->type != 0) {
|
||||
gUnk_081217B0[super->action](this);
|
||||
} else {
|
||||
gUnk_081217A8[super->action](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808DDB4(Object42Entity* this) {
|
||||
super->action = 1;
|
||||
if (super->type != 0) {
|
||||
super->actionDelay = 0x78;
|
||||
this->unk_6c = 0xf0;
|
||||
InitializeAnimation(super, 0);
|
||||
sub_0808DDE8(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808DDE0(Object42Entity* this) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
void sub_0808DDE8(Object42Entity* this) {
|
||||
static const s8 gUnk_081217B8[] = { 0, -6, 0, 6 };
|
||||
Entity* player;
|
||||
this->unk_6c--;
|
||||
if (sub_0807953C()) {
|
||||
super->field_0xf++;
|
||||
}
|
||||
if (((0x1e < super->field_0xf) || ((gPlayerState.flags & 0x1810) != 0)) || (this->unk_6c == 0)) {
|
||||
gPlayerState.flags &= 0xfffffbff;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
player = &gPlayerEntity;
|
||||
super->x.HALF.HI = (s8)gUnk_081217B8[gPlayerEntity.animationState >> 1] + player->x.HALF.HI;
|
||||
super->y.HALF.HI = gPlayerEntity.y.HALF.HI + -6;
|
||||
super->z = gPlayerEntity.z;
|
||||
super->collisionLayer = gPlayerEntity.collisionLayer;
|
||||
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
|
||||
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
|
||||
if ((gPlayerState.flags & 0x400) != 0) {
|
||||
GetNextFrame(super);
|
||||
} else {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (gPlayerEntity.animationState >> 1 == 2) {
|
||||
sub_0806FEBC(&gPlayerEntity, 3, super);
|
||||
super->y.HALF.HI -= 5;
|
||||
} else {
|
||||
sub_0806FEBC(&gPlayerEntity, 0, super);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue