mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 15:07:09 -05:00
sub_80A3908
This commit is contained in:
parent
8e7f66a450
commit
3c29ff0535
|
|
@ -7,541 +7,6 @@
|
|||
|
||||
|
||||
|
||||
thumb_func_start sub_80A37C4
|
||||
sub_80A37C4:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r2, 0
|
||||
adds r4, r1, 0
|
||||
adds r2, r0, 0
|
||||
movs r0, 0
|
||||
movs r1, 0xF
|
||||
_080A37D0:
|
||||
strh r0, [r2]
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080A37D0
|
||||
movs r0, 0x1
|
||||
movs r1, 0x4
|
||||
ldrsh r3, [r3, r1]
|
||||
cmp r0, r3
|
||||
bge _080A37FE
|
||||
adds r5, r3, 0
|
||||
_080A37E6:
|
||||
adds r3, r0, 0x1
|
||||
movs r1, 0xF
|
||||
_080A37EA:
|
||||
ldrh r0, [r4]
|
||||
strh r0, [r2]
|
||||
adds r4, 0x2
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080A37EA
|
||||
adds r0, r3, 0
|
||||
cmp r0, r5
|
||||
blt _080A37E6
|
||||
_080A37FE:
|
||||
movs r3, 0x6
|
||||
ldrsh r1, [r6, r3]
|
||||
cmp r0, r1
|
||||
bge _080A3820
|
||||
ldr r3, _080A3828
|
||||
adds r4, r3, 0
|
||||
adds r5, r1, 0
|
||||
_080A380C:
|
||||
adds r3, r0, 0x1
|
||||
movs r1, 0xF
|
||||
_080A3810:
|
||||
strh r4, [r2]
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080A3810
|
||||
adds r0, r3, 0
|
||||
cmp r0, r5
|
||||
blt _080A380C
|
||||
_080A3820:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A3828: .4byte 0x0000ffff
|
||||
thumb_func_end sub_80A37C4
|
||||
|
||||
thumb_func_start _UncompressCell
|
||||
_UncompressCell:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r1, 0
|
||||
mov r8, r3
|
||||
ldr r3, [sp, 0x18]
|
||||
adds r4, r2, 0
|
||||
adds r2, r0, 0
|
||||
mov r1, r8
|
||||
ldrh r0, [r1]
|
||||
lsls r0, 12
|
||||
ldrh r1, [r1, 0x4]
|
||||
orrs r0, r1
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
ldr r1, [r3]
|
||||
ldr r0, _080A385C
|
||||
cmp r1, r0
|
||||
bne _080A3860
|
||||
movs r0, 0x1
|
||||
strh r0, [r5]
|
||||
movs r5, 0x4
|
||||
b _080A3890
|
||||
.align 2, 0
|
||||
_080A385C: .4byte 0x00020002
|
||||
_080A3860:
|
||||
ldr r0, _080A3870
|
||||
cmp r1, r0
|
||||
bne _080A3874
|
||||
movs r0, 0x2
|
||||
strh r0, [r5]
|
||||
movs r5, 0x9
|
||||
b _080A3890
|
||||
.align 2, 0
|
||||
_080A3870: .4byte 0x00030003
|
||||
_080A3874:
|
||||
movs r0, 0
|
||||
strh r0, [r5]
|
||||
ldr r0, _080A3888
|
||||
ldr r1, _080A388C
|
||||
movs r4, 0
|
||||
ldrsh r2, [r3, r4]
|
||||
movs r6, 0x2
|
||||
ldrsh r3, [r3, r6]
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
_080A3888: .4byte gUnknown_81172E8
|
||||
_080A388C: .4byte gUnknown_81172F4
|
||||
_080A3890:
|
||||
movs r0, 0
|
||||
movs r1, 0x8
|
||||
_080A3894:
|
||||
strh r0, [r2]
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080A3894
|
||||
movs r0, 0x1
|
||||
movs r7, 0xE
|
||||
ldrsh r1, [r3, r7]
|
||||
cmp r0, r1
|
||||
bge _080A38DC
|
||||
mov r12, r1
|
||||
_080A38AA:
|
||||
movs r1, 0
|
||||
adds r3, r0, 0x1
|
||||
cmp r1, r5
|
||||
bge _080A38C6
|
||||
adds r1, r5, 0
|
||||
_080A38B4:
|
||||
ldrh r0, [r4]
|
||||
adds r0, r6, r0
|
||||
strh r0, [r2]
|
||||
adds r4, 0x2
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _080A38B4
|
||||
adds r1, r5, 0
|
||||
_080A38C6:
|
||||
cmp r1, 0x8
|
||||
bgt _080A38D6
|
||||
movs r0, 0
|
||||
_080A38CC:
|
||||
strh r0, [r2]
|
||||
adds r2, 0x2
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x8
|
||||
ble _080A38CC
|
||||
_080A38D6:
|
||||
adds r0, r3, 0
|
||||
cmp r0, r12
|
||||
blt _080A38AA
|
||||
_080A38DC:
|
||||
mov r1, r8
|
||||
movs r4, 0x8
|
||||
ldrsh r3, [r1, r4]
|
||||
cmp r0, r3
|
||||
bge _080A38FE
|
||||
movs r4, 0
|
||||
adds r5, r3, 0
|
||||
_080A38EA:
|
||||
adds r3, r0, 0x1
|
||||
movs r1, 0x8
|
||||
_080A38EE:
|
||||
strh r4, [r2]
|
||||
adds r2, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080A38EE
|
||||
adds r0, r3, 0
|
||||
cmp r0, r5
|
||||
blt _080A38EA
|
||||
_080A38FE:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end _UncompressCell
|
||||
|
||||
thumb_func_start sub_80A3908
|
||||
sub_80A3908:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x10
|
||||
str r0, [sp]
|
||||
str r2, [sp, 0x4]
|
||||
mov r9, r3
|
||||
adds r6, r1, 0
|
||||
movs r2, 0
|
||||
ldr r1, [sp, 0x4]
|
||||
movs r3, 0xC
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r2, r0
|
||||
blt _080A392A
|
||||
b _080A3B6C
|
||||
_080A392A:
|
||||
lsls r0, r2, 2
|
||||
ldr r4, [sp]
|
||||
adds r0, r4
|
||||
ldr r0, [r0]
|
||||
mov r12, r0
|
||||
movs r1, 0
|
||||
adds r2, 0x1
|
||||
str r2, [sp, 0x8]
|
||||
mov r5, r9
|
||||
ldrb r5, [r5, 0x5]
|
||||
cmp r1, r5
|
||||
blt _080A3944
|
||||
b _080A3B2A
|
||||
_080A3944:
|
||||
ldr r0, _080A39A4
|
||||
mov r10, r0
|
||||
_080A3948:
|
||||
movs r2, 0
|
||||
mov r8, r2
|
||||
cmp r1, 0
|
||||
bne _080A3A18
|
||||
movs r3, 0x1
|
||||
str r3, [sp, 0xC]
|
||||
mov r4, r9
|
||||
ldrb r4, [r4, 0x4]
|
||||
cmp r1, r4
|
||||
blt _080A395E
|
||||
b _080A3B04
|
||||
_080A395E:
|
||||
ldrb r1, [r6]
|
||||
adds r6, 0x1
|
||||
cmp r1, 0xBF
|
||||
ble _080A39A8
|
||||
adds r2, r1, 0
|
||||
subs r2, 0xBF
|
||||
cmp r1, 0xBF
|
||||
ble _080A39A0
|
||||
ldr r5, _080A39A4
|
||||
adds r4, r5, 0
|
||||
adds r3, r2, 0
|
||||
_080A3974:
|
||||
ldrb r1, [r6]
|
||||
ldrb r0, [r6, 0x1]
|
||||
lsls r0, 8
|
||||
orrs r1, r0
|
||||
ldrb r0, [r6, 0x2]
|
||||
lsls r0, 16
|
||||
orrs r1, r0
|
||||
adds r6, 0x3
|
||||
adds r0, r1, 0
|
||||
ands r0, r4
|
||||
mov r5, r12
|
||||
strh r0, [r5]
|
||||
movs r0, 0x2
|
||||
add r12, r0
|
||||
asrs r1, 12
|
||||
ands r1, r4
|
||||
mov r5, r12
|
||||
strh r1, [r5]
|
||||
add r12, r0
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A3974
|
||||
_080A39A0:
|
||||
lsls r0, r2, 1
|
||||
b _080A3A0C
|
||||
.align 2, 0
|
||||
_080A39A4: .4byte 0x00000fff
|
||||
_080A39A8:
|
||||
cmp r1, 0x7F
|
||||
ble _080A39EA
|
||||
ldrb r2, [r6]
|
||||
ldrb r0, [r6, 0x1]
|
||||
lsls r0, 8
|
||||
orrs r2, r0
|
||||
ldrb r0, [r6, 0x2]
|
||||
lsls r0, 16
|
||||
orrs r2, r0
|
||||
adds r6, 0x3
|
||||
adds r4, r1, 0
|
||||
subs r4, 0x7F
|
||||
cmp r1, 0x7F
|
||||
ble _080A39E6
|
||||
adds r0, r2, 0
|
||||
mov r1, r10
|
||||
ands r0, r1
|
||||
asrs r1, r2, 12
|
||||
mov r2, r10
|
||||
ands r1, r2
|
||||
adds r3, r4, 0
|
||||
_080A39D2:
|
||||
mov r5, r12
|
||||
strh r0, [r5]
|
||||
movs r2, 0x2
|
||||
add r12, r2
|
||||
mov r5, r12
|
||||
strh r1, [r5]
|
||||
add r12, r2
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A39D2
|
||||
_080A39E6:
|
||||
lsls r0, r4, 1
|
||||
b _080A3A0C
|
||||
_080A39EA:
|
||||
movs r3, 0
|
||||
adds r0, r1, 0x1
|
||||
cmp r3, r1
|
||||
bgt _080A3A0A
|
||||
movs r1, 0
|
||||
adds r3, r0, 0
|
||||
_080A39F6:
|
||||
mov r2, r12
|
||||
strh r1, [r2]
|
||||
movs r4, 0x2
|
||||
add r12, r4
|
||||
mov r5, r12
|
||||
strh r1, [r5]
|
||||
add r12, r4
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A39F6
|
||||
_080A3A0A:
|
||||
lsls r0, 1
|
||||
_080A3A0C:
|
||||
add r8, r0
|
||||
mov r0, r9
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r8, r0
|
||||
blt _080A395E
|
||||
b _080A3B04
|
||||
_080A3A18:
|
||||
mov r4, r12
|
||||
subs r4, 0x80
|
||||
adds r1, 0x1
|
||||
str r1, [sp, 0xC]
|
||||
mov r1, r9
|
||||
ldrb r1, [r1, 0x4]
|
||||
cmp r8, r1
|
||||
bge _080A3B04
|
||||
_080A3A28:
|
||||
ldrb r1, [r6]
|
||||
adds r6, 0x1
|
||||
cmp r1, 0xBF
|
||||
ble _080A3A80
|
||||
adds r5, r1, 0
|
||||
subs r5, 0xBF
|
||||
cmp r1, 0xBF
|
||||
ble _080A3A78
|
||||
ldr r2, _080A3A7C
|
||||
adds r7, r2, 0
|
||||
adds r3, r5, 0
|
||||
_080A3A3E:
|
||||
ldrb r2, [r6]
|
||||
ldrb r0, [r6, 0x1]
|
||||
lsls r0, 8
|
||||
orrs r2, r0
|
||||
ldrb r0, [r6, 0x2]
|
||||
lsls r0, 16
|
||||
orrs r2, r0
|
||||
adds r6, 0x3
|
||||
adds r0, r2, 0
|
||||
ands r0, r7
|
||||
ldrh r1, [r4]
|
||||
eors r0, r1
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
adds r4, 0x2
|
||||
movs r0, 0x2
|
||||
add r12, r0
|
||||
asrs r2, 12
|
||||
ands r2, r7
|
||||
ldrh r0, [r4]
|
||||
eors r2, r0
|
||||
mov r1, r12
|
||||
strh r2, [r1]
|
||||
adds r4, 0x2
|
||||
movs r2, 0x2
|
||||
add r12, r2
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A3A3E
|
||||
_080A3A78:
|
||||
lsls r0, r5, 1
|
||||
b _080A3AFA
|
||||
.align 2, 0
|
||||
_080A3A7C: .4byte 0x00000fff
|
||||
_080A3A80:
|
||||
cmp r1, 0x7F
|
||||
ble _080A3AD2
|
||||
ldrb r2, [r6]
|
||||
ldrb r0, [r6, 0x1]
|
||||
lsls r0, 8
|
||||
orrs r2, r0
|
||||
ldrb r0, [r6, 0x2]
|
||||
lsls r0, 16
|
||||
orrs r2, r0
|
||||
adds r6, 0x3
|
||||
adds r7, r1, 0
|
||||
subs r7, 0x7F
|
||||
cmp r1, 0x7F
|
||||
ble _080A3ACE
|
||||
adds r5, r2, 0
|
||||
mov r3, r10
|
||||
ands r5, r3
|
||||
asrs r2, 12
|
||||
ands r2, r3
|
||||
adds r3, r7, 0
|
||||
_080A3AA8:
|
||||
ldrh r1, [r4]
|
||||
adds r0, r5, 0
|
||||
eors r0, r1
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
adds r4, 0x2
|
||||
movs r0, 0x2
|
||||
add r12, r0
|
||||
ldrh r1, [r4]
|
||||
adds r0, r2, 0
|
||||
eors r0, r1
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
adds r4, 0x2
|
||||
movs r0, 0x2
|
||||
add r12, r0
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A3AA8
|
||||
_080A3ACE:
|
||||
lsls r0, r7, 1
|
||||
b _080A3AFA
|
||||
_080A3AD2:
|
||||
movs r3, 0
|
||||
adds r2, r1, 0x1
|
||||
cmp r3, r1
|
||||
bgt _080A3AF8
|
||||
adds r3, r2, 0
|
||||
_080A3ADC:
|
||||
ldrh r0, [r4]
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
adds r4, 0x2
|
||||
movs r5, 0x2
|
||||
add r12, r5
|
||||
ldrh r0, [r4]
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
adds r4, 0x2
|
||||
add r12, r5
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _080A3ADC
|
||||
_080A3AF8:
|
||||
lsls r0, r2, 1
|
||||
_080A3AFA:
|
||||
add r8, r0
|
||||
mov r2, r9
|
||||
ldrb r2, [r2, 0x4]
|
||||
cmp r8, r2
|
||||
blt _080A3A28
|
||||
_080A3B04:
|
||||
mov r3, r8
|
||||
cmp r3, 0x3F
|
||||
bgt _080A3B1E
|
||||
movs r0, 0
|
||||
_080A3B0C:
|
||||
mov r4, r12
|
||||
strh r0, [r4]
|
||||
movs r5, 0x2
|
||||
add r12, r5
|
||||
movs r1, 0x1
|
||||
add r8, r1
|
||||
mov r2, r8
|
||||
cmp r2, 0x3F
|
||||
ble _080A3B0C
|
||||
_080A3B1E:
|
||||
ldr r1, [sp, 0xC]
|
||||
mov r3, r9
|
||||
ldrb r3, [r3, 0x5]
|
||||
cmp r1, r3
|
||||
bge _080A3B2A
|
||||
b _080A3948
|
||||
_080A3B2A:
|
||||
ldr r4, [sp, 0x4]
|
||||
movs r5, 0x10
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r1, r0
|
||||
bge _080A3B5E
|
||||
movs r2, 0
|
||||
_080A3B36:
|
||||
adds r1, 0x1
|
||||
str r1, [sp, 0xC]
|
||||
movs r0, 0x3F
|
||||
mov r8, r0
|
||||
_080A3B3E:
|
||||
mov r1, r12
|
||||
strh r2, [r1]
|
||||
movs r3, 0x2
|
||||
add r12, r3
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
add r8, r4
|
||||
mov r5, r8
|
||||
cmp r5, 0
|
||||
bge _080A3B3E
|
||||
ldr r1, [sp, 0xC]
|
||||
ldr r3, [sp, 0x4]
|
||||
movs r4, 0x10
|
||||
ldrsh r0, [r3, r4]
|
||||
cmp r1, r0
|
||||
blt _080A3B36
|
||||
_080A3B5E:
|
||||
ldr r2, [sp, 0x8]
|
||||
ldr r5, [sp, 0x4]
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r2, r0
|
||||
bge _080A3B6C
|
||||
b _080A392A
|
||||
_080A3B6C:
|
||||
adds r0, r6, 0
|
||||
add sp, 0x10
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80A3908
|
||||
|
||||
thumb_func_start sub_80A3B80
|
||||
sub_80A3B80:
|
||||
|
|
|
|||
|
|
@ -68,15 +68,15 @@ typedef struct SubStruct_448
|
|||
#define UNK_0_ARR_COUNT 14
|
||||
#define UNK_E0_ARR_COUNT 32
|
||||
#define UNK_3E0_ARR_COUNT 2
|
||||
|
||||
#define UNK_54C_ARR_COUNT 2
|
||||
#define UNK_545_UNK6_ARR_COUNT 4
|
||||
|
||||
typedef struct SubStruct_545
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6[4];
|
||||
s16 unk6[UNK_545_UNK6_ARR_COUNT];
|
||||
s16 unkE;
|
||||
} SubStruct_545;
|
||||
|
||||
|
|
|
|||
|
|
@ -472,6 +472,7 @@ UNUSED static const u8 *sub_80A2B28(u16 r0)
|
|||
#include "code_8002774.h"
|
||||
#include "code_801D9E4.h"
|
||||
#include "code_8004AA0.h"
|
||||
#include "debug.h"
|
||||
#include "unk_dungeon_load.h"
|
||||
#include "constants/dungeon.h"
|
||||
|
||||
|
|
@ -660,9 +661,8 @@ void sub_80A2E64(unkStruct_3001B70 *mapPtr)
|
|||
mapPtr->unk52A = 1;
|
||||
}
|
||||
|
||||
// RGB?
|
||||
u8* sub_80A3908(void * a0, const void * a1, SubStruct_52C * a2, SubStruct_448 *);
|
||||
void sub_80A37C4(u16 * a0, const u16 *a1, SubStruct_52C *a2, SubStruct_545 *a3);
|
||||
const u8 *sub_80A3908(u16 **dstArray, const void *src_, SubStruct_52C *a2, SubStruct_448 *a3);
|
||||
void sub_80A37C4(void *vramDst, const u16 *src_, SubStruct_52C *a2, SubStruct_545 *a3);
|
||||
void _UncompressCell(void * a0, u16 *a1, const void * a2, SubStruct_52C *a3, SubStruct_545 *a4);
|
||||
|
||||
extern const struct unkStruct_81188F0 gUnknown_81188F0[10];
|
||||
|
|
@ -724,7 +724,7 @@ void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
|||
mapPtr_454->unk4 = *file_434++;
|
||||
|
||||
sum = mapPtr_454->unk4;
|
||||
for (k = 0; k < 4; k++) {
|
||||
for (k = 0; k < UNK_545_UNK6_ARR_COUNT; k++) {
|
||||
mapPtr_454->unk6[k] = *file_434++;
|
||||
sum += mapPtr_454->unk6[k];
|
||||
}
|
||||
|
|
@ -762,7 +762,7 @@ void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
|||
|
||||
sub_80A37C4((void *)(VRAM + 0x8000 + mapPtr->unk52C.unk4 * 32), file_434, &mapPtr->unk52C, &mapPtr->unk454);
|
||||
_UncompressCell(mapPtr->unk548, &mapPtr->unk528, file_434 + ((mapPtr_454->unk4 - 1) * 16), &mapPtr->unk52C, &mapPtr->unk454);
|
||||
file_438 = sub_80A3908(&mapPtr->unk54C, file_438, &mapPtr->unk52C, &mapPtr->unk448);
|
||||
file_438 = sub_80A3908(mapPtr->unk54C, file_438, &mapPtr->unk52C, &mapPtr->unk448);
|
||||
mapPtr->unk468 = file_438;
|
||||
if (mapPtr->unk544 != NULL) {
|
||||
mapPtr->unk52C.unk14(mapPtr->unk544, file_438, mapPtr_448, mapPtr->unk52C.unkE);
|
||||
|
|
@ -866,7 +866,7 @@ void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
|||
void sub_80A3440(unkStruct_3001B70 *mapPtr, s32 a1_, DungeonLocation *dungLoc, s32 a3)
|
||||
{
|
||||
SubStruct_0 *sub0Ptr;
|
||||
s32 k;
|
||||
s32 i;
|
||||
SubStruct_545 *mapPtr_454;
|
||||
const u16 *file_434;
|
||||
const void *file_438;
|
||||
|
|
@ -904,8 +904,8 @@ void sub_80A3440(unkStruct_3001B70 *mapPtr, s32 a1_, DungeonLocation *dungLoc, s
|
|||
mapPtr_454->unk2 = *file_434++;
|
||||
mapPtr_454->unk4 = *file_434++;
|
||||
|
||||
for (k = 0; k < 4; k++) {
|
||||
mapPtr_454->unk6[k] = *file_434++;
|
||||
for (i = 0; i < UNK_545_UNK6_ARR_COUNT; i++) {
|
||||
mapPtr_454->unk6[i] = *file_434++;
|
||||
}
|
||||
mapPtr_454->unkE = *file_434++;
|
||||
|
||||
|
|
@ -930,8 +930,8 @@ void sub_80A3440(unkStruct_3001B70 *mapPtr, s32 a1_, DungeonLocation *dungLoc, s
|
|||
|
||||
mapPtr->unk52C.unk14(mapPtr->unk544, file_438, mapPtr_448, mapPtr->unk52C.unkE);
|
||||
mapPtr_454->unk4 = 0x200;
|
||||
for (k = 0; k < 4; k++) {
|
||||
mapPtr_454->unk6[k] = 0;
|
||||
for (i = 0; i < UNK_545_UNK6_ARR_COUNT; i++) {
|
||||
mapPtr_454->unk6[i] = 0;
|
||||
}
|
||||
|
||||
mapPtr_454->unkE = 250;
|
||||
|
|
@ -1002,4 +1002,151 @@ void sub_80A3440(unkStruct_3001B70 *mapPtr, s32 a1_, DungeonLocation *dungLoc, s
|
|||
ASM_MATCH_TRICK(mapPtr_454->unk6[0]);
|
||||
}
|
||||
|
||||
void sub_80A37C4(void *vramDst, const u16 *src_, SubStruct_52C *a2, SubStruct_545 *a3)
|
||||
{
|
||||
const u16 *src = src_;
|
||||
u16 *dst = vramDst;
|
||||
s32 id, i;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
for (id = 1; id < a3->unk4; id++) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
*dst++ = *src++;
|
||||
}
|
||||
}
|
||||
for (; id < a2->unk6; id++) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
*dst++ = 0xFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern const DebugLocation gUnknown_81172E8;
|
||||
extern const char gUnknown_81172F4[];
|
||||
|
||||
void _UncompressCell(void *dst_, u16 *a1, const void *src_, SubStruct_52C *a3, SubStruct_545 *a4)
|
||||
{
|
||||
s32 id, i;
|
||||
s32 n;
|
||||
|
||||
const u16 *src = src_;
|
||||
u16 *dst = dst_;
|
||||
u16 r6 = (a3->unk0 << 12) | a3->unk4;
|
||||
|
||||
if (a4->unk0 == 2 && a4->unk2 == 2) {
|
||||
*a1 = 1;
|
||||
n = 4;
|
||||
}
|
||||
else if (a4->unk0 == 3 && a4->unk2 == 3) {
|
||||
*a1 = 2;
|
||||
n = 9;
|
||||
}
|
||||
else {
|
||||
*a1 = 0;
|
||||
FatalError(&gUnknown_81172E8, gUnknown_81172F4, a4->unk0, a4->unk2);
|
||||
}
|
||||
|
||||
for (i = 0; i < 9; i++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
for (id = 1; id < a4->unkE; id++) {
|
||||
for (i = 0; i < n; i++) {
|
||||
*dst++ = *src++ + r6;
|
||||
}
|
||||
for (; i < 9; i++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
}
|
||||
for (; id < a3->unk8; id++) {
|
||||
for (i = 0; i < 9; i++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tilemap decompression algorhitm?
|
||||
const u8 *sub_80A3908(u16 **dstArray, const void *src_, SubStruct_52C *a2, SubStruct_448 *a3)
|
||||
{
|
||||
s32 i, j, k, l;
|
||||
const u8 *src = src_;
|
||||
|
||||
for (i = 0; i < a2->unkC; i++) {
|
||||
u16 *dst = dstArray[i];
|
||||
|
||||
for (j = 0; j < a3->unk5; j++) {
|
||||
k = 0;
|
||||
if (j == 0) {
|
||||
while (k < a3->unk4) {
|
||||
s32 val = *src++;
|
||||
if (val > 191) {
|
||||
for (l = 191; l < val; l++) {
|
||||
s32 dstVal = src[0] | (src[1] << 8) | (src[2] << 16); src += 3;
|
||||
*dst++ = dstVal & 0xFFF;
|
||||
*dst++ = (dstVal >> 12) & 0xFFF;
|
||||
}
|
||||
k += (val - 191) * 2;
|
||||
}
|
||||
else if (val > 127) {
|
||||
s32 dstVal = src[0] | (src[1] << 8) | (src[2] << 16); src += 3;
|
||||
for (l = 127; l < val; l++) {
|
||||
*dst++ = dstVal & 0xFFF;
|
||||
*dst++ = (dstVal >> 12) & 0xFFF;
|
||||
}
|
||||
k += (val - 127) * 2;
|
||||
}
|
||||
else {
|
||||
for (l = 0; l <= val; l++) {
|
||||
*dst++ = 0;
|
||||
*dst++ = 0;
|
||||
}
|
||||
k += (val + 1) * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
u16 *ptrVal = dst - 64;
|
||||
while (k < a3->unk4) {
|
||||
s32 val = *src++;
|
||||
if (val > 191) {
|
||||
for (l = 191; l < val; l++) {
|
||||
s32 dstVal = src[0] | (src[1] << 8) | (src[2] << 16); src += 3;
|
||||
*dst++ = (dstVal & 0xFFF) ^ *ptrVal++;
|
||||
*dst++ = ((dstVal >> 12) & 0xFFF) ^ *ptrVal++;
|
||||
}
|
||||
k += (val - 191) * 2;
|
||||
}
|
||||
else if (val > 127) {
|
||||
s32 dstVal = src[0] | (src[1] << 8) | (src[2] << 16); src += 3;
|
||||
for (l = 127; l < val; l++) {
|
||||
*dst++ = (dstVal & 0xFFF) ^ *ptrVal++;
|
||||
*dst++ = ((dstVal >> 12) & 0xFFF) ^ *ptrVal++;
|
||||
}
|
||||
k += (val - 127) * 2;
|
||||
}
|
||||
else {
|
||||
for (l = 0; l <= val; l++) {
|
||||
*dst++ = *ptrVal++;
|
||||
*dst++ = *ptrVal++;
|
||||
}
|
||||
k += (val + 1) * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (; k < 64; k++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
}
|
||||
for (; j < a2->unk10; j++) {
|
||||
for (k = 0; k < 64; k++) {
|
||||
*dst++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return src;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user