mirror of https://github.com/zeldaret/tmc.git
Match last vram.c function. (#645)
* Nuke sub_080AE218.inc * Match last vram.c function * Minor coding blip
This commit is contained in:
parent
5cb7b79d6a
commit
dbdb121e88
|
@ -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
|
|
50
src/vram.c
50
src/vram.c
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue