Match sub_0801D48C

This commit is contained in:
Tal Hayon 2022-05-19 17:54:56 +03:00
parent 5ad9b06c48
commit a7d4f0af3e
2 changed files with 36 additions and 72 deletions

View File

@ -1,71 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r6, r0, #0
adds r3, r1, #0
ldr r0, _0801D50C @ =gPaletteList
mov r8, r0
lsls r0, r6, #2
mov r1, r8
adds r4, r0, r1
ldrb r0, [r4]
lsrs r5, r0, #4
subs r5, #1
movs r0, #1
rsbs r0, r0, #0
cmp r5, r0
beq _0801D4F8
ldr r2, _0801D510 @ =gPaletteBuffer
lsls r0, r3, #5
movs r1, #0x80
lsls r1, r1, #2
adds r0, r0, r1
adds r7, r0, r2
lsls r0, r3, #2
add r8, r0
lsls r0, r6, #5
adds r0, r0, r1
adds r6, r0, r2
movs r3, #0
_0801D4C8:
ldr r0, [r4]
mov r1, r8
adds r1, #4
mov r8, r1
subs r1, #4
stm r1!, {r0}
strb r3, [r4]
strb r3, [r4, #1]
strh r3, [r4, #2]
adds r0, r6, #0
adds r1, r7, #0
movs r2, #0x20
str r3, [sp]
bl MemCopy
adds r6, #0x20
adds r4, #4
adds r7, #0x20
subs r5, #1
movs r0, #1
rsbs r0, r0, #0
ldr r3, [sp]
cmp r5, r0
bne _0801D4C8
_0801D4F8:
ldr r0, _0801D514 @ =gUsedPalettes
ldr r1, [r0]
ldr r2, _0801D518 @ =0xFFFF0000
orrs r1, r2
str r1, [r0]
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801D50C: .4byte gPaletteList
_0801D510: .4byte gPaletteBuffer
_0801D514: .4byte gUsedPalettes
_0801D518: .4byte 0xFFFF0000
.syntax divided

View File

@ -289,4 +289,39 @@ u32 sub_0801D458(u32 a1) {
return 0;
}
ASM_FUNC("asm/non_matching/color/sub_0801D48C.inc", void sub_0801D48C(u32 a1, u32 a2));
void sub_0801D48C(u32 a1, u32 a2) {
Palette* pPVar1;
Palette* pPVar2;
s32 iVar2;
u16* iVar3;
u16* iVar4;
Palette* pPVar5;
u32 tmp;
u16* ptr;
Palette* ptr2;
pPVar2 = gPaletteList;
pPVar1 = pPVar2 + a1;
iVar2 = (*(u8*)pPVar1) >> 4;
if (--iVar2 != -1) {
ptr = gPaletteBuffer;
iVar4 = ptr + 0x100 + a2 * 0x10;
pPVar5 = gPaletteList + a2;
iVar3 = ptr + 0x100 + a1 * 0x10;
do {
*pPVar5 = *pPVar1;
pPVar1->_0_0 = 0;
pPVar1->_0_4 = 0;
pPVar1->_1 = 0;
pPVar1->_2 = 0;
MemCopy(iVar3, iVar4, 0x20);
iVar3 += 0x10;
pPVar1++;
iVar4 += 0x10;
iVar2--;
pPVar5++;
} while (iVar2 != -1);
}
gUsedPalettes |= 0xffff0000;
}