Skip to content

Commit 0d79645

Browse files
committed
Finish enemy_unknown_code module
1 parent 995a7f2 commit 0d79645

3 files changed

Lines changed: 39 additions & 205 deletions

File tree

asm/enemy_unknown_code.s

Lines changed: 0 additions & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -1,171 +0,0 @@
1-
.include "asm/macros.inc"
2-
.include "constants/constants.inc"
3-
4-
.text
5-
.syntax unified
6-
.arm
7-
8-
.if 0
9-
.endif
10-
11-
thumb_func_start sub_805CF90
12-
sub_805CF90: @ 0x0805CF90
13-
push {r4, r5, lr}
14-
adds r4, r1, #0
15-
adds r5, r2, #0
16-
ldr r2, _0805CFDC @ =gCamera
17-
ldr r1, [r2]
18-
subs r0, r0, r1
19-
ldr r1, [r2, #4]
20-
subs r4, r4, r1
21-
adds r0, #0x80
22-
movs r1, #0xf8
23-
lsls r1, r1, #1
24-
cmp r0, r1
25-
bhi _0805CFBA
26-
adds r0, r4, #0
27-
adds r0, #0x80
28-
cmp r0, #0
29-
blt _0805CFBA
30-
movs r0, #0x90
31-
lsls r0, r0, #1
32-
cmp r4, r0
33-
ble _0805CFE0
34-
_0805CFBA:
35-
adds r1, r5, #0
36-
adds r1, #0x80
37-
movs r0, #0xf8
38-
lsls r0, r0, #1
39-
cmp r1, r0
40-
bhi _0805CFD6
41-
adds r0, r3, #0
42-
adds r0, #0x80
43-
cmp r0, #0
44-
blt _0805CFD6
45-
movs r0, #0x90
46-
lsls r0, r0, #1
47-
cmp r3, r0
48-
ble _0805CFE0
49-
_0805CFD6:
50-
movs r0, #0
51-
b _0805CFE2
52-
.align 2, 0
53-
_0805CFDC: .4byte gCamera
54-
_0805CFE0:
55-
movs r0, #1
56-
_0805CFE2:
57-
pop {r4, r5}
58-
pop {r1}
59-
bx r1
60-
61-
thumb_func_start sub_805CFE8
62-
sub_805CFE8: @ 0x0805CFE8
63-
push {r4, lr}
64-
adds r1, r0, #0
65-
ldr r0, [sp, #0xc]
66-
lsls r0, r0, #0x18
67-
lsrs r3, r0, #0x18
68-
movs r0, #0x80
69-
lsls r0, r0, #9
70-
ands r0, r2
71-
cmp r0, #0
72-
beq _0805D004
73-
movs r4, #0x1a
74-
ldrsh r0, [r1, r4]
75-
cmp r0, #0
76-
blt _0805D016
77-
_0805D004:
78-
movs r0, #0x80
79-
lsls r0, r0, #0xa
80-
ands r0, r2
81-
cmp r0, #0
82-
beq _0805D052
83-
movs r2, #0x1a
84-
ldrsh r0, [r1, r2]
85-
cmp r0, #0
86-
ble _0805D052
87-
_0805D016:
88-
ldr r0, [sp, #8]
89-
subs r0, #0x30
90-
lsls r0, r0, #8
91-
str r0, [r1, #0x14]
92-
movs r0, #0xfd
93-
lsls r0, r0, #8
94-
strh r0, [r1, #0x1a]
95-
lsls r0, r3, #0x18
96-
asrs r2, r0, #0x18
97-
adds r3, r0, #0
98-
cmp r2, #0
99-
bge _0805D036
100-
movs r4, #0x18
101-
ldrsh r0, [r1, r4]
102-
cmp r0, #0
103-
blt _0805D042
104-
_0805D036:
105-
cmp r2, #0
106-
ble _0805D052
107-
movs r2, #0x18
108-
ldrsh r0, [r1, r2]
109-
cmp r0, #0
110-
ble _0805D052
111-
_0805D042:
112-
cmp r3, #0
113-
bge _0805D04C
114-
movs r0, #0xfd
115-
lsls r0, r0, #8
116-
b _0805D050
117-
_0805D04C:
118-
movs r0, #0xc0
119-
lsls r0, r0, #2
120-
_0805D050:
121-
strh r0, [r1, #0x18]
122-
_0805D052:
123-
pop {r4}
124-
pop {r0}
125-
bx r0
126-
127-
thumb_func_start sub_805D058
128-
sub_805D058: @ 0x0805D058
129-
push {r4, r5, lr}
130-
adds r5, r0, #0
131-
adds r5, #0x18
132-
ldr r2, [r0, #0xc]
133-
asrs r2, r2, #8
134-
ldrh r1, [r0, #6]
135-
lsls r1, r1, #8
136-
adds r2, r2, r1
137-
ldr r3, _0805D098 @ =gCamera
138-
ldr r1, [r3]
139-
subs r2, r2, r1
140-
strh r2, [r5, #0x10]
141-
ldr r1, [r0, #0x10]
142-
asrs r1, r1, #8
143-
ldrh r0, [r0, #8]
144-
lsls r0, r0, #8
145-
adds r1, r1, r0
146-
ldr r0, [r3, #4]
147-
subs r1, r1, r0
148-
strh r1, [r5, #0x12]
149-
adds r0, r5, #0
150-
bl UpdateSpriteAnimation
151-
adds r4, r0, #0
152-
adds r0, r5, #0
153-
bl DisplaySprite
154-
adds r0, r4, #0
155-
pop {r4, r5}
156-
pop {r1}
157-
bx r1
158-
.align 2, 0
159-
_0805D098: .4byte gCamera
160-
161-
thumb_func_start TaskDestructor_805D09C
162-
TaskDestructor_805D09C: @ 0x0805D09C
163-
push {lr}
164-
ldrh r0, [r0, #6]
165-
movs r1, #0xc0
166-
lsls r1, r1, #0x12
167-
adds r0, r0, r1
168-
ldr r0, [r0, #0x18]
169-
bl VramFree
170-
pop {r0}
171-
bx r0

ldscript.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ SECTIONS {
131131
src/game/enemies/takkon.o(.text);
132132
src/game/enemies/jousun.o(.text);
133133
src/game/enemies/enemy_unknown_code.o(.text);
134-
asm/enemy_unknown_code.o(.text);
135134
src/game/enemies/uutsubo.o(.text);
136135
src/game/enemies/gaogao.o(.text);
137136
src/game/enemies/juggling.o(.text);

src/game/enemies/enemy_unknown_code.c

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void Task_14_805C03C(void);
4040
void sub_805C138(EUC_Strc40 *arg0);
4141
void Task_40_805C198(void);
4242
void TaskDestructor_805C03C(struct Task *t);
43-
bool32 sub_805CF90(s16 worldX, s16 worldY, s16 spriteX, s16 spriteY);
43+
bool32 sub_805CF90(s32 worldX, s32 worldY, s32 spriteX, s32 spriteY);
4444
void sub_805CB70(Player *p, Sprite *s, u32 collision, s32 x, UNUSED s32 y, s8 dir);
4545
void sub_805CC5C(Player *p, Sprite *s, s32 collision, s32 x, u32 y, s8 dir);
4646
void sub_805CFE8(Player *p, Sprite *s, s32 collision, s32 x, u32 y, s8 dir);
@@ -742,46 +742,52 @@ void sub_805CF38(s32 qWorldX, s32 qWorldY, u16 regionX, u16 regionY, Player *p)
742742

743743
void TaskDestructor_805C03C(Task *arg0) { }
744744

745-
#if 0
746-
s32 sub_805CF90(s16 arg0, s16 arg1, s16 arg2, s32 arg3) {
747-
s32 temp_r4;
748-
749-
temp_r4 = arg1 - gCamera.y;
750-
if ((((u32) ((arg0 - gCamera.x) + 0x80) > 0x1F0U) || ((s32) (temp_r4 + 0x80) < 0) || (temp_r4 > 0x120)) && (((u32) (arg2 + 0x80) > 0x1F0U) || ((s32) (arg3 + 0x80) < 0) || (arg3 > 0x120))) {
751-
return 0;
745+
bool32 sub_805CF90(s32 worldX, s32 worldY, s32 spriteX, s32 spriteY)
746+
{
747+
worldX -= gCamera.x;
748+
worldY -= gCamera.y;
749+
750+
// TODO: Cam-range macro
751+
if ((((u32)(worldX + (CAM_REGION_WIDTH / 2)) > (DISPLAY_WIDTH + 256)) || ((s32)(worldY + (CAM_REGION_WIDTH / 2)) < 0)
752+
|| (worldY > (DISPLAY_HEIGHT + 128)))
753+
&& (((u32)(spriteX + (CAM_REGION_WIDTH / 2)) > (DISPLAY_WIDTH + 256)) || ((s32)(spriteY + (CAM_REGION_WIDTH / 2)) < 0)
754+
|| ((s32)spriteY > (DISPLAY_HEIGHT + 128)))) {
755+
return FALSE;
752756
}
753-
return 1;
757+
return TRUE;
754758
}
755759

756-
void sub_805CFE8(Player *arg0, s32 arg2, u32 arg4, s32 arg5) {
757-
s16 var_r0;
758-
s8 temp_r2;
759-
u8 temp_r3;
760+
void sub_805CFE8(Player *p, Sprite *s, s32 collision, s32 x, u32 y, s8 dir)
761+
{
762+
if (((0x10000 & collision) && (p->qSpeedAirY < 0)) || ((0x20000 & collision) && (p->qSpeedAirY > 0))) {
763+
p->qWorldY = Q(y - 48);
764+
p->qSpeedAirY = -Q(3);
760765

761-
temp_r3 = (u8) arg5;
762-
if ((((0x10000 & arg2) && ((s32) arg0->qSpeedAirY < 0)) || ((0x20000 & arg2) && ((s32) arg0->qSpeedAirY > 0))) && (((arg0->qWorldY = (arg4 - 0x30) << 8, arg0->qSpeedAirY = -0x300, temp_r2 = (s8) temp_r3, ((s32) temp_r2 < 0)) && ((s32) arg0->qSpeedAirX < 0)) || (((s32) temp_r2 > 0) && ((s32) arg0->qSpeedAirX > 0)))) {
763-
if ((s32) (temp_r3 << 0x18) < 0) {
764-
var_r0 = -0x300;
765-
} else {
766-
var_r0 = +0x300;
766+
if (((dir < 0) && (p->qSpeedAirX < 0)) || ((dir > 0) && (p->qSpeedAirX > 0))) {
767+
if (dir < 0) {
768+
p->qSpeedAirX = -Q(3);
769+
} else {
770+
p->qSpeedAirX = +Q(3);
771+
}
767772
}
768-
arg0->qSpeedAirX = var_r0;
769773
}
770774
}
771775

772-
s32 sub_805D058(void *arg0) {
773-
Sprite *temp_r5;
774-
s32 temp_r4;
775-
776-
temp_r5 = arg0 + 0x18;
777-
temp_r5->x = (((s32) arg0->unkC >> 8) + (arg0->unk6 << 8)) - gCamera.x;
778-
temp_r5->y = (((s32) arg0->unk10 >> 8) + (arg0->unk8 << 8)) - gCamera.y;
779-
temp_r4 = UpdateSpriteAnimation(temp_r5);
780-
DisplaySprite(temp_r5);
781-
return temp_r4;
776+
AnimCmdResult sub_805D058(EUC_Strc40 *strc40)
777+
{
778+
Sprite *s;
779+
s32 acmdRes;
780+
781+
s = &strc40->s;
782+
s->x = TO_WORLD_POS_RAW(I(strc40->qWorldX), strc40->regionX) - gCamera.x;
783+
s->y = TO_WORLD_POS_RAW(I(strc40->qWorldY), strc40->regionY) - gCamera.y;
784+
acmdRes = UpdateSpriteAnimation(s);
785+
DisplaySprite(s);
786+
return acmdRes;
782787
}
783788

784-
void TaskDestructor_805D09C(Task *arg0) {
785-
VramFree(arg0->data->unk18);
789+
void TaskDestructor_805D09C(Task *t)
790+
{
791+
EUC_Strc40 *strc = TASK_DATA(t);
792+
VramFree(strc->s.tiles);
786793
}
787-
#endif

0 commit comments

Comments
 (0)