Skip to content

Commit

Permalink
decomp sub_806394C
Browse files Browse the repository at this point in the history
Thanks anon!
  • Loading branch information
macabeus committed Jan 24, 2025
1 parent fbc3588 commit 3dfdc4e
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 197 deletions.
197 changes: 0 additions & 197 deletions asm/enemy_marun.s
Original file line number Diff line number Diff line change
Expand Up @@ -8,203 +8,6 @@
.if 0
.endif

thumb_func_start sub_806394C
sub_806394C: @ 0x0806394C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r0, _080639AC @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r5, r1, r0
movs r4, #0
adds r0, r5, #0
bl sub_8063BB8
ldr r0, [r5, #0x24]
asrs r2, r0, #8
ldr r0, [r5, #0x28]
asrs r1, r0, #8
ldrh r0, [r5, #0xc]
lsls r0, r0, #8
adds r2, r2, r0
ldrh r0, [r5, #0xe]
lsls r0, r0, #8
adds r1, r1, r0
movs r0, #0xa
ldrsb r0, [r5, r0]
cmp r0, #0
ble _080639B4
subs r1, #8
movs r3, #8
rsbs r3, r3, #0
str r4, [sp]
ldr r0, _080639B0 @ =sub_805203C
str r0, [sp, #4]
adds r0, r2, #0
movs r2, #1
bl sub_8052394
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bge _080639E6
lsls r1, r0, #8
ldr r0, [r5, #0x24]
subs r0, r0, r1
movs r1, #0x80
lsls r1, r1, #4
b _080639DA
.align 2, 0
_080639AC: .4byte gCurTask
_080639B0: .4byte sub_805203C
_080639B4:
adds r0, r2, #0
adds r0, #8
subs r1, #8
str r4, [sp]
ldr r2, _08063A68 @ =sub_805203C
str r2, [sp, #4]
movs r2, #1
movs r3, #8
bl sub_8052394
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bge _080639E6
lsls r1, r0, #8
ldr r0, [r5, #0x24]
adds r0, r0, r1
ldr r1, _08063A6C @ =0xFFFFF800
_080639DA:
adds r0, r0, r1
str r0, [r5, #0x24]
movs r0, #1
strb r0, [r5, #4]
movs r0, #0
str r0, [r5, #0x14]
_080639E6:
ldr r0, _08063A70 @ =gStageData
ldrb r1, [r0, #4]
subs r0, r1, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08063AB4
cmp r1, #4
beq _08063AB4
ldrh r0, [r5, #0x12]
adds r0, #1
movs r7, #0
strh r0, [r5, #0x12]
lsls r0, r0, #0x10
movs r1, #0xb4
lsls r1, r1, #0x11
cmp r0, r1
bgt _08063A10
lsls r0, r4, #0x18
cmp r0, #0
bge _08063AB4
_08063A10:
adds r6, r5, #0
adds r6, #0x38
ldr r1, _08063A74 @ =gUnknown_080D210C
ldrh r0, [r1, #0x18]
strh r0, [r6, #0xc]
ldrb r0, [r1, #0x1a]
strb r0, [r6, #0x1a]
movs r0, #0xff
strb r0, [r6, #0x1b]
add r0, sp, #8
strh r7, [r0]
adds r1, r5, #0
adds r1, #0x64
ldr r4, _08063A78 @ =0x01000002
adds r2, r4, #0
bl CpuSet
mov r0, sp
adds r0, #0xa
strh r7, [r0]
adds r1, r5, #0
adds r1, #0x5c
adds r2, r4, #0
bl CpuSet
movs r1, #0x80
lsls r1, r1, #5
str r1, [r6, #8]
movs r0, #0xa
ldrsb r0, [r5, r0]
cmp r0, #0
bge _08063A58
movs r0, #0x80
lsls r0, r0, #3
orrs r0, r1
str r0, [r6, #8]
_08063A58:
movs r0, #0xa
ldrsb r0, [r5, r0]
cmp r0, #0
ble _08063A7C
ldr r0, [r5, #0x24]
movs r1, #0x98
lsls r1, r1, #5
b _08063A82
.align 2, 0
_08063A68: .4byte sub_805203C
_08063A6C: .4byte 0xFFFFF800
_08063A70: .4byte gStageData
_08063A74: .4byte gUnknown_080D210C
_08063A78: .4byte 0x01000002
_08063A7C:
ldr r0, [r5, #0x24]
movs r1, #0xd0
lsls r1, r1, #4
_08063A82:
adds r0, r0, r1
str r0, [r5, #0x24]
adds r0, r6, #0
bl UpdateSpriteAnimation
movs r2, #0
movs r1, #0
strh r1, [r5, #0x10]
strh r1, [r5, #0x12]
movs r0, #0x80
lsls r0, r0, #2
str r0, [r5, #0x14]
str r1, [r5, #0x18]
strb r2, [r5, #8]
movs r0, #1
strb r0, [r5, #5]
ldr r0, _08063AAC @ =gCurTask
ldr r1, [r0]
ldr r0, _08063AB0 @ =sub_8063ADC
str r0, [r1, #8]
b _08063AD2
.align 2, 0
_08063AAC: .4byte gCurTask
_08063AB0: .4byte sub_8063ADC
_08063AB4:
adds r0, r5, #0
bl sub_8063D38
cmp r0, #1
bne _08063ACC
ldr r0, _08063AC8 @ =gCurTask
ldr r0, [r0]
bl TaskDestroy
b _08063AD2
.align 2, 0
_08063AC8: .4byte gCurTask
_08063ACC:
adds r0, r5, #0
bl sub_8063E5C
_08063AD2:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0

thumb_func_start sub_8063ADC
sub_8063ADC: @ 0x08063ADC
push {r4, r5, r6, r7, lr}
Expand Down
85 changes: 85 additions & 0 deletions src/game/enemies/marun.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "game/camera.h"
#include "game/entity.h"
#include "game/enemy_unknown.h"
#include "module_unclear.h"
#include "game/player.h"
#include "game/stage.h"

Expand Down Expand Up @@ -41,7 +42,9 @@ u32 sub_8063C98(void* base);
void sub_8063858(void);
bool32 sub_8063D38(void* param);
s32 sub_8063E5C(Marun *enemy);
void sub_8063BB8(Marun* enemy);
void sub_806394C(void);
void sub_8063ADC(void);

// static void Task_Marun0() {}
void Task_MarunInit(void);
Expand Down Expand Up @@ -205,6 +208,88 @@ void sub_8063858(void) {
}
}

// https://decomp.me/scratch/m3tax
void sub_806394C(void) {
Marun* enemy = TASK_DATA(gCurTask);
s8 collisionResult = 0;
s32 x, y;
s32 r1;
s32 r0;

sub_8063BB8(enemy);

x = (enemy->qPos.x >> 8);
y = (enemy->qPos.y >> 8);

x += (enemy->region[0] << 8);
y += (enemy->region[1] << 8);

if (enemy->direction > 0) {
collisionResult = sub_8052394(x, y - 8, 1, -8, 0, sub_805203C);

if (collisionResult < 0) {
enemy->qPos.x -= (collisionResult << 8);
enemy->qPos.x += 0x800;

enemy->unk4 = 1;
enemy->unk14 = 0;
}

} else {
collisionResult = sub_8052394(x + 8, y - 8, 1, 8, 0, sub_805203C);

if (collisionResult < 0) {
enemy->qPos.x += (collisionResult << 8);
enemy->qPos.x -= 0x800;

enemy->unk4 = 1;
enemy->unk14 = 0;
}
}

if ((gStageData.unk4 != 1 && gStageData.unk4 != 2 && gStageData.unk4 != 4) &&
(r0 = ++enemy->unk12, r0 <<= 16, r0 > (r1 = 0x1680000) || collisionResult < 0)) {
Sprite* s = &enemy->s;

s->anim = gUnknown_080D210C[3].anim;
s->variant = gUnknown_080D210C[3].variant;
s->prevVariant = 0xFF;

CpuFill16(0, &enemy->reserved.b, sizeof(Rect8));
CpuFill16(0, &enemy->s.hitboxes[0].b, sizeof(Rect8));

s->frameFlags = 0x1000;

if (enemy->direction < 0) {
s->frameFlags |= 0x400;
}

if (enemy->direction > 0) {
enemy->qPos.x += 0x1300;
} else {
enemy->qPos.x += 0xD00;
}

UpdateSpriteAnimation(s);

enemy->rotation = 0;
enemy->unk12 = 0;
enemy->unk14 = 0x200;
enemy->unk18 = 0;
enemy->unk8 = 0;
enemy->unk5 = 1;

gCurTask->main = sub_8063ADC;

} else {
if (sub_8063D38(enemy) == 1) {
TaskDestroy(gCurTask);
} else {
sub_8063E5C(enemy);
}
}
}

// https://decomp.me/scratch/LwjhM
// bool32 sub_8063D38(void* param) {
// EnemyUnknownStruc0 unk;
Expand Down

0 comments on commit 3dfdc4e

Please sign in to comment.