Match last vram.c function. (#645)

* Nuke sub_080AE218.inc

* Match last vram.c function

* Minor coding blip
This commit is contained in:
KEKW555 2023-12-10 06:24:37 +05:30 committed by GitHub
parent 5cb7b79d6a
commit dbdb121e88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 139 deletions

View File

@ -1,138 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sl, r0
mov r8, r1
lsls r0, r1, #4
movs r1, #0xa0
lsls r1, r1, #1
adds r0, r0, r1
mov ip, r0
mov r2, sl
lsls r0, r2, #4
adds r3, r0, r1
ldr r1, _080AE30C @ =gGFXSlots
lsls r0, r2, #1
add r0, sl
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #5]
lsls r0, r0, #4
adds r7, r3, r0
movs r4, #0
ldr r6, _080AE310 @ =gUnk_020000C0
mov sb, r6
ldr r0, _080AE314 @ =gPlayerEntity
adds r2, r0, #0
adds r2, #0x26
adds r5, r0, #0
_080AE254:
ldr r0, [r5, #4]
cmp r0, #0
beq _080AE276
ldrb r0, [r2]
cmp sl, r0
bne _080AE264
mov r1, r8
strb r1, [r2]
_080AE264:
ldrh r0, [r2, #0x3a]
cmp r3, r0
bhi _080AE276
cmp r7, r0
bls _080AE276
subs r0, r0, r3
mov r6, ip
adds r1, r0, r6
strh r1, [r2, #0x3a]
_080AE276:
adds r2, #0x88
adds r5, #0x88
adds r4, #1
cmp r4, #0x4f
bls _080AE254
movs r0, #0
_080AE282:
movs r4, #0
adds r1, r0, #1
mov r8, r1
lsls r5, r0, #6
_080AE28A:
lsls r0, r4, #4
add r0, sb
adds r2, r5, r0
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080AE2B4
movs r0, #2
ands r0, r1
cmp r0, #0
bne _080AE2B4
ldrh r1, [r2, #0xa]
cmp r3, r1
bhi _080AE2B4
cmp r7, r1
bls _080AE2B4
subs r0, r1, r3
mov r6, ip
adds r1, r0, r6
strh r1, [r2, #0xa]
_080AE2B4:
adds r4, #1
cmp r4, #3
bls _080AE28A
mov r0, r8
cmp r0, #0x2f
bls _080AE282
movs r4, #0
ldr r0, _080AE318 @ =0xFFFFFC00
mov sl, r0
ldr r5, _080AE31C @ =gOAMControls
adds r5, #0x24
ldr r1, _080AE320 @ =0x000003FF
mov sb, r1
movs r2, #1
mov r8, r2
_080AE2D2:
ldrh r2, [r5]
lsls r0, r2, #0x16
lsrs r1, r0, #0x16
cmp r3, r1
bhi _080AE2F8
cmp r7, r1
bls _080AE2F8
subs r0, r1, r3
mov r6, ip
adds r1, r0, r6
mov r0, sb
ands r1, r0
mov r0, sl
ands r0, r2
orrs r0, r1
strh r0, [r5]
mov r2, r8
ldr r1, _080AE31C @ =gOAMControls
strb r2, [r1]
_080AE2F8:
adds r5, #8
adds r4, #1
cmp r4, #0x7f
bls _080AE2D2
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080AE30C: .4byte gGFXSlots
_080AE310: .4byte gUnk_020000C0
_080AE314: .4byte gPlayerEntity
_080AE318: .4byte 0xFFFFFC00
_080AE31C: .4byte gOAMControls
_080AE320: .4byte 0x000003FF
.syntax divided

View File

@ -2,6 +2,7 @@
#include "common.h" #include "common.h"
#include "structures.h" #include "structures.h"
#include "fileselect.h" #include "fileselect.h"
#include "new_player.h"
extern u32 gFixedTypeGfxData[]; extern u32 gFixedTypeGfxData[];
@ -352,7 +353,54 @@ void CleanUpGFXSlots(void) {
} }
// Swap gfx // Swap gfx
ASM_FUNC("asm/non_matching/vram/sub_080AE218.inc", void sub_080AE218(u32 a, u32 b)) void sub_080AE218(u32 param1, u32 param2) {
struct_gUnk_020000C0_1* psVar6;
u32 r0, r1, r3, r7, r12;
u32 index1, index2;
r12 = (param2 << 4) + 0x140;
r3 = (param1 << 4) + 0x140;
r7 = r3 + ((u32)gGFXSlots.slots[param1].slotCount << 4);
for (index1 = 0; index1 < 0x50; index1++) {
Entity* ent = &(&gPlayerEntity)[index1];
if (ent->next != NULL) {
if (param1 == ent->spriteAnimation[0]) {
ent->spriteAnimation[0] = param2;
}
r0 = ent->spriteVramOffset;
if ((r3 <= r0) && (r7 > r0)) {
r0 = (r0 - r3);
r1 = r0 + r12;
ent->spriteVramOffset = r1;
}
}
}
for (index2 = 0; index2 < ARRAY_COUNT(gUnk_020000C0); index2++) {
for (index1 = 0; index1 < 4; index1++) {
psVar6 = gUnk_020000C0[index2].unk_00 + index1;
if ((((*(u8*)&psVar6->unk_00) & 1) != 0) && (((*(u8*)&psVar6->unk_00) & 2) == 0)) {
r1 = psVar6->unk_08.HALF_U.HI;
if ((r3 <= r1) && (r7 > r1)) {
r0 = (r1 - r3);
r1 = r0 + r12;
psVar6->unk_08.HALF_U.HI = r1;
}
}
}
}
for (index1 = 0; index1 < 0x80; index1++) {
r1 = gOAMControls.oam[index1].tileNum;
if ((r3 <= r1) && (r7 > r1)) {
r0 = (r1 - r3);
r1 = r0 + r12;
gOAMControls.oam[index1].tileNum = r1;
gOAMControls.field_0x0 = 1;
}
}
}
void MoveGFXSlots(u32 srcIndex, u32 targetIndex) { void MoveGFXSlots(u32 srcIndex, u32 targetIndex) {
s32 index; s32 index;