decompiled Enemy5F

This commit is contained in:
Henny022p 2021-10-22 18:39:30 +02:00
parent edf9a747a3
commit 10f17e914a
4 changed files with 213 additions and 502 deletions

View File

@ -1,474 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Enemy5F
Enemy5F: @ 0x080482C4
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _080482D4
bl DeleteThisEntity
_080482D4:
ldr r0, _080482E8 @ =gUnk_080D1D48
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080482E8: .4byte gUnk_080D1D48
thumb_func_start sub_080482EC
sub_080482EC: @ 0x080482EC
push {r4, lr}
adds r4, r0, #0
ldr r0, _08048310 @ =gScreenTransition
adds r0, #0x38
ldrb r1, [r0]
movs r2, #1
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _08048314
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08048326
.align 2, 0
_08048310: .4byte gScreenTransition
_08048314:
strb r2, [r4, #0xc]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
movs r0, #0xb3
lsls r0, r0, #1
bl SoundReq
_08048326:
adds r0, r4, #0
bl sub_080485D8
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048330
sub_08048330: @ 0x08048330
push {r4, lr}
adds r4, r0, #0
bl sub_080485D8
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 _08048358
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_08048358:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804835C
sub_0804835C: @ 0x0804835C
push {r4, lr}
adds r4, r0, #0
bl sub_080485D8
ldr r0, _08048384 @ =gScreenTransition
adds r0, #0x39
ldrb r1, [r0]
movs r2, #3
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _08048382
strb r2, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r1, r0
strb r1, [r4, #0x10]
movs r0, #0x80
strh r0, [r4, #0x24]
_08048382:
pop {r4, pc}
.align 2, 0
_08048384: .4byte gScreenTransition
thumb_func_start sub_08048388
sub_08048388: @ 0x08048388
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r2, [r5, #0x50]
adds r0, r2, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #0
beq _080483A0
adds r0, r5, #0
bl sub_080485D8
b _080483F2
_080483A0:
ldrb r1, [r5, #0xa]
lsls r1, r1, #1
ldr r0, _080483F4 @ =gUnk_080D1D98
adds r1, r1, r0
movs r0, #0x2e
ldrsh r4, [r2, r0]
movs r0, #0
ldrsb r0, [r1, r0]
adds r4, r4, r0
movs r0, #0x32
ldrsh r2, [r2, r0]
movs r0, #1
ldrsb r0, [r1, r0]
adds r6, r2, r0
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r2, #0x32
ldrsh r1, [r5, r2]
adds r2, r4, #0
adds r3, r6, #0
bl sub_080045D4
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F69C
ldr r0, [r5, #0x50]
ldrh r0, [r0, #0x36]
strh r0, [r5, #0x36]
movs r1, #0x2e
ldrsh r0, [r5, r1]
cmp r0, r4
bne _080483F2
movs r2, #0x32
ldrsh r0, [r5, r2]
cmp r0, r6
bne _080483F2
movs r0, #4
strb r0, [r5, #0xc]
movs r0, #0x3c
strb r0, [r5, #0xe]
_080483F2:
pop {r4, r5, r6, pc}
.align 2, 0
_080483F4: .4byte gUnk_080D1D98
thumb_func_start sub_080483F8
sub_080483F8: @ 0x080483F8
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080485FC
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _0804841C
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08048436
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
b _08048436
_0804841C:
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 _08048436
movs r0, #5
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
_08048436:
pop {r4, r5, pc}
thumb_func_start sub_08048438
sub_08048438: @ 0x08048438
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0804846A
movs r0, #6
strb r0, [r4, #0xc]
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0x14
bls _08048454
movs r0, #0x78
b _08048456
_08048454:
movs r0, #0x3c
_08048456:
strb r0, [r4, #0xe]
movs r0, #0
str r0, [r4, #0x54]
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
ldr r0, _08048474 @ =0x0000019B
bl SoundReq
_0804846A:
adds r0, r4, #0
bl sub_080485FC
pop {r4, pc}
.align 2, 0
_08048474: .4byte 0x0000019B
thumb_func_start sub_08048478
sub_08048478: @ 0x08048478
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
adds r2, r0, #0
cmp r2, #0
beq _080484A2
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080484E6
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
b _080484E6
_080484A2:
adds r3, r4, #0
adds r3, #0x5a
ldrb r1, [r3]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080484BC
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
b _080484E6
_080484BC:
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080484E6
movs r0, #0xfe
ands r0, r1
strb r0, [r3]
movs r0, #0x24
bl sub_080A7EE0
adds r1, r0, #0
cmp r1, #0
beq _080484E6
str r4, [r1, #0x50]
str r1, [r4, #0x54]
movs r3, #0xc0
lsls r3, r3, #0xc
adds r0, r4, #0
movs r2, #0
bl PositionRelative
_080484E6:
pop {r4, pc}
thumb_func_start sub_080484E8
sub_080484E8: @ 0x080484E8
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08048528
movs r0, #8
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0x1f
movs r2, #0x40
bl CreateFx
ldr r2, [r4, #0x50]
adds r2, #0x7b
movs r0, #0x10
b _08048542
_08048528:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0804854C
movs r0, #5
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldr r2, [r4, #0x50]
adds r2, #0x7b
movs r0, #1
_08048542:
ldrb r4, [r4, #0xa]
lsls r0, r4
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
_0804854C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048550
sub_08048550: @ 0x08048550
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #0xb
bne _08048562
movs r0, #0x3c
strb r0, [r4, #0xe]
b _0804859E
_08048562:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804859E
movs r0, #9
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
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
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_080485FC
movs r0, #0xb3
lsls r0, r0, #1
bl SoundReq
_0804859E:
pop {r4, pc}
thumb_func_start sub_080485A0
sub_080485A0: @ 0x080485A0
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
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 _080485D6
movs r0, #4
strb r0, [r4, #0xc]
movs r1, #1
strb r1, [r4, #0xe]
ldr r2, [r4, #0x50]
adds r2, #0x7b
ldrb r3, [r2]
movs r0, #0xf
ands r0, r3
ldrb r4, [r4, #0xa]
lsls r1, r4
orrs r0, r1
strb r0, [r2]
_080485D6:
pop {r4, pc}
thumb_func_start sub_080485D8
sub_080485D8: @ 0x080485D8
push {lr}
adds r1, r0, #0
ldrb r3, [r1, #0xa]
lsls r3, r3, #1
ldr r0, _080485F8 @ =gUnk_080D1D70
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
bl sub_0806FA90
pop {pc}
.align 2, 0
_080485F8: .4byte gUnk_080D1D70
thumb_func_start sub_080485FC
sub_080485FC: @ 0x080485FC
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
ldr r0, _08048638 @ =gUnk_080D1D98
adds r1, r1, r0
ldr r0, [r4, #0x50]
movs r2, #0
ldrsb r2, [r1, r2]
movs r3, #1
ldrsb r3, [r1, r3]
adds r1, r4, #0
bl sub_0806FA90
ldr r3, _0804863C @ =gUnk_080D1D78
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
ldr r0, [r4, #0x50]
adds r0, #0x78
ldrb r0, [r0]
lsrs r0, r0, #4
movs r2, #7
ands r0, r2
adds r1, r1, r0
adds r1, r1, r3
movs r0, #0
ldrsb r0, [r1, r0]
strh r0, [r4, #0x36]
pop {r4, pc}
.align 2, 0
_08048638: .4byte gUnk_080D1D98
_0804863C: .4byte gUnk_080D1D78

View File

@ -1,26 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_080D1D48:: @ 080D1D48
.4byte sub_080482EC
.4byte sub_08048330
.4byte sub_0804835C
.4byte sub_08048388
.4byte sub_080483F8
.4byte sub_08048438
.4byte sub_08048478
.4byte sub_080484E8
.4byte sub_08048550
.4byte sub_080485A0
gUnk_080D1D70:: @ 080D1D70
.incbin "baserom.gba", 0x0D1D70, 0x0000008
gUnk_080D1D78:: @ 080D1D78
.incbin "baserom.gba", 0x0D1D78, 0x0000020
gUnk_080D1D98:: @ 080D1D98
.incbin "baserom.gba", 0x0D1D98, 0x0000008

View File

@ -438,7 +438,7 @@ SECTIONS {
asm/gyorgFemale.o(.text);
src/enemy/gyorgMale.o(.text);
asm/curtain.o(.text);
asm/enemy5F.o(.text);
src/enemy/enemy5F.o(.text);
asm/gyorgChild.o(.text);
asm/gyorgFemaleEye.o(.text);
asm/enemy62.o(.text);
@ -1153,7 +1153,7 @@ SECTIONS {
data/animations/enemy/gyorgMale.o(.rodata);
data/const/enemy/curtain.o(.rodata);
data/animations/enemy/curtain.o(.rodata);
data/const/enemy/enemy5F.o(.rodata);
src/enemy/enemy5F.o(.rodata);
data/animations/enemy/enemy5F.o(.rodata);
data/const/enemy/gyorgChild.o(.rodata);
data/animations/enemy/gyorgChild.o(.rodata);

211
src/enemy/enemy5F.c Normal file
View File

@ -0,0 +1,211 @@
#include "entity.h"
#include "audio.h"
#include "structures.h"
#include "functions.h"
void sub_080485D8(Entity*);
void sub_080485FC(Entity*);
void sub_080482EC(Entity*);
void sub_08048330(Entity*);
void sub_0804835C(Entity*);
void sub_08048388(Entity*);
void sub_080483F8(Entity*);
void sub_08048438(Entity*);
void sub_08048478(Entity*);
void sub_080484E8(Entity*);
void sub_08048550(Entity*);
void sub_080485A0(Entity*);
void (*const gUnk_080D1D48[])(Entity*) = {
sub_080482EC, sub_08048330, sub_0804835C, sub_08048388, sub_080483F8,
sub_08048438, sub_08048478, sub_080484E8, sub_08048550, sub_080485A0,
};
const s8 gUnk_080D1D70[] = { 0xee, 0x01, 0xfa, 0x04, 0x06, 0x04, 0x13, 0x01 };
const s8 gUnk_080D1D78[] = { 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc, 0xfd, 0xfc,
0xfb, 0xfa, 0xf9, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, 0xfc, 0xfb, 0xfa,
0xf9, 0xfa, 0xfa, 0xfb, 0xfc, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9 };
const s8 gUnk_080D1D98[] = { 0xe8, 0x04, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x04 };
void Enemy5F(Entity* this) {
if (this->parent->next == NULL) {
DeleteThisEntity();
}
gUnk_080D1D48[this->action](this);
}
void sub_080482EC(Entity* this) {
if ((gScreenTransition.field_0x38 & 1) != 0) {
this->action = 2;
InitializeAnimation(this, 1);
} else {
this->action = 1;
InitializeAnimation(this, 0);
SoundReq(SFX_166);
}
sub_080485D8(this);
}
void sub_08048330(Entity* this) {
sub_080485D8(this);
GetNextFrame(this);
if ((this->frames.all & 0x80) != 0) {
this->action = 2;
InitializeAnimation(this, 1);
}
}
void sub_0804835C(Entity* this) {
sub_080485D8(this);
if ((gScreenTransition.field_0x39 & 3) == 0) {
this->action = 3;
this->flags |= 0x80;
this->speed = 0x80;
}
}
void sub_08048388(Entity* this) {
u32 direction;
Entity* parent;
u32 x;
u32 y;
const s8* ptr;
parent = this->parent;
if (parent->field_0x78.HALF.HI != 0) {
sub_080485D8(this);
} else {
ptr = &gUnk_080D1D98[this->type * 2];
x = parent->x.HALF.HI + ptr[0];
y = parent->y.HALF.HI + ptr[1];
direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y);
this->direction = direction;
sub_0806F69C(this);
this->height.HALF.HI = this->parent->height.HALF.HI;
if ((this->x.HALF.HI == x) && (this->y.HALF.HI == y)) {
this->action = 4;
this->actionDelay = 0x3c;
}
}
}
void sub_080483F8(Entity* this) {
sub_080485FC(this);
if (this->actionDelay != 0) {
if (--this->actionDelay == 0) {
InitializeAnimation(this, 3);
}
} else {
GetNextFrame(this);
if ((this->frames.all & 0x80) != 0) {
this->action = 5;
this->actionDelay = 0;
}
}
}
void sub_08048438(Entity* this) {
if (this->actionDelay != 0) {
this->action = 6;
if (this->parent->currentHealth >= 0x15) {
this->actionDelay = 120;
} else {
this->actionDelay = 0x3c;
}
this->attachedEntity = NULL;
InitializeAnimation(this, 5);
SoundReq(SFX_19B);
}
sub_080485FC(this);
}
void sub_08048478(Entity* this) {
Entity* pEVar3;
sub_080485FC(this);
GetNextFrame(this);
if (this->actionDelay != 0) {
if (--this->actionDelay == 0) {
InitializeAnimation(this, 6);
}
} else {
if (this->frames.b.f3) {
this->action = 7;
this->actionDelay = 120;
this->field_0xf = 0;
} else {
if (this->frames.b.f0 != 0) {
this->frames.all &= 0xfe;
pEVar3 = sub_080A7EE0(0x24);
if (pEVar3 != NULL) {
pEVar3->parent = this;
this->attachedEntity = pEVar3;
PositionRelative(this, pEVar3, 0, 0xc0000);
}
}
}
}
}
void sub_080484E8(Entity* this) {
sub_080485FC(this);
GetNextFrame(this);
if (this->field_0xf != 0) {
this->action = 8;
this->actionDelay = 0x3c;
this->flags &= 0x7f;
this->spriteSettings.b.draw = 0;
CreateFx(this, 0x1f, 0x40);
this->parent->field_0x7a.HALF.HI |= 0x10 << this->type;
} else {
if (--this->actionDelay != 0) {
return;
}
this->action = 5;
this->actionDelay = 0;
this->parent->field_0x7a.HALF.HI |= 1 << this->type;
}
}
void sub_08048550(Entity* this) {
if (this->parent->action == 0xb) {
this->actionDelay = 0x3c;
} else {
if (--this->actionDelay == 0) {
this->action = 9;
this->flags |= 0x80;
this->spriteSettings.b.draw = 1;
InitializeAnimation(this, 0);
sub_080485FC(this);
SoundReq(SFX_166);
}
}
}
void sub_080485A0(Entity* this) {
sub_080485FC(this);
GetNextFrame(this);
if ((this->frames.all & 0x80) != 0) {
this->action = 4;
this->actionDelay = 1;
this->parent->field_0x7a.HALF.HI = (this->parent->field_0x7a.HALF.HI & 0xf) | (1 << this->type);
}
}
void sub_080485D8(Entity* this) {
const s8* ptr;
ptr = &gUnk_080D1D70[this->type * 2];
sub_0806FA90(this->parent, this, ptr[0], ptr[1]);
}
void sub_080485FC(Entity* this) {
const s8* ptr;
ptr = &gUnk_080D1D98[this->type * 2];
sub_0806FA90(this->parent, this, ptr[0], ptr[1]);
this->height.HALF.HI = gUnk_080D1D78[this->type * 8 + (this->parent->field_0x78.HALF.LO >> 4 & 7)];
}