mirror of https://github.com/zeldaret/tmc.git
decomp sub_0803D408
This commit is contained in:
parent
b0ed5b08ef
commit
998fabb9b2
|
|
@ -7,180 +7,6 @@
|
|||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_0803D408
|
||||
sub_0803D408: @ 0x0803D408
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x74
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #1
|
||||
beq _0803D458
|
||||
cmp r0, #1
|
||||
bgt _0803D420
|
||||
cmp r0, #0
|
||||
beq _0803D42A
|
||||
b _0803D558
|
||||
_0803D420:
|
||||
cmp r0, #2
|
||||
beq _0803D478
|
||||
cmp r0, #3
|
||||
beq _0803D4FC
|
||||
b _0803D558
|
||||
_0803D42A:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0803D438
|
||||
b _0803D558
|
||||
_0803D438:
|
||||
ldrb r0, [r2]
|
||||
adds r0, #1
|
||||
strb r0, [r2]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitAnimationForceUpdate
|
||||
ldr r0, _0803D454 @ =0x0000019B
|
||||
bl SoundReq
|
||||
b _0803D558
|
||||
.align 2, 0
|
||||
_0803D454: .4byte 0x0000019B
|
||||
_0803D458:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0803D558
|
||||
movs r0, #2
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #6
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xe]
|
||||
b _0803D558
|
||||
_0803D478:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0803D558
|
||||
ldrb r0, [r2]
|
||||
adds r0, #1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_0803E028
|
||||
cmp r0, #0
|
||||
bne _0803D4D0
|
||||
bl Random
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x81
|
||||
ldrb r1, [r5]
|
||||
adds r1, #1
|
||||
movs r2, #3
|
||||
ands r0, r2
|
||||
adds r1, r1, r0
|
||||
strb r1, [r5]
|
||||
ldrb r0, [r5]
|
||||
movs r1, #5
|
||||
bl __modsi3
|
||||
strb r0, [r5]
|
||||
ldrb r1, [r5]
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _0803D4F4 @ =gUnk_080D04AC
|
||||
adds r1, r1, r0
|
||||
ldr r2, _0803D4F8 @ =gRoomControls
|
||||
ldrh r0, [r1]
|
||||
ldrh r3, [r2, #6]
|
||||
adds r0, r0, r3
|
||||
adds r0, #0x10
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r1, #2]
|
||||
ldrh r2, [r2, #8]
|
||||
adds r0, r0, r2
|
||||
adds r0, #0x10
|
||||
strh r0, [r4, #0x32]
|
||||
_0803D4D0:
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
bl InitAnimationForceUpdate
|
||||
movs r0, #0xf5
|
||||
bl SoundReq
|
||||
b _0803D558
|
||||
.align 2, 0
|
||||
_0803D4F4: .4byte gUnk_080D04AC
|
||||
_0803D4F8: .4byte gRoomControls
|
||||
_0803D4FC:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0803D558
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x81
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #4
|
||||
bls _0803D52E
|
||||
ldr r1, _0803D544 @ =gPlayerEntity
|
||||
ldrh r0, [r1, #0x2e]
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r1, #0x32]
|
||||
subs r0, #0x18
|
||||
strh r0, [r4, #0x32]
|
||||
_0803D52E:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x77
|
||||
ldrb r0, [r1]
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0803D548
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
b _0803D54E
|
||||
.align 2, 0
|
||||
_0803D544: .4byte gPlayerEntity
|
||||
_0803D548:
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
movs r0, #0x10
|
||||
_0803D54E:
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitAnimationForceUpdate
|
||||
_0803D558:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_0803D560
|
||||
sub_0803D560: @ 0x0803D560
|
||||
push {r4, lr}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "audio.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern u32 __modsi3(u32, u32);
|
||||
extern void sub_080AEFB4(Entity*);
|
||||
extern u8 gEntCount;
|
||||
|
||||
|
|
@ -51,7 +52,7 @@ void (*const gUnk_080D04A0[])(Entity*) = {
|
|||
};
|
||||
|
||||
extern const xy gUnk_080D04A8[];
|
||||
extern const u16 gUnk_080D04AC[];
|
||||
extern const Coords gUnk_080D04AC[];
|
||||
|
||||
void VaatiRebornEnemy(Entity* this) {
|
||||
switch (this->type) {
|
||||
|
|
@ -206,3 +207,59 @@ void sub_0803D264(Entity* this) {
|
|||
}
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
|
||||
void sub_0803D408(Entity* this) {
|
||||
const Coords* ptr;
|
||||
|
||||
switch (this->field_0x74.HALF.LO) {
|
||||
case 0:
|
||||
if (--this->actionDelay == 0) {
|
||||
this->field_0x74.HALF.LO++;
|
||||
this->actionDelay = 0x20;
|
||||
InitAnimationForceUpdate(this, 3);
|
||||
SoundReq(SFX_19B);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if ((this->frames.all & 0x80) != 0) {
|
||||
this->field_0x74.HALF.LO = 2;
|
||||
this->spriteSettings.b.draw = 0;
|
||||
this->actionDelay = 0x10;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (--this->actionDelay == 0) {
|
||||
this->field_0x74.HALF.LO++;
|
||||
if (sub_0803E028(this) == 0) {
|
||||
this->field_0x80.HALF.HI += 1 + (Random() & 3);
|
||||
this->field_0x80.HALF.HI = __modsi3(this->field_0x80.HALF.HI, 5);
|
||||
ptr = &gUnk_080D04AC[this->field_0x80.HALF.HI];
|
||||
this->x.HALF.HI = gRoomControls.roomOriginX + ptr->HALF.x + 0x10;
|
||||
this->y.HALF.HI = gRoomControls.roomOriginY + ptr->HALF.y + 0x10;
|
||||
}
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->actionDelay = 0x20;
|
||||
InitAnimationForceUpdate(this, 4);
|
||||
SoundReq(SFX_F5);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ((this->frames.all & 0x80) != 0) {
|
||||
this->spriteSettings.b.draw = 1;
|
||||
if (4 < this->field_0x80.HALF.HI) {
|
||||
this->x.HALF.HI = gPlayerEntity.x.HALF.HI;
|
||||
this->y.HALF.HI = gPlayerEntity.y.HALF.HI - 0x18;
|
||||
}
|
||||
if (--this->field_0x76.HALF.HI == 0) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 1;
|
||||
} else {
|
||||
this->field_0x74.HALF.LO = 0;
|
||||
this->actionDelay = 0x10;
|
||||
}
|
||||
InitAnimationForceUpdate(this, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue