mirror of https://github.com/zeldaret/tmc.git
Merge pull request #580 from nonmatch/patch-58
Match SetEntityObjPalette
This commit is contained in:
commit
73527c63bb
|
@ -1,80 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
adds r3, r1, #0
|
||||
cmp r3, #0
|
||||
bge _0801D1A8
|
||||
movs r3, #0
|
||||
_0801D1A8:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x28
|
||||
ldrb r0, [r0]
|
||||
subs r0, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0x7e
|
||||
bls _0801D1BE
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x27
|
||||
strb r3, [r0]
|
||||
_0801D1BE:
|
||||
movs r0, #0xf
|
||||
adds r1, r3, #0
|
||||
ands r1, r0
|
||||
ldrb r2, [r4, #0x1a]
|
||||
movs r5, #0x10
|
||||
rsbs r5, r5, #0
|
||||
adds r0, r5, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
movs r2, #0xf
|
||||
adds r1, r3, #0
|
||||
ands r1, r2
|
||||
lsls r1, r1, #4
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x1a]
|
||||
lsls r1, r3, #2
|
||||
ldr r0, _0801D22C @ =gPaletteList
|
||||
adds r4, r1, r0
|
||||
ldr r0, [r4]
|
||||
lsls r0, r0, #0x1c
|
||||
lsrs r0, r0, #0x1c
|
||||
cmp r0, #4
|
||||
beq _0801D22A
|
||||
ldrb r0, [r4, #1]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #1]
|
||||
ldr r0, [r4]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r3, r0, #0x1c
|
||||
ldrb r1, [r4]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
beq _0801D22A
|
||||
movs r7, #0xf
|
||||
adds r6, r5, #0
|
||||
movs r5, #2
|
||||
_0801D212:
|
||||
adds r4, #4
|
||||
lsls r2, r3, #4
|
||||
ldrb r1, [r4]
|
||||
adds r0, r7, #0
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r6
|
||||
orrs r0, r5
|
||||
strb r0, [r4]
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bne _0801D212
|
||||
_0801D22A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801D22C: .4byte gPaletteList
|
||||
.syntax divided
|
42
src/color.c
42
src/color.c
|
@ -13,13 +13,20 @@ extern Palette gUnk_02001A3C;
|
|||
void LoadObjPaletteAtIndex(u32 a1, u32 a2);
|
||||
void CleanUpObjPalettes();
|
||||
u32 FindFreeObjPalette(u32);
|
||||
void SetEntityObjPalette(Entity*, u32);
|
||||
void SetEntityObjPalette(Entity*, s32);
|
||||
u32 sub_0801D458(u32);
|
||||
void sub_0801D48C(u32, u32);
|
||||
static void sub_0801CFD0(u32 a1);
|
||||
|
||||
extern union SplitWord gUnk_08133368[];
|
||||
|
||||
typedef struct {
|
||||
u8 _0_0 : 4;
|
||||
u8 _0_4 : 4;
|
||||
u8 _1;
|
||||
u16 _2;
|
||||
} Palette2;
|
||||
|
||||
void ResetPaletteTable(u32 a1) {
|
||||
u32 i;
|
||||
|
||||
|
@ -152,9 +159,11 @@ u32 FindFreeObjPalette(u32 paletteCount) {
|
|||
return 0xffffffff;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/color/SetEntityObjPalette.inc", void SetEntityObjPalette(Entity* entity, u32 palette)) {
|
||||
void SetEntityObjPalette(Entity* entity, s32 palette) {
|
||||
u32 uVar1;
|
||||
Palette* pal;
|
||||
u32 mask;
|
||||
FORCE_REGISTER(u32 tmp, r1);
|
||||
Palette2* pPVar1;
|
||||
|
||||
if (palette < 0) {
|
||||
palette = 0;
|
||||
|
@ -162,21 +171,26 @@ NONMATCH("asm/non_matching/color/SetEntityObjPalette.inc", void SetEntityObjPale
|
|||
if (0x7e < (u8)(entity->spriteAnimation[2] - 1)) {
|
||||
entity->spriteAnimation[1] = palette;
|
||||
}
|
||||
entity->palette.b.b0 = palette;
|
||||
entity->palette.b.b4 = palette;
|
||||
pal = &gPaletteList[palette];
|
||||
if ((s8)pal->_0_0 != 4) {
|
||||
pal->_1++;
|
||||
uVar1 = pal->_0_4;
|
||||
pal->_0_0 = 3;
|
||||
|
||||
entity->palette.b.b0 = palette & 0xf;
|
||||
|
||||
mask = 0xF;
|
||||
tmp = (palette & mask) << 4;
|
||||
*(u8*)&entity->palette.b &= mask;
|
||||
*(u8*)&entity->palette.b |= tmp;
|
||||
|
||||
pPVar1 = (Palette2*)&gPaletteList[palette];
|
||||
if ((s8)pPVar1->_0_0 != 4) {
|
||||
pPVar1->_1++;
|
||||
uVar1 = pPVar1->_0_4;
|
||||
pPVar1->_0_0 = 3;
|
||||
while (uVar1 = uVar1 - 1, uVar1 != 0) {
|
||||
pal = pal + 1;
|
||||
pal->_0_4 = uVar1;
|
||||
pal->_0_0 = 2;
|
||||
pPVar1 = pPVar1 + 1;
|
||||
pPVar1->_0_4 = uVar1;
|
||||
pPVar1->_0_0 = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void UnloadOBJPalette(Entity* entity) {
|
||||
u8* p = &entity->spriteAnimation[1];
|
||||
|
|
Loading…
Reference in New Issue