summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-03 16:04:43 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-03 16:04:43 -0500
commite58e6689b83d1bbcdae1009bc752aa37680a744f (patch)
tree6271a227814311fab6c383f0a281259f42464c3d
parente2fb677742395ed35e08e89f8c1bdfea5555438a (diff)
through sub_80C1920
-rw-r--r--asm/region_map.s608
-rw-r--r--include/strings.h1
-rw-r--r--src/region_map.c191
3 files changed, 184 insertions, 616 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index 55ddb5f9d..ceb2213d1 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -5,614 +5,6 @@
.text
- thumb_func_start sub_80C1478
-sub_80C1478: @ 80C1478
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r6, 0
- ldr r0, _080C1574 @ =gUnknown_20399D8
- mov r8, r0
- ldr r5, [r0]
- ldr r1, _080C1578 @ =0x00001cd4
- adds r0, r5, r1
- movs r1, 0x48
- strh r1, [r0]
- ldr r4, _080C157C @ =0xffff0000
- ldr r0, [sp]
- ands r0, r4
- orrs r0, r1
- str r0, [sp]
- ldr r3, _080C1580 @ =0x00001cce
- adds r2, r5, r3
- ldr r7, _080C1584 @ =0x00001cca
- adds r0, r5, r7
- ldrb r1, [r0]
- lsls r1, 2
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 3
- ldr r0, _080C1588 @ =0x00001cd6
- adds r3, r5, r0
- strh r1, [r3]
- lsls r1, 16
- ldr r2, _080C158C @ =0x0000ffff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldr r1, _080C1590 @ =0x00001cd8
- adds r0, r5, r1
- movs r1, 0xA8
- strh r1, [r0]
- ldr r0, [sp, 0x4]
- ands r0, r4
- orrs r0, r1
- str r0, [sp, 0x4]
- ldrh r1, [r3]
- adds r1, 0x20
- ldr r3, _080C1594 @ =0x00001cda
- adds r0, r5, r3
- strh r1, [r0]
- ands r1, r2
- lsls r1, 16
- ldr r0, [sp, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
- ldr r0, _080C1598 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080C150E
- adds r1, r7, 0
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C150E
- movs r0, 0xF5
- bl PlaySE
- mov r2, r8
- ldr r1, [r2]
- adds r1, r7
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- movs r6, 0x1
-_080C150E:
- ldr r0, _080C1598 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C1542
- ldr r4, _080C1574 @ =gUnknown_20399D8
- ldr r0, [r4]
- ldr r3, _080C1584 @ =0x00001cca
- adds r1, r0, r3
- ldr r2, _080C159C @ =0x00001ccc
- adds r0, r2
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcs _080C1542
- movs r0, 0xF5
- bl PlaySE
- ldr r1, [r4]
- ldr r3, _080C1584 @ =0x00001cca
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r6, 0x1
-_080C1542:
- ldr r2, _080C1598 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- ldr r4, _080C1574 @ =gUnknown_20399D8
- cmp r0, 0
- beq _080C15A8
- ldr r0, [r4]
- ldr r1, _080C15A0 @ =0x00001cdc
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x6
- bne _080C15A8
- movs r0, 0xC7
- bl PlaySE
- ldr r0, [r4]
- ldr r2, _080C1584 @ =0x00001cca
- adds r1, r0, r2
- ldrb r1, [r1]
- ldr r3, _080C15A4 @ =0x00001ccb
- adds r0, r3
- strb r1, [r0]
- movs r0, 0x1
- b _080C16AC
- .align 2, 0
-_080C1574: .4byte gUnknown_20399D8
-_080C1578: .4byte 0x00001cd4
-_080C157C: .4byte 0xffff0000
-_080C1580: .4byte 0x00001cce
-_080C1584: .4byte 0x00001cca
-_080C1588: .4byte 0x00001cd6
-_080C158C: .4byte 0x0000ffff
-_080C1590: .4byte 0x00001cd8
-_080C1594: .4byte 0x00001cda
-_080C1598: .4byte gMain
-_080C159C: .4byte 0x00001ccc
-_080C15A0: .4byte 0x00001cdc
-_080C15A4: .4byte 0x00001ccb
-_080C15A8:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080C1604
- ldr r0, [r4]
- ldr r2, _080C15FC @ =0x00001ccb
- adds r1, r0, r2
- ldrb r1, [r1]
- subs r2, 0x1
- adds r0, r2
- strb r1, [r0]
- ldr r3, _080C1600 @ =gUnknown_20399D4
- ldr r0, [r4]
- adds r0, r2
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 4
- adds r0, 0x26
- ldr r1, [r3]
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C48BC
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C4960
- movs r0, 0x1
- b _080C16AC
- .align 2, 0
-_080C15FC: .4byte 0x00001ccb
-_080C1600: .4byte gUnknown_20399D4
-_080C1604:
- cmp r6, 0
- beq _080C166C
- ldr r2, _080C168C @ =gUnknown_20399D4
- ldr r5, _080C1690 @ =gUnknown_20399D8
- ldr r0, [r5]
- ldr r4, _080C1694 @ =0x00001cca
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 4
- adds r0, 0x26
- ldr r1, [r2]
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- ldr r0, _080C1698 @ =gUnknown_8418EB0
- bl sub_80C4E74
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C48BC
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C4960
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
-_080C166C:
- ldr r0, _080C1690 @ =gUnknown_20399D8
- ldr r4, [r0]
- ldr r3, _080C1694 @ =0x00001cca
- adds r4, r3
- bl sub_80C0E34
- ldrb r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _080C169C
- movs r0, 0x1
- bl sub_80C4324
- b _080C16A2
- .align 2, 0
-_080C168C: .4byte gUnknown_20399D4
-_080C1690: .4byte gUnknown_20399D8
-_080C1694: .4byte 0x00001cca
-_080C1698: .4byte gUnknown_8418EB0
-_080C169C:
- movs r0, 0
- bl sub_80C4324
-_080C16A2:
- movs r0, 0x1
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
-_080C16AC:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C1478
-
- thumb_func_start sub_80C16B8
-sub_80C16B8: @ 80C16B8
- ldr r1, _080C16C8 @ =gUnknown_20399D8
- ldr r1, [r1]
- ldr r2, _080C16CC @ =0x00001cd6
- adds r1, r2
- ldrh r1, [r1]
- adds r1, 0x10
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080C16C8: .4byte gUnknown_20399D8
-_080C16CC: .4byte 0x00001cd6
- thumb_func_end sub_80C16B8
-
- thumb_func_start sub_80C16D0
-sub_80C16D0: @ 80C16D0
- push {lr}
- ldr r0, _080C16EC @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r2, _080C16F0 @ =0x00001cc9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080C1708
- cmp r0, 0x1
- bgt _080C16F4
- cmp r0, 0
- beq _080C16FA
- b _080C1732
- .align 2, 0
-_080C16EC: .4byte gUnknown_20399D8
-_080C16F0: .4byte 0x00001cc9
-_080C16F4:
- cmp r0, 0x2
- beq _080C171C
- b _080C1732
-_080C16FA:
- ldr r0, _080C1700 @ =gUnknown_83EF3C4
- ldr r2, _080C1704 @ =0x000014b0
- b _080C170C
- .align 2, 0
-_080C1700: .4byte gUnknown_83EF3C4
-_080C1704: .4byte 0x000014b0
-_080C1708:
- ldr r0, _080C1714 @ =gUnknown_83EF450
- ldr r2, _080C1718 @ =0x000018bc
-_080C170C:
- adds r1, r2
- bl LZ77UnCompWram
- b _080C1736
- .align 2, 0
-_080C1714: .4byte gUnknown_83EF450
-_080C1718: .4byte 0x000018bc
-_080C171C:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x2
- bl sub_80C1754
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x3
- bl sub_80C1754
- b _080C1736
-_080C1732:
- movs r0, 0x1
- b _080C1746
-_080C1736:
- ldr r0, _080C174C @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C1750 @ =0x00001cc9
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C1746:
- pop {r1}
- bx r1
- .align 2, 0
-_080C174C: .4byte gUnknown_20399D8
-_080C1750: .4byte 0x00001cc9
- thumb_func_end sub_80C16D0
-
- thumb_func_start sub_80C1754
-sub_80C1754: @ 80C1754
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl sub_80C176C
- pop {r0}
- bx r0
- thumb_func_end sub_80C1754
-
- thumb_func_start sub_80C176C
-sub_80C176C: @ 80C176C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r3, _080C1848 @ =gUnknown_20399D8
- mov r8, r3
- lsls r5, r0, 6
- adds r5, r0
- lsls r5, 2
- subs r5, r0
- lsls r5, 2
- ldr r4, _080C184C @ =0x000014b0
- adds r0, r5, r4
- ldr r3, [r3]
- adds r0, r3, r0
- str r0, [sp, 0x18]
- movs r4, 0x80
- lsls r4, 3
- add r0, sp, 0x18
- lsrs r6, r1, 16
- mov r9, r6
- orrs r1, r4
- str r1, [r0, 0x4]
- ldr r1, _080C1850 @ =gUnknown_83EF384
- str r1, [sp, 0x20]
- ldr r4, _080C1854 @ =0xffff0000
- add r6, sp, 0x20
- ldr r1, [r6, 0x4]
- ands r1, r4
- orrs r1, r2
- str r1, [r6, 0x4]
- mov r1, sp
- movs r4, 0
- mov r7, r9
- strh r7, [r1]
- strh r2, [r1, 0x2]
- ldr r1, _080C1858 @ =gUnknown_83F1B24
- str r1, [sp, 0x4]
- ldr r1, _080C185C @ =gUnknown_83F1B38
- str r1, [sp, 0x8]
- str r4, [sp, 0xC]
- ldr r1, _080C1860 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _080C1864 @ =sub_80C16B8
- str r1, [sp, 0x14]
- adds r3, r5
- ldr r4, _080C1868 @ =0x000018b4
- adds r1, r3, r4
- strh r7, [r1]
- ldr r1, _080C186C @ =0x000018b6
- adds r3, r1
- strh r2, [r3]
- bl LoadSpriteSheet
- adds r0, r6, 0
- bl LoadSpritePalette
- mov r3, r8
- ldr r2, [r3]
- adds r0, r2, r5
- adds r4, 0x4
- adds r0, r4
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r7, _080C1870 @ =0x00001cce
- adds r0, r2, r7
- ldr r3, _080C1874 @ =0x00001cca
- adds r2, r3
- ldrb r2, [r2]
- lsls r2, 2
- ldrh r0, [r0]
- adds r2, r0
- lsls r2, 19
- asrs r2, 16
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r4, r8
- ldr r2, [r4]
- ldr r6, _080C1878 @ =0x000018b0
- adds r2, r6
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C187C @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1848: .4byte gUnknown_20399D8
-_080C184C: .4byte 0x000014b0
-_080C1850: .4byte gUnknown_83EF384
-_080C1854: .4byte 0xffff0000
-_080C1858: .4byte gUnknown_83F1B24
-_080C185C: .4byte gUnknown_83F1B38
-_080C1860: .4byte gDummySpriteAffineAnimTable
-_080C1864: .4byte sub_80C16B8
-_080C1868: .4byte 0x000018b4
-_080C186C: .4byte 0x000018b6
-_080C1870: .4byte 0x00001cce
-_080C1874: .4byte 0x00001cca
-_080C1878: .4byte 0x000018b0
-_080C187C: .4byte gSprites
- thumb_func_end sub_80C176C
-
- thumb_func_start sub_80C1880
-sub_80C1880: @ 80C1880
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C18D0 @ =gUnknown_20399D8
-_080C1886:
- ldr r1, [r6]
- lsls r0, r5, 6
- adds r0, r5
- lsls r0, 2
- subs r0, r5
- lsls r4, r0, 2
- ldr r0, _080C18D4 @ =0x000018b0
- adds r1, r0
- adds r1, r4
- ldr r0, [r1]
- cmp r0, 0
- beq _080C18BE
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C18D8 @ =0x000018b4
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C18DC @ =0x000018b6
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C18BE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _080C1886
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C18D0: .4byte gUnknown_20399D8
-_080C18D4: .4byte 0x000018b0
-_080C18D8: .4byte 0x000018b4
-_080C18DC: .4byte 0x000018b6
- thumb_func_end sub_80C1880
-
- thumb_func_start sub_80C18E0
-sub_80C18E0: @ 80C18E0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r3, _080C1904 @ =gUnknown_83F1B3C
- adds r5, r3, 0
- adds r5, 0x8
-_080C18EE:
- lsls r0, r2, 1
- adds r0, r2
- lsls r1, r0, 2
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r4
- bne _080C1908
- adds r0, r1, r5
- ldr r0, [r0]
- b _080C1914
- .align 2, 0
-_080C1904: .4byte gUnknown_83F1B3C
-_080C1908:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bls _080C18EE
- ldr r0, _080C191C @ =gUnknown_8418EC3
-_080C1914:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C191C: .4byte gUnknown_8418EC3
- thumb_func_end sub_80C18E0
-
- thumb_func_start sub_80C1920
-sub_80C1920: @ 80C1920
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r3, _080C1940 @ =gUnknown_83F1B3C
- adds r5, r3, 0x4
-_080C192C:
- lsls r0, r2, 1
- adds r0, r2
- lsls r1, r0, 2
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r4
- bne _080C1944
- adds r0, r1, r5
- ldr r0, [r0]
- b _080C1950
- .align 2, 0
-_080C1940: .4byte gUnknown_83F1B3C
-_080C1944:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bls _080C192C
- ldr r0, _080C1958 @ =gUnknown_8418EC3
-_080C1950:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C1958: .4byte gUnknown_8418EC3
- thumb_func_end sub_80C1920
-
thumb_func_start sub_80C195C
sub_80C195C: @ 80C195C
push {r4-r6,lr}
diff --git a/include/strings.h b/include/strings.h
index 9895ffbf8..56aa2ec1a 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1011,5 +1011,6 @@ extern const u8 gUnknown_8418E95[];
extern const u8 gUnknown_8418EA7[];
extern const u8 gUnknown_8418EB0[];
extern const u8 gUnknown_8418EBC[];
+extern const u8 gUnknown_8418EC3[];
#endif //GUARD_STRINGS_H
diff --git a/src/region_map.c b/src/region_map.c
index 8394b59d6..f654ae0cf 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -43,15 +43,20 @@ struct UnkStruct_20399D4
MainCallback field_47BC;
}; // size = 0x47C0
+struct UnkStruct_20399D8_14B0
+{
+ u8 field_000[0x400];
+ struct Sprite * field_400;
+ u16 field_404;
+ u16 field_406;
+ s16 field_408;
+};
+
struct UnkStruct_20399D8
{
u8 field_0000[0x1000];
u16 field_1000[0x258];
- u8 filler_14B0[0x408];
- u16 field_18B8;
- u8 filler_18BA[0x40A];
- u16 field_1CC4;
- u8 filler_1CC6[0x2];
+ struct UnkStruct_20399D8_14B0 field_14B0[2];
u8 field_1CC8;
u8 field_1CC9;
u8 field_1CCA;
@@ -72,6 +77,13 @@ struct UnkStruct_80C4CF0
u16 v6;
};
+struct UnkStruct_83F1B3C
+{
+ u16 field_0;
+ const u8 *field_4;
+ const u8 *field_8;
+};
+
EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
EWRAM_DATA void * gUnknown_20399DC = NULL;
@@ -112,6 +124,8 @@ void sub_80C1390(void);
bool8 sub_80C144C(void);
bool8 sub_80C1478(void);
bool8 sub_80C16D0(void);
+void sub_80C1754(u8 a0, u16 a1, u16 a2);
+void sub_80C176C(u8 a0, u16 a1, u16 a2);
void sub_80C1880(void);
void sub_80C4AAC(u8 a0);
void sub_80C4BE4(void);
@@ -153,6 +167,9 @@ u16 sub_80C3580(void);
#include "data/text/map_section_names.h"
extern const u16 gUnknown_83EF23C[];
extern const u16 gUnknown_83EF2DC[];
+extern const u16 gUnknown_83EF384[];
+extern const u32 gUnknown_83EF3C4[];
+extern const u32 gUnknown_83EF450[];
extern const u32 gUnknown_83EF61C[];
extern const u32 gUnknown_83F0580[];
extern const u32 gUnknown_83F089C[];
@@ -167,10 +184,13 @@ extern const u32 gUnknown_83F19A0[];
extern const struct BgTemplate gUnknown_83F1A50[4];
extern const struct WindowTemplate gUnknown_83F1A60[];
extern const u8 gUnknown_83F1A90[];
+extern const u8 *const gUnknown_83F1A9C[];
extern const u8 sSeviiMapsecs[3][30];
extern const u8 gUnknown_83F1B00[3][4];
extern const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3];
-extern const u8 *const gUnknown_83F1A9C[];
+extern const struct OamData gUnknown_83F1B24;
+extern const union AnimCmd *const gUnknown_83F1B38[];
+extern const struct UnkStruct_83F1B3C gUnknown_83F1B3C[];
extern const u8 *const gUnknown_83F1CAC[];
static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
@@ -798,8 +818,8 @@ void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc)
gUnknown_20399D8->field_1CCC = 1;
else
gUnknown_20399D8->field_1CCC = 0;
- gUnknown_20399D8->field_18B8 = 0x58;
- gUnknown_20399D8->field_1CC4 = 0x98;
+ gUnknown_20399D8->field_14B0[0].field_408 = 0x58;
+ gUnknown_20399D8->field_14B0[1].field_408 = 0x98;
switch (gUnknown_20399D8->field_1CCC)
{
case 1:
@@ -1023,3 +1043,158 @@ bool8 sub_80C144C(void)
return TRUE;
}
}
+
+bool8 sub_80C1478(void)
+{
+ bool8 r6 = FALSE;
+ struct UnkStruct_80C4CF0 data;
+ data.v0 = gUnknown_20399D8->field_1CD4[0] = 0x48;
+ data.v2 = gUnknown_20399D8->field_1CD4[1] = 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA);
+ data.v4 = gUnknown_20399D8->field_1CD4[2] = 0xA8;
+ data.v6 = gUnknown_20399D8->field_1CD4[3] = gUnknown_20399D8->field_1CD4[1] + 32;
+ if (JOY_NEW(DPAD_UP) && gUnknown_20399D8->field_1CCA != 0)
+ {
+ PlaySE(SE_BAG1);
+ gUnknown_20399D8->field_1CCA--;
+ r6 = TRUE;
+ }
+ if (JOY_NEW(DPAD_DOWN) && gUnknown_20399D8->field_1CCA < gUnknown_20399D8->field_1CCC)
+ {
+ PlaySE(SE_BAG1);
+ gUnknown_20399D8->field_1CCA++;
+ r6 = TRUE;
+ }
+ if (JOY_NEW(A_BUTTON) && gUnknown_20399D8->field_1CDC == 6)
+ {
+ PlaySE(SE_W129);
+ gUnknown_20399D8->field_1CCB = gUnknown_20399D8->field_1CCA;
+ return TRUE;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ gUnknown_20399D8->field_1CCA = gUnknown_20399D8->field_1CCB;
+ sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D8->field_1CCA]);
+ CopyBgTilemapBufferToVram(0);
+ sub_80C48BC(255, 25, 1);
+ sub_80C4960(255, 25, 1);
+ return TRUE;
+ }
+ if (r6)
+ {
+ sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D8->field_1CCA]);
+ sub_80C4E74(gUnknown_8418EB0);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ sub_80C48BC(255, 25, 1);
+ sub_80C4960(255, 25, 1);
+ sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0);
+ sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0);
+ }
+ if (gUnknown_20399D8->field_1CCA != sub_80C0E34())
+ sub_80C4324(1);
+ else
+ sub_80C4324(0);
+ sub_80C4CF0(1, &data);
+ return FALSE;
+}
+
+void sub_80C16B8(struct Sprite * sprite)
+{
+ sprite->pos1.y = gUnknown_20399D8->field_1CD4[1] + 16;
+}
+
+bool8 sub_80C16D0(void)
+{
+ switch (gUnknown_20399D8->field_1CC9)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_83EF3C4, gUnknown_20399D8->field_14B0[0].field_000);
+ break;
+ case 1:
+ LZ77UnCompWram(gUnknown_83EF450, gUnknown_20399D8->field_14B0[1].field_000);
+ break;
+ case 2:
+ sub_80C1754(0, 2, 2);
+ sub_80C1754(1, 3, 3);
+ break;
+ default:
+ return TRUE;
+ }
+ gUnknown_20399D8->field_1CC9++;
+ return FALSE;
+}
+
+void sub_80C1754(u8 a0, u16 a1, u16 a2)
+{
+ sub_80C176C(a0, a1, a2);
+}
+
+void sub_80C176C(u8 a0, u16 a1, u16 a2)
+{
+ u8 spriteId;
+
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399D8->field_14B0[a0].field_000,
+ .size = 0x400,
+ .tag = a1
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF384,
+ .tag = a2
+ };
+ struct SpriteTemplate template = {
+ .tileTag = a1,
+ .paletteTag = a2,
+ .oam = &gUnknown_83F1B24,
+ .anims = gUnknown_83F1B38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80C16B8
+ };
+
+ gUnknown_20399D8->field_14B0[a0].field_404 = a1;
+ gUnknown_20399D8->field_14B0[a0].field_406 = a2;
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+
+ spriteId = CreateSprite(&template, gUnknown_20399D8->field_14B0[a0].field_408, 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA), 0);
+ gUnknown_20399D8->field_14B0[a0].field_400 = &gSprites[spriteId];
+ gSprites[spriteId].invisible = FALSE;
+}
+
+void sub_80C1880(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_20399D8->field_14B0[i].field_400 != NULL)
+ {
+ DestroySprite(gUnknown_20399D8->field_14B0[i].field_400);
+ FreeSpriteTilesByTag(gUnknown_20399D8->field_14B0[i].field_404);
+ FreeSpritePaletteByTag(gUnknown_20399D8->field_14B0[i].field_406);
+ }
+ }
+}
+
+const u8 *sub_80C18E0(u16 a0)
+{
+ u8 i;
+ for (i = 0; i < 19; i++)
+ {
+ if (gUnknown_83F1B3C[i].field_0 == a0)
+ return gUnknown_83F1B3C[i].field_8;
+ }
+ return gUnknown_8418EC3;
+}
+
+const u8 *sub_80C1920(u16 a0)
+{
+ u8 i;
+ for (i = 0; i < 19; i++)
+ {
+ if (gUnknown_83F1B3C[i].field_0 == a0)
+ return gUnknown_83F1B3C[i].field_4;
+ }
+ return gUnknown_8418EC3;
+}