through sub_80C47F0

This commit is contained in:
PikalaxALT
2020-01-07 14:21:55 -05:00
parent e4d869bfc6
commit b39a83fc03
3 changed files with 197 additions and 647 deletions
-643
View File
@@ -5,649 +5,6 @@
.text
thumb_func_start sub_80C4398
sub_80C4398: @ 80C4398
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r0, 0
adds r6, r1, 0
mov r8, r2
lsls r4, 24
lsrs r4, 24
lsls r6, 24
lsrs r6, 24
ldr r5, _080C43F4 @ =gUnknown_20399EC
ldr r0, _080C43F8 @ =0x0000046c
bl AllocZeroed
str r0, [r5]
movs r2, 0x8D
lsls r2, 3
adds r1, r0, r2
mov r2, r8
str r2, [r1]
movs r1, 0x8C
lsls r1, 3
adds r0, r1
strb r4, [r0]
ldr r0, _080C43FC @ =gUnknown_83F18D8
ldr r1, [r5]
bl LZ77UnCompWram
ldr r0, _080C4400 @ =gUnknown_83F1908
ldr r1, [r5]
adds r1, 0x40
bl LZ77UnCompWram
ldr r1, _080C4404 @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r0, r1
ldr r1, _080C4408 @ =sub_80C440C
str r1, [r0]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080C43F4: .4byte gUnknown_20399EC
_080C43F8: .4byte 0x0000046c
_080C43FC: .4byte gUnknown_83F18D8
_080C4400: .4byte gUnknown_83F1908
_080C4404: .4byte gTasks
_080C4408: .4byte sub_80C440C
thumb_func_end sub_80C4398
thumb_func_start sub_80C440C
sub_80C440C: @ 80C440C
push {r4,lr}
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080C442C @ =gUnknown_20399EC
ldr r0, [r0]
ldr r1, _080C4430 @ =0x00000463
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x4
bhi _080C44BC
lsls r0, 2
ldr r1, _080C4434 @ =_080C4438
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C442C: .4byte gUnknown_20399EC
_080C4430: .4byte 0x00000463
_080C4434: .4byte _080C4438
.align 2, 0
_080C4438:
.4byte _080C444C
.4byte _080C4452
.4byte _080C4468
.4byte _080C446E
.4byte _080C44A0
_080C444C:
bl sub_80C08E0
b _080C44A4
_080C4452:
bl sub_80C47F0
ldr r0, _080C4460 @ =gUnknown_20399EC
ldr r1, [r0]
ldr r0, _080C4464 @ =0x00000463
adds r1, r0
b _080C44AC
.align 2, 0
_080C4460: .4byte gUnknown_20399EC
_080C4464: .4byte 0x00000463
_080C4468:
bl sub_80C4750
b _080C44A4
_080C446E:
movs r4, 0x1
negs r4, r4
adds r0, r4, 0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
movs r0, 0
str r0, [sp]
adds r0, r4, 0
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
ldr r0, _080C4498 @ =gUnknown_20399EC
ldr r1, [r0]
ldr r0, _080C449C @ =0x00000463
adds r1, r0
b _080C44AC
.align 2, 0
_080C4498: .4byte gUnknown_20399EC
_080C449C: .4byte 0x00000463
_080C44A0:
bl sub_80C08F4
_080C44A4:
ldr r0, _080C44B4 @ =gUnknown_20399EC
ldr r1, [r0]
ldr r2, _080C44B8 @ =0x00000463
adds r1, r2
_080C44AC:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _080C44DC
.align 2, 0
_080C44B4: .4byte gUnknown_20399EC
_080C44B8: .4byte 0x00000463
_080C44BC:
movs r0, 0
bl GetGpuReg
adds r1, r0, 0
movs r2, 0x80
lsls r2, 5
adds r0, r2, 0
orrs r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0
bl SetGpuReg
adds r0, r4, 0
bl sub_80C44E4
_080C44DC:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80C440C
thumb_func_start sub_80C44E4
sub_80C44E4: @ 80C44E4
lsls r0, 24
lsrs r0, 24
ldr r2, _080C4504 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _080C4508 @ =gUnknown_20399EC
ldr r0, [r0]
movs r2, 0x8D
lsls r2, 3
adds r0, r2
ldr r0, [r0]
str r0, [r1]
bx lr
.align 2, 0
_080C4504: .4byte gTasks
_080C4508: .4byte gUnknown_20399EC
thumb_func_end sub_80C44E4
thumb_func_start sub_80C450C
sub_80C450C: @ 80C450C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
mov r10, r0
mov r9, r1
adds r4, r2, 0
adds r5, r3, 0
ldr r3, [sp, 0x4C]
ldr r6, [sp, 0x50]
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r1, 24
lsrs r1, 24
mov r9, r1
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
str r5, [sp, 0x28]
lsls r3, 24
lsrs r3, 24
lsls r6, 24
lsrs r6, 24
ldr r7, _080C45F4 @ =gUnknown_20399EC
ldr r0, [r7]
adds r0, 0x40
str r0, [sp, 0x18]
movs r2, 0x80
lsls r2, 1
add r0, sp, 0x18
lsls r1, r3, 16
orrs r1, r2
str r1, [r0, 0x4]
ldr r1, _080C45F8 @ =gUnknown_83EF2BC
str r1, [sp, 0x20]
ldr r2, _080C45FC @ =0xffff0000
add r5, sp, 0x20
mov r8, r5
ldr r1, [r5, 0x4]
ands r1, r2
orrs r1, r6
str r1, [r5, 0x4]
mov r1, sp
movs r2, 0
strh r3, [r1]
strh r6, [r1, 0x2]
ldr r1, _080C4600 @ =gUnknown_83F1C68
str r1, [sp, 0x4]
ldr r1, _080C4604 @ =gUnknown_83F1C94
str r1, [sp, 0x8]
str r2, [sp, 0xC]
ldr r1, _080C4608 @ =gDummySpriteAffineAnimTable
str r1, [sp, 0x10]
ldr r1, _080C460C @ =SpriteCallbackDummy
str r1, [sp, 0x14]
bl LoadSpriteSheet
mov r0, r8
bl LoadSpritePalette
lsls r4, 19
movs r0, 0x90
lsls r0, 14
adds r4, r0
asrs r4, 16
ldr r1, [sp, 0x28]
lsls r5, r1, 19
adds r5, r0
asrs r5, 16
mov r0, sp
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r2, [r7]
mov r5, r9
lsls r5, 4
mov r9, r5
movs r1, 0xB6
lsls r1, 2
adds r2, r1
add r2, r9
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080C4610 @ =gSprites
adds r1, r0
str r1, [r2]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldr r0, [r7]
add r0, r9
movs r2, 0xB5
lsls r2, 2
adds r0, r2
mov r5, r10
strb r5, [r0]
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C45F4: .4byte gUnknown_20399EC
_080C45F8: .4byte gUnknown_83EF2BC
_080C45FC: .4byte 0xffff0000
_080C4600: .4byte gUnknown_83F1C68
_080C4604: .4byte gUnknown_83F1C94
_080C4608: .4byte gDummySpriteAffineAnimTable
_080C460C: .4byte SpriteCallbackDummy
_080C4610: .4byte gSprites
thumb_func_end sub_80C450C
thumb_func_start sub_80C4614
sub_80C4614: @ 80C4614
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
ldr r4, [sp, 0x4C]
ldr r5, [sp, 0x50]
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x28]
lsls r2, 16
lsrs r2, 16
mov r8, r2
lsls r3, 16
lsrs r3, 16
mov r9, r3
lsls r4, 24
lsrs r4, 24
lsls r5, 24
lsrs r5, 24
movs r7, 0
ldr r0, _080C4730 @ =gUnknown_20399EC
ldr r0, [r0]
str r0, [sp, 0x18]
movs r2, 0x40
add r0, sp, 0x18
lsls r1, r4, 16
orrs r1, r2
str r1, [r0, 0x4]
ldr r1, _080C4734 @ =gUnknown_83EF2BC
str r1, [sp, 0x20]
ldr r2, _080C4738 @ =0xffff0000
add r6, sp, 0x20
ldr r1, [r6, 0x4]
ands r1, r2
orrs r1, r5
str r1, [r6, 0x4]
mov r1, sp
strh r4, [r1]
strh r5, [r1, 0x2]
ldr r1, _080C473C @ =gUnknown_83F1C70
str r1, [sp, 0x4]
ldr r1, _080C4740 @ =gUnknown_83F1C98
str r1, [sp, 0x8]
str r7, [sp, 0xC]
ldr r1, _080C4744 @ =gDummySpriteAffineAnimTable
str r1, [sp, 0x10]
ldr r1, _080C4748 @ =SpriteCallbackDummy
str r1, [sp, 0x14]
bl LoadSpriteSheet
adds r0, r6, 0
bl LoadSpritePalette
mov r0, r9
lsls r2, r0, 16
asrs r2, 16
mov r1, r8
lsls r3, r1, 16
asrs r3, 16
mov r0, r10
movs r1, 0
bl sub_80C4164
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
adds r0, r4, 0
bl sub_80C35DC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
beq _080C46BE
adds r0, r4, 0
bl sub_80C35DC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bne _080C46C4
_080C46BE:
cmp r5, 0x64
beq _080C46C4
movs r7, 0x2
_080C46C4:
mov r3, r8
lsls r1, r3, 3
lsls r0, r7, 16
asrs r0, 16
adds r0, 0x24
adds r1, r0
lsls r1, 16
asrs r1, 16
mov r3, r9
lsls r2, r3, 3
adds r2, r0
lsls r2, 16
asrs r2, 16
mov r0, sp
movs r3, 0x3
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r4, _080C4730 @ =gUnknown_20399EC
ldr r2, [r4]
ldr r1, [sp, 0x28]
lsls r3, r1, 4
movs r1, 0xA4
lsls r1, 1
adds r2, r1
adds r2, r3
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _080C474C @ =gSprites
adds r1, r0
str r1, [r2]
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
ldr r0, [r4]
adds r0, r3
movs r3, 0xA2
lsls r3, 1
adds r0, r3
mov r1, r10
strb r1, [r0]
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C4730: .4byte gUnknown_20399EC
_080C4734: .4byte gUnknown_83EF2BC
_080C4738: .4byte 0xffff0000
_080C473C: .4byte gUnknown_83F1C70
_080C4740: .4byte gUnknown_83F1C98
_080C4744: .4byte gDummySpriteAffineAnimTable
_080C4748: .4byte SpriteCallbackDummy
_080C474C: .4byte gSprites
thumb_func_end sub_80C4614
thumb_func_start sub_80C4750
sub_80C4750: @ 80C4750
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
movs r7, 0
movs r0, 0x3
bl sub_80C0E04
lsls r0, 24
cmp r0, 0
beq _080C47E0
movs r1, 0
_080C476C:
movs r5, 0
lsls r0, r1, 24
adds r1, 0x1
mov r10, r1
lsrs r0, 24
str r0, [sp, 0x8]
_080C4778:
movs r4, 0
lsls r0, r5, 16
mov r8, r0
adds r1, r5, 0x1
mov r9, r1
_080C4782:
lsls r3, r4, 16
asrs r3, 16
ldr r0, [sp, 0x8]
movs r1, 0
mov r6, r8
asrs r2, r6, 16
bl sub_80C4164
lsls r0, 24
lsrs r0, 24
bl sub_80C35DC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _080C47C2
adds r0, r7, 0
adds r0, 0xA
lsls r0, 24
lsrs r0, 24
str r0, [sp]
movs r0, 0xA
str r0, [sp, 0x4]
ldr r0, [sp, 0x8]
adds r1, r7, 0
adds r2, r4, 0
adds r3, r5, 0
bl sub_80C450C
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
_080C47C2:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x15
bls _080C4782
mov r1, r9
lsls r0, r1, 16
lsrs r5, r0, 16
cmp r5, 0xE
bls _080C4778
mov r6, r10
lsls r0, r6, 16
lsrs r1, r0, 16
cmp r1, 0x3
bls _080C476C
_080C47E0:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80C4750
thumb_func_start sub_80C47F0
sub_80C47F0: @ 80C47F0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
movs r6, 0
movs r1, 0
_080C4800:
movs r7, 0
lsls r0, r1, 24
adds r1, 0x1
str r1, [sp, 0x8]
lsrs r0, 24
mov r8, r0
_080C480C:
movs r5, 0
lsls r0, r7, 16
mov r9, r0
adds r1, r7, 0x1
mov r10, r1
_080C4816:
lsls r3, r5, 16
asrs r3, 16
mov r0, r8
movs r1, 0x1
mov r4, r9
asrs r2, r4, 16
bl sub_80C4164
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
cmp r0, 0xC5
beq _080C4884
cmp r0, 0x8D
bne _080C4840
ldr r0, _080C48B4 @ =0x00000844
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _080C4884
_080C4840:
adds r0, r6, 0
adds r0, 0x23
lsls r0, 24
lsrs r0, 24
str r0, [sp]
movs r0, 0xA
str r0, [sp, 0x4]
mov r0, r8
adds r1, r6, 0
adds r2, r5, 0
adds r3, r7, 0
bl sub_80C4614
adds r0, r4, 0
bl sub_80C3878
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
beq _080C487E
ldr r0, _080C48B8 @ =gUnknown_20399EC
ldr r0, [r0]
lsls r1, r6, 4
movs r2, 0xA4
lsls r2, 1
adds r0, r2
adds r0, r1
ldr r0, [r0]
movs r1, 0x1
bl StartSpriteAnim
_080C487E:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_080C4884:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x15
bls _080C4816
mov r4, r10
lsls r0, r4, 16
lsrs r7, r0, 16
cmp r7, 0xE
bls _080C480C
ldr r1, [sp, 0x8]
lsls r0, r1, 16
lsrs r1, r0, 16
cmp r1, 0x3
bls _080C4800
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C48B4: .4byte 0x00000844
_080C48B8: .4byte gUnknown_20399EC
thumb_func_end sub_80C47F0
thumb_func_start sub_80C48BC
sub_80C48BC: @ 80C48BC
push {r4-r7,lr}
-2
View File
@@ -1,5 +1,3 @@
ENTRY(Start)
gNumMusicPlayers = 4;
gMaxLines = 0;
+197 -2
View File
@@ -161,7 +161,7 @@ struct UnkStruct_20399E4
u16 field_020;
u16 field_022;
u16 field_024[0x080];
};
}; // size = 0x124
struct UnkStruct_20399E8
{
@@ -171,15 +171,37 @@ struct UnkStruct_20399E8
u16 field_08;
u16 field_0A;
u16 field_0C[0x40];
}; // size = 0x8C
struct UnkStruct_20399EC_2D4
{
u8 field_0;
struct Sprite * field_4;
u8 filler_8[8];
};
struct UnkStruct_20399EC
{
u8 field_000[0x40];
u8 field_040[0x100];
u8 field_140[4];
struct UnkStruct_20399EC_2D4 field_144[25];
struct UnkStruct_20399EC_2D4 field_2D4[24];
u8 field_454[0xC];
u8 field_460;
u8 filler_461[2];
u8 field_463;
u8 filler_464[4];
TaskFunc field_468;
}; // size = 0x46C
EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL;
EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL;
EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL;
EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL;
EWRAM_DATA void * gUnknown_20399EC = NULL;
EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL;
EWRAM_DATA void * gUnknown_20399F0[3] = {};
EWRAM_DATA void * gUnknown_20399FC = NULL;
@@ -258,6 +280,10 @@ void sub_80C4348(void);
u16 sub_80C4380();
u16 sub_80C438C();
void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C440C(u8 taskId);
void sub_80C44E4(u8 taskId);
void sub_80C4750(void);
void sub_80C47F0(void);
void sub_80C48BC(u8 a0, u8 a1, u8 a2);
void sub_80C4960(u8 a0, u8 a1, u8 a2);
void sub_80C4A04(void);
@@ -282,6 +308,7 @@ extern const u16 gUnknown_83EF23C[];
extern const u16 gUnknown_83EF25C[];
extern const u16 gUnknown_83EF27C[];
extern const u16 gUnknown_83EF29C[];
extern const u16 gUnknown_83EF2BC[];
extern const u16 gUnknown_83EF2DC[];
extern const u16 gUnknown_83EF384[];
extern const u16 gUnknown_83EF3A4[];
@@ -307,6 +334,8 @@ extern const u32 gUnknown_83F1550[];
extern const u32 gUnknown_83F1640[];
extern const u32 gUnknown_83F1738[];
extern const u32 gUnknown_83F1804[];
extern const u32 gUnknown_83F18D8[];
extern const u32 gUnknown_83F1908[];
extern const u32 gUnknown_83F1978[];
extern const u32 gUnknown_83F19A0[];
extern const struct BgTemplate gUnknown_83F1A50[4];
@@ -327,6 +356,10 @@ extern const struct OamData gUnknown_83F1C3C;
extern const union AnimCmd *const gUnknown_83F1C50[];
extern const struct OamData gUnknown_83F1C54;
extern const union AnimCmd *const gUnknown_83F1C64[];
extern const struct OamData gUnknown_83F1C68;
extern const struct OamData gUnknown_83F1C70;
extern const union AnimCmd *const gUnknown_83F1C94[];
extern const union AnimCmd *const gUnknown_83F1C98[];
extern const u8 *const gUnknown_83F1CAC[];
extern const u16 gUnknown_83F1E60[][2];
extern const u16 gUnknown_83F2178[][2];
@@ -2829,3 +2862,165 @@ u16 sub_80C438C(void)
{
return gUnknown_20399E8->field_02;
}
void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc)
{
gUnknown_20399EC = AllocZeroed(sizeof(struct UnkStruct_20399EC));
gUnknown_20399EC->field_468 = taskFunc;
gUnknown_20399EC->field_460 = a0;
LZ77UnCompWram(gUnknown_83F18D8, gUnknown_20399EC->field_000);
LZ77UnCompWram(gUnknown_83F1908, gUnknown_20399EC->field_040);
gTasks[taskId].func = sub_80C440C;
}
void sub_80C440C(u8 taskId)
{
switch (gUnknown_20399EC->field_463)
{
case 0:
sub_80C08E0();
gUnknown_20399EC->field_463++;
break;
case 1:
sub_80C47F0();
gUnknown_20399EC->field_463++;
break;
case 2:
sub_80C4750();
gUnknown_20399EC->field_463++;
break;
case 3:
BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gUnknown_20399EC->field_463++;
break;
case 4:
sub_80C08F4();
gUnknown_20399EC->field_463++;
break;
default:
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_ON);
sub_80C44E4(taskId);
break;
}
}
void sub_80C44E4(u8 taskId)
{
gTasks[taskId].func = gUnknown_20399EC->field_468;
}
void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
{
u8 spriteId;
struct SpriteSheet spriteSheet = {
.data = gUnknown_20399EC->field_040,
.size = 0x100,
.tag = a4
};
struct SpritePalette spritePalette = {
.data = gUnknown_83EF2BC,
.tag = a5
};
struct SpriteTemplate template = {
.tileTag = a4,
.paletteTag = a5,
.oam = &gUnknown_83F1C68,
.anims = gUnknown_83F1C94,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
LoadSpriteSheet(&spriteSheet);
LoadSpritePalette(&spritePalette);
spriteId = CreateSprite(&template, 8 * a2 + 36, 8 * a3 + 36, 1);
gUnknown_20399EC->field_2D4[a1].field_4 = &gSprites[spriteId];
gSprites[spriteId].invisible = TRUE;
gUnknown_20399EC->field_2D4[a1].field_0 = a0;
}
void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
{
u8 spriteId;
u8 r4;
s16 r7 = 0;
struct SpriteSheet spriteSheet = {
.data = gUnknown_20399EC->field_000,
.size = 0x40,
.tag = a4
};
struct SpritePalette spritePalette = {
.data = gUnknown_83EF2BC,
.tag = a5
};
struct SpriteTemplate template = {
.tileTag = a4,
.paletteTag = a5,
.oam = &gUnknown_83F1C70,
.anims = gUnknown_83F1C98,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
LoadSpriteSheet(&spriteSheet);
LoadSpritePalette(&spritePalette);
r4 = sub_80C4164(a0, 0, a3, a2);
if ((sub_80C35DC(r4) == 2 || sub_80C35DC(r4) == 3) && r4 != MAPSEC_ROUTE_10_FLYDUP)
r7 = 2;
spriteId = CreateSprite(&template, 8 * a2 + 36 + r7, 8 * a3 + 36 + r7, 3);
gUnknown_20399EC->field_144[a1].field_4 = &gSprites[spriteId];
gSprites[spriteId].invisible = TRUE;
gUnknown_20399EC->field_144[a1].field_0 = a0;
}
void sub_80C4750(void)
{
u16 i, j, k;
u8 r7 = 0;
if (sub_80C0E04(3))
{
for (i = 0; i < 4; i++)
{
for (j = 0; j < 15; j++)
{
for (k = 0; k < 22; k++)
{
if (sub_80C35DC(sub_80C4164(i, 0, j, k)) == 2)
{
sub_80C450C(i, r7, k, j, r7 + 10, 10);
r7++;
}
}
}
}
}
}
void sub_80C47F0(void)
{
u16 i, j, k;
u8 r6 = 0;
u8 mapsec;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 15; j++)
{
for (k = 0; k < 22; k++)
{
mapsec = sub_80C4164(i, 1, j, k);
if (mapsec == MAPSEC_NONE)
continue;
if (mapsec == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS))
continue;
sub_80C4614(i, r6, k, j, r6 + 35, 10);
if (sub_80C3878(mapsec) != 2)
{
StartSpriteAnim(gUnknown_20399EC->field_144[r6].field_4, 1);
}
r6++;
}
}
}
}