mirror of https://github.com/zeldaret/tmc.git
Decompile MoblinSpear_Action1
This commit is contained in:
parent
60e74d1ba9
commit
f85a48be71
|
@ -1,73 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r5, [r4, #0x50]
|
|
||||||
cmp r5, #0
|
|
||||||
bne _080A83C2
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_080A83C2:
|
|
||||||
ldr r0, [r5, #4]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080A83CC
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_080A83CC:
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x1a
|
|
||||||
lsrs r0, r0, #0x18
|
|
||||||
ldr r1, _080A8424 @ =gUnk_0812966C
|
|
||||||
adds r2, r0, r1
|
|
||||||
ldr r1, [r4, #0x48]
|
|
||||||
ldrb r0, [r2]
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r2, #1
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r0, #0x5b
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, #0x40
|
|
||||||
bne _080A83F4
|
|
||||||
ldr r1, [r4, #0x48]
|
|
||||||
ldrb r0, [r1]
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
strb r0, [r1]
|
|
||||||
_080A83F4:
|
|
||||||
ldr r1, [r4, #0x48]
|
|
||||||
ldrb r0, [r2]
|
|
||||||
strb r0, [r1, #1]
|
|
||||||
adds r2, #1
|
|
||||||
ldr r1, [r4, #0x48]
|
|
||||||
ldrb r0, [r2]
|
|
||||||
strb r0, [r1, #6]
|
|
||||||
ldr r1, [r4, #0x48]
|
|
||||||
ldrb r0, [r2, #1]
|
|
||||||
strb r0, [r1, #7]
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r0, #0x43
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A8428
|
|
||||||
ldrb r1, [r4, #0x10]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080A8438
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
b _080A8436
|
|
||||||
.align 2, 0
|
|
||||||
_080A8424: .4byte gUnk_0812966C
|
|
||||||
_080A8428:
|
|
||||||
ldrb r1, [r4, #0x10]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080A8438
|
|
||||||
movs r0, #0x80
|
|
||||||
orrs r0, r1
|
|
||||||
_080A8436:
|
|
||||||
strb r0, [r4, #0x10]
|
|
||||||
_080A8438:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
.syntax divided
|
|
|
@ -49,11 +49,16 @@ void MoblinSpear_Init(Entity* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/moblinSpear/MoblinSpear_Action1.inc", void MoblinSpear_Action1(Entity* this)) {
|
void MoblinSpear_Action1(Entity* this) {
|
||||||
u8 frames;
|
u8 frames;
|
||||||
Entity* parent;
|
Entity* parent;
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
const HitboxChange* a;
|
|
||||||
|
//const HitboxChange* a;
|
||||||
|
// TODO: Copying a members using HitboxChange members addresses them directly using [r2, 0x1]
|
||||||
|
// while the assembly increases the pointer after every copy.
|
||||||
|
// Not sure how to make this more readable.
|
||||||
|
const u8* a;
|
||||||
|
|
||||||
parent = this->parent;
|
parent = this->parent;
|
||||||
if (parent == NULL) {
|
if (parent == NULL) {
|
||||||
|
@ -63,15 +68,14 @@ NONMATCH("asm/non_matching/moblinSpear/MoblinSpear_Action1.inc", void MoblinSpea
|
||||||
DeleteThisEntity();
|
DeleteThisEntity();
|
||||||
}
|
}
|
||||||
frames = parent->frame * 4;
|
frames = parent->frame * 4;
|
||||||
a = &gUnk_0812966C[frames / 4];
|
a = (u8*) &gUnk_0812966C[frames / 4];
|
||||||
this->hitbox->offset_x = a->offsetX;
|
this->hitbox->offset_x = *a++;
|
||||||
// TODO offset used to increase a pointer is already increated here?
|
|
||||||
if (parent->frameSpriteSettings == 0x40) {
|
if (parent->frameSpriteSettings == 0x40) {
|
||||||
this->hitbox->offset_x = -this->hitbox->offset_x;
|
this->hitbox->offset_x = -this->hitbox->offset_x;
|
||||||
}
|
}
|
||||||
this->hitbox->offset_y = a->offsetY;
|
this->hitbox->offset_y = *a++;
|
||||||
this->hitbox->width = a->width;
|
this->hitbox->width = *a++;
|
||||||
this->hitbox->height = a->height;
|
this->hitbox->height = *a++;
|
||||||
if (parent->field_0x43 != 0) {
|
if (parent->field_0x43 != 0) {
|
||||||
if ((this->flags & ENT_COLLIDE) != 0) {
|
if ((this->flags & ENT_COLLIDE) != 0) {
|
||||||
COLLISION_OFF(this);
|
COLLISION_OFF(this);
|
||||||
|
@ -82,7 +86,6 @@ NONMATCH("asm/non_matching/moblinSpear/MoblinSpear_Action1.inc", void MoblinSpea
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
END_NONMATCH
|
|
||||||
|
|
||||||
void (*const MoblinSpear_Functions[])(Entity*) = {
|
void (*const MoblinSpear_Functions[])(Entity*) = {
|
||||||
MoblinSpear_OnTick, sub_080A832C, DeleteEntity, DeleteEntity, DeleteEntity,
|
MoblinSpear_OnTick, sub_080A832C, DeleteEntity, DeleteEntity, DeleteEntity,
|
||||||
|
|
Loading…
Reference in New Issue