match sub_802DF18, attempt to match sub_804AE40

This commit is contained in:
Oliver Bell committed 2025-01-06 01:05:48 +00:00
1 parent db841c44cd
commit a8fdb6b771
6 files changed
+46 -186

No files matched your search

+2 -1
View File
@@ -352,7 +352,8 @@
"shared.h": "c",
"mp2k_common.h": "c",
"cgb_tables.h": "c",
"stdint.h": "c"
"stdint.h": "c",
"boss_5.h": "c"
},
"asm-code-lens.donated": true,
"editor.formatOnSave": true,
@@ -22,7 +22,7 @@
adds r0, r7, #0
bl sub_804AE40
ldr r5, _0804AC48 @ =sArmFuncs
ldr r1, _0804AC4C @ =IWRAM_START + 0x3C
ldr r1, _0804AC4C @ =0x03000000 + 0x3C
adds r0, r4, r1
ldrb r0, [r0]
lsls r0, r0, #2
@@ -31,7 +31,7 @@
adds r0, r7, #0
movs r1, #0
bl _call_via_r2
ldr r2, _0804AC50 @ =IWRAM_START + 0x3D
ldr r2, _0804AC50 @ =0x03000000 + 0x3D
adds r4, r4, r2
ldrb r0, [r4]
lsls r0, r0, #2
@@ -142,8 +142,8 @@ _0804ABF2:
.align 2, 0
_0804AC44: .4byte gCurTask
_0804AC48: .4byte sArmFuncs
_0804AC4C: .4byte IWRAM_START + 0x3C
_0804AC50: .4byte IWRAM_START + 0x3D
_0804AC4C: .4byte 0x03000000 + 0x3C
_0804AC50: .4byte 0x03000000 + 0x3D
_0804AC54: .4byte gPlayer
_0804AC58: .4byte 0x0000A819
_0804AC5C: .4byte 0x0000A84F
-165
View File
@@ -1,165 +0,0 @@
.syntax unified
.text
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r0, _0802DF64 @ =gBgOffsetsHBlank
ldr r4, [r0]
movs r7, #0
lsls r1, r1, #0x16
lsrs r6, r1, #0x16
ldr r1, _0802DF68 @ =0xFFFFFEFF
adds r0, r6, r1
lsls r0, r0, #0x10
movs r1, #0xff
lsls r1, r1, #0x11
cmp r0, r1
bls _0802DF38
b _0802E03A
_0802DF38:
ldr r3, _0802DF6C @ =0xFFFFFE00
adds r0, r6, r3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bhi _0802DF70
movs r1, #0
cmp r1, r5
bge _0802E03A
movs r2, #0xf0
_0802DF4C:
adds r4, #1
strb r2, [r4]
adds r4, #1
lsls r0, r1, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r1, r0, #0x10
asrs r0, r0, #0x10
cmp r0, r5
blt _0802DF4C
b _0802E03A
.align 2, 0
_0802DF64: .4byte gBgOffsetsHBlank
_0802DF68: .4byte 0xFFFFFEFF
_0802DF6C: .4byte 0xFFFFFE00
_0802DF70:
ldr r2, _0802DFAC @ =gSineTable
movs r3, #0x80
lsls r3, r3, #1
mov ip, r3
adds r0, r6, r3
lsls r0, r0, #1
adds r0, r0, r2
movs r3, #0
ldrsh r1, [r0, r3]
lsls r0, r1, #4
subs r0, r0, r1
asrs r3, r0, #2
lsls r0, r6, #1
adds r0, r0, r2
ldrh r0, [r0]
lsls r0, r0, #0x10
asrs r1, r0, #0x16
cmp r3, #0
bge _0802DF98
rsbs r3, r3, #0
_0802DF98:
cmp r1, #0
bge _0802DF9E
rsbs r1, r1, #0
_0802DF9E:
cmp r3, #0
beq _0802DFB0
adds r0, r3, #0
bl Div
adds r3, r0, #0
b _0802DFB2
.align 2, 0
_0802DFAC: .4byte gSineTable
_0802DFB0:
mov r3, ip
_0802DFB2:
ldr r0, _0802E004 @ =0x000001FF
cmp r6, r0
bhi _0802E008
movs r1, #0
cmp r1, r5
bge _0802DFD6
movs r2, #0xf0
_0802DFC0:
adds r4, #1
strb r2, [r4]
adds r4, #1
lsls r0, r1, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r1, r0, #0x10
asrs r0, r0, #0x10
cmp r0, r5
blt _0802DFC0
_0802DFD6:
adds r1, r5, #0
cmp r1, #0x9f
bgt _0802E03A
movs r2, #0xf0
_0802DFDE:
adds r7, r7, r3
lsls r0, r7, #8
lsrs r0, r0, #0x10
cmp r0, #0xf0
bhi _0802E03A
adds r4, #1
subs r0, r2, r0
strb r0, [r4]
adds r4, #1
lsls r0, r1, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r1, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x9f
ble _0802DFDE
b _0802E03A
.align 2, 0
_0802E004: .4byte 0x000001FF
_0802E008:
lsls r0, r5, #1
adds r4, r4, r0
adds r1, r5, #0
adds r0, r1, #0
cmp r0, #0
blt _0802E03A
movs r2, #0xf0
_0802E016:
adds r7, r7, r3
lsls r0, r7, #8
lsrs r0, r0, #0x10
cmp r0, #0xf0
bls _0802E028
movs r3, #0
movs r7, #0xf0
lsls r7, r7, #8
movs r0, #0xf0
_0802E028:
subs r0, r2, r0
strb r0, [r4]
subs r4, #2
lsls r0, r1, #0x10
ldr r1, _0802E040 @ =0xFFFF0000
adds r0, r0, r1
lsrs r1, r0, #0x10
cmp r0, #0
bge _0802E016
_0802E03A:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0802E040: .4byte 0xFFFF0000
.syntax divided
+19 -1
View File
@@ -1118,8 +1118,26 @@ NONMATCH("asm/non_matching/game/bosses/boss_8__sub_804AE40.inc", static void sub
r4 = ((116 - boss->unk12) >> 2) + ((rand % 8u) + 30);
}
// _0804B096
#ifndef NON_MATCHING
// Doesn't yet work :/
asm("ldrh r0, [%3, #0x10]\n"
"mov r1, %0\n"
"lsl r3, r1, #0x10\n"
"asr r3, r3, #0x10\n"
"add r1, %1, #1\n"
"lsl r1, r1, #0x10\n"
"asr r1, r1, #0x10\n"
"str r1, [sp]\n"
"movs r1, #0x20\n"
"str r1, [sp, #4]\n"
"add r1, %2, #0\n"
"movs r2, #6\n"
"bl sub_802E784\n"
:
: "r"(r8), "r"(r6), "r"(r4), "r"(boss));
#else
sub_802E784(boss->unk10, r4, 6, r8, r6 + 1, 32);
#endif
boss->fade.brightness = Q(32) - (boss->unk12 * 91);
UpdateScreenFade(&boss->fade);
+21 -14
View File
@@ -257,9 +257,7 @@ void sub_802DDC4(u8 p0, u16 p1)
}
}
// (98.53%) https://decomp.me/scratch/khvum
// (98.53%) https://decomp.me/scratch/aNJxr
NONMATCH("asm/non_matching/game/stage/sub_802DF18.inc", void sub_802DF18(u8 p0, u16 p1))
void sub_802DF18(u8 p0, u16 p1)
{
int_vcount *bgOffsets = gBgOffsetsHBlank;
s32 r2;
@@ -300,20 +298,30 @@ NONMATCH("asm/non_matching/game/stage/sub_802DF18.inc", void sub_802DF18(u8 p0,
*bgOffsets++;
}
for (j = p0; j < DISPLAY_HEIGHT; j++) {
u32 val;
#ifndef NON_MATCHING
i = p0;
if (i < DISPLAY_HEIGHT) {
do {
#else
for (i = p0; i < DISPLAY_HEIGHT; i++) {
#endif
u32 val;
r7 += r3;
val = r7;
r7 += r3;
val = r7;
val = (val << 8) >> 16;
val = (val << 8) >> 16;
if (val > DISPLAY_WIDTH)
return;
if (val > DISPLAY_WIDTH)
return;
*bgOffsets++;
*bgOffsets = DISPLAY_WIDTH - val;
*bgOffsets++;
*bgOffsets++;
*bgOffsets = DISPLAY_WIDTH - val;
*bgOffsets++;
#ifndef NON_MATCHING
i++;
} while (i < DISPLAY_HEIGHT);
#endif
}
} else {
bgOffsets += p0 * sizeof(u16);
@@ -333,7 +341,6 @@ NONMATCH("asm/non_matching/game/stage/sub_802DF18.inc", void sub_802DF18(u8 p0,
}
}
}
END_NONMATCH
void sub_802E044(s32 p0, u16 p1)
{
-1
View File
@@ -2,7 +2,6 @@
#include "global.h"
#include "sprite.h"
#include "game/bosses/boss_5.h" // sub_802E784
void *ewram_end = 0;
void *iwram_end = 0;