From 59581b3c574453ee38e86020adb5745d21471ef4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Dec 2019 13:33:06 -0500 Subject: region_map through sub_80BFFD0 --- asm/region_map.s | 365 -------------------------------------- data/region_map.s | 70 +++++++- data/text/map_section_names.inc | 327 ---------------------------------- include/constants/region_map.h | 5 + ld_script.txt | 2 + src/data/text/map_section_names.h | 109 ++++++++++++ src/region_map.c | 160 +++++++++++++++++ sym_ewram.txt | 29 +-- 8 files changed, 341 insertions(+), 726 deletions(-) delete mode 100644 data/text/map_section_names.inc create mode 100644 src/data/text/map_section_names.h create mode 100644 src/region_map.c diff --git a/asm/region_map.s b/asm/region_map.s index 662c65fa7..5c01074a9 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,371 +5,6 @@ .text - thumb_func_start sub_80BFE18 -sub_80BFE18: @ 80BFE18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - cmp r1, 0 - beq _080BFE92 - movs r0, 0x1F - mov r10, r0 - mov r8, r1 -_080BFE38: - ldrh r1, [r6] - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r5, r1, 21 - mov r2, r10 - ands r5, r2 - lsrs r4, r1, 26 - ands r4, r2 - lsls r0, 8 - movs r1, 0x64 - bl __divsi3 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - asrs r7, r0, 8 - lsls r0, r5, 8 - movs r1, 0x64 - bl __divsi3 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - asrs r5, r0, 8 - lsls r0, r4, 8 - movs r1, 0x64 - bl __divsi3 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - asrs r4, r0, 8 - lsls r0, r4, 10 - lsls r1, r5, 5 - orrs r0, r1 - orrs r0, r7 - strh r0, [r6] - adds r6, 0x2 - movs r2, 0x1 - negs r2, r2 - add r8, r2 - mov r0, r8 - cmp r0, 0 - bne _080BFE38 -_080BFE92: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BFE18 - - thumb_func_start sub_80BFEA0 -sub_80BFEA0: @ 80BFEA0 - push {r4,lr} - sub sp, 0x20 - ldr r4, _080BFED8 @ =gUnknown_83EF2DC + 0x40 - adds r0, r4, 0 - mov r1, sp - movs r2, 0x10 - bl CpuSet - mov r0, sp - movs r1, 0x10 - movs r2, 0x5F - bl sub_80BFE18 - mov r0, sp - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1E - adds r0, r4, 0 - movs r1, 0x2F - movs r2, 0x2 - bl LoadPalette - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFED8: .4byte gUnknown_83EF2DC + 0x40 - thumb_func_end sub_80BFEA0 - - thumb_func_start sub_80BFEDC -sub_80BFEDC: @ 80BFEDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080BFEFC @ =gUnknown_20399D4 - ldr r0, _080BFF00 @ =0x000047c0 - bl AllocZeroed - adds r2, r0, 0 - str r2, [r4] - cmp r2, 0 - bne _080BFF08 - ldr r0, _080BFF04 @ =CB2_ReturnToField - bl SetMainCallback2 - b _080BFF38 - .align 2, 0 -_080BFEFC: .4byte gUnknown_20399D4 -_080BFF00: .4byte 0x000047c0 -_080BFF04: .4byte CB2_ReturnToField -_080BFF08: - ldr r1, _080BFF40 @ =gUnknown_2031DE0 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080BFF44 @ =0x00004796 - adds r0, r2, r1 - movs r1, 0 - strb r5, [r0] - ldr r0, [r4] - ldr r2, _080BFF48 @ =0x000047a0 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - adds r2, 0x4 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - adds r2, 0x4 - adds r0, r2 - strb r1, [r0] - bl sub_80BFFD0 - ldr r0, _080BFF4C @ =sub_80C0100 - bl SetMainCallback2 -_080BFF38: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BFF40: .4byte gUnknown_2031DE0 -_080BFF44: .4byte 0x00004796 -_080BFF48: .4byte 0x000047a0 -_080BFF4C: .4byte sub_80C0100 - thumb_func_end sub_80BFEDC - - thumb_func_start sub_80BFF50 -sub_80BFF50: @ 80BFF50 - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080BFF70 @ =gUnknown_20399D4 - ldr r0, _080BFF74 @ =0x000047c0 - bl AllocZeroed - adds r2, r0, 0 - str r2, [r4] - cmp r2, 0 - bne _080BFF7C - ldr r0, _080BFF78 @ =CB2_ReturnToField - bl SetMainCallback2 - b _080BFFB4 - .align 2, 0 -_080BFF70: .4byte gUnknown_20399D4 -_080BFF74: .4byte 0x000047c0 -_080BFF78: .4byte CB2_ReturnToField -_080BFF7C: - ldr r1, _080BFFBC @ =gUnknown_2031DE0 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080BFFC0 @ =0x00004796 - adds r0, r2, r1 - movs r1, 0 - strb r5, [r0] - ldr r0, [r4] - ldr r2, _080BFFC4 @ =0x000047a0 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - adds r2, 0x4 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - adds r2, 0x4 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _080BFFC8 @ =0x000047bc - adds r0, r1 - str r6, [r0] - bl sub_80BFFD0 - ldr r0, _080BFFCC @ =sub_80C0100 - bl SetMainCallback2 -_080BFFB4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BFFBC: .4byte gUnknown_2031DE0 -_080BFFC0: .4byte 0x00004796 -_080BFFC4: .4byte 0x000047a0 -_080BFFC8: .4byte 0x000047bc -_080BFFCC: .4byte sub_80C0100 - thumb_func_end sub_80BFF50 - - thumb_func_start sub_80BFFD0 -sub_80BFFD0: @ 80BFFD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _080C0000 @ =gUnknown_20399D4 - ldr r2, [r1] - ldr r3, _080C0004 @ =0x00004796 - adds r0, r2, r3 - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0 - blt _080BFFF2 - cmp r0, 0x1 - ble _080BFFF2 - cmp r0, 0x2 - beq _080C0010 -_080BFFF2: - mov r4, r8 - ldr r0, [r4] - ldr r1, _080C0008 @ =0x000047b8 - adds r0, r1 - ldr r1, _080C000C @ =sub_80C04E4 - str r1, [r0] - b _080C0018 - .align 2, 0 -_080C0000: .4byte gUnknown_20399D4 -_080C0004: .4byte 0x00004796 -_080C0008: .4byte 0x000047b8 -_080C000C: .4byte sub_80C04E4 -_080C0010: - ldr r3, _080C009C @ =0x000047b8 - adds r1, r2, r3 - ldr r0, _080C00A0 @ =sub_80C4F08 - str r0, [r1] -_080C0018: - movs r3, 0 - ldr r6, _080C00A4 @ =gUnknown_20399D4 - ldr r5, _080C00A8 @ =0x00004797 - ldr r4, _080C00AC @ =gUnknown_83F1B00 - ldr r2, _080C00B0 @ =0x00004796 -_080C0022: - ldr r0, [r6] - adds r1, r0, r5 - adds r1, r3 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3, r0 - adds r0, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080C0022 - ldr r0, _080C00B4 @ =0x00000845 - bl FlagGet - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080C0058 - ldr r0, _080C00A4 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r4, _080C00A8 @ =0x00004797 - adds r0, r4 - strb r1, [r0] -_080C0058: - movs r7, 0 - movs r1, 0 - ldr r2, _080C00B8 @ =gMapHeader - ldrb r0, [r2, 0x14] - ldr r3, _080C00A4 @ =gUnknown_20399D4 - mov r8, r3 - cmp r0, 0x8E - bls _080C00D8 - ldr r4, _080C00BC @ =gUnknown_83F1AA4 - mov r12, r4 - mov r10, r12 - mov r9, r2 -_080C0070: - movs r3, 0 - lsls r0, r1, 4 - subs r0, r1 - lsls r2, r0, 1 - mov r4, r10 - adds r0, r2, r4 - ldrb r0, [r0] - adds r5, r1, 0x1 - cmp r0, 0xC5 - beq _080C00D0 - ldr r6, _080C00BC @ =gUnknown_83F1AA4 - mov r0, r9 - ldrb r1, [r0, 0x14] - lsls r4, r5, 24 -_080C008C: - adds r0, r3, r2 - adds r0, r6 - ldrb r0, [r0] - cmp r1, r0 - bne _080C00C0 - lsrs r7, r4, 24 - b _080C00D0 - .align 2, 0 -_080C009C: .4byte 0x000047b8 -_080C00A0: .4byte sub_80C4F08 -_080C00A4: .4byte gUnknown_20399D4 -_080C00A8: .4byte 0x00004797 -_080C00AC: .4byte gUnknown_83F1B00 -_080C00B0: .4byte 0x00004796 -_080C00B4: .4byte 0x00000845 -_080C00B8: .4byte gMapHeader -_080C00BC: .4byte gUnknown_83F1AA4 -_080C00C0: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r3, r2 - add r0, r12 - ldrb r0, [r0] - cmp r0, 0xC5 - bne _080C008C -_080C00D0: - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r7, 0 - beq _080C0070 -_080C00D8: - mov r1, r8 - ldr r0, [r1] - ldr r2, _080C00F8 @ =0x0000479b - adds r0, r2 - strb r7, [r0] - ldr r0, [r1] - ldr r3, _080C00FC @ =0x0000479c - adds r0, r3 - strb r7, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C00F8: .4byte 0x0000479b -_080C00FC: .4byte 0x0000479c - thumb_func_end sub_80BFFD0 - thumb_func_start sub_80C0100 sub_80C0100: @ 80C0100 push {r4,lr} diff --git a/data/region_map.s b/data/region_map.s index 5d28f9503..e2ba5e5ac 100644 --- a/data/region_map.s +++ b/data/region_map.s @@ -7,8 +7,6 @@ .section .rodata .align 2 - .include "data/text/map_section_names.inc" - gUnknown_83EF23C:: @ 83EF23C gbapal .incbin "graphics/region_map/unk_83EF23C.gbapal" @@ -239,16 +237,74 @@ gUnknown_83F1A9C:: @ 83F1A9C .4byte gUnknown_83F1A94 .4byte gUnknown_83F1A98 -gUnknown_83F1AA4:: @ 83F1AA4 - .byte 0x8f, 0x90, 0x91, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xaf, 0xb0, 0xb9, 0xc3, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +sSeviiMapsecs:: @ 83F1AA4 + .byte MAPSEC_ONE_ISLAND + .byte MAPSEC_TWO_ISLAND + .byte MAPSEC_THREE_ISLAND + .byte MAPSEC_KINDLE_ROAD + .byte MAPSEC_TREASURE_BEACH + .byte MAPSEC_CAPE_BRINK + .byte MAPSEC_BOND_BRIDGE + .byte MAPSEC_THREE_ISLE_PORT + .byte MAPSEC_MT_EMBER + .byte MAPSEC_BERRY_FOREST + .byte MAPSEC_THREE_ISLE_PATH + .byte MAPSEC_EMBER_SPA + .byte MAPSEC_NONE + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x92, 0x93, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xae, 0xb1, 0xb2, 0xb5, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte MAPSEC_FOUR_ISLAND + .byte MAPSEC_FIVE_ISLAND + .byte MAPSEC_SEVII_ISLE_6 + .byte MAPSEC_SEVII_ISLE_7 + .byte MAPSEC_SEVII_ISLE_8 + .byte MAPSEC_SEVII_ISLE_9 + .byte MAPSEC_RESORT_GORGEOUS + .byte MAPSEC_WATER_LABYRINTH + .byte MAPSEC_FIVE_ISLE_MEADOW + .byte MAPSEC_MEMORIAL_PILLAR + .byte MAPSEC_NAVEL_ROCK + .byte MAPSEC_ICEFALL_CAVE + .byte MAPSEC_ROCKET_WAREHOUSE + .byte MAPSEC_LOST_CAVE + .byte MAPSEC_NONE + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x94, 0x95, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb3, 0xb4, 0xb6, 0xb7, 0xb8, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc5, 0x00, 0x00 + .byte MAPSEC_SEVEN_ISLAND + .byte MAPSEC_SIX_ISLAND + .byte MAPSEC_OUTCAST_ISLAND + .byte MAPSEC_GREEN_PATH + .byte MAPSEC_WATER_PATH + .byte MAPSEC_RUIN_VALLEY + .byte MAPSEC_TRAINER_TOWER + .byte MAPSEC_CANYON_ENTRANCE + .byte MAPSEC_SEVAULT_CANYON + .byte MAPSEC_TANOBY_RUINS + .byte MAPSEC_SEVII_ISLE_22 + .byte MAPSEC_SEVII_ISLE_23 + .byte MAPSEC_SEVII_ISLE_24 + .byte MAPSEC_TRAINER_TOWER_2 + .byte MAPSEC_DOTTED_HOLE + .byte MAPSEC_PATTERN_BUSH + .byte MAPSEC_ALTERING_CAVE + .byte MAPSEC_TANOBY_CHAMBERS + .byte MAPSEC_TANOBY_KEY + .byte MAPSEC_BIRTH_ISLAND + .byte MAPSEC_MONEAN_CHAMBER + .byte MAPSEC_LIPTOO_CHAMBER + .byte MAPSEC_WEEPTH_CHAMBER + .byte MAPSEC_DILFORD_CHAMBER + .byte MAPSEC_SCUFIB_CHAMBER + .byte MAPSEC_RIXY_CHAMBER + .byte MAPSEC_VIAPOIS_CHAMBER + .byte MAPSEC_NONE + .byte 0x00, 0x00 .align 2 gUnknown_83F1B00:: @ 83F1B00 - .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 + .byte 1, 1, 1, 0 + .byte 0, 0, 0, 0 + .byte 0, 0, 0, 1 gUnknown_83F1B0C:: @ 83F1B0C .2byte 0x0018, 0x0010, 0x0090, 0x0020 diff --git a/data/text/map_section_names.inc b/data/text/map_section_names.inc deleted file mode 100644 index 070375510..000000000 --- a/data/text/map_section_names.inc +++ /dev/null @@ -1,327 +0,0 @@ -gMapSecName_PalletTown:: - .string "PALLET TOWN$" - -gMapSecName_ViridianCity:: - .string "VIRIDIAN CITY$" - -gMapSecName_PewterCity:: - .string "PEWTER CITY$" - -gMapSecName_CeruleanCity:: - .string "CERULEAN CITY$" - -gMapSecName_LavenderTown:: - .string "LAVENDER TOWN$" - -gMapSecName_VermilionCity:: - .string "VERMILION CITY$" - -gMapSecName_CeladonCity:: - .string "CELADON CITY$" - -gMapSecName_FuchsiaCity:: - .string "FUCHSIA CITY$" - -gMapSecName_CinnabarIsland:: - .string "CINNABAR ISLAND$" - -gMapSecName_IndigoPlateau:: - .string "INDIGO PLATEAU$" - -gMapSecName_SaffronCity:: - .string "SAFFRON CITY$" - -gMapSecName_Route4:: - .string "ROUTE 4$" - -gMapSecName_Route10:: - .string "ROUTE 10$" - -gMapSecName_Route1:: - .string "ROUTE 1$" - -gMapSecName_Route2:: - .string "ROUTE 2$" - -gMapSecName_Route3:: - .string "ROUTE 3$" - -gMapSecName_Route4_2:: - .string "ROUTE 4$" - -gMapSecName_Route5:: - .string "ROUTE 5$" - -gMapSecName_Route6:: - .string "ROUTE 6$" - -gMapSecName_Route7:: - .string "ROUTE 7$" - -gMapSecName_Route8:: - .string "ROUTE 8$" - -gMapSecName_Route9:: - .string "ROUTE 9$" - -gMapSecName_Route10_2:: - .string "ROUTE 10$" - -gMapSecName_Route11:: - .string "ROUTE 11$" - -gMapSecName_Route12:: - .string "ROUTE 12$" - -gMapSecName_Route13:: - .string "ROUTE 13$" - -gMapSecName_Route14:: - .string "ROUTE 14$" - -gMapSecName_Route15:: - .string "ROUTE 15$" - -gMapSecName_Route16:: - .string "ROUTE 16$" - -gMapSecName_Route17:: - .string "ROUTE 17$" - -gMapSecName_Route18:: - .string "ROUTE 18$" - -gMapSecName_Route19:: - .string "ROUTE 19$" - -gMapSecName_Route20:: - .string "ROUTE 20$" - -gMapSecName_Route21:: - .string "ROUTE 21$" - -gMapSecName_Route22:: - .string "ROUTE 22$" - -gMapSecName_Route23:: - .string "ROUTE 23$" - -gMapSecName_Route24:: - .string "ROUTE 24$" - -gMapSecName_Route25:: - .string "ROUTE 25$" - -gMapSecName_ViridianForest:: - .string "VIRIDIAN FOREST$" - -gMapSecName_MtMoon:: - .string "MT. MOON$" - -gMapSecName_SSAnne:: - .string "S.S. ANNE$" - -gMapSecName_UndergroundPath:: - .string "UNDERGROUND PATH$" - -gMapSecName_UndergroundPath_2:: - .string "UNDERGROUND PATH$" - -gMapSecName_DiglettsCave:: - .string "DIGLETT'S CAVE$" - -gMapSecName_VictoryRoad:: - .string "VICTORY ROAD$" - -gMapSecName_RocketHideout:: - .string "ROCKET HIDEOUT$" - -gMapSecName_SilphCo:: - .string "SILPH CO.$" - -gMapSecName_PokemonMansion:: - .string "POKéMON MANSION$" - -gMapSecName_SafariZone:: - .string "SAFARI ZONE$" - -gMapSecName_PokemonLeague:: - .string "POKéMON LEAGUE$" - -gMapSecName_RockTunnel:: - .string "ROCK TUNNEL$" - -gMapSecName_SeafoamIslands:: - .string "SEAFOAM ISLANDS$" - -gMapSecName_PokemonTower:: - .string "POKéMON TOWER$" - -gMapSecName_CeruleanCave:: - .string "CERULEAN CAVE$" - -gMapSecName_PowerPlant:: - .string "POWER PLANT$" - -gMapSecName_OneIsland:: - .string "ONE ISLAND$" - -gMapSecName_TwoIsland:: - .string "TWO ISLAND$" - -gMapSecName_ThreeIsland:: - .string "THREE ISLAND$" - -gMapSecName_FourIsland:: - .string "FOUR ISLAND$" - -gMapSecName_FiveIsland:: - .string "FIVE ISLAND$" - -gMapSecName_SevenIsland:: - .string "SEVEN ISLAND$" - -gMapSecName_SixIsland:: - .string "SIX ISLAND$" - -gMapSecName_KindleRoad:: - .string "KINDLE ROAD$" - -gMapSecName_TreasureBeach:: - .string "TREASURE BEACH$" - -gMapSecName_CapeBrink:: - .string "CAPE BRINK$" - -gMapSecName_BondBridge:: - .string "BOND BRIDGE$" - -gMapSecName_ThreeIslePort:: - .string "THREE ISLE PORT$" - -gMapSecName_SeviiIsle6:: - .string "SEVII ISLE 6$" - -gMapSecName_SeviiIsle7:: - .string "SEVII ISLE 7$" - -gMapSecName_SeviiIsle8:: - .string "SEVII ISLE 8$" - -gMapSecName_SeviiIsle9:: - .string "SEVII ISLE 9$" - -gMapSecName_ResortGorgeous:: - .string "RESORT GORGEOUS$" - -gMapSecName_WaterLabyrinth:: - .string "WATER LABYRINTH$" - -gMapSecName_FiveIsleMeadow:: - .string "FIVE ISLE MEADOW$" - -gMapSecName_MemorialPillar:: - .string "MEMORIAL PILLAR$" - -gMapSecName_OutcastIsland:: - .string "OUTCAST ISLAND$" - -gMapSecName_GreenPath:: - .string "GREEN PATH$" - -gMapSecName_WaterPath:: - .string "WATER PATH$" - -gMapSecName_RuinValley:: - .string "RUIN VALLEY$" - -gMapSecName_TrainerTower:: - .string "TRAINER TOWER$" - -gMapSecName_CanyonEntrance:: - .string "CANYON ENTRANCE$" - -gMapSecName_SevaultCanyon:: - .string "SEVAULT CANYON$" - -gMapSecName_TanobyRuins:: - .string "TANOBY RUINS$" - -gMapSecName_SeviiIsle22:: - .string "SEVII ISLE 22$" - -gMapSecName_SeviiIsle23:: - .string "SEVII ISLE 23$" - -gMapSecName_SeviiIsle24:: - .string "SEVII ISLE 24$" - -gMapSecName_NavelRock:: - .string "NAVEL ROCK$" - -gMapSecName_MtEmber:: - .string "MT. EMBER$" - -gMapSecName_BerryForest:: - .string "BERRY FOREST$" - -gMapSecName_IcefallCave:: - .string "ICEFALL CAVE$" - -gMapSecName_RocketWarehouse:: - .string "ROCKET WAREHOUSE$" - -gMapSecName_TrainerTower_2:: - .string "TRAINER TOWER$" - -gMapSecName_DottedHole:: - .string "DOTTED HOLE$" - -gMapSecName_LostCave:: - .string "LOST CAVE$" - -gMapSecName_PatternBush:: - .string "PATTERN BUSH$" - -gMapSecName_AlteringCave:: - .string "ALTERING CAVE$" - -gMapSecName_TanobyChambers:: - .string "TANOBY CHAMBERS$" - -gMapSecName_ThreeIslePath:: - .string "THREE ISLE PATH$" - -gMapSecName_TanobyKey:: - .string "TANOBY KEY$" - -gMapSecName_BirthIsland:: - .string "BIRTH ISLAND$" - -gMapSecName_MoneanChamber:: - .string "MONEAN CHAMBER$" - -gMapSecName_LiptooChamber:: - .string "LIPTOO CHAMBER$" - -gMapSecName_WeepthChamber:: - .string "WEEPTH CHAMBER$" - -gMapSecName_DilfordChamber:: - .string "DILFORD CHAMBER$" - -gMapSecName_ScufibChamber:: - .string "SCUFIB CHAMBER$" - -gMapSecName_RixyChamber:: - .string "RIXY CHAMBER$" - -gMapSecName_ViapoisChamber:: - .string "VIAPOIS CHAMBER$" - -gMapSecName_EmberSpa:: - .string "EMBER SPA$" - -gMapSecName_CeladonDept:: - .string "CELADON DEPT.$" - diff --git a/include/constants/region_map.h b/include/constants/region_map.h index 0957a72ee..e096f08a2 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -89,6 +89,8 @@ #define MAPSEC_SKY_PILLAR 0x55 #define MAPSEC_SECRET_BASE 0x56 #define MAPSEC_DYNAMIC 0x57 + +// Kanto landmarks #define MAPSEC_PALLET_TOWN 0x58 #define MAPSEC_VIRIDIAN_CITY 0x59 #define MAPSEC_PEWTER_CITY 0x5A @@ -144,6 +146,9 @@ #define MAPSEC_POKEMON_TOWER 0x8C #define MAPSEC_CERULEAN_CAVE 0x8D #define MAPSEC_POWER_PLANT 0x8E + +#define MAPSECS_SEVII_123 0x8F + #define MAPSEC_ONE_ISLAND 0x8F #define MAPSEC_TWO_ISLAND 0x90 #define MAPSEC_THREE_ISLAND 0x91 diff --git a/ld_script.txt b/ld_script.txt index 9b80af47a..bc926bf3c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,6 +181,7 @@ SECTIONS { src/menu_helpers.o(.text); asm/script_pokemon_util_80BF8FC.o(.text); src/heal_location.o(.text); + src/region_map.o(.text); asm/region_map.o(.text); src/battle_ai_script_commands.o(.text); src/fldeff_rocksmash.o(.text); @@ -477,6 +478,7 @@ SECTIONS { src/mon_markings.o(.rodata); src/mail.o(.rodata); src/heal_location.o(.rodata); + src/region_map.o(.rodata); data/region_map.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/fldeff_flash.o(.rodata); diff --git a/src/data/text/map_section_names.h b/src/data/text/map_section_names.h new file mode 100644 index 000000000..5a18fa7c9 --- /dev/null +++ b/src/data/text/map_section_names.h @@ -0,0 +1,109 @@ +const u8 gMapSecName_PalletTown[] = _("PALLET TOWN"); +const u8 gMapSecName_ViridianCity[] = _("VIRIDIAN CITY"); +const u8 gMapSecName_PewterCity[] = _("PEWTER CITY"); +const u8 gMapSecName_CeruleanCity[] = _("CERULEAN CITY"); +const u8 gMapSecName_LavenderTown[] = _("LAVENDER TOWN"); +const u8 gMapSecName_VermilionCity[] = _("VERMILION CITY"); +const u8 gMapSecName_CeladonCity[] = _("CELADON CITY"); +const u8 gMapSecName_FuchsiaCity[] = _("FUCHSIA CITY"); +const u8 gMapSecName_CinnabarIsland[] = _("CINNABAR ISLAND"); +const u8 gMapSecName_IndigoPlateau[] = _("INDIGO PLATEAU"); +const u8 gMapSecName_SaffronCity[] = _("SAFFRON CITY"); +const u8 gMapSecName_Route4[] = _("ROUTE 4"); +const u8 gMapSecName_Route10[] = _("ROUTE 10"); +const u8 gMapSecName_Route1[] = _("ROUTE 1"); +const u8 gMapSecName_Route2[] = _("ROUTE 2"); +const u8 gMapSecName_Route3[] = _("ROUTE 3"); +const u8 gMapSecName_Route4_2[] = _("ROUTE 4"); +const u8 gMapSecName_Route5[] = _("ROUTE 5"); +const u8 gMapSecName_Route6[] = _("ROUTE 6"); +const u8 gMapSecName_Route7[] = _("ROUTE 7"); +const u8 gMapSecName_Route8[] = _("ROUTE 8"); +const u8 gMapSecName_Route9[] = _("ROUTE 9"); +const u8 gMapSecName_Route10_2[] = _("ROUTE 10"); +const u8 gMapSecName_Route11[] = _("ROUTE 11"); +const u8 gMapSecName_Route12[] = _("ROUTE 12"); +const u8 gMapSecName_Route13[] = _("ROUTE 13"); +const u8 gMapSecName_Route14[] = _("ROUTE 14"); +const u8 gMapSecName_Route15[] = _("ROUTE 15"); +const u8 gMapSecName_Route16[] = _("ROUTE 16"); +const u8 gMapSecName_Route17[] = _("ROUTE 17"); +const u8 gMapSecName_Route18[] = _("ROUTE 18"); +const u8 gMapSecName_Route19[] = _("ROUTE 19"); +const u8 gMapSecName_Route20[] = _("ROUTE 20"); +const u8 gMapSecName_Route21[] = _("ROUTE 21"); +const u8 gMapSecName_Route22[] = _("ROUTE 22"); +const u8 gMapSecName_Route23[] = _("ROUTE 23"); +const u8 gMapSecName_Route24[] = _("ROUTE 24"); +const u8 gMapSecName_Route25[] = _("ROUTE 25"); +const u8 gMapSecName_ViridianForest[] = _("VIRIDIAN FOREST"); +const u8 gMapSecName_MtMoon[] = _("MT. MOON"); +const u8 gMapSecName_SSAnne[] = _("S.S. ANNE"); +const u8 gMapSecName_UndergroundPath[] = _("UNDERGROUND PATH"); +const u8 gMapSecName_UndergroundPath_2[] = _("UNDERGROUND PATH"); +const u8 gMapSecName_DiglettsCave[] = _("DIGLETT'S CAVE"); +const u8 gMapSecName_VictoryRoad[] = _("VICTORY ROAD"); +const u8 gMapSecName_RocketHideout[] = _("ROCKET HIDEOUT"); +const u8 gMapSecName_SilphCo[] = _("SILPH CO."); +const u8 gMapSecName_PokemonMansion[] = _("POKéMON MANSION"); +const u8 gMapSecName_SafariZone[] = _("SAFARI ZONE"); +const u8 gMapSecName_PokemonLeague[] = _("POKéMON LEAGUE"); +const u8 gMapSecName_RockTunnel[] = _("ROCK TUNNEL"); +const u8 gMapSecName_SeafoamIslands[] = _("SEAFOAM ISLANDS"); +const u8 gMapSecName_PokemonTower[] = _("POKéMON TOWER"); +const u8 gMapSecName_CeruleanCave[] = _("CERULEAN CAVE"); +const u8 gMapSecName_PowerPlant[] = _("POWER PLANT"); +const u8 gMapSecName_OneIsland[] = _("ONE ISLAND"); +const u8 gMapSecName_TwoIsland[] = _("TWO ISLAND"); +const u8 gMapSecName_ThreeIsland[] = _("THREE ISLAND"); +const u8 gMapSecName_FourIsland[] = _("FOUR ISLAND"); +const u8 gMapSecName_FiveIsland[] = _("FIVE ISLAND"); +const u8 gMapSecName_SevenIsland[] = _("SEVEN ISLAND"); +const u8 gMapSecName_SixIsland[] = _("SIX ISLAND"); +const u8 gMapSecName_KindleRoad[] = _("KINDLE ROAD"); +const u8 gMapSecName_TreasureBeach[] = _("TREASURE BEACH"); +const u8 gMapSecName_CapeBrink[] = _("CAPE BRINK"); +const u8 gMapSecName_BondBridge[] = _("BOND BRIDGE"); +const u8 gMapSecName_ThreeIslePort[] = _("THREE ISLE PORT"); +const u8 gMapSecName_SeviiIsle6[] = _("SEVII ISLE 6"); +const u8 gMapSecName_SeviiIsle7[] = _("SEVII ISLE 7"); +const u8 gMapSecName_SeviiIsle8[] = _("SEVII ISLE 8"); +const u8 gMapSecName_SeviiIsle9[] = _("SEVII ISLE 9"); +const u8 gMapSecName_ResortGorgeous[] = _("RESORT GORGEOUS"); +const u8 gMapSecName_WaterLabyrinth[] = _("WATER LABYRINTH"); +const u8 gMapSecName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW"); +const u8 gMapSecName_MemorialPillar[] = _("MEMORIAL PILLAR"); +const u8 gMapSecName_OutcastIsland[] = _("OUTCAST ISLAND"); +const u8 gMapSecName_GreenPath[] = _("GREEN PATH"); +const u8 gMapSecName_WaterPath[] = _("WATER PATH"); +const u8 gMapSecName_RuinValley[] = _("RUIN VALLEY"); +const u8 gMapSecName_TrainerTower[] = _("TRAINER TOWER"); +const u8 gMapSecName_CanyonEntrance[] = _("CANYON ENTRANCE"); +const u8 gMapSecName_SevaultCanyon[] = _("SEVAULT CANYON"); +const u8 gMapSecName_TanobyRuins[] = _("TANOBY RUINS"); +const u8 gMapSecName_SeviiIsle22[] = _("SEVII ISLE 22"); +const u8 gMapSecName_SeviiIsle23[] = _("SEVII ISLE 23"); +const u8 gMapSecName_SeviiIsle24[] = _("SEVII ISLE 24"); +const u8 gMapSecName_NavelRock[] = _("NAVEL ROCK"); +const u8 gMapSecName_MtEmber[] = _("MT. EMBER"); +const u8 gMapSecName_BerryForest[] = _("BERRY FOREST"); +const u8 gMapSecName_IcefallCave[] = _("ICEFALL CAVE"); +const u8 gMapSecName_RocketWarehouse[] = _("ROCKET WAREHOUSE"); +const u8 gMapSecName_TrainerTower_2[] = _("TRAINER TOWER"); +const u8 gMapSecName_DottedHole[] = _("DOTTED HOLE"); +const u8 gMapSecName_LostCave[] = _("LOST CAVE"); +const u8 gMapSecName_PatternBush[] = _("PATTERN BUSH"); +const u8 gMapSecName_AlteringCave[] = _("ALTERING CAVE"); +const u8 gMapSecName_TanobyChambers[] = _("TANOBY CHAMBERS"); +const u8 gMapSecName_ThreeIslePath[] = _("THREE ISLE PATH"); +const u8 gMapSecName_TanobyKey[] = _("TANOBY KEY"); +const u8 gMapSecName_BirthIsland[] = _("BIRTH ISLAND"); +const u8 gMapSecName_MoneanChamber[] = _("MONEAN CHAMBER"); +const u8 gMapSecName_LiptooChamber[] = _("LIPTOO CHAMBER"); +const u8 gMapSecName_WeepthChamber[] = _("WEEPTH CHAMBER"); +const u8 gMapSecName_DilfordChamber[] = _("DILFORD CHAMBER"); +const u8 gMapSecName_ScufibChamber[] = _("SCUFIB CHAMBER"); +const u8 gMapSecName_RixyChamber[] = _("RIXY CHAMBER"); +const u8 gMapSecName_ViapoisChamber[] = _("VIAPOIS CHAMBER"); +const u8 gMapSecName_EmberSpa[] = _("EMBER SPA"); +const u8 gMapSecName_CeladonDept[] = _("CELADON DEPT."); diff --git a/src/region_map.c b/src/region_map.c new file mode 100644 index 000000000..97bcd476b --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,160 @@ +#include "global.h" +#include "palette.h" +#include "task.h" +#include "malloc.h" +#include "overworld.h" +#include "event_data.h" +#include "region_map.h" +#include "constants/flags.h" +#include "constants/region_map.h" + +struct UnkStruct_20399D4 +{ + u8 filler_0000[0x4796]; + u8 field_4796; + u8 field_4797[4]; + u8 field_479B; + u8 field_479C; + u8 filler_479D[3]; + u8 field_47A0; + u8 filler_47A1[3]; + u8 field_47A4; + u8 filler_47A5[3]; + u8 field_47A8; + u8 filler_47A9[15]; + TaskFunc field_47B8; + MainCallback field_47BC; +}; + +EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; +EWRAM_DATA void * gUnknown_20399D8 = NULL; +EWRAM_DATA void * gUnknown_20399DC = NULL; +EWRAM_DATA void * gUnknown_20399E0 = NULL; +EWRAM_DATA void * gUnknown_20399E4 = NULL; +EWRAM_DATA void * gUnknown_20399E8 = NULL; +EWRAM_DATA void * gUnknown_20399EC = NULL; +EWRAM_DATA void * gUnknown_20399F0[3] = {}; +EWRAM_DATA void * gUnknown_20399FC = NULL; + +static void sub_80BFFD0(void); +void sub_80C0100(void); +void sub_80C04E4(u8 taskId); +void sub_80C4F08(u8 taskId); + +#include "data/text/map_section_names.h" + +extern const u16 gUnknown_83EF2DC[]; +extern const u8 sSeviiMapsecs[3][30]; +extern const u8 gUnknown_83F1B00[3][4]; + +static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) +{ + int i; + int r, g, b; + + for (i = 0; i < size; i++) + { + r = (*pal) & 0x1F; + g = ((*pal) >> 5) & 0x1F; + b = ((*pal) >> 10) & 0x1F; + + r = (((r << 8) / 100) * tint) >> 8; + g = (((g << 8) / 100) * tint) >> 8; + b = (((b << 8) / 100) * tint) >> 8; + + *pal = RGB2(r, g, b); + pal++; + } +} + +void sub_80BFEA0(void) +{ + u16 pal[16]; + CpuCopy16(&gUnknown_83EF2DC[0x20], pal, sizeof(pal)); + RegionMap_DarkenPalette(pal, NELEMS(pal), 95); + LoadPalette(pal, 0x20, 0x20); + LoadPalette(&gUnknown_83EF2DC[0x2F], 0x2F, sizeof(u16)); +} + +void sub_80BFEDC(u8 kind) +{ + gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4)); + if (gUnknown_20399D4 == NULL) + { + SetMainCallback2(CB2_ReturnToField); + } + else + { + gUnknown_2031DE0 = TRUE; + gUnknown_20399D4->field_4796 = kind; + gUnknown_20399D4->field_47A0 = 0; + gUnknown_20399D4->field_47A4 = 0; + gUnknown_20399D4->field_47A8 = 0; + sub_80BFFD0(); + SetMainCallback2(sub_80C0100); + } +} + +void sub_80BFF50(u8 kind, MainCallback cb) +{ + gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4)); + if (gUnknown_20399D4 == NULL) + { + SetMainCallback2(CB2_ReturnToField); + } + else + { + gUnknown_2031DE0 = TRUE; + gUnknown_20399D4->field_4796 = kind; + gUnknown_20399D4->field_47A0 = 0; + gUnknown_20399D4->field_47A4 = 0; + gUnknown_20399D4->field_47A8 = 0; + gUnknown_20399D4->field_47BC = cb; + sub_80BFFD0(); + SetMainCallback2(sub_80C0100); + } +} + +static void sub_80BFFD0(void) +{ + u8 i; + u8 j; + u8 r7; + + switch (gUnknown_20399D4->field_4796) + { + default: + case 0: + case 1: + gUnknown_20399D4->field_47B8 = sub_80C04E4; + break; + case 2: + gUnknown_20399D4->field_47B8 = sub_80C4F08; + break; + } + for (i = 0; i < 4; i++) + { + gUnknown_20399D4->field_4797[i] = gUnknown_83F1B00[gUnknown_20399D4->field_4796][i]; + } + if (!FlagGet(FLAG_SYS_SEVII_MAP_123)) + gUnknown_20399D4->field_4797[0] = FALSE; + r7 = 0; + j = 0; + if (gMapHeader.regionMapSectionId >= MAPSECS_SEVII_123) + { + while (r7 == 0) + { + for (i = 0; sSeviiMapsecs[j][i] != MAPSEC_NONE; i++) + { + if (gMapHeader.regionMapSectionId == sSeviiMapsecs[j][i]) + { + r7 = j + 1; + break; + } + } + j++; + } + } + gUnknown_20399D4->field_479B = r7; + gUnknown_20399D4->field_479C = r7; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 963159658..9e5e91782 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -267,35 +267,10 @@ gUnknown_203998C: @ 203998C .include "src/mail.o" .align 2 .include "src/menu_helpers.o" - .align 2 -gUnknown_20399D4: @ 20399D4 - .space 0x4 - -gUnknown_20399D8: @ 20399D8 - .space 0x4 - -gUnknown_20399DC: @ 20399DC - .space 0x4 - -gUnknown_20399E0: @ 20399E0 - .space 0x4 - -gUnknown_20399E4: @ 20399E4 - .space 0x4 - -gUnknown_20399E8: @ 20399E8 - .space 0x4 - -gUnknown_20399EC: @ 20399EC - .space 0x4 - -gUnknown_20399F0: @ 20399F0 - .space 0xC - -gUnknown_20399FC: @ 20399FC - .space 0x4 + .include "src/region_map.o" + .align 2 gAIScriptPtr: @ 2039A00 .space 0x4 -- cgit v1.2.3 From 10d550d5a234649b49800b6572abfa887c50d142 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Dec 2019 21:04:35 -0500 Subject: region_map through sub_80C0450 --- asm/region_map.s | 457 ------------------------------------------------------- src/region_map.c | 167 +++++++++++++++++++- 2 files changed, 166 insertions(+), 458 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 5c01074a9..e3317d3b1 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,463 +5,6 @@ .text - thumb_func_start sub_80C0100 -sub_80C0100: @ 80C0100 - push {r4,lr} - sub sp, 0x8 - ldr r0, _080C011C @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0120 @ =0x000047a4 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bhi _080C0202 - lsls r0, 2 - ldr r1, _080C0124 @ =_080C0128 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C011C: .4byte gUnknown_20399D4 -_080C0120: .4byte 0x000047a4 -_080C0124: .4byte _080C0128 - .align 2, 0 -_080C0128: - .4byte _080C014C - .4byte _080C0152 - .4byte _080C0158 - .4byte _080C015E - .4byte _080C016A - .4byte _080C0180 - .4byte _080C01D4 - .4byte _080C01E0 - .4byte _080C01EC -_080C014C: - bl sub_80C08E0 - b _080C021A -_080C0152: - bl sub_80C0904 - b _080C021A -_080C0158: - bl sub_80C0A6C - b _080C021A -_080C015E: - bl sub_80C0238 - lsls r0, 24 - cmp r0, 0 - beq _080C0228 - b _080C021A -_080C016A: - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - b _080C01BA -_080C0180: - ldr r4, _080C01C4 @ =gUnknown_20399D4 - ldr r1, [r4] - ldr r2, _080C01C8 @ =0x0000479b - adds r0, r1, r2 - ldrb r0, [r0] - lsls r2, r0, 2 - adds r2, r0 - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 4 - adds r0, 0x26 - adds r1, r0 - movs r0, 0 - bl sub_80C0CC8 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r4] - ldr r2, _080C01CC @ =0x00004796 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080C021A - ldr r0, _080C01D0 @ =0x000012e6 - adds r1, r0 - movs r0, 0x1 - bl sub_80C0CC8 -_080C01BA: - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _080C021A - .align 2, 0 -_080C01C4: .4byte gUnknown_20399D4 -_080C01C8: .4byte 0x0000479b -_080C01CC: .4byte 0x00004796 -_080C01D0: .4byte 0x000012e6 -_080C01D4: - bl sub_80C0B18 - movs r0, 0 - bl PutWindowTilemap - b _080C021A -_080C01E0: - bl sub_80C0BB0 - movs r0, 0x1 - bl PutWindowTilemap - b _080C021A -_080C01EC: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C021A - movs r0, 0x1 - bl sub_80C0A88 - b _080C021A -_080C0202: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_80C03E8 - bl sub_80C08F4 -_080C021A: - ldr r0, _080C0230 @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0234 @ =0x000047a4 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080C0228: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0230: .4byte gUnknown_20399D4 -_080C0234: .4byte 0x000047a4 - thumb_func_end sub_80C0100 - - thumb_func_start sub_80C0238 -sub_80C0238: @ 80C0238 - push {r4,lr} - sub sp, 0x4 - ldr r0, _080C0258 @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C025C @ =0x000047a8 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x8 - bls _080C024C - b _080C03B0 -_080C024C: - lsls r0, 2 - ldr r1, _080C0260 @ =_080C0264 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0258: .4byte gUnknown_20399D4 -_080C025C: .4byte 0x000047a8 -_080C0260: .4byte _080C0264 - .align 2, 0 -_080C0264: - .4byte _080C0288 - .4byte _080C0298 - .4byte _080C02FC - .4byte _080C0302 - .4byte _080C0340 - .4byte _080C034E - .4byte _080C0364 - .4byte _080C037C - .4byte _080C0394 -_080C0288: - ldr r0, _080C0294 @ =gUnknown_83EF23C - movs r1, 0xC0 - movs r2, 0x20 - bl LoadPalette - b _080C03C8 - .align 2, 0 -_080C0294: .4byte gUnknown_83EF23C -_080C0298: - ldr r0, _080C02EC @ =gUnknown_83EF2DC - movs r1, 0 - movs r2, 0xA0 - bl LoadPalette - bl sub_80BFEA0 - ldr r0, _080C02F0 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C02F4 @ =0x00004796 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080C02B6 - b _080C03C8 -_080C02B6: - ldr r4, _080C02F8 @ =gUnknown_83EF23C + 0x1E - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x30 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x40 - movs r2, 0x2 - bl LoadPalette - b _080C03C8 - .align 2, 0 -_080C02EC: .4byte gUnknown_83EF2DC -_080C02F0: .4byte gUnknown_20399D4 -_080C02F4: .4byte 0x00004796 -_080C02F8: .4byte gUnknown_83EF23C + 0x1E -_080C02FC: - bl ResetTempTileDataBuffers - b _080C03C8 -_080C0302: - ldr r1, _080C0330 @ =gUnknown_83EF61C - movs r4, 0 - str r4, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r0, _080C0334 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r2, _080C0338 @ =0x00004796 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080C03C8 - ldr r1, _080C033C @ =gUnknown_83F1978 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - b _080C03C8 - .align 2, 0 -_080C0330: .4byte gUnknown_83EF61C -_080C0334: .4byte gUnknown_20399D4 -_080C0338: .4byte 0x00004796 -_080C033C: .4byte gUnknown_83F1978 -_080C0340: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C03C8 - b _080C03D6 -_080C034E: - ldr r0, _080C035C @ =gUnknown_83F089C - ldr r1, _080C0360 @ =gUnknown_20399D4 - ldr r1, [r1] - adds r1, 0x26 - bl LZ77UnCompWram - b _080C03C8 - .align 2, 0 -_080C035C: .4byte gUnknown_83F089C -_080C0360: .4byte gUnknown_20399D4 -_080C0364: - ldr r0, _080C0370 @ =gUnknown_83F0AFC - ldr r1, _080C0374 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0378 @ =0x000004d6 - b _080C039C - .align 2, 0 -_080C0370: .4byte gUnknown_83F0AFC -_080C0374: .4byte gUnknown_20399D4 -_080C0378: .4byte 0x000004d6 -_080C037C: - ldr r0, _080C0388 @ =gUnknown_83F0C0C - ldr r1, _080C038C @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0390 @ =0x00000986 - b _080C039C - .align 2, 0 -_080C0388: .4byte gUnknown_83F0C0C -_080C038C: .4byte gUnknown_20399D4 -_080C0390: .4byte 0x00000986 -_080C0394: - ldr r0, _080C03A4 @ =gUnknown_83F0CF0 - ldr r1, _080C03A8 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C03AC @ =0x00000e36 -_080C039C: - adds r1, r2 - bl LZ77UnCompWram - b _080C03C8 - .align 2, 0 -_080C03A4: .4byte gUnknown_83F0CF0 -_080C03A8: .4byte gUnknown_20399D4 -_080C03AC: .4byte 0x00000e36 -_080C03B0: - ldr r0, _080C03C0 @ =gUnknown_83F19A0 - ldr r2, _080C03C4 @ =0x000012e6 - adds r1, r2 - bl LZ77UnCompWram - movs r0, 0x1 - b _080C03D8 - .align 2, 0 -_080C03C0: .4byte gUnknown_83F19A0 -_080C03C4: .4byte 0x000012e6 -_080C03C8: - ldr r0, _080C03E0 @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r0, _080C03E4 @ =0x000047a8 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080C03D6: - movs r0, 0 -_080C03D8: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C03E0: .4byte gUnknown_20399D4 -_080C03E4: .4byte 0x000047a8 - thumb_func_end sub_80C0238 - - thumb_func_start sub_80C03E8 -sub_80C03E8: @ 80C03E8 - push {lr} - ldr r0, _080C0404 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0408 @ =0x000047b8 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldr r0, _080C040C @ =sub_80C08B4 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080C0404: .4byte gUnknown_20399D4 -_080C0408: .4byte 0x000047b8 -_080C040C: .4byte sub_80C08B4 - thumb_func_end sub_80C03E8 - - thumb_func_start sub_80C0410 -sub_80C0410: @ 80C0410 - push {r4,r5,lr} - bl sub_80C0E20 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl sub_80C3514 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - bl sub_80C3508 - adds r3, r0, 0 - lsls r3, 16 - asrs r3, 16 - adds r0, r5, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_80C4164 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x63 - beq _080C0446 - movs r0, 0x1 - b _080C0448 -_080C0446: - movs r0, 0 -_080C0448: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80C0410 - - thumb_func_start sub_80C0450 -sub_80C0450: @ 80C0450 - push {lr} - bl sub_80C0410 - cmp r0, 0 - beq _080C04E0 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C0474 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - cmp r0, 0 - bne _080C048E -_080C0474: - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C0494 - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - cmp r0, 0 - beq _080C0494 -_080C048E: - movs r0, 0x65 - bl PlaySE -_080C0494: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C04C2 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bne _080C04C2 - movs r0, 0 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C04C2 - movs r0, 0xE1 - bl PlaySE - b _080C04E0 -_080C04C2: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C04E0 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xD - bne _080C04E0 - movs r0, 0xE1 - bl PlaySE -_080C04E0: - pop {r0} - bx r0 - thumb_func_end sub_80C0450 - thumb_func_start sub_80C04E4 sub_80C04E4: @ 80C04E4 push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index 97bcd476b..e642ed2a4 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -5,12 +5,18 @@ #include "overworld.h" #include "event_data.h" #include "region_map.h" +#include "window.h" +#include "sound.h" +#include "new_menu_helpers.h" #include "constants/flags.h" +#include "constants/songs.h" #include "constants/region_map.h" struct UnkStruct_20399D4 { - u8 filler_0000[0x4796]; + u8 filler_0000[0x0026]; + u16 field_0026[5][600]; + u8 filler_1796[0x3000]; u8 field_4796; u8 field_4797[4]; u8 field_479B; @@ -38,12 +44,40 @@ EWRAM_DATA void * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); void sub_80C0100(void); +bool8 sub_80C0238(void); +void sub_80C03E8(void); void sub_80C04E4(u8 taskId); +void sub_80C08B4(void); +void sub_80C08E0(void); +void sub_80C08F4(void); +void sub_80C0904(void); +void sub_80C0A6C(void); +void sub_80C0A88(u8 a0); +void sub_80C0B18(void); +void sub_80C0BB0(void); +void sub_80C0CC8(u8 bg, u16 *map); +bool8 sub_80C0E04(u8 a0); +u8 sub_80C0E20(void); +void sub_80C3008(u16 a0, u16 a1); +u16 sub_80C3508(void); +u16 sub_80C3514(void); +u8 sub_80C3AC8(u8 a0); +u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); +void sub_80C41D8(u16 a0, u16 a1); +void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C4F08(u8 taskId); #include "data/text/map_section_names.h" +extern const u16 gUnknown_83EF23C[]; extern const u16 gUnknown_83EF2DC[]; +extern const u32 gUnknown_83EF61C[]; +extern const u32 gUnknown_83F089C[]; +extern const u32 gUnknown_83F0AFC[]; +extern const u32 gUnknown_83F0C0C[]; +extern const u32 gUnknown_83F0CF0[]; +extern const u32 gUnknown_83F1978[]; +extern const u32 gUnknown_83F19A0[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; @@ -158,3 +192,134 @@ static void sub_80BFFD0(void) gUnknown_20399D4->field_479B = r7; gUnknown_20399D4->field_479C = r7; } + +void sub_80C0100(void) +{ + switch (gUnknown_20399D4->field_47A4) + { + case 0: + sub_80C08E0(); + break; + case 1: + sub_80C0904(); + break; + case 2: + sub_80C0A6C(); + break; + case 3: + if (!sub_80C0238()) + return; + break; + case 4: + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + break; + case 5: + sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D4->field_479B]); + CopyBgTilemapBufferToVram(0); + if (gUnknown_20399D4->field_4796 != 0) + { + sub_80C0CC8(1, gUnknown_20399D4->field_0026[4]); + CopyBgTilemapBufferToVram(1); + } + break; + case 6: + sub_80C0B18(); + PutWindowTilemap(0); + break; + case 7: + sub_80C0BB0(); + PutWindowTilemap(1); + break; + case 8: + if (sub_80C0E04(2) == TRUE) + sub_80C0A88(1); + break; + default: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C03E8(); + sub_80C08F4(); + break; + } + gUnknown_20399D4->field_47A4++; +} + +bool8 sub_80C0238(void) +{ + switch (gUnknown_20399D4->field_47A8) + { + case 0: + LoadPalette(gUnknown_83EF23C, 0xC0, 0x20); + break; + case 1: + LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0); + sub_80BFEA0(); + if (gUnknown_20399D4->field_4796 != 0) + { + LoadPalette(&gUnknown_83EF23C[15], 0x00, 0x02); + LoadPalette(&gUnknown_83EF23C[15], 0x10, 0x02); + LoadPalette(&gUnknown_83EF23C[15], 0x20, 0x02); + LoadPalette(&gUnknown_83EF23C[15], 0x30, 0x02); + LoadPalette(&gUnknown_83EF23C[15], 0x40, 0x02); + } + break; + case 2: + ResetTempTileDataBuffers(); + break; + case 3: + DecompressAndCopyTileDataToVram(0, gUnknown_83EF61C, 0, 0, 0); + if (gUnknown_20399D4->field_4796 != 0) + { + DecompressAndCopyTileDataToVram(1, gUnknown_83F1978, 0, 0, 0); + } + break; + case 4: + if (FreeTempTileDataBuffersIfPossible() == TRUE) + return FALSE; + break; + case 5: + LZ77UnCompWram(gUnknown_83F089C, gUnknown_20399D4->field_0026[0]); + break; + case 6: + LZ77UnCompWram(gUnknown_83F0AFC, gUnknown_20399D4->field_0026[1]); + break; + case 7: + LZ77UnCompWram(gUnknown_83F0C0C, gUnknown_20399D4->field_0026[2]); + break; + case 8: + LZ77UnCompWram(gUnknown_83F0CF0, gUnknown_20399D4->field_0026[3]); + break; + default: + LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->field_0026[4]); + return TRUE; + } + gUnknown_20399D4->field_47A8++; + return FALSE; +} + +void sub_80C03E8(void) +{ + CreateTask(gUnknown_20399D4->field_47B8, 0); + SetMainCallback2(sub_80C08B4); +} + +bool32 sub_80C0410(void) +{ + if (sub_80C4164(sub_80C0E20(), 0, sub_80C3514(), sub_80C3508()) == 99) + return FALSE; + else + return TRUE; +} + +void sub_80C0450(void) +{ + if (sub_80C0410()) + { + if ((sub_80C3AC8(0) != 1 && sub_80C3AC8(0) != 0) || (sub_80C3AC8(1) != 1 && sub_80C3AC8(1) != 0)) + PlaySE(SE_Z_SCROLL); + if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE) + PlaySE(SE_W255); + else if (sub_80C3508() == 21 && sub_80C3514() == 13) + PlaySE(SE_W255); + } +} -- cgit v1.2.3 From 5a4ffc9a8e2a953a0de699733a809f44ed00bb44 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 2 Jan 2020 10:48:43 -0500 Subject: sub_80C04E4 --- asm/region_map.s | 330 ------------------------------------------------------ include/strings.h | 8 ++ src/region_map.c | 139 +++++++++++++++++++++++ 3 files changed, 147 insertions(+), 330 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index e3317d3b1..c45d74270 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,336 +5,6 @@ .text - thumb_func_start sub_80C04E4 -sub_80C04E4: @ 80C04E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C0508 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C050C @ =0x000047a0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bls _080C04FC - b _080C07B0 -_080C04FC: - lsls r0, 2 - ldr r1, _080C0510 @ =_080C0514 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0508: .4byte gUnknown_20399D4 -_080C050C: .4byte 0x000047a0 -_080C0510: .4byte _080C0514 - .align 2, 0 -_080C0514: - .4byte _080C052C - .4byte _080C0560 - .4byte _080C05E0 - .4byte _080C0624 - .4byte _080C0760 - .4byte _080C0788 -_080C052C: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080C0558 @ =gUnknown_20399D4 - ldr r1, [r4] - ldr r2, _080C055C @ =0x000047b8 - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - bl sub_80C4398 - movs r0, 0 - movs r1, 0 - bl sub_80C3008 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C41D8 - ldr r1, [r4] - b _080C079C - .align 2, 0 -_080C0558: .4byte gUnknown_20399D4 -_080C055C: .4byte 0x000047b8 -_080C0560: - ldr r0, _080C057C @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0580 @ =0x00004799 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C0584 - adds r2, 0x1F - adds r0, r1, r2 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80C2208 - b _080C0798 - .align 2, 0 -_080C057C: .4byte gUnknown_20399D4 -_080C0580: .4byte 0x00004799 -_080C0584: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _080C05D8 @ =gUnknown_8418EB5 - bl sub_80C4E18 - ldr r0, _080C05DC @ =gUnknown_8418E8B - bl sub_80C4E74 - movs r0, 0 - bl sub_80C4ED0 - movs r0, 0 - bl sub_80C4324 - movs r0, 0 - bl sub_80C3154 - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C48BC - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C4960 - b _080C0798 - .align 2, 0 -_080C05D8: .4byte gUnknown_8418EB5 -_080C05DC: .4byte gUnknown_8418E8B -_080C05E0: - ldr r0, _080C0618 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C05EE - b _080C07C2 -_080C05EE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _080C05FA - b _080C07C2 -_080C05FA: - bl sub_80C0B18 - movs r0, 0 - bl PutWindowTilemap - bl sub_80C0BB0 - movs r0, 0x1 - bl PutWindowTilemap - ldr r0, _080C061C @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0620 @ =0x000047a0 - adds r1, r2 - b _080C07A0 - .align 2, 0 -_080C0618: .4byte gPaletteFade -_080C061C: .4byte gUnknown_20399D4 -_080C0620: .4byte 0x000047a0 -_080C0624: - bl sub_80C3400 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x5 - bls _080C0634 - b _080C07C2 -_080C0634: - lsls r0, 2 - ldr r1, _080C0640 @ =_080C0644 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0640: .4byte _080C0644 - .align 2, 0 -_080C0644: - .4byte _080C065C - .4byte _080C07C2 - .4byte _080C0662 - .4byte _080C070C - .4byte _080C0740 - .4byte _080C0798 -_080C065C: - bl sub_80C3178 - b _080C07C2 -_080C0662: - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0B9C - bl sub_80C0450 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C06A8 - movs r0, 0x1 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C068E - b _080C07C2 -_080C068E: - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C0700 - ldr r0, _080C06A4 @ =gUnknown_8418E8D - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06A4: .4byte gUnknown_8418E8D -_080C06A8: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C06DC - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bne _080C06DC - movs r0, 0 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C06DC - ldr r0, _080C06D8 @ =gUnknown_8418EA7 - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06D8: .4byte gUnknown_8418EA7 -_080C06DC: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C0700 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xD - bne _080C0700 - ldr r0, _080C06FC @ =gUnknown_8418E95 - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06FC: .4byte gUnknown_8418E95 -_080C0700: - ldr r0, _080C0708 @ =gUnknown_8418E8B - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C0708: .4byte gUnknown_8418E8B -_080C070C: - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C07C2 - ldr r0, _080C0734 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0738 @ =0x00004798 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C07C2 - ldr r2, _080C073C @ =sub_80C07F8 - movs r0, 0 - adds r1, r5, 0 - bl sub_80C195C - b _080C07C2 - .align 2, 0 -_080C0734: .4byte gUnknown_20399D4 -_080C0738: .4byte 0x00004798 -_080C073C: .4byte sub_80C07F8 -_080C0740: - ldr r0, _080C0754 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r2, _080C0758 @ =0x0000479b - adds r0, r2 - ldrb r0, [r0] - ldr r2, _080C075C @ =sub_80C07F8 - adds r1, r5, 0 - bl sub_80C0E70 - b _080C07C2 - .align 2, 0 -_080C0754: .4byte gUnknown_20399D4 -_080C0758: .4byte 0x0000479b -_080C075C: .4byte sub_80C07F8 -_080C0760: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C0776 - adds r0, r5, 0 - bl sub_80C2C1C - b _080C0798 -_080C0776: - ldr r0, _080C0780 @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0784 @ =0x000047a0 - adds r1, r2 - b _080C07A0 - .align 2, 0 -_080C0780: .4byte gUnknown_20399D4 -_080C0784: .4byte 0x000047a0 -_080C0788: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080C0798: - ldr r0, _080C07A8 @ =gUnknown_20399D4 - ldr r1, [r0] -_080C079C: - ldr r0, _080C07AC @ =0x000047a0 - adds r1, r0 -_080C07A0: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C07C2 - .align 2, 0 -_080C07A8: .4byte gUnknown_20399D4 -_080C07AC: .4byte 0x000047a0 -_080C07B0: - ldr r0, _080C07CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080C07C2 - adds r0, r5, 0 - bl sub_80C0820 -_080C07C2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C07CC: .4byte gPaletteFade - thumb_func_end sub_80C04E4 - thumb_func_start sub_80C07D0 sub_80C07D0: @ 80C07D0 ldr r1, _080C07DC @ =gUnknown_20399D4 diff --git a/include/strings.h b/include/strings.h index 90fd49b52..6cca52507 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1003,4 +1003,12 @@ extern const u8 gText_UnionRoomTradesBattles[]; extern const u8 gText_LinkBattles[]; extern const u8 gText_LinkCableBattles[]; +// region_map +extern const u8 gUnknown_8418EB5[]; +extern const u8 gUnknown_8418E8B[]; +extern const u8 gUnknown_8418E8D[]; +extern const u8 gUnknown_8418E8B[]; +extern const u8 gUnknown_8418EA7[]; +extern const u8 gUnknown_8418E95[]; + #endif //GUARD_STRINGS_H diff --git a/src/region_map.c b/src/region_map.c index e642ed2a4..4199b2f17 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -8,6 +8,7 @@ #include "window.h" #include "sound.h" #include "new_menu_helpers.h" +#include "strings.h" #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" @@ -47,6 +48,8 @@ void sub_80C0100(void); bool8 sub_80C0238(void); void sub_80C03E8(void); void sub_80C04E4(u8 taskId); +void sub_80C07F8(u8 taskId); +void sub_80C0820(u8 taskId); void sub_80C08B4(void); void sub_80C08E0(void); void sub_80C08F4(void); @@ -54,17 +57,32 @@ void sub_80C0904(void); void sub_80C0A6C(void); void sub_80C0A88(u8 a0); void sub_80C0B18(void); +void sub_80C0B9C(void); void sub_80C0BB0(void); void sub_80C0CC8(u8 bg, u16 *map); bool8 sub_80C0E04(u8 a0); u8 sub_80C0E20(void); +void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C2208(u8 taskId, TaskFunc taskFunc); +void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); +void sub_80C3154(u8 a0); +void sub_80C3178(void); +u8 sub_80C3400(void); u16 sub_80C3508(void); u16 sub_80C3514(void); +u16 sub_80C3580(void); u8 sub_80C3AC8(u8 a0); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); +void sub_80C4324(u8 a0); void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C48BC(u8 a0, u8 a1, u8 a2); +void sub_80C4960(u8 a0, u8 a1, u8 a2); +void sub_80C4E18(const u8 *str); +void sub_80C4E74(const u8 *str); +void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); #include "data/text/map_section_names.h" @@ -323,3 +341,124 @@ void sub_80C0450(void) PlaySE(SE_W255); } } + +void sub_80C04E4(u8 taskId) +{ + switch (gUnknown_20399D4->field_47A0) + { + case 0: + sub_80C4398(sub_80C0E20(), taskId, gUnknown_20399D4->field_47B8); + sub_80C3008(0, 0); + sub_80C41D8(1, 1); + gUnknown_20399D4->field_47A0++; + break; + case 1: + if (gUnknown_20399D4->field_4797[2] == 1) + { + sub_80C2208(taskId, gUnknown_20399D4->field_47B8); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gUnknown_8418EB5); + sub_80C4E74(gUnknown_8418E8B); + sub_80C4ED0(FALSE); + sub_80C4324(0); + sub_80C3154(0); + sub_80C48BC(sub_80C0E20(), 25, 0); + sub_80C4960(sub_80C0E20(), 25, 0); + } + gUnknown_20399D4->field_47A0++; + break; + case 2: + if (!gPaletteFade.active && !IsDma3ManagerBusyWithBgCopy()) + { + sub_80C0B18(); + PutWindowTilemap(0); + sub_80C0BB0(); + PutWindowTilemap(1); + gUnknown_20399D4->field_47A0++; + } + break; + case 3: + switch (sub_80C3400()) + { + case 1: + sub_80C3178(); + break; + case 3: + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0B9C(); + sub_80C0450(); + if (sub_80C3580() != MAPSEC_NONE) + { + if (sub_80C0E04(1) == TRUE) + { + if (sub_80C3AC8(1) == 2) + { + sub_80C4E74(gUnknown_8418E8D); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + } + } + else + { + if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE) + { + sub_80C4E74(gUnknown_8418EA7); + } + else if (sub_80C3508() == 21 && sub_80C3514() == 13) + { + sub_80C4E74(gUnknown_8418E95); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + } + break; + case 4: + if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->field_4797[1] == 1) + { + sub_80C195C(0, taskId, sub_80C07F8); + } + break; + case 5: + sub_80C0E70(gUnknown_20399D4->field_479B, taskId, sub_80C07F8); + break; + case 6: + gUnknown_20399D4->field_47A0++; + break; + } + break; + case 4: + if (sub_80C0E04(2) == 1) + { + sub_80C2C1C(taskId); + // gUnknown_20399D4->field_47A0++; + goto _080C0798; + } + else + { + gUnknown_20399D4->field_47A0++; + } + break; + case 5: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + _080C0798: + gUnknown_20399D4->field_47A0++; + break; + default: + if (!gPaletteFade.active) + { + sub_80C0820(taskId); + } + break; + } +} -- cgit v1.2.3 From 496fb8ce87e38b2c42009fcde62e683126373e3e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 2 Jan 2020 12:04:35 -0500 Subject: through sub_80C0A88 --- asm/region_map.s | 361 ------------------------------------------------------- src/region_map.c | 147 +++++++++++++++++++++- 2 files changed, 142 insertions(+), 366 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index c45d74270..9dea034bc 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,367 +5,6 @@ .text - thumb_func_start sub_80C07D0 -sub_80C07D0: @ 80C07D0 - ldr r1, _080C07DC @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C07E0 @ =0x000047b8 - adds r1, r2 - str r0, [r1] - bx lr - .align 2, 0 -_080C07DC: .4byte gUnknown_20399D4 -_080C07E0: .4byte 0x000047b8 - thumb_func_end sub_80C07D0 - - thumb_func_start sub_80C07E4 -sub_80C07E4: @ 80C07E4 - ldr r0, _080C07F0 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C07F4 @ =0x000047b8 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_080C07F0: .4byte gUnknown_20399D4 -_080C07F4: .4byte 0x000047b8 - thumb_func_end sub_80C07E4 - - thumb_func_start sub_80C07F8 -sub_80C07F8: @ 80C07F8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C0814 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080C0818 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r2, _080C081C @ =0x000047b8 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080C0814: .4byte gTasks -_080C0818: .4byte gUnknown_20399D4 -_080C081C: .4byte 0x000047b8 - thumb_func_end sub_80C07F8 - - thumb_func_start sub_80C0820 -sub_80C0820: @ 80C0820 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C0838 - bl sub_80C25BC -_080C0838: - bl sub_80C4A04 - bl sub_80C3188 - bl sub_80C4348 - bl sub_80C4D30 - adds r0, r4, 0 - bl DestroyTask - bl FreeAllWindowBuffers - ldr r0, _080C086C @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0870 @ =0x000047bc - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _080C0878 - ldr r0, _080C0874 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - b _080C087C - .align 2, 0 -_080C086C: .4byte gUnknown_20399D4 -_080C0870: .4byte 0x000047bc -_080C0874: .4byte gMain -_080C0878: - bl SetMainCallback2 -_080C087C: - ldr r4, _080C0894 @ =gUnknown_20399D4 - ldr r0, [r4] - cmp r0, 0 - beq _080C088C - bl Free - movs r0, 0 - str r0, [r4] -_080C088C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0894: .4byte gUnknown_20399D4 - thumb_func_end sub_80C0820 - - thumb_func_start sub_80C0898 -sub_80C0898: @ 80C0898 - push {r4,lr} - ldr r4, _080C08B0 @ =gUnknown_20399D4 - ldr r0, [r4] - cmp r0, 0 - beq _080C08AA - bl Free - movs r0, 0 - str r0, [r4] -_080C08AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C08B0: .4byte gUnknown_20399D4 - thumb_func_end sub_80C0898 - - thumb_func_start sub_80C08B4 -sub_80C08B4: @ 80C08B4 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80C08B4 - - thumb_func_start sub_80C08CC -sub_80C08CC: @ 80C08CC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80C08CC - - thumb_func_start sub_80C08E0 -sub_80C08E0: @ 80C08E0 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_80C08E0 - - thumb_func_start sub_80C08F4 -sub_80C08F4: @ 80C08F4 - push {lr} - ldr r0, _080C0900 @ =sub_80C08CC - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_080C0900: .4byte sub_80C08CC - thumb_func_end sub_80C08F4 - - thumb_func_start sub_80C0904 -sub_80C0904: @ 80C0904 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _080C0A18 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _080C0A1C @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_080C092A: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _080C092A - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _080C0A18 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080C0A20 @ =gUnknown_83F1A50 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _080C0A24 @ =gUnknown_83F1A60 - bl InitWindows - bl DeactivateAllTextPrinters - ldr r1, _080C0A28 @ =0x00006040 - movs r0, 0 - bl SetGpuReg - bl sub_80C0A2C - bl sub_80C0AB8 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C0A18: .4byte 0x040000d4 -_080C0A1C: .4byte 0x81000800 -_080C0A20: .4byte gUnknown_83F1A50 -_080C0A24: .4byte gUnknown_83F1A60 -_080C0A28: .4byte 0x00006040 - thumb_func_end sub_80C0904 - - thumb_func_start sub_80C0A2C -sub_80C0A2C: @ 80C0A2C - push {r4,lr} - ldr r4, _080C0A5C @ =gUnknown_20399D4 - ldr r1, [r4] - ldr r0, _080C0A60 @ =0x00001796 - adds r1, r0 - movs r0, 0 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _080C0A64 @ =0x00002796 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _080C0A68 @ =0x00003796 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0A5C: .4byte gUnknown_20399D4 -_080C0A60: .4byte 0x00001796 -_080C0A64: .4byte 0x00002796 -_080C0A68: .4byte 0x00003796 - thumb_func_end sub_80C0A2C - - thumb_func_start sub_80C0A6C -sub_80C0A6C: @ 80C0A6C - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - pop {r0} - bx r0 - thumb_func_end sub_80C0A6C - - thumb_func_start sub_80C0A88 -sub_80C0A88: @ 80C0A88 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080C0A98 - cmp r0, 0x1 - beq _080C0AA6 - b _080C0AB2 -_080C0A98: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - b _080C0AB2 -_080C0AA6: - movs r0, 0 - bl HideBg - movs r0, 0x3 - bl HideBg -_080C0AB2: - pop {r0} - bx r0 - thumb_func_end sub_80C0A88 - thumb_func_start sub_80C0AB8 sub_80C0AB8: @ 80C0AB8 push {r4,lr} diff --git a/src/region_map.c b/src/region_map.c index 4199b2f17..d4451330f 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1,5 +1,7 @@ #include "global.h" #include "palette.h" +#include "gpu_regs.h" +#include "scanline_effect.h" #include "task.h" #include "malloc.h" #include "overworld.h" @@ -17,7 +19,10 @@ struct UnkStruct_20399D4 { u8 filler_0000[0x0026]; u16 field_0026[5][600]; - u8 filler_1796[0x3000]; + // Inefficiency: these should be u8 or have half the elements each + u16 field_1796[BG_SCREEN_SIZE]; + u16 field_2796[BG_SCREEN_SIZE]; + u16 field_3796[BG_SCREEN_SIZE]; u8 field_4796; u8 field_4797[4]; u8 field_479B; @@ -54,8 +59,10 @@ void sub_80C08B4(void); void sub_80C08E0(void); void sub_80C08F4(void); void sub_80C0904(void); +void sub_80C0A2C(void); void sub_80C0A6C(void); void sub_80C0A88(u8 a0); +void sub_80C0AB8(void); void sub_80C0B18(void); void sub_80C0B9C(void); void sub_80C0BB0(void); @@ -65,25 +72,30 @@ u8 sub_80C0E20(void); void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C2208(u8 taskId, TaskFunc taskFunc); +void sub_80C25BC(void); void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); void sub_80C3154(u8 a0); void sub_80C3178(void); -u8 sub_80C3400(void); -u16 sub_80C3508(void); -u16 sub_80C3514(void); -u16 sub_80C3580(void); +void sub_80C3188(void); u8 sub_80C3AC8(u8 a0); +u8 sub_80C3400(void); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); void sub_80C4324(u8 a0); void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C4348(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); +void sub_80C4A04(void); +void sub_80C4D30(void); void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); +u16 sub_80C3508(void); +u16 sub_80C3514(void); +u16 sub_80C3580(void); #include "data/text/map_section_names.h" @@ -96,6 +108,8 @@ extern const u32 gUnknown_83F0C0C[]; extern const u32 gUnknown_83F0CF0[]; extern const u32 gUnknown_83F1978[]; extern const u32 gUnknown_83F19A0[]; +extern const struct BgTemplate gUnknown_83F1A50[4]; +extern const struct WindowTemplate gUnknown_83F1A60[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; @@ -462,3 +476,126 @@ void sub_80C04E4(u8 taskId) break; } } + +void sub_80C07D0(TaskFunc taskFunc) +{ + gUnknown_20399D4->field_47B8 = taskFunc; +} + +TaskFunc sub_80C07E4(void) +{ + return gUnknown_20399D4->field_47B8; +} + +void sub_80C07F8(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399D4->field_47B8; +} + +void sub_80C0820(u8 taskId) +{ + if (sub_80C0E04(2) == TRUE) + sub_80C25BC(); + sub_80C4A04(); + sub_80C3188(); + sub_80C4348(); + sub_80C4D30(); + DestroyTask(taskId); + FreeAllWindowBuffers(); + if (gUnknown_20399D4->field_47BC == NULL) + SetMainCallback2(gMain.savedCallback); + else + SetMainCallback2(gUnknown_20399D4->field_47BC); + if (gUnknown_20399D4 != NULL) + { + FREE_AND_SET_NULL(gUnknown_20399D4); + } +} + +void sub_80C0898(void) +{ + if (gUnknown_20399D4 != NULL) + { + FREE_AND_SET_NULL(gUnknown_20399D4); + } +} + +void sub_80C08B4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80C08CC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_80C08E0(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +void sub_80C08F4(void) +{ + SetVBlankCallback(sub_80C08CC); +} + +void sub_80C0904(void) +{ + DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_83F1A50, NELEMS(gUnknown_83F1A50)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(gUnknown_83F1A60); + DeactivateAllTextPrinters(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); + sub_80C0A2C(); + sub_80C0AB8(); +} + +void sub_80C0A2C(void) +{ + SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796); + SetBgTilemapBuffer(1, gUnknown_20399D4->field_2796); + SetBgTilemapBuffer(2, gUnknown_20399D4->field_3796); +} + +void sub_80C0A6C(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +void sub_80C0A88(u8 mode) +{ + switch (mode) + { + case 0: + ShowBg(0); + ShowBg(3); + break; + case 1: + HideBg(0); + HideBg(3); + break; + } +} -- cgit v1.2.3 From 404932ba23a2be1ff5c90def5ebf2a2ec5cf9839 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 2 Jan 2020 12:39:48 -0500 Subject: through sub_80C0B9C --- asm/region_map.s | 118 +----------------------------------------------------- data/region_map.s | 4 -- src/region_map.c | 51 ++++++++++++++++++++++- 3 files changed, 52 insertions(+), 121 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 9dea034bc..08fb0b88a 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,120 +5,6 @@ .text - thumb_func_start sub_80C0AB8 -sub_80C0AB8: @ 80C0AB8 - push {r4,lr} - bl sub_80C4BE4 - movs r0, 0 - movs r1, 0x11 - movs r2, 0xC0 - bl sub_80C4C2C - movs r0, 0x6 - bl sub_80C4C48 - movs r0, 0x39 - movs r1, 0x39 - bl sub_80C4C74 - movs r0, 0x1B - bl sub_80C4C88 - ldr r4, _080C0B14 @ =gUnknown_83F1B0C - movs r0, 0 - adds r1, r4, 0 - bl sub_80C4CF0 - adds r4, 0x8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C0B0C - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C -_080C0B0C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0B14: .4byte gUnknown_83F1B0C - thumb_func_end sub_80C0AB8 - - thumb_func_start sub_80C0B18 -sub_80C0B18: @ 80C0B18 - push {r4,r5,lr} - sub sp, 0xC - movs r0, 0 - bl ClearWindowTilemap - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - bl sub_80C3520 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - bne _080C0B44 - ldr r1, _080C0B40 @ =gUnknown_83F1B1C - movs r0, 0 - bl sub_80C4CF0 - b _080C0B88 - .align 2, 0 -_080C0B40: .4byte gUnknown_83F1B1C -_080C0B44: - ldr r5, _080C0B90 @ =gUnknown_20399D4 - ldr r4, [r5] - bl sub_80C3520 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl GetMapName - ldr r0, _080C0B94 @ =gUnknown_83F1A90 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, [r5] - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x2 - bl AddTextPrinterParameterized3 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, _080C0B98 @ =gUnknown_83F1B0C - movs r0, 0 - bl sub_80C4CF0 -_080C0B88: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0B90: .4byte gUnknown_20399D4 -_080C0B94: .4byte gUnknown_83F1A90 -_080C0B98: .4byte gUnknown_83F1B0C - thumb_func_end sub_80C0B18 - - thumb_func_start sub_80C0B9C -sub_80C0B9C: @ 80C0B9C - push {lr} - ldr r1, _080C0BAC @ =gUnknown_83F1B14 - movs r0, 0x1 - bl sub_80C4CF0 - pop {r0} - bx r0 - .align 2, 0 -_080C0BAC: .4byte gUnknown_83F1B14 - thumb_func_end sub_80C0B9C - thumb_func_start sub_80C0BB0 sub_80C0BB0: @ 80C0BB0 push {r4-r6,lr} @@ -973,7 +859,7 @@ sub_80C1280: @ 80C1280 bl sub_80C4E74 bl sub_80C0AB8 bl sub_80C0B9C - ldr r1, _080C12E8 @ =gUnknown_83F1B1C + ldr r1, _080C12E8 @ =gUnknown_83F1B0C+16 movs r0, 0 bl sub_80C4CF0 ldr r0, [r4] @@ -992,7 +878,7 @@ _080C12D8: .4byte gUnknown_20399D8 _080C12DC: .4byte 0x00001cd0 _080C12E0: .4byte gUnknown_8418EB5 _080C12E4: .4byte gUnknown_8418EA7 -_080C12E8: .4byte gUnknown_83F1B1C +_080C12E8: .4byte gUnknown_83F1B0C+16 thumb_func_end sub_80C1280 thumb_func_start sub_80C12EC diff --git a/data/region_map.s b/data/region_map.s index e2ba5e5ac..01bbb7a5a 100644 --- a/data/region_map.s +++ b/data/region_map.s @@ -308,11 +308,7 @@ gUnknown_83F1B00:: @ 83F1B00 gUnknown_83F1B0C:: @ 83F1B0C .2byte 0x0018, 0x0010, 0x0090, 0x0020 - -gUnknown_83F1B14:: @ 83F1B14 .2byte 0x0018, 0x0020, 0x0090, 0x0030 - -gUnknown_83F1B1C:: @ 83F1B1C .2byte 0x0000, 0x0000, 0x0000, 0x0000 gUnknown_83F1B24:: @ 83F1B24 diff --git a/src/region_map.c b/src/region_map.c index d4451330f..3f1dd9f08 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -10,6 +10,7 @@ #include "window.h" #include "sound.h" #include "new_menu_helpers.h" +#include "menu.h" #include "strings.h" #include "constants/flags.h" #include "constants/songs.h" @@ -17,7 +18,7 @@ struct UnkStruct_20399D4 { - u8 filler_0000[0x0026]; + u8 field_0000[38]; u16 field_0026[5][600]; // Inefficiency: these should be u8 or have half the elements each u16 field_1796[BG_SCREEN_SIZE]; @@ -66,7 +67,14 @@ void sub_80C0AB8(void); void sub_80C0B18(void); void sub_80C0B9C(void); void sub_80C0BB0(void); +void sub_80C4BE4(void); +void sub_80C4C2C(u8 a0, u16 a1, u16 a2); +void sub_80C4C48(u16 a0); +void sub_80C4C74(u16 a0, u16 a1); +void sub_80C4C88(u16 a0); +void sub_80C4C9C(u8 a0, u8 a1); void sub_80C0CC8(u8 bg, u16 *map); +void sub_80C4CF0(u8 a0, const u16 *a1); bool8 sub_80C0E04(u8 a0); u8 sub_80C0E20(void); void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); @@ -85,6 +93,7 @@ void sub_80C41D8(u16 a0, u16 a1); void sub_80C4324(u8 a0); void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C4348(void); +u16 sub_80C3520(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); @@ -110,8 +119,10 @@ extern const u32 gUnknown_83F1978[]; 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 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; +extern const u16 gUnknown_83F1B0C[3][4]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -455,6 +466,7 @@ void sub_80C04E4(u8 taskId) if (sub_80C0E04(2) == 1) { sub_80C2C1C(taskId); + // FIXME: goto required to match // gUnknown_20399D4->field_47A0++; goto _080C0798; } @@ -599,3 +611,40 @@ void sub_80C0A88(u8 mode) break; } } + +void sub_80C0AB8(void) +{ + sub_80C4BE4(); + sub_80C4C2C(0, 0x11, 0xc0); + sub_80C4C48(6); + sub_80C4C74(0x39, 0x39); + sub_80C4C88(0x1b); + sub_80C4CF0(0, gUnknown_83F1B0C[0]); + sub_80C4CF0(1, gUnknown_83F1B0C[1]); + sub_80C4C9C(0, 0); + if (sub_80C3580() != MAPSEC_NONE) + sub_80C4C9C(1, 0); +} + +void sub_80C0B18(void) +{ + ClearWindowTilemap(0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + if (sub_80C3520() == MAPSEC_NONE) + { + sub_80C4CF0(0, gUnknown_83F1B0C[2]); + } + else + { + GetMapName(gUnknown_20399D4->field_0000, sub_80C3520(), 0); + AddTextPrinterParameterized3(0, 2, 2, 2, gUnknown_83F1A90, 0, gUnknown_20399D4->field_0000); + PutWindowTilemap(0); + CopyWindowToVram(0, 2); + sub_80C4CF0(0, gUnknown_83F1B0C[0]); + } +} + +void sub_80C0B9C(void) +{ + sub_80C4CF0(1, gUnknown_83F1B0C[1]); +} -- cgit v1.2.3 From 3535cf2ebc0ff5cb408bb018ade68ae8cfcb0c5c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 3 Jan 2020 09:09:02 -0500 Subject: through sub_80C0E5C --- asm/region_map.s | 352 ----------------------------------------- include/constants/region_map.h | 3 +- src/region_map.c | 121 ++++++++++++-- 3 files changed, 114 insertions(+), 362 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 08fb0b88a..f0f1de990 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,358 +5,6 @@ .text - thumb_func_start sub_80C0BB0 -sub_80C0BB0: @ 80C0BB0 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, _080C0C84 @ =gUnknown_20399D4 - ldr r1, [r5] - ldr r2, _080C0C88 @ =0x000047ac - adds r0, r1, r2 - movs r6, 0 - strh r6, [r0] - ldr r3, _080C0C8C @ =0x000047ae - adds r2, r1, r3 - movs r0, 0x18 - strh r0, [r2] - ldr r0, _080C0C90 @ =0x000047b0 - adds r1, r0 - movs r0, 0x20 - strh r0, [r1] - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C4C9C - movs r0, 0x1 - bl ClearWindowTilemap - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C0C7A - adds r4, r0, 0 - subs r4, 0x58 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C - ldr r0, [r5] - ldr r1, _080C0C88 @ =0x000047ac - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] - ldr r0, _080C0C94 @ =gUnknown_83F1CAC - lsls r4, 2 - adds r4, r0 - ldr r4, [r4] - adds r0, r4, 0 - bl StringLength - ldr r2, [r5] - ldr r3, _080C0C98 @ =0x000047aa - adds r1, r2, r3 - strh r0, [r1] - ldrh r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x32 - adds r3, 0x4 - adds r1, r2, r3 - strh r0, [r1] - ldr r0, _080C0C90 @ =0x000047b0 - adds r2, r0 - movs r0, 0x30 - strh r0, [r2] - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x13 - adds r1, r4, 0 - bl StringCopy - ldr r4, _080C0C9C @ =gUnknown_83F1A9C - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 22 - subs r0, 0x8 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - ldr r0, [r5] - adds r0, 0x13 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xC - movs r3, 0x2 - bl AddTextPrinterParameterized3 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram -_080C0C7A: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C0C84: .4byte gUnknown_20399D4 -_080C0C88: .4byte 0x000047ac -_080C0C8C: .4byte 0x000047ae -_080C0C90: .4byte 0x000047b0 -_080C0C94: .4byte gUnknown_83F1CAC -_080C0C98: .4byte 0x000047aa -_080C0C9C: .4byte gUnknown_83F1A9C - thumb_func_end sub_80C0BB0 - - thumb_func_start sub_80C0CA0 -sub_80C0CA0: @ 80C0CA0 - push {lr} - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_80C0CA0 - - thumb_func_start sub_80C0CC8 -sub_80C0CC8: @ 80C0CC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r1, 0 - lsls r0, 24 - ldr r2, _080C0D0C @ =gUnknown_20399D4 - lsrs r0, 12 - ldr r1, _080C0D10 @ =0x00001796 - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - movs r1, 0 - mov r8, r2 -_080C0CE4: - movs r2, 0 - lsls r5, r1, 16 - asrs r1, r5, 16 - lsls r3, r1, 5 - lsls r0, r1, 4 - subs r0, r1 - lsls r4, r0, 1 -_080C0CF2: - lsls r0, r2, 16 - asrs r1, r0, 16 - adds r2, r0, 0 - cmp r1, 0x1D - bgt _080C0D14 - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - adds r1, r4, r1 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - b _080C0D1C - .align 2, 0 -_080C0D0C: .4byte gUnknown_20399D4 -_080C0D10: .4byte 0x00001796 -_080C0D14: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r7] -_080C0D1C: - strh r1, [r0] - movs r1, 0x80 - lsls r1, 9 - adds r0, r2, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x1F - ble _080C0CF2 - adds r0, r5, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080C0CE4 - mov r1, r8 - ldr r0, [r1] - ldr r1, _080C0D94 @ =0x00004797 - adds r0, r1 - ldrb r5, [r0] - cmp r5, 0x1 - bne _080C0D86 - movs r4, 0x3 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r1, 0xF0 - movs r2, 0x18 - movs r3, 0xE - bl WriteSequenceToBgTilemapBuffer - movs r1, 0x80 - lsls r1, 1 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r2, 0x18 - movs r3, 0xF - bl WriteSequenceToBgTilemapBuffer - movs r1, 0x88 - lsls r1, 1 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r2, 0x18 - movs r3, 0x10 - bl WriteSequenceToBgTilemapBuffer -_080C0D86: - ldr r0, _080C0D98 @ =gUnknown_20399D8 - ldr r0, [r0] - cmp r0, 0 - beq _080C0DA0 - ldr r1, _080C0D9C @ =0x00001cca - b _080C0DA6 - .align 2, 0 -_080C0D94: .4byte 0x00004797 -_080C0D98: .4byte gUnknown_20399D8 -_080C0D9C: .4byte 0x00001cca -_080C0DA0: - mov r1, r8 - ldr r0, [r1] - ldr r1, _080C0DF8 @ =0x0000479b -_080C0DA6: - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0x2 - bne _080C0DCC - ldr r0, _080C0DFC @ =0x000008b5 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C0DCC - movs r0, 0x3 - str r0, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x3 - movs r2, 0xD - movs r3, 0xB - bl FillBgTilemapBufferRect_Palette0 -_080C0DCC: - cmp r4, 0x3 - bne _080C0DEC - ldr r0, _080C0E00 @ =0x000008c2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C0DEC - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x3 - movs r2, 0x15 - movs r3, 0x10 - bl FillBgTilemapBufferRect_Palette0 -_080C0DEC: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C0DF8: .4byte 0x0000479b -_080C0DFC: .4byte 0x000008b5 -_080C0E00: .4byte 0x000008c2 - thumb_func_end sub_80C0CC8 - - thumb_func_start sub_80C0E04 -sub_80C0E04: @ 80C0E04 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080C0E18 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E1C @ =0x00004797 - adds r1, r2 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_080C0E18: .4byte gUnknown_20399D4 -_080C0E1C: .4byte 0x00004797 - thumb_func_end sub_80C0E04 - - thumb_func_start sub_80C0E20 -sub_80C0E20: @ 80C0E20 - ldr r0, _080C0E2C @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0E30 @ =0x0000479b - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080C0E2C: .4byte gUnknown_20399D4 -_080C0E30: .4byte 0x0000479b - thumb_func_end sub_80C0E20 - - thumb_func_start sub_80C0E34 -sub_80C0E34: @ 80C0E34 - ldr r0, _080C0E40 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0E44 @ =0x0000479c - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080C0E40: .4byte gUnknown_20399D4 -_080C0E44: .4byte 0x0000479c - thumb_func_end sub_80C0E34 - - thumb_func_start sub_80C0E48 -sub_80C0E48: @ 80C0E48 - ldr r1, _080C0E54 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E58 @ =0x0000479b - adds r1, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080C0E54: .4byte gUnknown_20399D4 -_080C0E58: .4byte 0x0000479b - thumb_func_end sub_80C0E48 - - thumb_func_start sub_80C0E5C -sub_80C0E5C: @ 80C0E5C - ldr r1, _080C0E68 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E6C @ =0x0000479c - adds r1, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080C0E68: .4byte gUnknown_20399D4 -_080C0E6C: .4byte 0x0000479c - thumb_func_end sub_80C0E5C - thumb_func_start sub_80C0E70 sub_80C0E70: @ 80C0E70 push {r4-r7,lr} diff --git a/include/constants/region_map.h b/include/constants/region_map.h index e096f08a2..bd087bd60 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -90,7 +90,8 @@ #define MAPSEC_SECRET_BASE 0x56 #define MAPSEC_DYNAMIC 0x57 -// Kanto landmarks +#define MAPSECS_KANTO 0x58 + #define MAPSEC_PALLET_TOWN 0x58 #define MAPSEC_VIRIDIAN_CITY 0x59 #define MAPSEC_PEWTER_CITY 0x5A diff --git a/src/region_map.c b/src/region_map.c index 3f1dd9f08..adcf0dcb6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -11,6 +11,7 @@ #include "sound.h" #include "new_menu_helpers.h" #include "menu.h" +#include "string_util.h" #include "strings.h" #include "constants/flags.h" #include "constants/songs.h" @@ -18,12 +19,11 @@ struct UnkStruct_20399D4 { - u8 field_0000[38]; + u8 field_0000[19]; + u8 field_0013[19]; u16 field_0026[5][600]; // Inefficiency: these should be u8 or have half the elements each - u16 field_1796[BG_SCREEN_SIZE]; - u16 field_2796[BG_SCREEN_SIZE]; - u16 field_3796[BG_SCREEN_SIZE]; + u16 field_1796[3][BG_SCREEN_SIZE]; u8 field_4796; u8 field_4797[4]; u8 field_479B; @@ -34,13 +34,23 @@ struct UnkStruct_20399D4 u8 field_47A4; u8 filler_47A5[3]; u8 field_47A8; - u8 filler_47A9[15]; + u16 field_47AA; + u16 field_47AC; + u16 field_47AE; + u16 field_47B0; + u8 filler_47B2[6]; TaskFunc field_47B8; MainCallback field_47BC; }; +struct UnkStruct_20399D8 +{ + u8 filler_0000[0x1CCA]; + u8 field_1CCA; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; -EWRAM_DATA void * gUnknown_20399D8 = NULL; +EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA void * gUnknown_20399DC = NULL; EWRAM_DATA void * gUnknown_20399E0 = NULL; EWRAM_DATA void * gUnknown_20399E4 = NULL; @@ -123,6 +133,8 @@ extern const u8 gUnknown_83F1A90[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; extern const u16 gUnknown_83F1B0C[3][4]; +extern const u8 *const gUnknown_83F1A9C[]; +extern const u8 *const gUnknown_83F1CAC[]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -583,9 +595,9 @@ void sub_80C0904(void) void sub_80C0A2C(void) { - SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796); - SetBgTilemapBuffer(1, gUnknown_20399D4->field_2796); - SetBgTilemapBuffer(2, gUnknown_20399D4->field_3796); + SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796[0]); + SetBgTilemapBuffer(1, gUnknown_20399D4->field_1796[1]); + SetBgTilemapBuffer(2, gUnknown_20399D4->field_1796[2]); } void sub_80C0A6C(void) @@ -648,3 +660,94 @@ void sub_80C0B9C(void) { sub_80C4CF0(1, gUnknown_83F1B0C[1]); } + +void sub_80C0BB0(void) +{ + u16 mapsecId; + u16 descOffset; + gUnknown_20399D4->field_47AC = 0; + gUnknown_20399D4->field_47AE = 24; + gUnknown_20399D4->field_47B0 = 32; + sub_80C4C9C(1, 1); + ClearWindowTilemap(1); + mapsecId = sub_80C3580(); + if (mapsecId != MAPSEC_NONE) + { + descOffset = mapsecId - MAPSECS_KANTO; + sub_80C4C9C(1, 0); + gUnknown_20399D4->field_47AC = 1; + gUnknown_20399D4->field_47AA = StringLength(gUnknown_83F1CAC[descOffset]); + gUnknown_20399D4->field_47AE = gUnknown_20399D4->field_47AA * 10 + 50; + gUnknown_20399D4->field_47B0 = 48; + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + StringCopy(gUnknown_20399D4->field_0013, gUnknown_83F1CAC[descOffset]); + AddTextPrinterParameterized3(1, 2, 12, 2, gUnknown_83F1A9C[sub_80C3AC8(1) - 2], 0, gUnknown_20399D4->field_0013); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); + } +} + +void sub_80C0CA0(void) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + CopyWindowToVram(0, 3); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + CopyWindowToVram(1, 3); +} + +void sub_80C0CC8(u8 bg, u16 *map) +{ + s16 i; + s16 j; + u8 r4; + u16 *buffer = gUnknown_20399D4->field_1796[bg]; + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++) + { + if (j < 30) + buffer[32 * i + j] = map[30 * i + j]; + else + buffer[32 * i + j] = map[0]; + } + } + if (gUnknown_20399D4->field_4797[0] == 1) + { + WriteSequenceToBgTilemapBuffer(0, 0x0F0, 0x18, 0x0E, 3, 1, 0x3, 0x001); + WriteSequenceToBgTilemapBuffer(0, 0x100, 0x18, 0x0F, 3, 1, 0x3, 0x001); + WriteSequenceToBgTilemapBuffer(0, 0x110, 0x18, 0x10, 3, 1, 0x3, 0x001); + } + if (gUnknown_20399D8 != NULL) + r4 = gUnknown_20399D8->field_1CCA; + else + r4 = gUnknown_20399D4->field_479B; + if (r4 == 2 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 13, 11, 3, 2); + if (r4 == 3 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3); +} + +u8 sub_80C0E04(u8 a0) +{ + return gUnknown_20399D4->field_4797[a0]; +} + +u8 sub_80C0E20(void) +{ + return gUnknown_20399D4->field_479B; +} + +u8 sub_80C0E34(void) +{ + return gUnknown_20399D4->field_479C; +} + +void sub_80C0E48(u8 a0) +{ + gUnknown_20399D4->field_479B = a0; +} + +void sub_80C0E5C(u8 a0) +{ + gUnknown_20399D4->field_479C = a0; +} -- cgit v1.2.3 From 20c5160bf7cc192ccd2957e497aa7b13c8e0546c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 3 Jan 2020 10:22:37 -0500 Subject: through sub_80C1058 --- asm/region_map.s | 260 ------------------------------------------------------ include/strings.h | 4 +- src/region_map.c | 100 ++++++++++++++++++++- 3 files changed, 98 insertions(+), 266 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index f0f1de990..07764a5e7 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,266 +5,6 @@ .text - thumb_func_start sub_80C0E70 -sub_80C0E70: @ 80C0E70 - push {r4-r7,lr} - adds r7, r2, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _080C0EA0 @ =gUnknown_20399D8 - movs r0, 0xE7 - lsls r0, 5 - bl AllocZeroed - str r0, [r4] - ldr r0, _080C0EA4 @ =0x00000846 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080C0EAC - ldr r0, [r4] - ldr r1, _080C0EA8 @ =0x00001ccc - adds r0, r1 - movs r1, 0x3 - b _080C0ED2 - .align 2, 0 -_080C0EA0: .4byte gUnknown_20399D8 -_080C0EA4: .4byte 0x00000846 -_080C0EA8: .4byte 0x00001ccc -_080C0EAC: - ldr r0, _080C0EC4 @ =0x00000845 - bl FlagGet - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080C0ECC - ldr r0, [r4] - ldr r2, _080C0EC8 @ =0x00001ccc - adds r0, r2 - movs r1, 0x1 - b _080C0ED2 - .align 2, 0 -_080C0EC4: .4byte 0x00000845 -_080C0EC8: .4byte 0x00001ccc -_080C0ECC: - ldr r0, [r4] - ldr r3, _080C0F14 @ =0x00001ccc - adds r0, r3 -_080C0ED2: - strb r1, [r0] - ldr r4, _080C0F18 @ =gUnknown_20399D8 - ldr r2, [r4] - ldr r0, _080C0F1C @ =0x000018b8 - adds r1, r2, r0 - movs r0, 0x58 - strh r0, [r1] - ldr r3, _080C0F20 @ =0x00001cc4 - adds r1, r2, r3 - movs r0, 0x98 - strh r0, [r1] - ldr r1, _080C0F14 @ =0x00001ccc - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080C0F2C - cmp r0, 0x2 - bgt _080C0F4C - cmp r0, 0x1 - bne _080C0F4C - ldr r0, _080C0F24 @ =gUnknown_83F1084 - movs r3, 0x80 - lsls r3, 5 - adds r1, r2, r3 - bl LZ77UnCompWram - ldr r0, [r4] - ldr r1, _080C0F28 @ =0x00001cce - adds r0, r1 - movs r1, 0x6 - strh r1, [r0] - b _080C0F64 - .align 2, 0 -_080C0F14: .4byte 0x00001ccc -_080C0F18: .4byte gUnknown_20399D8 -_080C0F1C: .4byte 0x000018b8 -_080C0F20: .4byte 0x00001cc4 -_080C0F24: .4byte gUnknown_83F1084 -_080C0F28: .4byte 0x00001cce -_080C0F2C: - ldr r0, _080C0F44 @ =gUnknown_83F1190 - movs r3, 0x80 - lsls r3, 5 - adds r1, r2, r3 - bl LZ77UnCompWram - ldr r0, [r4] - ldr r1, _080C0F48 @ =0x00001cce - adds r0, r1 - movs r1, 0x4 - strh r1, [r0] - b _080C0F64 - .align 2, 0 -_080C0F44: .4byte gUnknown_83F1190 -_080C0F48: .4byte 0x00001cce -_080C0F4C: - ldr r0, _080C0FB4 @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r3, _080C0FB8 @ =0x00001cce - adds r2, r1, r3 - movs r0, 0x3 - strh r0, [r2] - ldr r0, _080C0FBC @ =gUnknown_83F0F1C - movs r2, 0x80 - lsls r2, 5 - adds r1, r2 - bl LZ77UnCompWram -_080C0F64: - ldr r0, _080C0FC0 @ =gUnknown_83F0580 - ldr r4, _080C0FB4 @ =gUnknown_20399D8 - ldr r1, [r4] - bl LZ77UnCompWram - ldr r0, [r4] - ldr r3, _080C0FC4 @ =0x00001cc8 - adds r0, r3 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _080C0FC8 @ =0x00001cca - adds r0, r1 - strb r6, [r0] - ldr r0, [r4] - ldr r2, _080C0FCC @ =0x00001cd0 - adds r0, r2 - str r7, [r0] - bl sub_80C0E34 - ldr r1, [r4] - ldr r3, _080C0FD0 @ =0x00001ccb - adds r1, r3 - strb r0, [r1] - movs r0, 0 - bl sub_80C4AAC - ldr r0, _080C0FD4 @ =gUnknown_8418EB0 - bl sub_80C4E74 - ldr r1, _080C0FD8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C0FDC @ =sub_80C1098 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C0FB4: .4byte gUnknown_20399D8 -_080C0FB8: .4byte 0x00001cce -_080C0FBC: .4byte gUnknown_83F0F1C -_080C0FC0: .4byte gUnknown_83F0580 -_080C0FC4: .4byte 0x00001cc8 -_080C0FC8: .4byte 0x00001cca -_080C0FCC: .4byte 0x00001cd0 -_080C0FD0: .4byte 0x00001ccb -_080C0FD4: .4byte gUnknown_8418EB0 -_080C0FD8: .4byte gTasks -_080C0FDC: .4byte sub_80C1098 - thumb_func_end sub_80C0E70 - - thumb_func_start sub_80C0FE0 -sub_80C0FE0: @ 80C0FE0 - push {lr} - bl sub_80C4BE4 - movs r0, 0x1B - movs r1, 0x4 - movs r2, 0x40 - bl sub_80C4C2C - ldr r0, _080C100C @ =gUnknown_20399D8 - ldr r0, [r0] - ldr r1, _080C1010 @ =0x00001ccd - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C4C5C - pop {r0} - bx r0 - .align 2, 0 -_080C100C: .4byte gUnknown_20399D8 -_080C1010: .4byte 0x00001ccd - thumb_func_end sub_80C0FE0 - - thumb_func_start sub_80C1014 -sub_80C1014: @ 80C1014 - push {r4,lr} - ldr r4, _080C1028 @ =gUnknown_20399D8 - ldr r0, [r4] - ldr r2, _080C102C @ =0x00001ccd - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xF - bls _080C1030 - movs r0, 0x1 - b _080C104C - .align 2, 0 -_080C1028: .4byte gUnknown_20399D8 -_080C102C: .4byte 0x00001ccd -_080C1030: - ldrb r1, [r1] - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C4C5C - ldr r1, [r4] - ldr r0, _080C1054 @ =0x00001ccd - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x2 - strb r0, [r1] - movs r0, 0 -_080C104C: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C1054: .4byte 0x00001ccd - thumb_func_end sub_80C1014 - - thumb_func_start sub_80C1058 -sub_80C1058: @ 80C1058 - push {lr} - ldr r2, _080C106C @ =gUnknown_20399D8 - ldr r0, [r2] - ldr r3, _080C1070 @ =0x00001ccd - adds r1, r0, r3 - ldrb r0, [r1] - cmp r0, 0x1 - bhi _080C1074 - movs r0, 0x1 - b _080C108E - .align 2, 0 -_080C106C: .4byte gUnknown_20399D8 -_080C1070: .4byte 0x00001ccd -_080C1074: - subs r0, 0x2 - strb r0, [r1] - ldr r0, [r2] - ldr r1, _080C1094 @ =0x00001ccd - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C4C5C - movs r0, 0 -_080C108E: - pop {r1} - bx r1 - .align 2, 0 -_080C1094: .4byte 0x00001ccd - thumb_func_end sub_80C1058 - thumb_func_start sub_80C1098 sub_80C1098: @ 80C1098 push {r4,r5,lr} diff --git a/include/strings.h b/include/strings.h index 6cca52507..4e8abffc3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1007,8 +1007,8 @@ extern const u8 gText_LinkCableBattles[]; extern const u8 gUnknown_8418EB5[]; extern const u8 gUnknown_8418E8B[]; extern const u8 gUnknown_8418E8D[]; -extern const u8 gUnknown_8418E8B[]; -extern const u8 gUnknown_8418EA7[]; extern const u8 gUnknown_8418E95[]; +extern const u8 gUnknown_8418EA7[]; +extern const u8 gUnknown_8418EB0[]; #endif //GUARD_STRINGS_H diff --git a/src/region_map.c b/src/region_map.c index adcf0dcb6..d4f1ed99e 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -41,13 +41,27 @@ struct UnkStruct_20399D4 u8 filler_47B2[6]; TaskFunc field_47B8; MainCallback field_47BC; -}; +}; // size = 0x47C0 struct UnkStruct_20399D8 { - u8 filler_0000[0x1CCA]; + u8 field_0000[0x1000]; + u8 field_1000[0x4B0]; + u8 filler_14B0[0x408]; + u16 field_18B8; + u8 filler_18BA[0x40A]; + u16 field_1CC4; + u8 filler_1CC6[0x2]; + u8 field_1CC8; + u8 field_1CC9; u8 field_1CCA; -}; + u8 field_1CCB; + u8 field_1CCC; + u8 field_1CCD; + u16 field_1CCE; + TaskFunc field_1CD0; + u8 filler_1CD4[0xC]; +}; // size = 0x1CE0 EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; @@ -77,9 +91,12 @@ void sub_80C0AB8(void); void sub_80C0B18(void); void sub_80C0B9C(void); void sub_80C0BB0(void); +void sub_80C1098(u8 taskId); +void sub_80C4AAC(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); void sub_80C4C48(u16 a0); +void sub_80C4C5C(u16 a0); void sub_80C4C74(u16 a0, u16 a1); void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); @@ -117,14 +134,17 @@ u16 sub_80C3514(void); u16 sub_80C3580(void); #include "data/text/map_section_names.h" - extern const u16 gUnknown_83EF23C[]; extern const u16 gUnknown_83EF2DC[]; extern const u32 gUnknown_83EF61C[]; +extern const u32 gUnknown_83F0580[]; extern const u32 gUnknown_83F089C[]; extern const u32 gUnknown_83F0AFC[]; extern const u32 gUnknown_83F0C0C[]; extern const u32 gUnknown_83F0CF0[]; +extern const u32 gUnknown_83F0F1C[]; +extern const u32 gUnknown_83F1084[]; +extern const u32 gUnknown_83F1190[]; extern const u32 gUnknown_83F1978[]; extern const u32 gUnknown_83F19A0[]; extern const struct BgTemplate gUnknown_83F1A50[4]; @@ -751,3 +771,75 @@ void sub_80C0E5C(u8 a0) { gUnknown_20399D4->field_479C = a0; } + +void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc) +{ + gUnknown_20399D8 = AllocZeroed(sizeof(struct UnkStruct_20399D8)); + if (FlagGet(FLAG_SYS_SEVII_MAP_4567)) + gUnknown_20399D8->field_1CCC = 3; + else if (FlagGet(FLAG_SYS_SEVII_MAP_123)) + gUnknown_20399D8->field_1CCC = 1; + else + gUnknown_20399D8->field_1CCC = 0; + gUnknown_20399D8->field_18B8 = 0x58; + gUnknown_20399D8->field_1CC4 = 0x98; + switch (gUnknown_20399D8->field_1CCC) + { + case 1: + LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->field_1000); + gUnknown_20399D8->field_1CCE = 6; + break; + case 2: // never reached + LZ77UnCompWram(gUnknown_83F1190, gUnknown_20399D8->field_1000); + gUnknown_20399D8->field_1CCE = 4; + break; + case 3: + default: + gUnknown_20399D8->field_1CCE = 3; + LZ77UnCompWram(gUnknown_83F0F1C, gUnknown_20399D8->field_1000); + break; + } + LZ77UnCompWram(gUnknown_83F0580, gUnknown_20399D8->field_0000); + gUnknown_20399D8->field_1CC8 = 0; + gUnknown_20399D8->field_1CCA = a0; + gUnknown_20399D8->field_1CD0 = taskFunc; + gUnknown_20399D8->field_1CCB = sub_80C0E34(); + sub_80C4AAC(0); + sub_80C4E74(gUnknown_8418EB0); + gTasks[taskId].func = sub_80C1098; +} + +void sub_80C0FE0(void) +{ + sub_80C4BE4(); + sub_80C4C2C(27, 4, 64); + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); +} + +bool8 sub_80C1014(void) +{ + if (gUnknown_20399D8->field_1CCD < 16) + { + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); + gUnknown_20399D8->field_1CCD += 2; + return FALSE; + } + else + { + return TRUE; + } +} + +bool8 sub_80C1058(void) +{ + if (gUnknown_20399D8->field_1CCD >= 2) + { + gUnknown_20399D8->field_1CCD -= 2; + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); + return FALSE; + } + else + { + return TRUE; + } +} -- cgit v1.2.3 From e2fb677742395ed35e08e89f8c1bdfea5555438a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 3 Jan 2020 11:00:37 -0500 Subject: through sub_80C144C --- asm/region_map.s | 465 ------------------------------------------------------ include/strings.h | 1 + src/region_map.c | 206 ++++++++++++++++++++++-- 3 files changed, 194 insertions(+), 478 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 07764a5e7..55ddb5f9d 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,471 +5,6 @@ .text - thumb_func_start sub_80C1098 -sub_80C1098: @ 80C1098 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C10BC @ =gUnknown_20399D8 - ldr r0, [r1] - ldr r3, _080C10C0 @ =0x00001cc8 - adds r0, r3 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0xC - bls _080C10B0 - b _080C1274 -_080C10B0: - lsls r0, 2 - ldr r1, _080C10C4 @ =_080C10C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C10BC: .4byte gUnknown_20399D8 -_080C10C0: .4byte 0x00001cc8 -_080C10C4: .4byte _080C10C8 - .align 2, 0 -_080C10C8: - .4byte _080C10FC - .4byte _080C111C - .4byte _080C112E - .4byte _080C1146 - .4byte _080C115C - .4byte _080C1168 - .4byte _080C1180 - .4byte _080C1192 - .4byte _080C11B0 - .4byte _080C11BE - .4byte _080C1220 - .4byte _080C1236 - .4byte _080C1254 -_080C10FC: - bl sub_80C08E0 - ldr r0, _080C1110 @ =gUnknown_8418EBC - bl sub_80C4E18 - ldr r0, _080C1114 @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r0, _080C1118 @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C1110: .4byte gUnknown_8418EBC -_080C1114: .4byte gUnknown_20399D8 -_080C1118: .4byte 0x00001cc8 -_080C111C: - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 5 - movs r0, 0x2 - movs r3, 0 - bl LoadBgTiles - ldr r1, [r4] - b _080C125E -_080C112E: - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 5 - adds r1, r0 - movs r0, 0x2 - bl sub_80C1324 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r1, [r4] - b _080C125E -_080C1146: - bl sub_80C0CA0 - ldr r0, _080C1154 @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r0, _080C1158 @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C1154: .4byte gUnknown_20399D8 -_080C1158: .4byte 0x00001cc8 -_080C115C: - bl sub_80C0FE0 - movs r0, 0x2 - bl ShowBg - b _080C125A -_080C1168: - bl sub_80C08F4 - ldr r0, _080C1178 @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r0, _080C117C @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C1178: .4byte gUnknown_20399D8 -_080C117C: .4byte 0x00001cc8 -_080C1180: - bl sub_80C1014 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - bl sub_80C1390 - b _080C125A -_080C1192: - bl sub_80C144C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - ldr r0, _080C11A8 @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r0, _080C11AC @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C11A8: .4byte gUnknown_20399D8 -_080C11AC: .4byte 0x00001cc8 -_080C11B0: - bl sub_80C16D0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - b _080C125A -_080C11BE: - bl sub_80C1478 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - ldr r5, _080C1214 @ =gUnknown_20399D8 - ldr r0, [r5] - ldr r4, _080C1218 @ =0x00001cca - adds r0, r4 - ldrb r0, [r0] - bl sub_80C0E48 - bl sub_80C0E34 - ldr r1, [r5] - adds r1, r4 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _080C120C - movs r0, 0 - bl sub_80C4324 - 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 -_080C120C: - ldr r1, [r5] - ldr r0, _080C121C @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C1214: .4byte gUnknown_20399D8 -_080C1218: .4byte 0x00001cca -_080C121C: .4byte 0x00001cc8 -_080C1220: - bl sub_80C12EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - bl sub_80C1880 - bl sub_80C0FE0 - b _080C125A -_080C1236: - bl sub_80C1058 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C127A - ldr r0, _080C124C @ =gUnknown_20399D8 - ldr r1, [r0] - ldr r0, _080C1250 @ =0x00001cc8 - adds r1, r0 - b _080C1262 - .align 2, 0 -_080C124C: .4byte gUnknown_20399D8 -_080C1250: .4byte 0x00001cc8 -_080C1254: - movs r0, 0 - bl sub_80C3154 -_080C125A: - ldr r0, _080C126C @ =gUnknown_20399D8 - ldr r1, [r0] -_080C125E: - ldr r3, _080C1270 @ =0x00001cc8 - adds r1, r3 -_080C1262: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C127A - .align 2, 0 -_080C126C: .4byte gUnknown_20399D8 -_080C1270: .4byte 0x00001cc8 -_080C1274: - adds r0, r2, 0 - bl sub_80C1280 -_080C127A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C1098 - - thumb_func_start sub_80C1280 -sub_80C1280: @ 80C1280 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C12D4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r4, _080C12D8 @ =gUnknown_20399D8 - ldr r0, [r4] - ldr r2, _080C12DC @ =0x00001cd0 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - movs r0, 0x2 - bl HideBg - ldr r0, _080C12E0 @ =gUnknown_8418EB5 - bl sub_80C4E18 - ldr r0, _080C12E4 @ =gUnknown_8418EA7 - bl sub_80C4E74 - bl sub_80C0AB8 - bl sub_80C0B9C - ldr r1, _080C12E8 @ =gUnknown_83F1B0C+16 - movs r0, 0 - bl sub_80C4CF0 - ldr r0, [r4] - cmp r0, 0 - beq _080C12CC - bl Free - movs r0, 0 - str r0, [r4] -_080C12CC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C12D4: .4byte gTasks -_080C12D8: .4byte gUnknown_20399D8 -_080C12DC: .4byte 0x00001cd0 -_080C12E0: .4byte gUnknown_8418EB5 -_080C12E4: .4byte gUnknown_8418EA7 -_080C12E8: .4byte gUnknown_83F1B0C+16 - thumb_func_end sub_80C1280 - - thumb_func_start sub_80C12EC -sub_80C12EC: @ 80C12EC - push {lr} - ldr r0, _080C1308 @ =gUnknown_20399D8 - ldr r0, [r0] - ldr r2, _080C130C @ =0x00001cdc - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0 - bne _080C1310 - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - b _080C131E - .align 2, 0 -_080C1308: .4byte gUnknown_20399D8 -_080C130C: .4byte 0x00001cdc -_080C1310: - subs r0, 0x1 - strh r0, [r1] - ldrh r1, [r1] - movs r0, 0x54 - bl SetGpuReg - movs r0, 0 -_080C131E: - pop {r1} - bx r1 - thumb_func_end sub_80C12EC - - thumb_func_start sub_80C1324 -sub_80C1324: @ 80C1324 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r0, 24 - ldr r1, _080C1360 @ =gUnknown_20399D4 - lsrs r0, 12 - ldr r2, _080C1364 @ =0x00001796 - adds r0, r2 - ldr r1, [r1] - adds r6, r1, r0 - movs r1, 0 -_080C1338: - movs r2, 0 - lsls r5, r1, 16 - asrs r1, r5, 16 - lsls r3, r1, 5 - lsls r0, r1, 4 - subs r0, r1 - lsls r4, r0, 1 -_080C1346: - lsls r0, r2, 16 - asrs r1, r0, 16 - adds r2, r0, 0 - cmp r1, 0x1D - bgt _080C1368 - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - adds r1, r4, r1 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - b _080C1370 - .align 2, 0 -_080C1360: .4byte gUnknown_20399D4 -_080C1364: .4byte 0x00001796 -_080C1368: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r7] -_080C1370: - strh r1, [r0] - movs r1, 0x80 - lsls r1, 9 - adds r0, r2, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x1F - ble _080C1346 - adds r0, r5, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080C1338 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C1324 - - thumb_func_start sub_80C1390 -sub_80C1390: @ 80C1390 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C1428 @ =gUnknown_20399D8 - ldr r2, [r0] - ldr r1, _080C142C @ =0x00001cd4 - adds r0, r2, r1 - movs r1, 0x48 - strh r1, [r0] - ldr r5, _080C1430 @ =0xffff0000 - ldr r0, [sp] - ands r0, r5 - orrs r0, r1 - str r0, [sp] - ldr r0, _080C1434 @ =0x00001cce - adds r3, r2, r0 - ldr r1, _080C1438 @ =0x00001cca - adds r0, r2, r1 - ldrb r1, [r0] - lsls r1, 2 - ldrh r3, [r3] - adds r1, r3 - lsls r1, 3 - ldr r0, _080C143C @ =0x00001cd6 - adds r4, r2, r0 - strh r1, [r4] - lsls r1, 16 - ldr r3, _080C1440 @ =0x0000ffff - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - ldr r1, _080C1444 @ =0x00001cd8 - adds r0, r2, r1 - movs r1, 0xA8 - strh r1, [r0] - ldr r0, [sp, 0x4] - ands r0, r5 - orrs r0, r1 - str r0, [sp, 0x4] - ldrh r1, [r4] - adds r1, 0x20 - ldr r0, _080C1448 @ =0x00001cda - adds r2, r0 - strh r1, [r2] - ands r1, r3 - lsls r1, 16 - ldr r0, [sp, 0x4] - ands r0, r3 - orrs r0, r1 - str r0, [sp, 0x4] - bl sub_80C4BE4 - movs r0, 0 - movs r1, 0x15 - movs r2, 0xC0 - bl sub_80C4C2C - movs r0, 0x1F - movs r1, 0x15 - bl sub_80C4C74 - movs r0, 0x3F - bl sub_80C4C88 - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C - movs r0, 0x1 - mov r1, sp - bl sub_80C4CF0 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C1428: .4byte gUnknown_20399D8 -_080C142C: .4byte 0x00001cd4 -_080C1430: .4byte 0xffff0000 -_080C1434: .4byte 0x00001cce -_080C1438: .4byte 0x00001cca -_080C143C: .4byte 0x00001cd6 -_080C1440: .4byte 0x0000ffff -_080C1444: .4byte 0x00001cd8 -_080C1448: .4byte 0x00001cda - thumb_func_end sub_80C1390 - - thumb_func_start sub_80C144C -sub_80C144C: @ 80C144C - push {lr} - ldr r0, _080C1460 @ =gUnknown_20399D8 - ldr r0, [r0] - ldr r2, _080C1464 @ =0x00001cdc - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0x5 - bls _080C1468 - movs r0, 0x1 - b _080C1474 - .align 2, 0 -_080C1460: .4byte gUnknown_20399D8 -_080C1464: .4byte 0x00001cdc -_080C1468: - adds r0, 0x1 - strh r0, [r1] - ldrh r0, [r1] - bl sub_80C4C48 - movs r0, 0 -_080C1474: - pop {r1} - bx r1 - thumb_func_end sub_80C144C - thumb_func_start sub_80C1478 sub_80C1478: @ 80C1478 push {r4-r7,lr} diff --git a/include/strings.h b/include/strings.h index 4e8abffc3..9895ffbf8 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1010,5 +1010,6 @@ extern const u8 gUnknown_8418E8D[]; extern const u8 gUnknown_8418E95[]; extern const u8 gUnknown_8418EA7[]; extern const u8 gUnknown_8418EB0[]; +extern const u8 gUnknown_8418EBC[]; #endif //GUARD_STRINGS_H diff --git a/src/region_map.c b/src/region_map.c index d4f1ed99e..8394b59d6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -46,7 +46,7 @@ struct UnkStruct_20399D4 struct UnkStruct_20399D8 { u8 field_0000[0x1000]; - u8 field_1000[0x4B0]; + u16 field_1000[0x258]; u8 filler_14B0[0x408]; u16 field_18B8; u8 filler_18BA[0x40A]; @@ -60,9 +60,18 @@ struct UnkStruct_20399D8 u8 field_1CCD; u16 field_1CCE; TaskFunc field_1CD0; - u8 filler_1CD4[0xC]; + u16 field_1CD4[4]; + u16 field_1CDC; }; // size = 0x1CE0 +struct UnkStruct_80C4CF0 +{ + u16 v0; + u16 v2; + u16 v4; + u16 v6; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA void * gUnknown_20399DC = NULL; @@ -91,7 +100,19 @@ void sub_80C0AB8(void); void sub_80C0B18(void); void sub_80C0B9C(void); void sub_80C0BB0(void); +void sub_80C0CC8(u8 bg, u16 *map); +bool8 sub_80C0E04(u8 a0); +u8 sub_80C0E20(void); +void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C1098(u8 taskId); +void sub_80C1280(u8 taskId); +bool8 sub_80C12EC(void); +void sub_80C1324(u8 bg, u16 *map); +void sub_80C1390(void); +bool8 sub_80C144C(void); +bool8 sub_80C1478(void); +bool8 sub_80C16D0(void); +void sub_80C1880(void); void sub_80C4AAC(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); @@ -100,11 +121,7 @@ void sub_80C4C5C(u16 a0); void sub_80C4C74(u16 a0, u16 a1); void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); -void sub_80C0CC8(u8 bg, u16 *map); -void sub_80C4CF0(u8 a0, const u16 *a1); -bool8 sub_80C0E04(u8 a0); -u8 sub_80C0E20(void); -void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C2208(u8 taskId, TaskFunc taskFunc); void sub_80C25BC(void); @@ -152,7 +169,7 @@ extern const struct WindowTemplate gUnknown_83F1A60[]; extern const u8 gUnknown_83F1A90[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; -extern const u16 gUnknown_83F1B0C[3][4]; +extern const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3]; extern const u8 *const gUnknown_83F1A9C[]; extern const u8 *const gUnknown_83F1CAC[]; @@ -651,8 +668,8 @@ void sub_80C0AB8(void) sub_80C4C48(6); sub_80C4C74(0x39, 0x39); sub_80C4C88(0x1b); - sub_80C4CF0(0, gUnknown_83F1B0C[0]); - sub_80C4CF0(1, gUnknown_83F1B0C[1]); + sub_80C4CF0(0, &gUnknown_83F1B0C[0]); + sub_80C4CF0(1, &gUnknown_83F1B0C[1]); sub_80C4C9C(0, 0); if (sub_80C3580() != MAPSEC_NONE) sub_80C4C9C(1, 0); @@ -664,7 +681,7 @@ void sub_80C0B18(void) FillWindowPixelBuffer(0, PIXEL_FILL(0)); if (sub_80C3520() == MAPSEC_NONE) { - sub_80C4CF0(0, gUnknown_83F1B0C[2]); + sub_80C4CF0(0, &gUnknown_83F1B0C[2]); } else { @@ -672,13 +689,13 @@ void sub_80C0B18(void) AddTextPrinterParameterized3(0, 2, 2, 2, gUnknown_83F1A90, 0, gUnknown_20399D4->field_0000); PutWindowTilemap(0); CopyWindowToVram(0, 2); - sub_80C4CF0(0, gUnknown_83F1B0C[0]); + sub_80C4CF0(0, &gUnknown_83F1B0C[0]); } } void sub_80C0B9C(void) { - sub_80C4CF0(1, gUnknown_83F1B0C[1]); + sub_80C4CF0(1, &gUnknown_83F1B0C[1]); } void sub_80C0BB0(void) @@ -843,3 +860,166 @@ bool8 sub_80C1058(void) return TRUE; } } + +void sub_80C1098(u8 taskId) +{ + switch (gUnknown_20399D8->field_1CC8) + { + case 0: + sub_80C08E0(); + sub_80C4E18(gUnknown_8418EBC); + gUnknown_20399D8->field_1CC8++; + break; + case 1: + LoadBgTiles(2, gUnknown_20399D8->field_0000, 0x1000, 0x000); + gUnknown_20399D8->field_1CC8++; + break; + case 2: + sub_80C1324(2, gUnknown_20399D8->field_1000); + CopyBgTilemapBufferToVram(2); + gUnknown_20399D8->field_1CC8++; + break; + case 3: + sub_80C0CA0(); + gUnknown_20399D8->field_1CC8++; + break; + case 4: + sub_80C0FE0(); + ShowBg(2); + gUnknown_20399D8->field_1CC8++; + break; + case 5: + sub_80C08F4(); + gUnknown_20399D8->field_1CC8++; + break; + case 6: + if (sub_80C1014() == TRUE) + { + sub_80C1390(); + gUnknown_20399D8->field_1CC8++; + } + break; + case 7: + if (sub_80C144C() == TRUE) + { + gUnknown_20399D8->field_1CC8++; + } + break; + case 8: + if (sub_80C16D0() == TRUE) + { + gUnknown_20399D8->field_1CC8++; + } + break; + case 9: + if (sub_80C1478() == TRUE) + { + sub_80C0E48(gUnknown_20399D8->field_1CCA); + if (sub_80C0E34() == gUnknown_20399D8->field_1CCA) + { + sub_80C4324(0); + sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0); + sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0); + } + gUnknown_20399D8->field_1CC8++; + } + break; + case 10: + if (sub_80C12EC() == TRUE) + { + sub_80C1880(); + sub_80C0FE0(); + gUnknown_20399D8->field_1CC8++; + } + break; + case 11: + if (sub_80C1058() == TRUE) + { + gUnknown_20399D8->field_1CC8++; + } + break; + case 12: + sub_80C3154(0); + gUnknown_20399D8->field_1CC8++; + break; + default: + sub_80C1280(taskId); + break; + } +} + +void sub_80C1280(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399D8->field_1CD0; + HideBg(2); + sub_80C4E18(gUnknown_8418EB5); + sub_80C4E74(gUnknown_8418EA7); + sub_80C0AB8(); + sub_80C0B9C(); + sub_80C4CF0(0, &gUnknown_83F1B0C[2]); + if (gUnknown_20399D8 != NULL) + { + FREE_AND_SET_NULL(gUnknown_20399D8); + } +} + +bool8 sub_80C12EC(void) +{ + if (gUnknown_20399D8->field_1CDC != 0) + { + gUnknown_20399D8->field_1CDC--; + SetGpuReg(REG_OFFSET_BLDY, gUnknown_20399D8->field_1CDC); + return FALSE; + } + else + { + SetGpuReg(REG_OFFSET_BLDY, 0); + return TRUE; + } +} + +void sub_80C1324(u8 bg, u16 *map) +{ + s16 i; + s16 j; + u16 *buffer = gUnknown_20399D4->field_1796[bg]; + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++) + { + if (j < 30) + buffer[32 * i + j] = map[30 * i + j]; + else + buffer[32 * i + j] = map[0]; + } + } +} + +void sub_80C1390(void) +{ + 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; + sub_80C4BE4(); + sub_80C4C2C(0, 0x15, 0xc0); + sub_80C4C74(0x1f, 0x15); + sub_80C4C88(0x3f); + sub_80C4C9C(1, 0); + sub_80C4CF0(1, &data); +} + +bool8 sub_80C144C(void) +{ + if (gUnknown_20399D8->field_1CDC < 6) + { + gUnknown_20399D8->field_1CDC++; + sub_80C4C48(gUnknown_20399D8->field_1CDC); + return FALSE; + } + else + { + return TRUE; + } +} -- cgit v1.2.3 From e58e6689b83d1bbcdae1009bc752aa37680a744f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 3 Jan 2020 16:04:43 -0500 Subject: through sub_80C1920 --- asm/region_map.s | 608 ------------------------------------------------------ include/strings.h | 1 + src/region_map.c | 191 ++++++++++++++++- 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; +} -- cgit v1.2.3 From 2c825017e6a2e78374ccd97337580c15c2503a23 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 4 Jan 2020 13:12:22 -0500 Subject: through sub_80C1A94 --- asm/region_map.s | 304 ------------------------------------------- include/map_preview_screen.h | 1 + include/strings.h | 1 + src/region_map.c | 116 ++++++++++++++++- 4 files changed, 117 insertions(+), 305 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index ceb2213d1..ab3e5be1b 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,310 +5,6 @@ .text - thumb_func_start sub_80C195C -sub_80C195C: @ 80C195C - push {r4-r6,lr} - adds r6, r2, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _080C19E0 @ =gUnknown_20399DC - ldr r0, _080C19E4 @ =0x00003e28 - bl AllocZeroed - str r0, [r4] - bl sub_80C3580 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB8 - bne _080C197C - movs r0, 0xBC -_080C197C: - bl sub_80F8544 - ldr r1, [r4] - movs r2, 0xF5 - lsls r2, 6 - adds r1, r2 - str r0, [r1] - cmp r0, 0 - bne _080C199E - movs r0, 0x8A - bl sub_80F8544 - ldr r1, [r4] - movs r3, 0xF5 - lsls r3, 6 - adds r1, r3 - str r0, [r1] -_080C199E: - ldr r0, [r4] - ldr r1, _080C19E8 @ =0x00003d48 - adds r0, r1 - movs r2, 0 - strb r2, [r0] - ldr r0, [r4] - ldr r3, _080C19EC @ =0x00003d4a - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - subs r3, 0x6 - adds r1, r0, r3 - str r6, [r1] - ldr r1, _080C19F0 @ =0x00003e14 - adds r0, r1 - strh r2, [r0] - movs r0, 0 - bl sub_80C4AAC - bl sub_80C4BE4 - bl sub_80C0CA0 - ldr r1, _080C19F4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C19F8 @ =sub_80C1A94 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C19E0: .4byte gUnknown_20399DC -_080C19E4: .4byte 0x00003e28 -_080C19E8: .4byte 0x00003d48 -_080C19EC: .4byte 0x00003d4a -_080C19F0: .4byte 0x00003e14 -_080C19F4: .4byte gTasks -_080C19F8: .4byte sub_80C1A94 - thumb_func_end sub_80C195C - - thumb_func_start sub_80C19FC -sub_80C19FC: @ 80C19FC - push {lr} - ldr r0, _080C1A18 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r2, _080C1A1C @ =0x00003d4a - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080C1A3A - cmp r0, 0x1 - bgt _080C1A20 - cmp r0, 0 - beq _080C1A2A - b _080C1A72 - .align 2, 0 -_080C1A18: .4byte gUnknown_20399DC -_080C1A1C: .4byte 0x00003d4a -_080C1A20: - cmp r0, 0x2 - beq _080C1A50 - cmp r0, 0x3 - beq _080C1A5E - b _080C1A72 -_080C1A2A: - movs r2, 0xF5 - lsls r2, 6 - adds r0, r1, r2 - ldr r0, [r0] - ldr r0, [r0, 0x4] - bl LZ77UnCompWram - b _080C1A76 -_080C1A3A: - movs r2, 0xF5 - lsls r2, 6 - adds r0, r1, r2 - ldr r0, [r0] - ldr r0, [r0, 0x8] - movs r2, 0xE1 - lsls r2, 6 - adds r1, r2 - bl LZ77UnCompWram - b _080C1A76 -_080C1A50: - movs r2, 0xE1 - lsls r2, 6 - movs r0, 0x2 - movs r3, 0 - bl LoadBgTiles - b _080C1A76 -_080C1A5E: - movs r2, 0xF5 - lsls r2, 6 - adds r0, r1, r2 - ldr r0, [r0] - ldr r0, [r0, 0xC] - movs r1, 0xD0 - movs r2, 0x60 - bl LoadPalette - b _080C1A76 -_080C1A72: - movs r0, 0x1 - b _080C1A86 -_080C1A76: - ldr r0, _080C1A8C @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1A90 @ =0x00003d4a - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C1A86: - pop {r1} - bx r1 - .align 2, 0 -_080C1A8C: .4byte gUnknown_20399DC -_080C1A90: .4byte 0x00003d4a - thumb_func_end sub_80C19FC - - thumb_func_start sub_80C1A94 -sub_80C1A94: @ 80C1A94 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C1AB8 @ =gUnknown_20399DC - ldr r0, [r1] - ldr r3, _080C1ABC @ =0x00003d48 - adds r0, r3 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x9 - bls _080C1AAC - b _080C1BD0 -_080C1AAC: - lsls r0, 2 - ldr r1, _080C1AC0 @ =_080C1AC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1AB8: .4byte gUnknown_20399DC -_080C1ABC: .4byte 0x00003d48 -_080C1AC0: .4byte _080C1AC4 - .align 2, 0 -_080C1AC4: - .4byte _080C1AEC - .4byte _080C1B04 - .4byte _080C1B12 - .4byte _080C1B34 - .4byte _080C1B54 - .4byte _080C1B5C - .4byte _080C1B74 - .4byte _080C1B84 - .4byte _080C1B9C - .4byte _080C1BBC -_080C1AEC: - bl sub_80C08E0 - ldr r0, _080C1AFC @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1B00 @ =0x00003d48 - adds r1, r0 - b _080C1BCA - .align 2, 0 -_080C1AFC: .4byte gUnknown_20399DC -_080C1B00: .4byte 0x00003d48 -_080C1B04: - bl sub_80C19FC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C1BD0 - b _080C1BC2 -_080C1B12: - bl sub_80C1E94 - ldr r0, _080C1B28 @ =gUnknown_8418E9E - bl sub_80C4E74 - ldr r0, _080C1B2C @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1B30 @ =0x00003d48 - adds r1, r0 - b _080C1BCA - .align 2, 0 -_080C1B28: .4byte gUnknown_8418E9E -_080C1B2C: .4byte gUnknown_20399DC -_080C1B30: .4byte 0x00003d48 -_080C1B34: - ldr r1, [r4] - movs r3, 0xE1 - lsls r3, 6 - adds r1, r3 - movs r0, 0x2 - bl sub_80C1E78 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r1, [r4] - ldr r0, _080C1B50 @ =0x00003d48 - adds r1, r0 - b _080C1BCA - .align 2, 0 -_080C1B50: .4byte 0x00003d48 -_080C1B54: - movs r0, 0x2 - bl ShowBg - b _080C1BC2 -_080C1B5C: - bl sub_80C08F4 - ldr r0, _080C1B6C @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1B70 @ =0x00003d48 - adds r1, r0 - b _080C1BCA - .align 2, 0 -_080C1B6C: .4byte gUnknown_20399DC -_080C1B70: .4byte 0x00003d48 -_080C1B74: - movs r0, 0 - bl sub_80C1F80 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C1BD0 - b _080C1BC2 -_080C1B84: - ldr r0, _080C1B94 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C1B98 @ =sub_80C1BE0 - str r0, [r1] - b _080C1BD0 - .align 2, 0 -_080C1B94: .4byte gTasks -_080C1B98: .4byte sub_80C1BE0 -_080C1B9C: - movs r0, 0x1 - bl sub_80C1F80 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C1BD0 - ldr r0, _080C1BB4 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1BB8 @ =0x00003d48 - adds r1, r0 - b _080C1BCA - .align 2, 0 -_080C1BB4: .4byte gUnknown_20399DC -_080C1BB8: .4byte 0x00003d48 -_080C1BBC: - adds r0, r2, 0 - bl sub_80C1E14 -_080C1BC2: - ldr r0, _080C1BD8 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r3, _080C1BDC @ =0x00003d48 - adds r1, r3 -_080C1BCA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080C1BD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C1BD8: .4byte gUnknown_20399DC -_080C1BDC: .4byte 0x00003d48 - thumb_func_end sub_80C1A94 - thumb_func_start sub_80C1BE0 sub_80C1BE0: @ 80C1BE0 push {r4-r7,lr} diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 5ab5584e5..c4e2fa70c 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -49,5 +49,6 @@ void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); bool32 sub_80F83B0(void); +const struct MapPreviewScreen * sub_80F8544(u8 mapsec); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/strings.h b/include/strings.h index 56aa2ec1a..cf26e63fd 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1008,6 +1008,7 @@ extern const u8 gUnknown_8418EB5[]; extern const u8 gUnknown_8418E8B[]; extern const u8 gUnknown_8418E8D[]; extern const u8 gUnknown_8418E95[]; +extern const u8 gUnknown_8418E9E[]; extern const u8 gUnknown_8418EA7[]; extern const u8 gUnknown_8418EB0[]; extern const u8 gUnknown_8418EBC[]; diff --git a/src/region_map.c b/src/region_map.c index f654ae0cf..a42a9183d 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -13,6 +13,7 @@ #include "menu.h" #include "string_util.h" #include "strings.h" +#include "map_preview_screen.h" #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" @@ -84,9 +85,23 @@ struct UnkStruct_83F1B3C const u8 *field_8; }; +struct UnkStruct_20399DC +{ + u16 field_0000[0x1C20]; + u16 field_3840[0x280]; + const struct MapPreviewScreen * field_3D40; + TaskFunc field_3D44; + u8 field_3D48; + u8 field_3D49; + u8 field_3D4A; + u8 filler_3D4B[0xC9]; + u16 field_3E14; + u8 filler_3E16[0x12]; +}; // size = 0x3E28 + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; -EWRAM_DATA void * gUnknown_20399DC = NULL; +EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; EWRAM_DATA void * gUnknown_20399E0 = NULL; EWRAM_DATA void * gUnknown_20399E4 = NULL; EWRAM_DATA void * gUnknown_20399E8 = NULL; @@ -127,6 +142,12 @@ 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_80C1A94(u8 taskId); +void sub_80C1BE0(u8 taskId); +void sub_80C1E14(u8 taskId); +void sub_80C1E94(void); +void sub_80C1E78(u8 bgId, const u16 * tilemap); +bool8 sub_80C1F80(u8 a0); void sub_80C4AAC(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); @@ -1198,3 +1219,96 @@ const u8 *sub_80C1920(u16 a0) } return gUnknown_8418EC3; } + +void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc) +{ + u8 r0; + gUnknown_20399DC = AllocZeroed(sizeof(struct UnkStruct_20399DC)); + r0 = sub_80C3580(); + if (r0 == MAPSEC_TANOBY_CHAMBERS) + r0 = MAPSEC_MONEAN_CHAMBER; + gUnknown_20399DC->field_3D40 = sub_80F8544(r0); + if (gUnknown_20399DC->field_3D40 == NULL) + gUnknown_20399DC->field_3D40 = sub_80F8544(MAPSEC_ROCK_TUNNEL); + gUnknown_20399DC->field_3D48 = 0; + gUnknown_20399DC->field_3D4A = 0; + gUnknown_20399DC->field_3D44 = taskFunc; + gUnknown_20399DC->field_3E14 = 0; + sub_80C4AAC(0); + sub_80C4BE4(); + sub_80C0CA0(); + gTasks[taskId].func = sub_80C1A94; +} + +bool8 sub_80C19FC(void) +{ + switch (gUnknown_20399DC->field_3D4A) + { + case 0: + LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilesptr, gUnknown_20399DC->field_0000); + break; + case 1: + LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilemapptr, gUnknown_20399DC->field_3840); + break; + case 2: + LoadBgTiles(2, gUnknown_20399DC->field_0000, 0x3840, 0x000); + break; + case 3: + LoadPalette(gUnknown_20399DC->field_3D40->palptr, 0xD0, 0x60); + break; + default: + return TRUE; + } + gUnknown_20399DC->field_3D4A++; + return FALSE; +} + +void sub_80C1A94(u8 taskId) +{ + switch (gUnknown_20399DC->field_3D48) + { + case 0: + sub_80C08E0(); + gUnknown_20399DC->field_3D48++; + break; + case 1: + if (sub_80C19FC() == TRUE) + gUnknown_20399DC->field_3D48++; + break; + case 2: + sub_80C1E94(); + sub_80C4E74(gUnknown_8418E9E); + gUnknown_20399DC->field_3D48++; + break; + case 3: + sub_80C1E78(2, gUnknown_20399DC->field_3840); + CopyBgTilemapBufferToVram(2); + gUnknown_20399DC->field_3D48++; + break; + case 4: + ShowBg(2); + gUnknown_20399DC->field_3D48++; + break; + case 5: + sub_80C08F4(); + gUnknown_20399DC->field_3D48++; + break; + case 6: + if (sub_80C1F80(0) == TRUE) + gUnknown_20399DC->field_3D48++; + break; + case 7: + gTasks[taskId].func = sub_80C1BE0; + break; + case 8: + if (sub_80C1F80(1) == TRUE) + { + gUnknown_20399DC->field_3D48++; + } + break; + case 9: + sub_80C1E14(taskId); + gUnknown_20399DC->field_3D48++; + break; + } +} -- cgit v1.2.3 From 5cc480bc1765abaaadad2ddd2109a808c7fb960d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 4 Jan 2020 13:40:57 -0500 Subject: through sub_80C1E78 --- asm/region_map.s | 322 ------------------------------------------------------- src/region_map.c | 90 +++++++++++++++- 2 files changed, 88 insertions(+), 324 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index ab3e5be1b..0228baa3e 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,328 +5,6 @@ .text - thumb_func_start sub_80C1BE0 -sub_80C1BE0: @ 80C1BE0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C1C08 @ =gUnknown_20399DC - ldr r0, [r1] - ldr r3, _080C1C0C @ =0x00003d49 - adds r0, r3 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080C1BFE - b _080C1DF0 -_080C1BFE: - lsls r0, 2 - ldr r1, _080C1C10 @ =_080C1C14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1C08: .4byte gUnknown_20399DC -_080C1C0C: .4byte 0x00003d49 -_080C1C10: .4byte _080C1C14 - .align 2, 0 -_080C1C14: - .4byte _080C1C28 - .4byte _080C1C58 - .4byte _080C1C80 - .4byte _080C1CA8 - .4byte _080C1DA0 -_080C1C28: - ldr r1, [r3] - ldr r0, _080C1C48 @ =0x00003e0e - adds r2, r1, r0 - ldr r0, _080C1C4C @ =0x00000133 - strh r0, [r2] - ldr r3, _080C1C50 @ =0x00003e10 - adds r2, r1, r3 - subs r0, 0x33 - strh r0, [r2] - ldr r0, _080C1C54 @ =0x00003e12 - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2] - subs r3, 0xC7 - b _080C1DD6 - .align 2, 0 -_080C1C48: .4byte 0x00003e0e -_080C1C4C: .4byte 0x00000133 -_080C1C50: .4byte 0x00003e10 -_080C1C54: .4byte 0x00003e12 -_080C1C58: - ldr r0, [r3] - ldr r1, _080C1C7C @ =0x00003d4c - adds r0, r1 - ldrb r1, [r0] - adds r2, r1, 0x1 - strb r2, [r0] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x28 - bhi _080C1C6E - b _080C1DFE -_080C1C6E: - ldr r0, [r3] - ldr r1, _080C1C7C @ =0x00003d4c - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, [r3] - b _080C1DD4 - .align 2, 0 -_080C1C7C: .4byte 0x00003d4c -_080C1C80: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x2 - bl PutWindowTilemap - ldr r0, _080C1CA0 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1CA4 @ =0x00003d49 - adds r1, r0 - b _080C1DD8 - .align 2, 0 -_080C1CA0: .4byte gUnknown_20399DC -_080C1CA4: .4byte 0x00003d49 -_080C1CA8: - ldr r7, _080C1D10 @ =gUnknown_20399DC - ldr r2, [r7] - ldr r1, _080C1D14 @ =0x00003d4c - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x19 - bls _080C1D24 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C1920 - ldr r1, _080C1D18 @ =gUnknown_83F1A94 - str r1, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0 - bl AddTextPrinterParameterized3 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C18E0 - ldr r1, _080C1D1C @ =gUnknown_83F1A90 - str r1, [sp] - str r4, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0xE - bl AddTextPrinterParameterized3 - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, [r7] - ldr r3, _080C1D20 @ =0x00003d49 - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C1D80 - .align 2, 0 -_080C1D10: .4byte gUnknown_20399DC -_080C1D14: .4byte 0x00003d4c -_080C1D18: .4byte gUnknown_83F1A94 -_080C1D1C: .4byte gUnknown_83F1A90 -_080C1D20: .4byte 0x00003d49 -_080C1D24: - cmp r0, 0x14 - bls _080C1D80 - ldr r6, _080C1D88 @ =0x00003e0e - adds r1, r2, r6 - ldrh r0, [r1] - subs r0, 0x6 - strh r0, [r1] - ldr r4, _080C1D8C @ =0x00003e10 - adds r1, r2, r4 - ldrh r0, [r1] - subs r0, 0x5 - strh r0, [r1] - ldr r0, _080C1D90 @ =0x00003e12 - mov r8, r0 - adds r1, r2, r0 - ldrh r0, [r1] - subs r0, 0x5 - strh r0, [r1] - movs r1, 0xF5 - lsls r1, 6 - adds r0, r2, r1 - ldr r0, [r0] - ldr r0, [r0, 0xC] - ldr r5, _080C1D94 @ =0x00003d4e - adds r1, r2, r5 - movs r2, 0x30 - bl CpuSet - ldr r1, [r7] - adds r0, r1, r5 - adds r6, r1, r6 - ldrh r2, [r6] - adds r4, r1, r4 - ldrh r3, [r4] - add r1, r8 - ldrh r1, [r1] - str r1, [sp] - movs r1, 0x30 - bl TintPalette_CustomTone - ldr r0, [r7] - adds r0, r5 - movs r1, 0xD0 - movs r2, 0x60 - bl LoadPalette -_080C1D80: - ldr r0, _080C1D98 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r3, _080C1D9C @ =0x00003d4c - b _080C1DD6 - .align 2, 0 -_080C1D88: .4byte 0x00003e0e -_080C1D8C: .4byte 0x00003e10 -_080C1D90: .4byte 0x00003e12 -_080C1D94: .4byte 0x00003d4e -_080C1D98: .4byte gUnknown_20399DC -_080C1D9C: .4byte 0x00003d4c -_080C1DA0: - ldr r0, _080C1DE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080C1DB4 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C1DFE -_080C1DB4: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - ldr r2, _080C1DE4 @ =gUnknown_20399DC - ldr r1, [r2] - ldr r0, _080C1DE8 @ =0x00003d48 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r2] -_080C1DD4: - ldr r3, _080C1DEC @ =0x00003d49 -_080C1DD6: - adds r1, r3 -_080C1DD8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C1DFE - .align 2, 0 -_080C1DE0: .4byte gMain -_080C1DE4: .4byte gUnknown_20399DC -_080C1DE8: .4byte 0x00003d48 -_080C1DEC: .4byte 0x00003d49 -_080C1DF0: - ldr r0, _080C1E0C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C1E10 @ =sub_80C1A94 - str r0, [r1] -_080C1DFE: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1E0C: .4byte gTasks -_080C1E10: .4byte sub_80C1A94 - thumb_func_end sub_80C1BE0 - - thumb_func_start sub_80C1E14 -sub_80C1E14: @ 80C1E14 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C1E68 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r4, _080C1E6C @ =gUnknown_20399DC - ldr r0, [r4] - ldr r2, _080C1E70 @ =0x00003d44 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - movs r0, 0x2 - bl HideBg - movs r0, 0 - bl sub_80C4B30 - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0AB8 - bl sub_80C0B9C - ldr r0, _080C1E74 @ =gUnknown_8418E8D - bl sub_80C4E74 - ldr r0, [r4] - cmp r0, 0 - beq _080C1E60 - bl Free - movs r0, 0 - str r0, [r4] -_080C1E60: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C1E68: .4byte gTasks -_080C1E6C: .4byte gUnknown_20399DC -_080C1E70: .4byte 0x00003d44 -_080C1E74: .4byte gUnknown_8418E8D - thumb_func_end sub_80C1E14 - - thumb_func_start sub_80C1E78 -sub_80C1E78: @ 80C1E78 - push {lr} - sub sp, 0x8 - movs r0, 0x20 - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_80C1E78 - thumb_func_start sub_80C1E94 sub_80C1E94: @ 80C1E94 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index a42a9183d..74fdad074 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -94,7 +94,13 @@ struct UnkStruct_20399DC u8 field_3D48; u8 field_3D49; u8 field_3D4A; - u8 filler_3D4B[0xC9]; + u8 field_3D4B; + u8 field_3D4C; + u16 field_3D4E[0x30]; + u8 field_3DAE[0x60]; + u16 field_3E0E; + u16 field_3E10; + u16 field_3E12; u16 field_3E14; u8 filler_3E16[0x12]; }; // size = 0x3E28 @@ -142,6 +148,7 @@ 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_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C1A94(u8 taskId); void sub_80C1BE0(u8 taskId); void sub_80C1E14(u8 taskId); @@ -157,7 +164,6 @@ void sub_80C4C74(u16 a0, u16 a1); void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); -void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C2208(u8 taskId, TaskFunc taskFunc); void sub_80C25BC(void); void sub_80C2C1C(u8 taskId); @@ -176,6 +182,7 @@ u16 sub_80C3520(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); +void sub_80C4B30(u8 a0); void sub_80C4D30(void); void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); @@ -205,6 +212,7 @@ 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 gUnknown_83F1A94[]; extern const u8 *const gUnknown_83F1A9C[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; @@ -1312,3 +1320,81 @@ void sub_80C1A94(u8 taskId) break; } } + +void sub_80C1BE0(u8 taskId) +{ + switch (gUnknown_20399DC->field_3D49) + { + case 0: + gUnknown_20399DC->field_3E0E = 0x0133; + gUnknown_20399DC->field_3E10 = 0x0100; + gUnknown_20399DC->field_3E12 = 0x00F0; + gUnknown_20399DC->field_3D49++; + break; + case 1: + if (gUnknown_20399DC->field_3D4C++ > 40) + { + gUnknown_20399DC->field_3D4C = 0; + gUnknown_20399DC->field_3D49++; + } + break; + case 2: + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + PutWindowTilemap(2); + gUnknown_20399DC->field_3D49++; + break; + case 3: + if (gUnknown_20399DC->field_3D4C > 25) + { + AddTextPrinterParameterized3(2, 2, 4, 0, gUnknown_83F1A94, -1, sub_80C1920(sub_80C3580())); + AddTextPrinterParameterized3(2, 2, 2, 14, gUnknown_83F1A90, -1, sub_80C18E0(sub_80C3580())); + CopyWindowToVram(2, 3); + gUnknown_20399DC->field_3D49++; + } + else if (gUnknown_20399DC->field_3D4C > 20) + { + gUnknown_20399DC->field_3E0E -= 6; + gUnknown_20399DC->field_3E10 -= 5; + gUnknown_20399DC->field_3E12 -= 5; + CpuCopy16(gUnknown_20399DC->field_3D40->palptr, gUnknown_20399DC->field_3D4E, 0x60); + TintPalette_CustomTone(gUnknown_20399DC->field_3D4E, 0x30, gUnknown_20399DC->field_3E0E, gUnknown_20399DC->field_3E10, gUnknown_20399DC->field_3E12); + LoadPalette(gUnknown_20399DC->field_3D4E, 0xD0, 0x60); + } + gUnknown_20399DC->field_3D4C++; + break; + case 4: + if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) + { + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + gUnknown_20399DC->field_3D48++; + gUnknown_20399DC->field_3D49++; + } + break; + default: + gTasks[taskId].func = sub_80C1A94; + break; + } +} + +void sub_80C1E14(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399DC->field_3D44; + HideBg(2); + sub_80C4B30(0); + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0AB8(); + sub_80C0B9C(); + sub_80C4E74(gUnknown_8418E8D); + if (gUnknown_20399DC != NULL) + { + FREE_AND_SET_NULL(gUnknown_20399DC); + } +} + +void sub_80C1E78(u8 bgId, const u16 * tilemap) +{ + CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); +} -- cgit v1.2.3 From 550f7f8482407fa7bb8be24dd74df24cb3969284 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 4 Jan 2020 14:26:01 -0500 Subject: sub_80C1E94 --- asm/region_map.s | 109 ------------------------------------------------------- src/region_map.c | 33 ++++++++++++++++- 2 files changed, 31 insertions(+), 111 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 0228baa3e..61f676e34 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,115 +5,6 @@ .text - thumb_func_start sub_80C1E94 -sub_80C1E94: @ 80C1E94 - push {r4-r6,lr} - bl sub_80C4BE4 - movs r0, 0 - movs r1, 0x11 - movs r2, 0xC0 - bl sub_80C4C2C - ldr r5, _080C1F58 @ =gUnknown_20399DC - ldr r0, [r5] - ldr r1, _080C1F5C @ =0x00003e14 - adds r0, r1 - ldrh r0, [r0] - bl sub_80C4C48 - movs r0, 0 - movs r1, 0xD - bl sub_80C4C74 - movs r0, 0x3B - bl sub_80C4C88 - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C - bl sub_80C3508 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_80C3514 - lsls r0, 16 - ldr r5, [r5] - lsls r4, 3 - adds r4, 0x20 - ldr r2, _080C1F60 @ =0x00003e16 - adds r1, r5, r2 - strh r4, [r1] - lsrs r0, 13 - adds r0, 0x18 - ldr r3, _080C1F64 @ =0x00003e18 - adds r2, r5, r3 - strh r0, [r2] - ldrh r0, [r1] - adds r0, 0x8 - ldr r4, _080C1F68 @ =0x00003e1a - adds r3, r5, r4 - strh r0, [r3] - ldrh r0, [r2] - adds r0, 0x8 - ldr r6, _080C1F6C @ =0x00003e1c - adds r4, r5, r6 - strh r0, [r4] - ldrh r1, [r1] - movs r0, 0x10 - subs r0, r1 - cmp r0, 0 - bge _080C1F0E - adds r0, 0x7 -_080C1F0E: - asrs r1, r0, 3 - ldr r6, _080C1F70 @ =0x00003e1e - adds r0, r5, r6 - strh r1, [r0] - ldrh r1, [r2] - movs r0, 0x20 - subs r0, r1 - cmp r0, 0 - bge _080C1F22 - adds r0, 0x7 -_080C1F22: - asrs r1, r0, 3 - ldr r2, _080C1F74 @ =0x00003e20 - adds r0, r5, r2 - strh r1, [r0] - ldrh r1, [r3] - movs r0, 0xE0 - subs r0, r1 - cmp r0, 0 - bge _080C1F36 - adds r0, 0x7 -_080C1F36: - asrs r1, r0, 3 - ldr r3, _080C1F78 @ =0x00003e22 - adds r0, r5, r3 - strh r1, [r0] - ldrh r1, [r4] - movs r0, 0x88 - subs r0, r1 - cmp r0, 0 - bge _080C1F4A - adds r0, 0x7 -_080C1F4A: - asrs r1, r0, 3 - ldr r4, _080C1F7C @ =0x00003e24 - adds r0, r5, r4 - strh r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1F58: .4byte gUnknown_20399DC -_080C1F5C: .4byte 0x00003e14 -_080C1F60: .4byte 0x00003e16 -_080C1F64: .4byte 0x00003e18 -_080C1F68: .4byte 0x00003e1a -_080C1F6C: .4byte 0x00003e1c -_080C1F70: .4byte 0x00003e1e -_080C1F74: .4byte 0x00003e20 -_080C1F78: .4byte 0x00003e22 -_080C1F7C: .4byte 0x00003e24 - thumb_func_end sub_80C1E94 - thumb_func_start sub_80C1F80 sub_80C1F80: @ 80C1F80 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index 74fdad074..8a9d91205 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -97,12 +97,19 @@ struct UnkStruct_20399DC u8 field_3D4B; u8 field_3D4C; u16 field_3D4E[0x30]; - u8 field_3DAE[0x60]; + u8 filler_3DAE[0x60]; u16 field_3E0E; u16 field_3E10; u16 field_3E12; u16 field_3E14; - u8 filler_3E16[0x12]; + u16 field_3E16; + u16 field_3E18; + u16 field_3E1A; + u16 field_3E1C; + u16 field_3E1E; + u16 field_3E20; + u16 field_3E22; + u16 field_3E24; }; // size = 0x3E28 EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; @@ -1398,3 +1405,25 @@ void sub_80C1E78(u8 bgId, const u16 * tilemap) { CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); } + +void sub_80C1E94(void) +{ + u16 r4; + u16 r0; + sub_80C4BE4(); + sub_80C4C2C(0, 17, 192); + sub_80C4C48(gUnknown_20399DC->field_3E14); + sub_80C4C74(0, 13); + sub_80C4C88(59); + sub_80C4C9C(1, 0); + r4 = sub_80C3508(); + r0 = sub_80C3514(); + gUnknown_20399DC->field_3E16 = 8 * r4 + 32; + gUnknown_20399DC->field_3E18 = 8 * r0 + 24; + gUnknown_20399DC->field_3E1A = gUnknown_20399DC->field_3E16 + 8; + gUnknown_20399DC->field_3E1C = gUnknown_20399DC->field_3E18 + 8; + gUnknown_20399DC->field_3E1E = (0x10 - gUnknown_20399DC->field_3E16) / 8; + gUnknown_20399DC->field_3E20 = (0x20 - gUnknown_20399DC->field_3E18) / 8; + gUnknown_20399DC->field_3E22 = (0xE0 - gUnknown_20399DC->field_3E1A) / 8; + gUnknown_20399DC->field_3E24 = (0x88 - gUnknown_20399DC->field_3E1C) / 8; +} -- cgit v1.2.3 From a54c1b0664f9762298b068ff5bd1ddfed9eef62b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 4 Jan 2020 17:54:47 -0500 Subject: through sub_80C22C4 --- asm/region_map.s | 462 ------------------------------------------------------- src/region_map.c | 149 +++++++++++++++++- 2 files changed, 145 insertions(+), 466 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 61f676e34..afa6ecdb9 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,468 +5,6 @@ .text - thumb_func_start sub_80C1F80 -sub_80C1F80: @ 80C1F80 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - cmp r0, 0 - bne _080C2014 - ldr r1, _080C1FF0 @ =gUnknown_20399DC - ldr r2, [r1] - ldr r0, _080C1FF4 @ =0x00003d4b - adds r3, r2, r0 - ldrb r0, [r3] - adds r6, r1, 0 - cmp r0, 0x7 - bhi _080C2024 - ldr r4, _080C1FF8 @ =0x00003e16 - adds r1, r2, r4 - adds r4, 0x8 - adds r0, r2, r4 - ldrh r0, [r0] - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - ldr r0, _080C1FFC @ =0x00003e18 - adds r1, r2, r0 - ldr r4, _080C2000 @ =0x00003e20 - adds r0, r2, r4 - ldrh r0, [r0] - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - ldr r0, _080C2004 @ =0x00003e1a - adds r1, r2, r0 - ldr r4, _080C2008 @ =0x00003e22 - adds r0, r2, r4 - ldrh r0, [r0] - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - ldr r0, _080C200C @ =0x00003e1c - adds r1, r2, r0 - ldr r4, _080C2010 @ =0x00003e24 - adds r0, r2, r4 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r0, [r6] - subs r4, 0x10 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0x5 - bhi _080C2086 - adds r0, 0x1 - b _080C2084 - .align 2, 0 -_080C1FF0: .4byte gUnknown_20399DC -_080C1FF4: .4byte 0x00003d4b -_080C1FF8: .4byte 0x00003e16 -_080C1FFC: .4byte 0x00003e18 -_080C2000: .4byte 0x00003e20 -_080C2004: .4byte 0x00003e1a -_080C2008: .4byte 0x00003e22 -_080C200C: .4byte 0x00003e1c -_080C2010: .4byte 0x00003e24 -_080C2014: - ldr r1, _080C2028 @ =gUnknown_20399DC - ldr r3, [r1] - ldr r0, _080C202C @ =0x00003d4b - adds r5, r3, r0 - ldrb r0, [r5] - adds r6, r1, 0 - cmp r0, 0 - bne _080C2030 -_080C2024: - movs r0, 0x1 - b _080C20DE - .align 2, 0 -_080C2028: .4byte gUnknown_20399DC -_080C202C: .4byte 0x00003d4b -_080C2030: - ldr r1, _080C20E8 @ =0x00003e16 - adds r2, r3, r1 - ldr r4, _080C20EC @ =0x00003e1e - adds r1, r3, r4 - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r0, _080C20F0 @ =0x00003e18 - adds r2, r3, r0 - adds r4, 0x2 - adds r1, r3, r4 - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r0, _080C20F4 @ =0x00003e1a - adds r2, r3, r0 - adds r4, 0x2 - adds r1, r3, r4 - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r0, _080C20F8 @ =0x00003e1c - adds r2, r3, r0 - adds r4, 0x2 - adds r1, r3, r4 - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldrb r0, [r5] - subs r0, 0x1 - strb r0, [r5] - ldr r0, [r6] - ldr r2, _080C20FC @ =0x00003e14 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0 - beq _080C2086 - subs r0, 0x1 -_080C2084: - strh r0, [r1] -_080C2086: - ldr r4, [r6] - ldr r1, _080C20E8 @ =0x00003e16 - adds r0, r4, r1 - ldrh r0, [r0] - ldr r5, _080C2100 @ =0xffff0000 - ldr r2, [sp] - ands r2, r5 - orrs r2, r0 - str r2, [sp] - adds r1, 0x2 - adds r0, r4, r1 - ldrh r1, [r0] - lsls r1, 16 - ldr r3, _080C2104 @ =0x0000ffff - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldr r2, _080C20F4 @ =0x00003e1a - adds r4, r2 - ldrh r0, [r4] - ldr r1, [sp, 0x4] - ands r1, r5 - orrs r1, r0 - str r1, [sp, 0x4] - ldr r0, [r6] - ldr r4, _080C20F8 @ =0x00003e1c - adds r0, r4 - ldrh r0, [r0] - lsls r0, 16 - ands r3, r1 - orrs r3, r0 - str r3, [sp, 0x4] - movs r0, 0x1 - mov r1, sp - bl sub_80C4CF0 - ldr r0, [r6] - ldr r1, _080C20FC @ =0x00003e14 - adds r0, r1 - ldrh r0, [r0] - bl sub_80C4C48 - movs r0, 0 -_080C20DE: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080C20E8: .4byte 0x00003e16 -_080C20EC: .4byte 0x00003e1e -_080C20F0: .4byte 0x00003e18 -_080C20F4: .4byte 0x00003e1a -_080C20F8: .4byte 0x00003e1c -_080C20FC: .4byte 0x00003e14 -_080C2100: .4byte 0xffff0000 -_080C2104: .4byte 0x0000ffff - thumb_func_end sub_80C1F80 - - thumb_func_start nullsub_63 -nullsub_63: @ 80C2108 - bx lr - thumb_func_end nullsub_63 - - thumb_func_start sub_80C210C -sub_80C210C: @ 80C210C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - adds r5, r0, 0 - lsls r5, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080C21E0 @ =gUnknown_20399E0 - mov r9, r0 - ldr r6, [r0] - lsrs r5, 22 - adds r6, r5 - ldr r0, [r6] - str r0, [sp, 0x18] - movs r3, 0x80 - lsls r3, 3 - mov r10, r3 - add r0, sp, 0x18 - lsls r3, r1, 16 - mov r4, r10 - orrs r3, r4 - str r3, [r0, 0x4] - ldr r3, _080C21E4 @ =gUnknown_83EF3A4 - str r3, [sp, 0x20] - ldr r4, _080C21E8 @ =0xffff0000 - add r7, sp, 0x20 - mov r8, r7 - ldr r3, [r7, 0x4] - ands r3, r4 - orrs r3, r2 - str r3, [r7, 0x4] - mov r3, sp - movs r4, 0 - strh r1, [r3] - strh r2, [r3, 0x2] - ldr r3, _080C21EC @ =gUnknown_83F1C20 - str r3, [sp, 0x4] - ldr r3, _080C21F0 @ =gUnknown_83F1C30 - str r3, [sp, 0x8] - str r4, [sp, 0xC] - ldr r3, _080C21F4 @ =gDummySpriteAffineAnimTable - str r3, [sp, 0x10] - ldr r3, _080C21F8 @ =nullsub_63 - str r3, [sp, 0x14] - ldr r3, [r6] - movs r4, 0x81 - lsls r4, 3 - adds r3, r4 - strh r1, [r3] - ldr r1, [r6] - ldr r7, _080C21FC @ =0x0000040a - adds r1, r7 - strh r2, [r1] - bl LoadSpriteSheet - mov r0, r8 - bl LoadSpritePalette - mov r1, r9 - ldr r0, [r1] - adds r0, r5 - ldr r0, [r0] - ldr r2, _080C2200 @ =0x00000404 - adds r1, r0, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - subs r4, 0x2 - adds r0, r4 - movs r7, 0 - ldrsh r2, [r0, r7] - mov r0, sp - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r2, r9 - ldr r1, [r2] - adds r1, r5 - ldr r2, [r1] - add r2, r10 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080C2204 @ =gSprites - adds r1, r0 - str r1, [r2] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C21E0: .4byte gUnknown_20399E0 -_080C21E4: .4byte gUnknown_83EF3A4 -_080C21E8: .4byte 0xffff0000 -_080C21EC: .4byte gUnknown_83F1C20 -_080C21F0: .4byte gUnknown_83F1C30 -_080C21F4: .4byte gDummySpriteAffineAnimTable -_080C21F8: .4byte nullsub_63 -_080C21FC: .4byte 0x0000040a -_080C2200: .4byte 0x00000404 -_080C2204: .4byte gSprites - thumb_func_end sub_80C210C - - thumb_func_start sub_80C2208 -sub_80C2208: @ 80C2208 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, _080C22A4 @ =gUnknown_20399E0 - ldr r0, _080C22A8 @ =0x00000cd4 - bl AllocZeroed - str r0, [r4] - movs r6, 0 -_080C2224: - ldr r0, _080C22AC @ =0x0000040c - bl AllocZeroed - adds r5, r0, 0 - ldr r7, _080C22A4 @ =gUnknown_20399E0 - ldr r4, [r7] - lsls r0, r6, 2 - adds r4, r0 - str r5, [r4] - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 19 - adds r0, 0x68 - ldr r1, _080C22B0 @ =0x00000404 - adds r5, r1 - strh r0, [r5] - ldr r4, [r4] - adds r0, r6, 0 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 18 - adds r0, 0x28 - ldr r2, _080C22B4 @ =0x00000406 - adds r4, r2 - strh r0, [r4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x5 - bls _080C2224 - movs r0, 0 - bl sub_80C4AAC - bl sub_80C4BE4 - bl sub_80C24BC - movs r0, 0x1 - bl sub_80C0A88 - ldr r0, [r7] - ldr r1, _080C22B8 @ =0x00000cc8 - adds r0, r1 - mov r2, r9 - str r2, [r0] - ldr r1, _080C22BC @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C22C0 @ =sub_80C267C - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C22A4: .4byte gUnknown_20399E0 -_080C22A8: .4byte 0x00000cd4 -_080C22AC: .4byte 0x0000040c -_080C22B0: .4byte 0x00000404 -_080C22B4: .4byte 0x00000406 -_080C22B8: .4byte 0x00000cc8 -_080C22BC: .4byte gTasks -_080C22C0: .4byte sub_80C267C - thumb_func_end sub_80C2208 - - thumb_func_start sub_80C22C4 -sub_80C22C4: @ 80C22C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r2, 0x6 - bne _080C2310 - movs r3, 0 - ldr r7, _080C230C @ =gUnknown_20399E0 - movs r6, 0x80 - lsls r6, 3 - movs r1, 0x1 - adds r0, r4, 0 - ands r0, r1 - lsls r4, r0, 2 - movs r5, 0x5 - negs r5, r5 -_080C22E6: - ldr r0, [r7] - lsls r1, r3, 2 - adds r0, r1 - ldr r0, [r0] - adds r0, r6 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - orrs r0, r4 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _080C22E6 - b _080C2338 - .align 2, 0 -_080C230C: .4byte gUnknown_20399E0 -_080C2310: - ldr r0, _080C2340 @ =gUnknown_20399E0 - ldr r0, [r0] - lsls r1, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - adds r0, r1 - ldr r2, [r0] - adds r2, 0x3E - movs r0, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_080C2338: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2340: .4byte gUnknown_20399E0 - thumb_func_end sub_80C22C4 - thumb_func_start sub_80C2344 sub_80C2344: @ 80C2344 push {lr} diff --git a/src/region_map.c b/src/region_map.c index 8a9d91205..ff4262db5 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -112,10 +112,28 @@ struct UnkStruct_20399DC u16 field_3E24; }; // size = 0x3E28 +struct UnkStruct_20399E0_000 +{ + u16 field_000[0x200]; + struct Sprite * field_400; + s16 field_404; + s16 field_406; + u16 field_408; + u16 field_40A; +}; + +struct UnkStruct_20399E0 +{ + struct UnkStruct_20399E0_000 * field_000[6]; + u8 filler_018[0xCB0]; + TaskFunc field_CC8; + u8 filler_CCC[0x8]; +}; // size = 0xCD4 + 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 void * gUnknown_20399E0 = NULL; +EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL; EWRAM_DATA void * gUnknown_20399E4 = NULL; EWRAM_DATA void * gUnknown_20399E8 = NULL; EWRAM_DATA void * gUnknown_20399EC = NULL; @@ -161,7 +179,7 @@ void sub_80C1BE0(u8 taskId); void sub_80C1E14(u8 taskId); void sub_80C1E94(void); void sub_80C1E78(u8 bgId, const u16 * tilemap); -bool8 sub_80C1F80(u8 a0); +bool8 sub_80C1F80(bool8 a0); void sub_80C4AAC(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); @@ -172,6 +190,8 @@ void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); void sub_80C2208(u8 taskId, TaskFunc taskFunc); +void sub_80C24BC(void); +void sub_80C267C(u8 taskId); void sub_80C25BC(void); void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); @@ -203,6 +223,7 @@ u16 sub_80C3580(void); extern const u16 gUnknown_83EF23C[]; extern const u16 gUnknown_83EF2DC[]; extern const u16 gUnknown_83EF384[]; +extern const u16 gUnknown_83EF3A4[]; extern const u32 gUnknown_83EF3C4[]; extern const u32 gUnknown_83EF450[]; extern const u32 gUnknown_83EF61C[]; @@ -227,6 +248,8 @@ extern const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3]; extern const struct OamData gUnknown_83F1B24; extern const union AnimCmd *const gUnknown_83F1B38[]; extern const struct UnkStruct_83F1B3C gUnknown_83F1B3C[]; +extern const struct OamData gUnknown_83F1C20; +extern const union AnimCmd *const gUnknown_83F1C30[]; extern const u8 *const gUnknown_83F1CAC[]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) @@ -1309,14 +1332,14 @@ void sub_80C1A94(u8 taskId) gUnknown_20399DC->field_3D48++; break; case 6: - if (sub_80C1F80(0) == TRUE) + if (sub_80C1F80(FALSE) == TRUE) gUnknown_20399DC->field_3D48++; break; case 7: gTasks[taskId].func = sub_80C1BE0; break; case 8: - if (sub_80C1F80(1) == TRUE) + if (sub_80C1F80(TRUE) == TRUE) { gUnknown_20399DC->field_3D48++; } @@ -1427,3 +1450,121 @@ void sub_80C1E94(void) gUnknown_20399DC->field_3E22 = (0xE0 - gUnknown_20399DC->field_3E1A) / 8; gUnknown_20399DC->field_3E24 = (0x88 - gUnknown_20399DC->field_3E1C) / 8; } + +bool8 sub_80C1F80(bool8 a0) +{ + struct UnkStruct_80C4CF0 data; + + if (!a0) + { + if (gUnknown_20399DC->field_3D4B < 8) + { + gUnknown_20399DC->field_3E16 += gUnknown_20399DC->field_3E1E; + gUnknown_20399DC->field_3E18 += gUnknown_20399DC->field_3E20; + gUnknown_20399DC->field_3E1A += gUnknown_20399DC->field_3E22; + gUnknown_20399DC->field_3E1C += gUnknown_20399DC->field_3E24; + gUnknown_20399DC->field_3D4B++; + if (gUnknown_20399DC->field_3E14 < 6) + gUnknown_20399DC->field_3E14++; + } + else + { + return TRUE; + } + } + else + { + if (gUnknown_20399DC->field_3D4B == 0) + { + return TRUE; + } + else + { + gUnknown_20399DC->field_3E16 -= gUnknown_20399DC->field_3E1E; + gUnknown_20399DC->field_3E18 -= gUnknown_20399DC->field_3E20; + gUnknown_20399DC->field_3E1A -= gUnknown_20399DC->field_3E22; + gUnknown_20399DC->field_3E1C -= gUnknown_20399DC->field_3E24; + gUnknown_20399DC->field_3D4B--; + if (gUnknown_20399DC->field_3E14 > 0) + gUnknown_20399DC->field_3E14--; + } + } + data.v0 = gUnknown_20399DC->field_3E16; + data.v2 = gUnknown_20399DC->field_3E18; + data.v4 = gUnknown_20399DC->field_3E1A; + data.v6 = gUnknown_20399DC->field_3E1C; + sub_80C4CF0(1, &data); + sub_80C4C48(gUnknown_20399DC->field_3E14); + return FALSE; +} + +void nullsub_63(struct Sprite * sprite) +{ + +} + +void sub_80C210C(u8 a0, u8 a1, u8 a2) +{ + u8 spriteId; + struct SpriteSheet spriteSheet = { + .data = gUnknown_20399E0->field_000[a0], + .size = 0x400, + .tag = a1 + }; + struct SpritePalette spritePalette = { + .data = gUnknown_83EF3A4, + .tag = a2 + }; + struct SpriteTemplate template = { + .tileTag = a1, + .paletteTag = a2, + .oam = &gUnknown_83F1C20, + .anims = gUnknown_83F1C30, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_63 + }; + + gUnknown_20399E0->field_000[a0]->field_408 = a1; + gUnknown_20399E0->field_000[a0]->field_40A = a2; + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&template, gUnknown_20399E0->field_000[a0]->field_404, gUnknown_20399E0->field_000[a0]->field_406, 0); + gUnknown_20399E0->field_000[a0]->field_400 = &gSprites[spriteId]; + gSprites[spriteId].invisible = TRUE; +} + +void sub_80C2208(u8 taskId, TaskFunc taskFunc) +{ + u8 i; + + gUnknown_20399E0 = AllocZeroed(sizeof(struct UnkStruct_20399E0)); + for (i = 0; i < 6; i++) + { + gUnknown_20399E0->field_000[i] = AllocZeroed(sizeof(struct UnkStruct_20399E0_000)); + gUnknown_20399E0->field_000[i]->field_404 = 32 * (i / 3) + 0x68; + gUnknown_20399E0->field_000[i]->field_406 = 64 * (i % 3) + 0x28; + } + sub_80C4AAC(0); + sub_80C4BE4(); + sub_80C24BC(); + sub_80C0A88(1); + gUnknown_20399E0->field_CC8 = taskFunc; + gTasks[taskId].func = sub_80C267C; +} + +void sub_80C22C4(u8 a0, bool8 a1) +{ + u8 i; + if (a0 == 6) + { + for (i = 0; i < 6; i++) + { + gUnknown_20399E0->field_000[i]->field_400->invisible = a1; + } + } + else + { + gUnknown_20399E0->field_000[a0]->field_400->invisible = a1; + } +} -- cgit v1.2.3 From 70993fe308b327c0bf3b6947871e1432de9eca37 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 4 Jan 2020 20:38:46 -0500 Subject: through sub_80C2604 --- asm/region_map.s | 391 ------------------------------------------------------- src/region_map.c | 168 +++++++++++++++++++----- 2 files changed, 139 insertions(+), 420 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index afa6ecdb9..e8897693a 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,397 +5,6 @@ .text - thumb_func_start sub_80C2344 -sub_80C2344: @ 80C2344 - push {lr} - ldr r0, _080C2360 @ =gUnknown_20399E0 - ldr r0, [r0] - ldr r1, _080C2364 @ =0x00000ccd - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _080C2356 - b _080C249C -_080C2356: - lsls r0, 2 - ldr r1, _080C2368 @ =_080C236C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C2360: .4byte gUnknown_20399E0 -_080C2364: .4byte 0x00000ccd -_080C2368: .4byte _080C236C - .align 2, 0 -_080C236C: - .4byte _080C2390 - .4byte _080C23B0 - .4byte _080C23D0 - .4byte _080C23F0 - .4byte _080C2410 - .4byte _080C2430 - .4byte _080C2450 - .4byte _080C2468 - .4byte _080C2484 -_080C2390: - ldr r0, _080C23A8 @ =gUnknown_83F12CC - ldr r1, _080C23AC @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1] - bl LZ77UnCompWram - movs r0, 0 - movs r1, 0x4 - movs r2, 0x4 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C23A8: .4byte gUnknown_83F12CC -_080C23AC: .4byte gUnknown_20399E0 -_080C23B0: - ldr r0, _080C23C8 @ =gUnknown_83F1550 - ldr r1, _080C23CC @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1, 0x4] - bl LZ77UnCompWram - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0x5 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C23C8: .4byte gUnknown_83F1550 -_080C23CC: .4byte gUnknown_20399E0 -_080C23D0: - ldr r0, _080C23E8 @ =gUnknown_83F1738 - ldr r1, _080C23EC @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1, 0x8] - bl LZ77UnCompWram - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C23E8: .4byte gUnknown_83F1738 -_080C23EC: .4byte gUnknown_20399E0 -_080C23F0: - ldr r0, _080C2408 @ =gUnknown_83F13EC - ldr r1, _080C240C @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1, 0xC] - bl LZ77UnCompWram - movs r0, 0x3 - movs r1, 0x7 - movs r2, 0x7 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C2408: .4byte gUnknown_83F13EC -_080C240C: .4byte gUnknown_20399E0 -_080C2410: - ldr r0, _080C2428 @ =gUnknown_83F1640 - ldr r1, _080C242C @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1, 0x10] - bl LZ77UnCompWram - movs r0, 0x4 - movs r1, 0x8 - movs r2, 0x8 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C2428: .4byte gUnknown_83F1640 -_080C242C: .4byte gUnknown_20399E0 -_080C2430: - ldr r0, _080C2448 @ =gUnknown_83F1804 - ldr r1, _080C244C @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r1, [r1, 0x14] - bl LZ77UnCompWram - movs r0, 0x5 - movs r1, 0x9 - movs r2, 0x9 - bl sub_80C210C - b _080C24A0 - .align 2, 0 -_080C2448: .4byte gUnknown_83F1804 -_080C244C: .4byte gUnknown_20399E0 -_080C2450: - ldr r0, _080C2460 @ =gUnknown_83F0330 - ldr r1, _080C2464 @ =gUnknown_20399E0 - ldr r1, [r1] - adds r1, 0x18 - bl LZ77UnCompWram - b _080C24A0 - .align 2, 0 -_080C2460: .4byte gUnknown_83F0330 -_080C2464: .4byte gUnknown_20399E0 -_080C2468: - ldr r0, _080C2478 @ =gUnknown_83F0E0C - ldr r1, _080C247C @ =gUnknown_20399E0 - ldr r1, [r1] - ldr r2, _080C2480 @ =0x00000818 - adds r1, r2 - bl LZ77UnCompWram - b _080C24A0 - .align 2, 0 -_080C2478: .4byte gUnknown_83F0E0C -_080C247C: .4byte gUnknown_20399E0 -_080C2480: .4byte 0x00000818 -_080C2484: - ldr r0, _080C2498 @ =gUnknown_20399E0 - ldr r1, [r0] - adds r1, 0x18 - movs r2, 0x80 - lsls r2, 4 - movs r0, 0x1 - movs r3, 0 - bl LoadBgTiles - b _080C24A0 - .align 2, 0 -_080C2498: .4byte gUnknown_20399E0 -_080C249C: - movs r0, 0x1 - b _080C24B0 -_080C24A0: - ldr r0, _080C24B4 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C24B8 @ =0x00000ccd - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C24B0: - pop {r1} - bx r1 - .align 2, 0 -_080C24B4: .4byte gUnknown_20399E0 -_080C24B8: .4byte 0x00000ccd - thumb_func_end sub_80C2344 - - thumb_func_start sub_80C24BC -sub_80C24BC: @ 80C24BC - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C252C @ =gUnknown_20399E0 - ldr r3, [r0] - ldr r0, [r3] - ldr r2, _080C2530 @ =0x00000404 - adds r0, r2 - ldrh r0, [r0] - adds r0, 0x8 - lsls r0, 16 - ldr r4, _080C2534 @ =0xffff0000 - ldr r5, _080C2538 @ =0x0000ffff - lsrs r0, 16 - movs r1, 0x80 - lsls r1, 13 - orrs r0, r1 - str r0, [sp] - ldr r0, [r3, 0xC] - adds r0, r2 - ldrh r1, [r0] - subs r1, 0x8 - lsls r1, 16 - lsrs r1, 16 - ldr r0, [sp, 0x4] - ands r0, r4 - orrs r0, r1 - ands r0, r5 - movs r1, 0xA0 - lsls r1, 16 - orrs r0, r1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl sub_80C4C2C - movs r0, 0x12 - movs r1, 0 - bl sub_80C4C74 - movs r0, 0x10 - bl sub_80C4C88 - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C252C: .4byte gUnknown_20399E0 -_080C2530: .4byte 0x00000404 -_080C2534: .4byte 0xffff0000 -_080C2538: .4byte 0x0000ffff - thumb_func_end sub_80C24BC - - thumb_func_start sub_80C253C -sub_80C253C: @ 80C253C - push {lr} - sub sp, 0x8 - ldr r0, _080C258C @ =gUnknown_83F1C34 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - bl sub_80C4BE4 - movs r0, 0x2 - movs r1, 0x29 - movs r2, 0x80 - bl sub_80C4C2C - ldr r0, _080C2590 @ =gUnknown_20399E0 - ldr r0, [r0] - movs r1, 0xCD - lsls r1, 4 - adds r0, r1 - ldrb r0, [r0] - bl sub_80C4C48 - movs r0, 0x37 - movs r1, 0 - bl sub_80C4C74 - movs r0, 0x12 - bl sub_80C4C88 - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080C258C: .4byte gUnknown_83F1C34 -_080C2590: .4byte gUnknown_20399E0 - thumb_func_end sub_80C253C - - thumb_func_start sub_80C2594 -sub_80C2594: @ 80C2594 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C25B0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080C25B4 @ =gUnknown_20399E0 - ldr r0, [r0] - ldr r2, _080C25B8 @ =0x00000cc8 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080C25B0: .4byte gTasks -_080C25B4: .4byte gUnknown_20399E0 -_080C25B8: .4byte 0x00000cc8 - thumb_func_end sub_80C2594 - - thumb_func_start sub_80C25BC -sub_80C25BC: @ 80C25BC - push {r4-r6,lr} - bl sub_80C2604 - movs r5, 0 - ldr r6, _080C2600 @ =gUnknown_20399E0 -_080C25C6: - ldr r0, [r6] - lsls r4, r5, 2 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _080C25DE - bl Free - ldr r0, [r6] - adds r0, r4 - movs r1, 0 - str r1, [r0] -_080C25DE: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080C25C6 - ldr r4, _080C2600 @ =gUnknown_20399E0 - ldr r0, [r4] - cmp r0, 0 - beq _080C25F8 - bl Free - movs r0, 0 - str r0, [r4] -_080C25F8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C2600: .4byte gUnknown_20399E0 - thumb_func_end sub_80C25BC - - thumb_func_start sub_80C2604 -sub_80C2604: @ 80C2604 - push {r4-r7,lr} - movs r5, 0 - ldr r7, _080C2670 @ =gUnknown_20399E0 - movs r6, 0x80 - lsls r6, 3 -_080C260E: - ldr r2, [r7] - lsls r4, r5, 2 - adds r2, r4 - ldr r1, [r2] - adds r0, r1, r6 - ldr r0, [r0] - ldrh r0, [r0, 0x20] - ldr r3, _080C2674 @ =0x00000404 - adds r1, r3 - strh r0, [r1] - ldr r1, [r2] - adds r0, r1, r6 - ldr r0, [r0] - ldrh r0, [r0, 0x22] - adds r3, 0x2 - adds r1, r3 - strh r0, [r1] - ldr r0, [r2] - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _080C2660 - bl DestroySprite - ldr r0, [r7] - adds r0, r4 - ldr r0, [r0] - movs r1, 0x81 - lsls r1, 3 - adds r0, r1 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r7] - adds r0, r4 - ldr r0, [r0] - ldr r3, _080C2678 @ =0x0000040a - adds r0, r3 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080C2660: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080C260E - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2670: .4byte gUnknown_20399E0 -_080C2674: .4byte 0x00000404 -_080C2678: .4byte 0x0000040a - thumb_func_end sub_80C2604 - thumb_func_start sub_80C267C sub_80C267C: @ 80C267C push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index ff4262db5..c8b60cc36 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -125,11 +125,21 @@ struct UnkStruct_20399E0_000 struct UnkStruct_20399E0 { struct UnkStruct_20399E0_000 * field_000[6]; - u8 filler_018[0xCB0]; + u16 field_018[0x400]; + u16 field_818[0x258]; TaskFunc field_CC8; - u8 filler_CCC[0x8]; + u8 field_CCC; + u8 field_CCD; + u8 filler_CCE[2]; + u8 field_CD0; }; // size = 0xCD4 +#define FREE_IF_NOT_NULL(ptr) ({ \ + if (ptr) { \ + FREE_AND_SET_NULL(ptr); \ + } \ +}) + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; @@ -180,36 +190,37 @@ void sub_80C1E14(u8 taskId); void sub_80C1E94(void); void sub_80C1E78(u8 bgId, const u16 * tilemap); bool8 sub_80C1F80(bool8 a0); -void sub_80C4AAC(u8 a0); -void sub_80C4BE4(void); -void sub_80C4C2C(u8 a0, u16 a1, u16 a2); -void sub_80C4C48(u16 a0); -void sub_80C4C5C(u16 a0); -void sub_80C4C74(u16 a0, u16 a1); -void sub_80C4C88(u16 a0); -void sub_80C4C9C(u8 a0, u8 a1); -void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); void sub_80C2208(u8 taskId, TaskFunc taskFunc); void sub_80C24BC(void); void sub_80C267C(u8 taskId); void sub_80C25BC(void); +void sub_80C2604(void); void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); void sub_80C3154(u8 a0); void sub_80C3178(void); void sub_80C3188(void); -u8 sub_80C3AC8(u8 a0); u8 sub_80C3400(void); +u16 sub_80C3520(void); +u8 sub_80C3AC8(u8 a0); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); void sub_80C4324(u8 a0); void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C4348(void); -u16 sub_80C3520(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); void sub_80C4B30(u8 a0); +void sub_80C4AAC(u8 a0); +void sub_80C4BE4(void); +void sub_80C4C2C(u8 a0, u16 a1, u16 a2); +void sub_80C4C48(u16 a0); +void sub_80C4C5C(u16 a0); +void sub_80C4C74(u16 a0, u16 a1); +void sub_80C4C88(u16 a0); +void sub_80C4C9C(u8 a0, u8 a1); +void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); void sub_80C4D30(void); void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); @@ -227,6 +238,8 @@ extern const u16 gUnknown_83EF3A4[]; extern const u32 gUnknown_83EF3C4[]; extern const u32 gUnknown_83EF450[]; extern const u32 gUnknown_83EF61C[]; +extern const u32 gUnknown_83F0330[]; +extern const u32 gUnknown_83F0E0C[]; extern const u32 gUnknown_83F0580[]; extern const u32 gUnknown_83F089C[]; extern const u32 gUnknown_83F0AFC[]; @@ -235,6 +248,12 @@ extern const u32 gUnknown_83F0CF0[]; extern const u32 gUnknown_83F0F1C[]; extern const u32 gUnknown_83F1084[]; extern const u32 gUnknown_83F1190[]; +extern const u32 gUnknown_83F12CC[]; +extern const u32 gUnknown_83F13EC[]; +extern const u32 gUnknown_83F1550[]; +extern const u32 gUnknown_83F1640[]; +extern const u32 gUnknown_83F1738[]; +extern const u32 gUnknown_83F1804[]; extern const u32 gUnknown_83F1978[]; extern const u32 gUnknown_83F19A0[]; extern const struct BgTemplate gUnknown_83F1A50[4]; @@ -250,6 +269,7 @@ extern const union AnimCmd *const gUnknown_83F1B38[]; extern const struct UnkStruct_83F1B3C gUnknown_83F1B3C[]; extern const struct OamData gUnknown_83F1C20; extern const union AnimCmd *const gUnknown_83F1C30[]; +extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34; extern const u8 *const gUnknown_83F1CAC[]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) @@ -646,18 +666,12 @@ void sub_80C0820(u8 taskId) SetMainCallback2(gMain.savedCallback); else SetMainCallback2(gUnknown_20399D4->field_47BC); - if (gUnknown_20399D4 != NULL) - { - FREE_AND_SET_NULL(gUnknown_20399D4); - } + FREE_IF_NOT_NULL(gUnknown_20399D4); } void sub_80C0898(void) { - if (gUnknown_20399D4 != NULL) - { - FREE_AND_SET_NULL(gUnknown_20399D4); - } + FREE_IF_NOT_NULL(gUnknown_20399D4); } void sub_80C08B4(void) @@ -1036,10 +1050,7 @@ void sub_80C1280(u8 taskId) sub_80C0AB8(); sub_80C0B9C(); sub_80C4CF0(0, &gUnknown_83F1B0C[2]); - if (gUnknown_20399D8 != NULL) - { - FREE_AND_SET_NULL(gUnknown_20399D8); - } + FREE_IF_NOT_NULL(gUnknown_20399D8); } bool8 sub_80C12EC(void) @@ -1418,10 +1429,7 @@ void sub_80C1E14(u8 taskId) sub_80C0AB8(); sub_80C0B9C(); sub_80C4E74(gUnknown_8418E8D); - if (gUnknown_20399DC != NULL) - { - FREE_AND_SET_NULL(gUnknown_20399DC); - } + FREE_IF_NOT_NULL(gUnknown_20399DC); } void sub_80C1E78(u8 bgId, const u16 * tilemap) @@ -1568,3 +1576,105 @@ void sub_80C22C4(u8 a0, bool8 a1) gUnknown_20399E0->field_000[a0]->field_400->invisible = a1; } } + +bool8 sub_80C2344(void) +{ + switch (gUnknown_20399E0->field_CCD) + { + case 0: + LZ77UnCompWram(gUnknown_83F12CC, gUnknown_20399E0->field_000[0]->field_000); + sub_80C210C(0, 4, 4); + break; + case 1: + LZ77UnCompWram(gUnknown_83F1550, gUnknown_20399E0->field_000[1]->field_000); + sub_80C210C(1, 5, 5); + break; + case 2: + LZ77UnCompWram(gUnknown_83F1738, gUnknown_20399E0->field_000[2]->field_000); + sub_80C210C(2, 6, 6); + break; + case 3: + LZ77UnCompWram(gUnknown_83F13EC, gUnknown_20399E0->field_000[3]->field_000); + sub_80C210C(3, 7, 7); + break; + case 4: + LZ77UnCompWram(gUnknown_83F1640, gUnknown_20399E0->field_000[4]->field_000); + sub_80C210C(4, 8, 8); + break; + case 5: + LZ77UnCompWram(gUnknown_83F1804, gUnknown_20399E0->field_000[5]->field_000); + sub_80C210C(5, 9, 9); + break; + case 6: + LZ77UnCompWram(gUnknown_83F0330, gUnknown_20399E0->field_018); + break; + case 7: + LZ77UnCompWram(gUnknown_83F0E0C, gUnknown_20399E0->field_818); + break; + case 8: + LoadBgTiles(1, gUnknown_20399E0->field_018, BG_SCREEN_SIZE, 0x000); + break; + default: + return TRUE; + } + gUnknown_20399E0->field_CCD++; + return FALSE; +} + +void sub_80C24BC(void) +{ + struct UnkStruct_80C4CF0 data; + data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 8; + data.v2 = 0x10; + data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 8; + data.v6 = 0xA0; + sub_80C4C2C(0, 2, 0); + sub_80C4C74(18, 0); + sub_80C4C88(16); + sub_80C4CF0(0, &data); + sub_80C4C9C(0, 0); +} + +void sub_80C253C(void) +{ + struct UnkStruct_80C4CF0 data = gUnknown_83F1C34; + sub_80C4BE4(); + sub_80C4C2C(2, 41, 128); + sub_80C4C48(gUnknown_20399E0->field_CD0); + sub_80C4C74(55, 0); + sub_80C4C88(18); + sub_80C4CF0(0, &data); + sub_80C4C9C(0, 0); +} + +void sub_80C2594(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399E0->field_CC8; +} + +void sub_80C25BC(void) +{ + u8 i; + sub_80C2604(); + for (i = 0; i < 6; i++) + { + FREE_IF_NOT_NULL(gUnknown_20399E0->field_000[i]); + } + FREE_IF_NOT_NULL(gUnknown_20399E0); +} + +void sub_80C2604(void) +{ + u8 i; + for (i = 0; i < 6; i++) + { + gUnknown_20399E0->field_000[i]->field_404 = gUnknown_20399E0->field_000[i]->field_400->pos1.x; + gUnknown_20399E0->field_000[i]->field_406 = gUnknown_20399E0->field_000[i]->field_400->pos1.y; + if (gUnknown_20399E0->field_000[i]->field_400 != NULL) + { + DestroySprite(gUnknown_20399E0->field_000[i]->field_400); + FreeSpriteTilesByTag(gUnknown_20399E0->field_000[i]->field_408); + FreeSpritePaletteByTag(gUnknown_20399E0->field_000[i]->field_40A); + } + } +} -- cgit v1.2.3 From 29e7c9a8075acd376d2a1140917ea20d4aea7612 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 6 Jan 2020 10:45:11 -0500 Subject: sub_80C267C --- asm/region_map.s | 353 ------------------------------------------------------- src/region_map.c | 111 +++++++++++++++++ 2 files changed, 111 insertions(+), 353 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index e8897693a..8ecc9cbf6 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,359 +5,6 @@ .text - thumb_func_start sub_80C267C -sub_80C267C: @ 80C267C - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080C26A0 @ =gUnknown_20399E0 - ldr r0, [r1] - ldr r2, _080C26A4 @ =0x00000ccc - adds r0, r2 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0xD - bls _080C2696 - b _080C2990 -_080C2696: - lsls r0, 2 - ldr r1, _080C26A8 @ =_080C26AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C26A0: .4byte gUnknown_20399E0 -_080C26A4: .4byte 0x00000ccc -_080C26A8: .4byte _080C26AC - .align 2, 0 -_080C26AC: - .4byte _080C26E4 - .4byte _080C26FC - .4byte _080C270C - .4byte _080C272C - .4byte _080C2768 - .4byte _080C2788 - .4byte _080C27B4 - .4byte _080C27C4 - .4byte _080C27E4 - .4byte _080C281E - .4byte _080C2868 - .4byte _080C28A4 - .4byte _080C2928 - .4byte _080C296C -_080C26E4: - bl sub_80C08E0 - ldr r0, _080C26F4 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C26F8 @ =0x00000ccc - adds r1, r0 - b _080C297E - .align 2, 0 -_080C26F4: .4byte gUnknown_20399E0 -_080C26F8: .4byte 0x00000ccc -_080C26FC: - bl sub_80C2344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C270A - b _080C299A -_080C270A: - b _080C2976 -_080C270C: - ldr r1, [r4] - ldr r0, _080C2728 @ =0x00000818 - adds r1, r0 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - ldr r1, [r4] - b _080C297A - .align 2, 0 -_080C2728: .4byte 0x00000818 -_080C272C: - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - 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 - bl sub_80C08F4 - ldr r0, _080C2760 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2764 @ =0x00000ccc - adds r1, r0 - b _080C297E - .align 2, 0 -_080C2760: .4byte gUnknown_20399E0 -_080C2764: .4byte 0x00000ccc -_080C2768: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x6 - movs r1, 0 - bl sub_80C22C4 - bl sub_80C2B48 - b _080C2976 -_080C2788: - ldr r0, _080C27AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C2796 - b _080C299A -_080C2796: - ldr r1, [r4] - ldr r0, _080C27B0 @ =0x00000ccc - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0xF4 - bl PlaySE - b _080C299A - .align 2, 0 -_080C27AC: .4byte gPaletteFade -_080C27B0: .4byte 0x00000ccc -_080C27B4: - bl sub_80C29A4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C27C2 - b _080C299A -_080C27C2: - b _080C2976 -_080C27C4: - movs r0, 0 - bl sub_80C4324 - movs r0, 0 - bl sub_80C3154 - ldr r0, _080C27DC @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C27E0 @ =0x00000ccc - adds r1, r0 - b _080C297E - .align 2, 0 -_080C27DC: .4byte gUnknown_20399E0 -_080C27E0: .4byte 0x00000ccc -_080C27E4: - ldr r0, [r4] - movs r1, 0xCD - lsls r1, 4 - adds r0, r1 - movs r1, 0xF - strb r1, [r0] - bl sub_80C253C - movs r0, 0 - bl sub_80C0A88 - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C48BC - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C4960 - ldr r1, [r4] - b _080C297A -_080C281E: - ldr r0, _080C283C @ =gUnknown_8418EB5 - bl sub_80C4E18 - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080C2844 - ldr r0, _080C2840 @ =gUnknown_8418E8B - bl sub_80C4E74 - b _080C284A - .align 2, 0 -_080C283C: .4byte gUnknown_8418EB5 -_080C2840: .4byte gUnknown_8418E8B -_080C2844: - ldr r0, _080C285C @ =gUnknown_8418E8D - bl sub_80C4E74 -_080C284A: - movs r0, 0 - bl sub_80C4ED0 - ldr r0, _080C2860 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2864 @ =0x00000ccc - adds r1, r0 - b _080C297E - .align 2, 0 -_080C285C: .4byte gUnknown_8418E8D -_080C2860: .4byte gUnknown_20399E0 -_080C2864: .4byte 0x00000ccc -_080C2868: - ldr r4, _080C28A0 @ =gUnknown_83EF23C + 0x1E - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x30 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0x40 - movs r2, 0x2 - bl LoadPalette - b _080C2976 - .align 2, 0 -_080C28A0: .4byte gUnknown_83EF23C + 0x1E -_080C28A4: - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x2 - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x1 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - movs r3, 0x1 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3E - movs r2, 0x1C - movs r3, 0x1 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3F - movs r2, 0x1D - movs r3, 0x1 - bl FillBgTilemapBufferRect - movs r0, 0x1A - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3D - movs r2, 0x2 - movs r3, 0x1 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0xF4 - bl m4aSongNumStop - movs r0, 0x2A - bl PlaySE - ldr r0, _080C2920 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2924 @ =0x00000ccc - adds r1, r0 - b _080C297E - .align 2, 0 -_080C2920: .4byte gUnknown_20399E0 -_080C2924: .4byte 0x00000ccc -_080C2928: - ldr r0, [r4] - movs r2, 0xCD - lsls r2, 4 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x2 - bne _080C2958 - movs r0, 0x6 - movs r1, 0x1 - bl sub_80C22C4 - ldr r1, [r4] - ldr r0, _080C2954 @ =0x00000ccc - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl sub_80C4C48 - b _080C299A - .align 2, 0 -_080C2954: .4byte 0x00000ccc -_080C2958: - subs r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - movs r1, 0xCD - lsls r1, 4 - adds r0, r1 - ldrb r0, [r0] - bl sub_80C4C48 - b _080C299A -_080C296C: - movs r0, 0 - bl sub_80C4B30 - bl sub_80C0BB0 -_080C2976: - ldr r0, _080C2988 @ =gUnknown_20399E0 - ldr r1, [r0] -_080C297A: - ldr r2, _080C298C @ =0x00000ccc - adds r1, r2 -_080C297E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C299A - .align 2, 0 -_080C2988: .4byte gUnknown_20399E0 -_080C298C: .4byte 0x00000ccc -_080C2990: - bl sub_80C2604 - adds r0, r5, 0 - bl sub_80C2594 -_080C299A: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C267C thumb_func_start sub_80C29A4 sub_80C29A4: @ 80C29A4 diff --git a/src/region_map.c b/src/region_map.c index c8b60cc36..e13248640 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3,6 +3,7 @@ #include "gpu_regs.h" #include "scanline_effect.h" #include "task.h" +#include "m4a.h" #include "malloc.h" #include "overworld.h" #include "event_data.h" @@ -195,6 +196,8 @@ void sub_80C24BC(void); void sub_80C267C(u8 taskId); void sub_80C25BC(void); void sub_80C2604(void); +bool8 sub_80C29A4(void); +void sub_80C2B48(void); void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); void sub_80C3154(u8 a0); @@ -1678,3 +1681,111 @@ void sub_80C2604(void) } } } + +void sub_80C267C(u8 taskId) +{ + switch (gUnknown_20399E0->field_CCC) + { + case 0: + sub_80C08E0(); + gUnknown_20399E0->field_CCC++; + break; + case 1: + if (sub_80C2344() == TRUE) + gUnknown_20399E0->field_CCC++; + break; + case 2: + CopyToBgTilemapBufferRect(1, gUnknown_20399E0->field_818, 0, 0, 30, 20); + gUnknown_20399E0->field_CCC++; + break; + case 3: + CopyBgTilemapBufferToVram(1); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C08F4(); + gUnknown_20399E0->field_CCC++; + break; + case 4: + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C22C4(6, FALSE); + sub_80C2B48(); + gUnknown_20399E0->field_CCC++; + break; + case 5: + if (!gPaletteFade.active) + { + gUnknown_20399E0->field_CCC++; + PlaySE(SE_CARD3); + } + break; + case 6: + if (sub_80C29A4() == TRUE) + gUnknown_20399E0->field_CCC++; + break; + case 7: + sub_80C4324(0); + sub_80C3154(0); + gUnknown_20399E0->field_CCC++; + break; + case 8: + gUnknown_20399E0->field_CD0 = 15; + sub_80C253C(); + sub_80C0A88(0); + sub_80C48BC(sub_80C0E20(), 25, 0); + sub_80C4960(sub_80C0E20(), 25, 0); + gUnknown_20399E0->field_CCC++; + break; + case 9: + sub_80C4E18(gUnknown_8418EB5); + if (sub_80C3AC8(1) != 2) + sub_80C4E74(gUnknown_8418E8B); + else + sub_80C4E74(gUnknown_8418E8D); + sub_80C4ED0(FALSE); + gUnknown_20399E0->field_CCC++; + break; + case 10: + LoadPalette(&gUnknown_83EF23C[15], 0x00, 2); + LoadPalette(&gUnknown_83EF23C[15], 0x10, 2); + LoadPalette(&gUnknown_83EF23C[15], 0x20, 2); + LoadPalette(&gUnknown_83EF23C[15], 0x30, 2); + LoadPalette(&gUnknown_83EF23C[15], 0x40, 2); + gUnknown_20399E0->field_CCC++; + break; + case 11: + FillBgTilemapBufferRect(1, 0x002, 0, 1, 1, 1, 0x2); + FillBgTilemapBufferRect(1, 0x003, 1, 1, 1, 1, 0x2); + FillBgTilemapBufferRect(1, 0x03E, 28, 1, 1, 1, 0x2); + FillBgTilemapBufferRect(1, 0x03F, 29, 1, 1, 1, 0x2); + FillBgTilemapBufferRect(1, 0x03D, 2, 1, 26, 1, 0x2); + CopyBgTilemapBufferToVram(1); + m4aSongNumStop(SE_CARD3); + PlaySE(SE_HI_TURUN); + gUnknown_20399E0->field_CCC++; + break; + case 12: + if (gUnknown_20399E0->field_CD0 == 2) + { + sub_80C22C4(6, TRUE); + gUnknown_20399E0->field_CCC++; + sub_80C4C48(0); + } + else + { + gUnknown_20399E0->field_CD0--; + sub_80C4C48(gUnknown_20399E0->field_CD0); + } + break; + case 13: + sub_80C4B30(0); + sub_80C0BB0(); + gUnknown_20399E0->field_CCC++; + break; + default: + sub_80C2604(); + sub_80C2594(taskId); + break; + } +} -- cgit v1.2.3 From 232c3e5917f250ebb7dee2381f30df9eb9869a2f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 6 Jan 2020 11:39:17 -0500 Subject: through sub_80C2FC0 --- asm/region_map.s | 815 ------------------------------------------------------- src/region_map.c | 257 +++++++++++++++++- 2 files changed, 250 insertions(+), 822 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 8ecc9cbf6..429f77de8 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,821 +5,6 @@ .text - - thumb_func_start sub_80C29A4 -sub_80C29A4: @ 80C29A4 - push {r4,r5,lr} - bl sub_80C2B48 - ldr r0, _080C29C8 @ =gUnknown_20399E0 - ldr r2, [r0] - ldr r0, [r2] - movs r4, 0x80 - lsls r4, 3 - adds r0, r4 - ldr r1, [r0] - ldrh r3, [r1, 0x20] - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0 - bne _080C29CC - movs r0, 0x1 - b _080C2B3A - .align 2, 0 -_080C29C8: .4byte gUnknown_20399E0 -_080C29CC: - ldr r5, _080C2A18 @ =0x00000cce - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0x11 - bls _080C2A1C - subs r0, r3, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - b _080C2B28 - .align 2, 0 -_080C2A18: .4byte 0x00000cce -_080C2A1C: - cmp r0, 0xE - bls _080C2A60 - subs r0, r3, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - b _080C2B28 -_080C2A60: - cmp r0, 0xA - bls _080C2AA4 - subs r0, r3, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - b _080C2B28 -_080C2AA4: - cmp r0, 0x6 - bls _080C2AE8 - subs r0, r3, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - b _080C2B28 -_080C2AE8: - adds r0, r3, 0 - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 -_080C2B28: - strh r0, [r1, 0x20] - ldr r0, _080C2B40 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2B44 @ =0x00000cce - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C2B3A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080C2B40: .4byte gUnknown_20399E0 -_080C2B44: .4byte 0x00000cce - thumb_func_end sub_80C29A4 - - thumb_func_start sub_80C2B48 -sub_80C2B48: @ 80C2B48 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C2B90 @ =gUnknown_20399E0 - ldr r3, [r0] - ldr r0, [r3] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - ldr r4, _080C2B94 @ =0xffff0000 - ldr r5, _080C2B98 @ =0x0000ffff - ldrh r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 13 - orrs r0, r1 - str r0, [sp] - ldr r0, [r3, 0xC] - adds r0, r2 - ldr r0, [r0] - ldrh r1, [r0, 0x20] - ldr r0, [sp, 0x4] - ands r0, r4 - orrs r0, r1 - ands r0, r5 - movs r1, 0xA0 - lsls r1, 16 - orrs r0, r1 - str r0, [sp, 0x4] - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2B90: .4byte gUnknown_20399E0 -_080C2B94: .4byte 0xffff0000 -_080C2B98: .4byte 0x0000ffff - thumb_func_end sub_80C2B48 - - thumb_func_start sub_80C2B9C -sub_80C2B9C: @ 80C2B9C - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C2C0C @ =gUnknown_20399E0 - ldr r3, [r0] - ldr r0, [r3] - ldr r2, _080C2C10 @ =0x00000404 - adds r0, r2 - ldrh r0, [r0] - adds r0, 0x10 - lsls r0, 16 - ldr r4, _080C2C14 @ =0xffff0000 - ldr r5, _080C2C18 @ =0x0000ffff - lsrs r0, 16 - movs r1, 0x80 - lsls r1, 13 - orrs r0, r1 - str r0, [sp] - ldr r0, [r3, 0xC] - adds r0, r2 - ldrh r1, [r0] - subs r1, 0x10 - lsls r1, 16 - lsrs r1, 16 - ldr r0, [sp, 0x4] - ands r0, r4 - orrs r0, r1 - ands r0, r5 - movs r1, 0xA0 - lsls r1, 16 - orrs r0, r1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl sub_80C4C2C - movs r0, 0x12 - movs r1, 0 - bl sub_80C4C74 - movs r0, 0x10 - bl sub_80C4C88 - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2C0C: .4byte gUnknown_20399E0 -_080C2C10: .4byte 0x00000404 -_080C2C14: .4byte 0xffff0000 -_080C2C18: .4byte 0x0000ffff - thumb_func_end sub_80C2B9C - - thumb_func_start sub_80C2C1C -sub_80C2C1C: @ 80C2C1C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C2C30 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080C2C34 @ =sub_80C2C7C - str r0, [r1] - bx lr - .align 2, 0 -_080C2C30: .4byte gTasks -_080C2C34: .4byte sub_80C2C7C - thumb_func_end sub_80C2C1C - - thumb_func_start sub_80C2C38 -sub_80C2C38: @ 80C2C38 - push {lr} - movs r0, 0 - movs r1, 0x4 - movs r2, 0x4 - bl sub_80C210C - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0x5 - bl sub_80C210C - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80C210C - movs r0, 0x3 - movs r1, 0x7 - movs r2, 0x7 - bl sub_80C210C - movs r0, 0x4 - movs r1, 0x8 - movs r2, 0x8 - bl sub_80C210C - movs r0, 0x5 - movs r1, 0x9 - movs r2, 0x9 - bl sub_80C210C - pop {r0} - bx r0 - thumb_func_end sub_80C2C38 - - thumb_func_start sub_80C2C7C -sub_80C2C7C: @ 80C2C7C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C2CA0 @ =gUnknown_20399E0 - ldr r3, [r1] - ldr r4, _080C2CA4 @ =0x00000ccf - adds r0, r3, r4 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x7 - bls _080C2C94 - b _080C2DFC -_080C2C94: - lsls r0, 2 - ldr r1, _080C2CA8 @ =_080C2CAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C2CA0: .4byte gUnknown_20399E0 -_080C2CA4: .4byte 0x00000ccf -_080C2CA8: .4byte _080C2CAC - .align 2, 0 -_080C2CAC: - .4byte _080C2CCC - .4byte _080C2CF4 - .4byte _080C2CFA - .4byte _080C2D1C - .4byte _080C2D6C - .4byte _080C2D84 - .4byte _080C2DB8 - .4byte _080C2DD8 -_080C2CCC: - movs r0, 0x1 - bl sub_80C4ED0 - movs r0, 0x3 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x4 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _080C2CEC @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2CF0 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2CEC: .4byte gUnknown_20399E0 -_080C2CF0: .4byte 0x00000ccf -_080C2CF4: - bl sub_80C2C38 - b _080C2DE4 -_080C2CFA: - ldr r0, _080C2D10 @ =gUnknown_83EF2DC - movs r1, 0 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _080C2D14 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r3, _080C2D18 @ =0x00000ccf - adds r1, r3 - b _080C2DEC - .align 2, 0 -_080C2D10: .4byte gUnknown_83EF2DC -_080C2D14: .4byte gUnknown_20399E0 -_080C2D18: .4byte 0x00000ccf -_080C2D1C: - movs r0, 0x6 - movs r1, 0 - bl sub_80C22C4 - movs r0, 0x1 - bl sub_80C4324 - movs r0, 0x1 - bl sub_80C3154 - movs r0, 0xFF - movs r1, 0x19 - movs r2, 0x1 - bl sub_80C4960 - movs r0, 0xFF - movs r1, 0x19 - movs r2, 0x1 - bl sub_80C48BC - ldr r1, _080C2D64 @ =gUnknown_20399E0 - ldr r0, [r1] - ldr r4, _080C2D68 @ =0x00000cce - adds r0, r4 - movs r2, 0 - strb r2, [r0] - ldr r0, [r1] - movs r3, 0xCD - lsls r3, 4 - adds r0, r3 - strb r2, [r0] - ldr r1, [r1] - adds r4, 0x1 - adds r1, r4 - b _080C2DEC - .align 2, 0 -_080C2D64: .4byte gUnknown_20399E0 -_080C2D68: .4byte 0x00000cce -_080C2D6C: - bl sub_80C253C - ldr r0, _080C2D7C @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2D80 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2D7C: .4byte gUnknown_20399E0 -_080C2D80: .4byte 0x00000ccf -_080C2D84: - ldr r0, [r4] - movs r2, 0xCD - lsls r2, 4 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xF - bne _080C2DA4 - ldrb r0, [r1] - bl sub_80C4C48 - ldr r1, [r4] - ldr r3, _080C2DA0 @ =0x00000ccf - adds r1, r3 - b _080C2DEC - .align 2, 0 -_080C2DA0: .4byte 0x00000ccf -_080C2DA4: - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - movs r4, 0xCD - lsls r4, 4 - adds r0, r4 - ldrb r0, [r0] - bl sub_80C4C48 - b _080C2E0E -_080C2DB8: - bl sub_80C2B9C - bl sub_80C2B48 - movs r0, 0xF3 - bl PlaySE - ldr r0, _080C2DD0 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2DD4 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2DD0: .4byte gUnknown_20399E0 -_080C2DD4: .4byte 0x00000ccf -_080C2DD8: - bl sub_80C2E1C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C2E0E -_080C2DE4: - ldr r0, _080C2DF4 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r2, _080C2DF8 @ =0x00000ccf - adds r1, r2 -_080C2DEC: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C2E0E - .align 2, 0 -_080C2DF4: .4byte gUnknown_20399E0 -_080C2DF8: .4byte 0x00000ccf -_080C2DFC: - ldr r1, _080C2E14 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r4, _080C2E18 @ =0x00000cc8 - adds r1, r3, r4 - ldr r1, [r1] - str r1, [r0] -_080C2E0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2E14: .4byte gTasks -_080C2E18: .4byte 0x00000cc8 - thumb_func_end sub_80C2C7C - - thumb_func_start sub_80C2E1C -sub_80C2E1C: @ 80C2E1C - push {r4,r5,lr} - bl sub_80C2B48 - ldr r0, _080C2E40 @ =gUnknown_20399E0 - ldr r2, [r0] - ldr r0, [r2] - movs r4, 0x80 - lsls r4, 3 - adds r0, r4 - ldr r1, [r0] - ldrh r3, [r1, 0x20] - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0x68 - bne _080C2E44 - movs r0, 0x1 - b _080C2FB2 - .align 2, 0 -_080C2E40: .4byte gUnknown_20399E0 -_080C2E44: - ldr r5, _080C2E90 @ =0x00000cce - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0x11 - bls _080C2E94 - adds r0, r3, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - b _080C2FA0 - .align 2, 0 -_080C2E90: .4byte 0x00000cce -_080C2E94: - cmp r0, 0xE - bls _080C2ED8 - adds r0, r3, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - b _080C2FA0 -_080C2ED8: - cmp r0, 0xA - bls _080C2F1C - adds r0, r3, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - b _080C2FA0 -_080C2F1C: - cmp r0, 0x6 - bls _080C2F60 - adds r0, r3, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - b _080C2FA0 -_080C2F60: - adds r0, r3, 0 - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 -_080C2FA0: - strh r0, [r1, 0x20] - ldr r0, _080C2FB8 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2FBC @ =0x00000cce - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C2FB2: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080C2FB8: .4byte gUnknown_20399E0 -_080C2FBC: .4byte 0x00000cce - thumb_func_end sub_80C2E1C - - thumb_func_start sub_80C2FC0 -sub_80C2FC0: @ 80C2FC0 - push {lr} - adds r1, r0, 0 - ldr r0, _080C2FE8 @ =gUnknown_20399E4 - ldr r2, [r0] - ldrh r0, [r2, 0xC] - cmp r0, 0 - beq _080C2FEC - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x20] - adds r0, r3 - strh r0, [r1, 0x20] - ldrh r0, [r2, 0xA] - ldrh r3, [r1, 0x22] - adds r0, r3 - strh r0, [r1, 0x22] - ldrh r0, [r2, 0xC] - subs r0, 0x1 - strh r0, [r2, 0xC] - b _080C3004 - .align 2, 0 -_080C2FE8: .4byte gUnknown_20399E4 -_080C2FEC: - ldr r1, [r2, 0x1C] - movs r3, 0 - ldrsh r0, [r2, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x1C] - movs r3, 0x2 - ldrsh r0, [r2, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x22] -_080C3004: - pop {r0} - bx r0 - thumb_func_end sub_80C2FC0 - thumb_func_start sub_80C3008 sub_80C3008: @ 80C3008 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index e13248640..de12b4de2 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -19,6 +19,12 @@ #include "constants/songs.h" #include "constants/region_map.h" +#define FREE_IF_NOT_NULL(ptr) ({ \ + if (ptr) { \ + FREE_AND_SET_NULL(ptr); \ + } \ +}) + struct UnkStruct_20399D4 { u8 field_0000[19]; @@ -131,21 +137,29 @@ struct UnkStruct_20399E0 TaskFunc field_CC8; u8 field_CCC; u8 field_CCD; - u8 filler_CCE[2]; + u8 field_CCE; + u8 field_CCF; u8 field_CD0; }; // size = 0xCD4 -#define FREE_IF_NOT_NULL(ptr) ({ \ - if (ptr) { \ - FREE_AND_SET_NULL(ptr); \ - } \ -}) +struct UnkStruct_20399E4 +{ + s16 field_000; + s16 field_002; + u8 filler_004[4]; + u16 field_008; + u16 field_00A; + u16 field_00C; + u8 filler_00E[14]; + struct Sprite * field_01C; + u8 filler_020[0x104]; +}; 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 void * gUnknown_20399E4 = NULL; +EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; EWRAM_DATA void * gUnknown_20399E8 = NULL; EWRAM_DATA void * gUnknown_20399EC = NULL; EWRAM_DATA void * gUnknown_20399F0[3] = {}; @@ -199,6 +213,8 @@ void sub_80C2604(void); bool8 sub_80C29A4(void); void sub_80C2B48(void); void sub_80C2C1C(u8 taskId); +void sub_80C2C7C(u8 taskId); +bool8 sub_80C2E1C(void); void sub_80C3008(u16 a0, u16 a1); void sub_80C3154(u8 a0); void sub_80C3178(void); @@ -1789,3 +1805,230 @@ void sub_80C267C(u8 taskId) break; } } + +bool8 sub_80C29A4(void) +{ + sub_80C2B48(); + if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 0) + { + return TRUE; + } + else if (gUnknown_20399E0->field_CCE > 17) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 1; + } + else if (gUnknown_20399E0->field_CCE > 14) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 2; + } + else if (gUnknown_20399E0->field_CCE > 10) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 3; + } + else if (gUnknown_20399E0->field_CCE > 6) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 5; + } + else + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 8; + } + gUnknown_20399E0->field_CCE++; + return FALSE; +} + +void sub_80C2B48(void) +{ + struct UnkStruct_80C4CF0 data; + data.v0 = gUnknown_20399E0->field_000[0]->field_400->pos1.x; + data.v2 = 0x10; + data.v4 = gUnknown_20399E0->field_000[3]->field_400->pos1.x; + data.v6 = 0xA0; + sub_80C4CF0(0, &data); +} + +void sub_80C2B9C(void) +{ + struct UnkStruct_80C4CF0 data; + data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 16; + data.v2 = 0x10; + data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 16; + data.v6 = 0xA0; + sub_80C4C2C(0, 2, 0); + sub_80C4C74(18, 0); + sub_80C4C88(16); + sub_80C4CF0(0, &data); + sub_80C4C9C(0, 0); +} + +void sub_80C2C1C(u8 taskId) +{ + gTasks[taskId].func = sub_80C2C7C; +} + +void sub_80C2C38(void) +{ + sub_80C210C(0, 4, 4); + sub_80C210C(1, 5, 5); + sub_80C210C(2, 6, 6); + sub_80C210C(3, 7, 7); + sub_80C210C(4, 8, 8); + sub_80C210C(5, 9, 9); +} + +void sub_80C2C7C(u8 taskId) +{ + switch (gUnknown_20399E0->field_CCF) + { + case 0: + sub_80C4ED0(TRUE); + CopyWindowToVram(3, 3); + CopyWindowToVram(4, 3); + gUnknown_20399E0->field_CCF++; + break; + case 1: + sub_80C2C38(); + gUnknown_20399E0->field_CCF++; + break; + case 2: + LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0); + gUnknown_20399E0->field_CCF++; + break; + case 3: + sub_80C22C4(6, FALSE); + sub_80C4324(1); + sub_80C3154(1); + sub_80C4960(255, 25, 1); + sub_80C48BC(255, 25, 1); + gUnknown_20399E0->field_CCE = 0; + gUnknown_20399E0->field_CD0 = 0; + gUnknown_20399E0->field_CCF++; + break; + case 4: + sub_80C253C(); + gUnknown_20399E0->field_CCF++; + break; + case 5: + if (gUnknown_20399E0->field_CD0 == 15) + { + sub_80C4C48(gUnknown_20399E0->field_CD0); + gUnknown_20399E0->field_CCF++; + } + else + { + gUnknown_20399E0->field_CD0++; + sub_80C4C48(gUnknown_20399E0->field_CD0); + } + break; + case 6: + sub_80C2B9C(); + sub_80C2B48(); + PlaySE(SE_CARD2); + gUnknown_20399E0->field_CCF++; + break; + case 7: + if (sub_80C2E1C() == TRUE) + gUnknown_20399E0->field_CCF++; + break; + default: + gTasks[taskId].func = gUnknown_20399E0->field_CC8; + break; + } +} + + +bool8 sub_80C2E1C(void) +{ + sub_80C2B48(); + if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 104) + { + return TRUE; + } + else if (gUnknown_20399E0->field_CCE > 17) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 1; + } + else if (gUnknown_20399E0->field_CCE > 14) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 2; + } + else if (gUnknown_20399E0->field_CCE > 10) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 3; + } + else if (gUnknown_20399E0->field_CCE > 6) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 5; + } + else + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 8; + } + gUnknown_20399E0->field_CCE++; + return FALSE; +} + +void sub_80C2FC0(struct Sprite * sprite) +{ + if (gUnknown_20399E4->field_00C != 0) + { + sprite->pos1.x += gUnknown_20399E4->field_008; + sprite->pos1.y += gUnknown_20399E4->field_00A; + gUnknown_20399E4->field_00C--; + } + else + { + gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36; + gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36; + } +} -- cgit v1.2.3 From 498ad1e6af6b219aa54b827e59325b6fbcb54343 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 6 Jan 2020 13:26:34 -0500 Subject: through sub_80C3400 --- asm/region_map.s | 516 ------------------------------------------------------- src/region_map.c | 211 +++++++++++++++++++++-- 2 files changed, 201 insertions(+), 526 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 429f77de8..10f8c83f4 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,522 +5,6 @@ .text - thumb_func_start sub_80C3008 -sub_80C3008: @ 80C3008 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _080C3090 @ =gUnknown_20399E4 - movs r0, 0x92 - lsls r0, 1 - bl AllocZeroed - adds r1, r0, 0 - str r1, [r6] - ldr r0, _080C3094 @ =gUnknown_83EF4E0 - adds r1, 0x24 - bl LZ77UnCompWram - ldr r0, [r6] - strh r4, [r0, 0x20] - strh r5, [r0, 0x22] - bl sub_80C3D40 - ldr r1, [r6] - movs r2, 0 - ldrsh r0, [r1, r2] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x4] - movs r3, 0x2 - ldrsh r0, [r1, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x6] - ldr r0, _080C3098 @ =sub_80C31C0 - str r0, [r1, 0x10] - ldrb r0, [r1, 0x14] - bl sub_80C35DC - ldr r1, [r6] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x16] - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r6] - movs r4, 0x2 - ldrsh r2, [r1, r4] - movs r4, 0 - ldrsh r3, [r1, r4] - movs r1, 0x1 - bl sub_80C4164 - lsls r0, 24 - lsrs r0, 24 - bl sub_80C3878 - ldr r1, [r6] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - bl sub_80C309C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C3090: .4byte gUnknown_20399E4 -_080C3094: .4byte gUnknown_83EF4E0 -_080C3098: .4byte sub_80C31C0 - thumb_func_end sub_80C3008 - - thumb_func_start sub_80C309C -sub_80C309C: @ 80C309C - push {r4-r6,lr} - sub sp, 0x40 - ldr r6, _080C3134 @ =gUnknown_20399E4 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x24 - str r0, [sp, 0x30] - movs r1, 0x80 - lsls r1, 1 - add r5, sp, 0x30 - str r1, [r5, 0x4] - ldrh r0, [r2, 0x20] - lsls r0, 16 - orrs r0, r1 - str r0, [r5, 0x4] - ldr r0, _080C3138 @ =gUnknown_83EF25C - str r0, [sp, 0x38] - ldrh r3, [r2, 0x22] - ldr r1, _080C313C @ =0xffff0000 - add r4, sp, 0x38 - ldr r0, [r4, 0x4] - ands r0, r1 - orrs r0, r3 - str r0, [r4, 0x4] - ldrh r0, [r2, 0x20] - add r1, sp, 0x18 - movs r3, 0 - strh r0, [r1] - ldrh r2, [r2, 0x22] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - ldr r0, _080C3140 @ =gUnknown_83F1C3C - str r0, [sp, 0x1C] - ldr r0, _080C3144 @ =gUnknown_83F1C50 - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, _080C3148 @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x28] - ldr r0, _080C314C @ =sub_80C2FC0 - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - ldr r0, [r6] - movs r2, 0x4 - ldrsh r1, [r0, r2] - movs r3, 0x6 - ldrsh r2, [r0, r3] - mov r0, sp - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080C3150 @ =gSprites - adds r1, r0 - str r1, [r2, 0x1C] - movs r0, 0x1 - bl sub_80C3154 - add sp, 0x40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C3134: .4byte gUnknown_20399E4 -_080C3138: .4byte gUnknown_83EF25C -_080C313C: .4byte 0xffff0000 -_080C3140: .4byte gUnknown_83F1C3C -_080C3144: .4byte gUnknown_83F1C50 -_080C3148: .4byte gDummySpriteAffineAnimTable -_080C314C: .4byte sub_80C2FC0 -_080C3150: .4byte gSprites - thumb_func_end sub_80C309C - - thumb_func_start sub_80C3154 -sub_80C3154: @ 80C3154 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080C3174 @ =gUnknown_20399E4 - ldr r1, [r1] - ldr r2, [r1, 0x1C] - adds r2, 0x3E - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - ldrb r3, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r0 - strb r1, [r2] - bx lr - .align 2, 0 -_080C3174: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3154 - - thumb_func_start sub_80C3178 -sub_80C3178: @ 80C3178 - ldr r0, _080C3184 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0xE] - bx lr - .align 2, 0 -_080C3184: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3178 - - thumb_func_start sub_80C3188 -sub_80C3188: @ 80C3188 - push {r4,lr} - ldr r4, _080C31BC @ =gUnknown_20399E4 - ldr r0, [r4] - ldr r0, [r0, 0x1C] - cmp r0, 0 - beq _080C31A8 - bl DestroySprite - ldr r0, [r4] - ldrh r0, [r0, 0x20] - bl FreeSpriteTilesByTag - ldr r0, [r4] - ldrh r0, [r0, 0x22] - bl FreeSpritePaletteByTag -_080C31A8: - ldr r0, [r4] - cmp r0, 0 - beq _080C31B6 - bl Free - movs r0, 0 - str r0, [r4] -_080C31B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C31BC: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3188 - - thumb_func_start sub_80C31C0 -sub_80C31C0: @ 80C31C0 - push {r4-r6,lr} - movs r5, 0 - ldr r3, _080C3278 @ =gUnknown_20399E4 - ldr r4, [r3] - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r2, _080C327C @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - adds r6, r3, 0 - cmp r0, 0 - beq _080C31E8 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _080C31E8 - ldr r0, _080C3280 @ =0x0000fffe - strh r0, [r4, 0xA] - movs r5, 0x1 -_080C31E8: - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C3202 - ldr r1, [r6] - movs r3, 0x2 - ldrsh r0, [r1, r3] - cmp r0, 0xD - bgt _080C3202 - movs r0, 0x2 - strh r0, [r1, 0xA] - movs r5, 0x1 -_080C3202: - ldrh r1, [r2, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080C321C - ldr r1, [r6] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x14 - bgt _080C321C - movs r0, 0x2 - strh r0, [r1, 0x8] - movs r5, 0x1 -_080C321C: - ldrh r1, [r2, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080C3236 - ldr r1, [r6] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080C3236 - ldr r0, _080C3280 @ =0x0000fffe - strh r0, [r1, 0x8] - movs r5, 0x1 -_080C3236: - ldrh r3, [r2, 0x2E] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _080C328C - movs r5, 0x4 - ldr r0, [r6] - ldr r1, [r0] - ldr r0, _080C3284 @ =0x000d0015 - cmp r1, r0 - bne _080C3254 - movs r0, 0xF0 - bl PlaySE - movs r5, 0x6 -_080C3254: - ldr r0, [r6] - ldr r1, [r0] - ldr r0, _080C3288 @ =0x000b0015 - cmp r1, r0 - bne _080C331A - movs r0, 0 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C331A - movs r0, 0xF0 - bl PlaySE - movs r5, 0x5 - b _080C331A - .align 2, 0 -_080C3278: .4byte gUnknown_20399E4 -_080C327C: .4byte gMain -_080C3280: .4byte 0x0000fffe -_080C3284: .4byte 0x000d0015 -_080C3288: .4byte 0x000b0015 -_080C328C: - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - bne _080C3318 - ldrh r1, [r2, 0x30] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080C3300 - bl sub_80C3418 - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080C32FC @ =gUnknown_20399E4 - ldr r1, [r4] - movs r5, 0x2 - ldrsh r2, [r1, r5] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0 - bl sub_80C4164 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x14] - bl sub_80C35DC - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x16] - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0x1 - bl sub_80C4164 - lsls r0, 24 - lsrs r0, 24 - bl sub_80C3878 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - movs r0, 0x3 - b _080C332C - .align 2, 0 -_080C32FC: .4byte gUnknown_20399E4 -_080C3300: - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _080C331A - ldr r0, _080C3334 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C3338 @ =0x000047bc - adds r0, r1 - ldr r1, [r0] - ldr r0, _080C333C @ =CB2_ReturnToField - cmp r1, r0 - bne _080C331A -_080C3318: - movs r5, 0x6 -_080C331A: - cmp r5, 0x1 - bne _080C332A - ldr r0, _080C3340 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - strh r0, [r1, 0xC] - ldr r0, _080C3344 @ =sub_80C3348 - str r0, [r1, 0x10] -_080C332A: - adds r0, r5, 0 -_080C332C: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080C3334: .4byte gUnknown_20399D4 -_080C3338: .4byte 0x000047bc -_080C333C: .4byte CB2_ReturnToField -_080C3340: .4byte gUnknown_20399E4 -_080C3344: .4byte sub_80C3348 - thumb_func_end sub_80C31C0 - - thumb_func_start sub_80C3348 -sub_80C3348: @ 80C3348 - push {r4,r5,lr} - ldr r4, _080C3358 @ =gUnknown_20399E4 - ldr r1, [r4] - ldrh r0, [r1, 0xC] - cmp r0, 0 - beq _080C335C - movs r0, 0x2 - b _080C33F4 - .align 2, 0 -_080C3358: .4byte gUnknown_20399E4 -_080C335C: - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - ble _080C336A - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080C336A: - ldr r1, [r4] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _080C337A - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080C337A: - ldr r1, [r4] - movs r5, 0xA - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080C338A - ldrh r0, [r1, 0x2] - adds r0, 0x1 - strh r0, [r1, 0x2] -_080C338A: - ldr r1, [r4] - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _080C339A - ldrh r0, [r1, 0x2] - subs r0, 0x1 - strh r0, [r1, 0x2] -_080C339A: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0 - bl sub_80C4164 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x14] - bl sub_80C35DC - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x16] - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0x1 - bl sub_80C4164 - lsls r0, 24 - lsrs r0, 24 - bl sub_80C3878 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - ldr r0, _080C33FC @ =sub_80C31C0 - str r0, [r1, 0x10] - movs r0, 0x3 -_080C33F4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080C33FC: .4byte sub_80C31C0 - thumb_func_end sub_80C3348 - - thumb_func_start sub_80C3400 -sub_80C3400: @ 80C3400 - push {lr} - ldr r0, _080C3414 @ =gUnknown_20399E4 - ldr r0, [r0] - ldr r0, [r0, 0x10] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080C3414: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3400 - thumb_func_start sub_80C3418 sub_80C3418: @ 80C3418 push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index de12b4de2..8ea4c9bb6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -146,13 +146,20 @@ struct UnkStruct_20399E4 { s16 field_000; s16 field_002; - u8 filler_004[4]; - u16 field_008; - u16 field_00A; + u16 field_004; + u16 field_006; + s16 field_008; + s16 field_00A; u16 field_00C; - u8 filler_00E[14]; + u8 field_00E; + u8 (*field_010)(void); + u16 field_014; + u16 field_016; + u16 field_018; struct Sprite * field_01C; - u8 filler_020[0x104]; + u16 field_020; + u16 field_022; + u16 field_024[0x080]; }; EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; @@ -216,12 +223,19 @@ void sub_80C2C1C(u8 taskId); void sub_80C2C7C(u8 taskId); bool8 sub_80C2E1C(void); void sub_80C3008(u16 a0, u16 a1); -void sub_80C3154(u8 a0); +void sub_80C309C(void); +void sub_80C3154(bool8 a0); void sub_80C3178(void); void sub_80C3188(void); +u8 sub_80C31C0(void); +u8 sub_80C3348(void); u8 sub_80C3400(void); +void sub_80C3418(void); +u8 sub_80C3878(u8 a0); u16 sub_80C3520(void); +u8 sub_80C35DC(u8 a0); u8 sub_80C3AC8(u8 a0); +void sub_80C3D40(void); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); void sub_80C4324(u8 a0); @@ -251,11 +265,13 @@ u16 sub_80C3580(void); #include "data/text/map_section_names.h" extern const u16 gUnknown_83EF23C[]; +extern const u16 gUnknown_83EF25C[]; extern const u16 gUnknown_83EF2DC[]; extern const u16 gUnknown_83EF384[]; extern const u16 gUnknown_83EF3A4[]; extern const u32 gUnknown_83EF3C4[]; extern const u32 gUnknown_83EF450[]; +extern const u32 gUnknown_83EF4E0[]; extern const u32 gUnknown_83EF61C[]; extern const u32 gUnknown_83F0330[]; extern const u32 gUnknown_83F0E0C[]; @@ -289,6 +305,8 @@ extern const struct UnkStruct_83F1B3C gUnknown_83F1B3C[]; extern const struct OamData gUnknown_83F1C20; extern const union AnimCmd *const gUnknown_83F1C30[]; extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34; +extern const struct OamData gUnknown_83F1C3C; +extern const union AnimCmd *const gUnknown_83F1C50[]; extern const u8 *const gUnknown_83F1CAC[]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) @@ -558,7 +576,7 @@ void sub_80C04E4(u8 taskId) sub_80C4E74(gUnknown_8418E8B); sub_80C4ED0(FALSE); sub_80C4324(0); - sub_80C3154(0); + sub_80C3154(FALSE); sub_80C48BC(sub_80C0E20(), 25, 0); sub_80C4960(sub_80C0E20(), 25, 0); } @@ -580,6 +598,8 @@ void sub_80C04E4(u8 taskId) case 1: sub_80C3178(); break; + case 2: + break; case 3: sub_80C0B18(); sub_80C0BB0(); @@ -1051,7 +1071,7 @@ void sub_80C1098(u8 taskId) } break; case 12: - sub_80C3154(0); + sub_80C3154(FALSE); gUnknown_20399D8->field_1CC8++; break; default: @@ -1742,7 +1762,7 @@ void sub_80C267C(u8 taskId) break; case 7: sub_80C4324(0); - sub_80C3154(0); + sub_80C3154(FALSE); gUnknown_20399E0->field_CCC++; break; case 8: @@ -1922,7 +1942,7 @@ void sub_80C2C7C(u8 taskId) case 3: sub_80C22C4(6, FALSE); sub_80C4324(1); - sub_80C3154(1); + sub_80C3154(TRUE); sub_80C4960(255, 25, 1); sub_80C48BC(255, 25, 1); gUnknown_20399E0->field_CCE = 0; @@ -2032,3 +2052,174 @@ void sub_80C2FC0(struct Sprite * sprite) gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36; } } + +void sub_80C3008(u16 a0, u16 a1) +{ + gUnknown_20399E4 = AllocZeroed(sizeof(struct UnkStruct_20399E4)); + LZ77UnCompWram(gUnknown_83EF4E0, gUnknown_20399E4->field_024); + gUnknown_20399E4->field_020 = a0; + gUnknown_20399E4->field_022 = a1; + sub_80C3D40(); + gUnknown_20399E4->field_004 = 8 * gUnknown_20399E4->field_000 + 36; + gUnknown_20399E4->field_006 = 8 * gUnknown_20399E4->field_002 + 36; + gUnknown_20399E4->field_010 = sub_80C31C0; + gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); + gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + sub_80C309C(); +} + +void sub_80C309C(void) +{ + u8 spriteId; + struct SpriteSheet spriteSheet = { + .data = gUnknown_20399E4->field_024, + .size = 0x100, + .tag = gUnknown_20399E4->field_020 + }; + struct SpritePalette spritePalette = { + .data = gUnknown_83EF25C, + .tag = gUnknown_20399E4->field_022 + }; + struct SpriteTemplate template = { + .tileTag = gUnknown_20399E4->field_020, + .paletteTag = gUnknown_20399E4->field_022, + .oam = &gUnknown_83F1C3C, + .anims = gUnknown_83F1C50, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C2FC0 + }; + + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&template, gUnknown_20399E4->field_004, gUnknown_20399E4->field_006, 0); + gUnknown_20399E4->field_01C = &gSprites[spriteId]; + sub_80C3154(TRUE); +} + +void sub_80C3154(bool8 a0) +{ + gUnknown_20399E4->field_01C->invisible = a0; +} + +void sub_80C3178(void) +{ + gUnknown_20399E4->field_00E = 0; +} + +void sub_80C3188(void) +{ + if (gUnknown_20399E4->field_01C != NULL) + { + DestroySprite(gUnknown_20399E4->field_01C); + FreeSpriteTilesByTag(gUnknown_20399E4->field_020); + FreeSpritePaletteByTag(gUnknown_20399E4->field_022); + } + FREE_IF_NOT_NULL(gUnknown_20399E4); +} + +u8 sub_80C31C0(void) +{ + u8 ret = 0; + gUnknown_20399E4->field_008 = 0; + gUnknown_20399E4->field_00A = 0; + + if (JOY_HELD(DPAD_UP)) + { + if (gUnknown_20399E4->field_002 > 0) + { + gUnknown_20399E4->field_00A = -2; + ret = 1; + } + } + if (JOY_HELD(DPAD_DOWN)) + { + if (gUnknown_20399E4->field_002 < 14) + { + gUnknown_20399E4->field_00A = 2; + ret = 1; + } + } + if (JOY_HELD(DPAD_RIGHT)) + { + if (gUnknown_20399E4->field_000 < 21) + { + gUnknown_20399E4->field_008 = 2; + ret = 1; + } + } + if (JOY_HELD(DPAD_LEFT)) + { + if (gUnknown_20399E4->field_000 > 0) + { + gUnknown_20399E4->field_008 = -2; + ret = 1; + } + } + if (JOY_NEW(A_BUTTON)) + { + ret = 4; + if (gUnknown_20399E4->field_000 == 21 && gUnknown_20399E4->field_002 == 13) + { + PlaySE(SE_W063B); + ret = 6; + } + if (gUnknown_20399E4->field_000 == 21 && gUnknown_20399E4->field_002 == 11) + { + if (sub_80C0E04(0) == TRUE) + { + PlaySE(SE_W063B); + ret = 5; + } + } + } + else if (!JOY_NEW(B_BUTTON)) + { + if (JOY_REPT(START_BUTTON)) + { + sub_80C3418(); + gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); + gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + return 3; + } + else if (JOY_NEW(SELECT_BUTTON) && gUnknown_20399D4->field_47BC == CB2_ReturnToField) + { + ret = 6; + } + } + else + { + ret = 6; + } + if (ret == 1) + { + gUnknown_20399E4->field_00C = 4; + gUnknown_20399E4->field_010 = sub_80C3348; + } + return ret; +} + +u8 sub_80C3348(void) +{ + if (gUnknown_20399E4->field_00C != 0) + return 2; + if (gUnknown_20399E4->field_008 > 0) + gUnknown_20399E4->field_000++; + if (gUnknown_20399E4->field_008 < 0) + gUnknown_20399E4->field_000--; + if (gUnknown_20399E4->field_00A > 0) + gUnknown_20399E4->field_002++; + if (gUnknown_20399E4->field_00A < 0) + gUnknown_20399E4->field_002--; + gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); + gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + gUnknown_20399E4->field_010 = sub_80C31C0; + return 3; +} + +u8 sub_80C3400(void) +{ + return gUnknown_20399E4->field_010(); +} -- cgit v1.2.3 From cdc025132e7ec7844587782df736df04b5953d5a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 09:39:57 -0500 Subject: Use official names for crt0 routines --- asm/crt0.s | 73 ++++++++++++++++++----------------- berry_fix/payload/asm/crt0.s | 8 ++-- berry_fix/payload/src/main.c | 4 +- constants/version.inc | 92 ++------------------------------------------ src/main.c | 4 +- 5 files changed, 49 insertions(+), 132 deletions(-) diff --git a/asm/crt0.s b/asm/crt0.s index 609845337..28855d504 100644 --- a/asm/crt0.s +++ b/asm/crt0.s @@ -1,4 +1,6 @@ .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" + .include "constants/version.inc" .syntax unified @@ -8,8 +10,8 @@ .arm -Start: @ 8000000 - b Init +_start: @ 8000000 + b start_vector .include "asm/rom_header.inc" @@ -32,8 +34,6 @@ GPIOPortReadEnable: @ 80000C8 @ 80000D0 -@ TODO: figure out what this data is - .4byte 0xFFFFFFFF .4byte 0xFFFFFFFF .4byte 0xFFFFFFFF @@ -46,19 +46,21 @@ GPIOPortReadEnable: @ 80000C8 .4byte 0xFFFFFFFF .4byte 0xFFFFFFFF .4byte 0xFFFFFFFF + +@ 8000100 + .global CartIdent +CartIdent: + .4byte GAME_VERSION + .4byte GAME_LANGUAGE +.game_name: .ifdef FIRERED - .4byte 4 - .4byte 2 .ascii "pokemon red version" - .space 13 .else .ifdef LEAFGREEN - .4byte 5 - .4byte 2 .ascii "pokemon green version" - .space 11 .endif .endif + .space .game_name+0x20-. .4byte gMonFrontPicTable .4byte gMonBackPicTable .4byte gMonPaletteTable @@ -118,32 +120,32 @@ GPIOPortReadEnable: @ 80000C8 .arm .align 2, 0 - .global Init -Init: + .global start_vector +start_vector: mov r0, PSR_IRQ_MODE msr cpsr_cf, r0 ldr sp, sp_irq mov r0, PSR_SYS_MODE msr cpsr_cf, r0 - ldr sp, sp_sys + ldr sp, sp_usr ldr r1, =INTR_VECTOR - adr r0, IntrMain + adr r0, intr_main str r0, [r1] ldr r1, =AgbMain mov lr, pc bx r1 - b Init + b start_vector .align 2, 0 -sp_sys: .word IWRAM_END - 0x1C0 +sp_usr: .word IWRAM_END - 0x1C0 sp_irq: .word IWRAM_END - 0x60 .pool .arm .align 2, 0 - .global IntrMain -IntrMain: + .global intr_main +intr_main: mov r3, REG_BASE add r3, r3, 0x200 ldr r2, [r3, OFFSET_REG_IE - 0x200] @@ -155,50 +157,51 @@ IntrMain: and r1, r2, r2, lsr 16 mov r12, 0 ands r0, r1, INTR_FLAG_VCOUNT - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 mov r0, 0x1 strh r0, [r3, OFFSET_REG_IME - 0x200] ands r0, r1, INTR_FLAG_SERIAL - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_TIMER3 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_HBLANK - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_VBLANK - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_TIMER0 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_TIMER1 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_TIMER2 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_DMA0 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_DMA1 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_DMA2 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_DMA3 - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_KEYPAD - bne IntrMain_FoundIntr + bne jump_intr add r12, r12, 0x4 ands r0, r1, INTR_FLAG_GAMEPAK strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200] - bne . @ spin -IntrMain_FoundIntr: +loop: + bne loop @ spin +jump_intr: strh r0, [r3, OFFSET_REG_IF - 0x200] bic r2, r2, r0 ldr r0, =gRfuState @@ -218,9 +221,9 @@ IntrMain_FoundIntr: add r1, r1, r12 ldr r0, [r1] stmdb sp!, {lr} - adr lr, IntrMain_RetAddr + adr lr, intr_return bx r0 -IntrMain_RetAddr: +intr_return: ldmia sp!, {lr} mrs r3, cpsr bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s index edbb83328..9a0e75c77 100644 --- a/berry_fix/payload/asm/crt0.s +++ b/berry_fix/payload/asm/crt0.s @@ -16,7 +16,7 @@ Init: msr cpsr_cf, r0 ldr sp, sp_sys ldr r1, =INTR_VECTOR - ldr r0, =IntrMain + ldr r0, =intr_main str r0, [r1] ldr r1, =AgbMain + 1 mov lr, pc @@ -32,8 +32,8 @@ sp_irq: .word IWRAM_END - 0x60 .arm .align 2, 0 - .global IntrMain -IntrMain: @ 0x2010048 + .global intr_main +intr_main: @ 0x2010048 mov ip, REG_BASE add r3, ip, OFFSET_REG_IE ldr r2, [r3] @@ -79,4 +79,4 @@ _020100DC: ldr r0, [r1] bx r0 .pool - .size IntrMain, .-IntrMain + .size intr_main, .-intr_main diff --git a/berry_fix/payload/src/main.c b/berry_fix/payload/src/main.c index 325d3830e..a017e8f69 100644 --- a/berry_fix/payload/src/main.c +++ b/berry_fix/payload/src/main.c @@ -17,7 +17,7 @@ u32 gGameVersion; EWRAM_DATA u8 gSharedMem[0x8000] = {}; -void IntrMain(void); +void intr_main(void); void ReadKeys(void); void dummy_intr_0(void); void dummy_intr_1(void); @@ -62,7 +62,7 @@ void AgbMain(void) { RegisterRamReset(0x1E); DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers); - DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector)); + DmaCopy32(3, intr_main, gIntrVector, sizeof(gIntrVector)); INTR_VECTOR = gIntrVector; REG_IE = INTR_FLAG_VBLANK; if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode) diff --git a/constants/version.inc b/constants/version.inc index c93e439f4..07c3bfa29 100644 --- a/constants/version.inc +++ b/constants/version.inc @@ -1,91 +1,5 @@ - .ifdef SAPPHIRE - .equiv GAME_VERSION, 1 + .ifdef FIRERED + .equiv GAME_VERSION, 4 .else - .equiv GAME_VERSION, 2 - .endif - - .ifdef SAPPHIRE - .set BGM_EVIL_TEAM, BGM_AQA_0 - .set BGM_GOOD_TEAM, BGM_MGM0 - .else - .set BGM_EVIL_TEAM, BGM_MGM0 - .set BGM_GOOD_TEAM, BGM_AQA_0 - .endc - - .ifdef SAPPHIRE - .set ITEM_RED_OR_BLUE_ORB, ITEM_BLUE_ORB - .else - .set ITEM_RED_OR_BLUE_ORB, ITEM_RED_ORB - .endif - - .ifdef SAPPHIRE - .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_KYOGRE - .else - .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_GROUDON - .endif - - .ifdef SAPPHIRE - .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIOS - .else - .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIAS - .endif - - .ifdef SAPPHIRE - .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_9 - .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_15 - .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_19 - .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_20 - .set OPPONENT_514, OPPONENT_HECTOR_1 - .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_MATT_2 - .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_13 - .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_1 - .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_2 - .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_3 - .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_26 - .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_MATT_1 - .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_4 - .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_27 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_5 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_6 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_SHELLY_2 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_7 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_ARCHIE_2 - .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_ARCHIE_3 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_22 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_23 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_24 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_16 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_25 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_17 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_18 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_SHELLY_1 - .else - .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_36 - .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_42 - .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_46 - .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_47 - .set OPPONENT_514, OPPONENT_HECTOR_2 - .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_TABITHA_2 - .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_40 - .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_28 - .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_29 - .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_30 - .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_53 - .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_TABITHA_1 - .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_31 - .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_54 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_32 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_33 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_COURTNEY_2 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_34 - .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_MAXIE_2 - .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_MAXIE_3 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_49 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_50 - .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_51 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_43 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_52 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_44 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_45 - .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_COURTNEY_1 + .equiv GAME_VERSION, 5 .endif diff --git a/src/main.c b/src/main.c index c96e4cc3a..60f762a62 100644 --- a/src/main.c +++ b/src/main.c @@ -36,7 +36,7 @@ extern bool32 sub_80F5118(void); extern struct SoundInfo gSoundInfo; extern u32 gFlashMemoryPresent; -extern u32 IntrMain[]; +extern u32 intr_main[]; extern u8 gHeap[]; extern struct SaveBlock1 gSaveBlock1; extern struct SaveBlock2 gSaveBlock2; @@ -313,7 +313,7 @@ void InitIntrHandlers(void) for (i = 0; i < INTR_COUNT; i++) gIntrTable[i] = gIntrTableTemplate[i]; - DmaCopy32(3, IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer)); + DmaCopy32(3, intr_main, IntrMain_Buffer, sizeof(IntrMain_Buffer)); INTR_VECTOR = IntrMain_Buffer; -- cgit v1.2.3 From d35a54052fdf80a4770004027f2e8d8a07873a30 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 10:03:47 -0500 Subject: through sub_80C3580 --- asm/region_map.s | 244 ------------------------------------------------------- src/region_map.c | 95 +++++++++++++++++++++- 2 files changed, 93 insertions(+), 246 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 10f8c83f4..62323a302 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,250 +5,6 @@ .text - thumb_func_start sub_80C3418 -sub_80C3418: @ 80C3418 - push {r4,r5,lr} - movs r0, 0 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C3482 - ldr r5, _080C3474 @ =gUnknown_20399E4 - ldr r1, [r5] - ldrb r0, [r1, 0xE] - adds r0, 0x1 - strb r0, [r1, 0xE] - ldr r4, [r5] - ldrb r0, [r4, 0xE] - movs r1, 0x3 - bl __umodsi3 - strb r0, [r4, 0xE] - ldr r0, [r5] - ldrb r0, [r0, 0xE] - cmp r0, 0 - bne _080C3460 - bl sub_80C0E20 - adds r4, r0, 0 - bl sub_80C0E34 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080C3460 - ldr r1, [r5] - ldrb r0, [r1, 0xE] - adds r0, 0x1 - strb r0, [r1, 0xE] -_080C3460: - ldr r4, _080C3474 @ =gUnknown_20399E4 - ldr r1, [r4] - ldrb r0, [r1, 0xE] - cmp r0, 0x1 - beq _080C3478 - cmp r0, 0x1 - ble _080C34A2 - cmp r0, 0x2 - beq _080C34B8 - b _080C34A2 - .align 2, 0 -_080C3474: .4byte gUnknown_20399E4 -_080C3478: - movs r0, 0x15 - strh r0, [r1] - movs r0, 0xB - strh r0, [r1, 0x2] - b _080C34C0 -_080C3482: - ldr r4, _080C34B4 @ =gUnknown_20399E4 - ldr r1, [r4] - ldrb r0, [r1, 0xE] - adds r0, 0x1 - strb r0, [r1, 0xE] - ldr r2, [r4] - ldrb r0, [r2, 0xE] - movs r1, 0x1 - ands r0, r1 - strb r0, [r2, 0xE] - ldr r1, [r4] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _080C34A2 - cmp r0, 0x1 - beq _080C34B8 -_080C34A2: - bl sub_80C4380 - ldr r1, [r4] - strh r0, [r1] - bl sub_80C438C - ldr r1, [r4] - strh r0, [r1, 0x2] - b _080C34C0 - .align 2, 0 -_080C34B4: .4byte gUnknown_20399E4 -_080C34B8: - movs r0, 0xD - strh r0, [r1, 0x2] - movs r0, 0x15 - strh r0, [r1] -_080C34C0: - ldr r4, _080C3504 @ =gUnknown_20399E4 - ldr r1, [r4] - ldr r2, [r1, 0x1C] - movs r3, 0 - ldrsh r0, [r1, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r2, 0x20] - ldr r2, [r1, 0x1C] - movs r5, 0x2 - ldrsh r0, [r1, r5] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r2, 0x22] - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0 - bl sub_80C4164 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x14] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C3504: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3418 - - thumb_func_start sub_80C3508 -sub_80C3508: @ 80C3508 - ldr r0, _080C3510 @ =gUnknown_20399E4 - ldr r0, [r0] - ldrh r0, [r0] - bx lr - .align 2, 0 -_080C3510: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3508 - - thumb_func_start sub_80C3514 -sub_80C3514: @ 80C3514 - ldr r0, _080C351C @ =gUnknown_20399E4 - ldr r0, [r0] - ldrh r0, [r0, 0x2] - bx lr - .align 2, 0 -_080C351C: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3514 - - thumb_func_start sub_80C3520 -sub_80C3520: @ 80C3520 - push {r4,lr} - ldr r4, _080C353C @ =gUnknown_20399E4 - ldr r1, [r4] - ldrh r0, [r1, 0x2] - cmp r0, 0xE - bhi _080C3538 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - blt _080C3538 - cmp r0, 0x15 - ble _080C3540 -_080C3538: - movs r0, 0xC5 - b _080C3574 - .align 2, 0 -_080C353C: .4byte gUnknown_20399E4 -_080C3540: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r4, 0 - ldrsh r3, [r1, r4] - movs r1, 0 - bl sub_80C4164 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xAE - beq _080C3564 - cmp r4, 0xBB - bne _080C3572 -_080C3564: - ldr r0, _080C357C @ =0x000008b5 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C3572 - movs r4, 0xC5 -_080C3572: - adds r0, r4, 0 -_080C3574: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C357C: .4byte 0x000008b5 - thumb_func_end sub_80C3520 - - thumb_func_start sub_80C3580 -sub_80C3580: @ 80C3580 - push {r4,lr} - ldr r4, _080C359C @ =gUnknown_20399E4 - ldr r1, [r4] - ldrh r0, [r1, 0x2] - cmp r0, 0xE - bhi _080C3598 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - blt _080C3598 - cmp r0, 0x15 - ble _080C35A0 -_080C3598: - movs r0, 0xC5 - b _080C35D0 - .align 2, 0 -_080C359C: .4byte gUnknown_20399E4 -_080C35A0: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r4, 0 - ldrsh r3, [r1, r4] - movs r1, 0x1 - bl sub_80C4164 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8D - bne _080C35CE - ldr r0, _080C35D8 @ =0x00000844 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C35CE - movs r4, 0xC5 -_080C35CE: - adds r0, r4, 0 -_080C35D0: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C35D8: .4byte 0x00000844 - thumb_func_end sub_80C3580 - thumb_func_start sub_80C35DC sub_80C35DC: @ 80C35DC push {lr} diff --git a/src/region_map.c b/src/region_map.c index 8ea4c9bb6..e8252065e 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -231,16 +231,18 @@ u8 sub_80C31C0(void); u8 sub_80C3348(void); u8 sub_80C3400(void); void sub_80C3418(void); -u8 sub_80C3878(u8 a0); u16 sub_80C3520(void); u8 sub_80C35DC(u8 a0); +u8 sub_80C3878(u8 a0); u8 sub_80C3AC8(u8 a0); void sub_80C3D40(void); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); void sub_80C4324(u8 a0); -void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C4348(void); +u16 sub_80C4380(); +u16 sub_80C438C(); +void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); @@ -2223,3 +2225,92 @@ u8 sub_80C3400(void) { return gUnknown_20399E4->field_010(); } + +void sub_80C3418(void) +{ + if (sub_80C0E04(0) == 1) + { + gUnknown_20399E4->field_00E++; + gUnknown_20399E4->field_00E %= 3; + if (gUnknown_20399E4->field_00E == 0 && sub_80C0E20() != sub_80C0E34()) + { + gUnknown_20399E4->field_00E++; + } + switch (gUnknown_20399E4->field_00E) + { + case 0: + default: + gUnknown_20399E4->field_000 = sub_80C4380(); + gUnknown_20399E4->field_002 = sub_80C438C(); + break; + case 1: + gUnknown_20399E4->field_000 = 21; + gUnknown_20399E4->field_002 = 11; + break; + case 2: + gUnknown_20399E4->field_002 = 13; + gUnknown_20399E4->field_000 = 21; + break; + } + } + else + { + gUnknown_20399E4->field_00E++; + gUnknown_20399E4->field_00E %= 2; + switch (gUnknown_20399E4->field_00E) + { + case 0: + default: + gUnknown_20399E4->field_000 = sub_80C4380(); + gUnknown_20399E4->field_002 = sub_80C438C(); + break; + case 1: + gUnknown_20399E4->field_002 = 13; + gUnknown_20399E4->field_000 = 21; + break; + } + } + gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36; + gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36; + gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); +} + +u16 sub_80C3508(void) +{ + return gUnknown_20399E4->field_000; +} + +u16 sub_80C3514(void) +{ + return gUnknown_20399E4->field_002; +} + +u16 sub_80C3520(void) +{ + u8 ret; + if (gUnknown_20399E4->field_002 < 0 + || gUnknown_20399E4->field_002 > 14 + || gUnknown_20399E4->field_000 < 0 + || gUnknown_20399E4->field_000 > 21) + return MAPSEC_NONE; + + ret = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + if ((ret == MAPSEC_NAVEL_ROCK || ret == MAPSEC_BIRTH_ISLAND) && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) + ret = MAPSEC_NONE; + return ret; +} + +u16 sub_80C3580(void) +{ + u8 ret; + if (gUnknown_20399E4->field_002 < 0 + || gUnknown_20399E4->field_002 > 14 + || gUnknown_20399E4->field_000 < 0 + || gUnknown_20399E4->field_000 > 21) + return MAPSEC_NONE; + + ret = sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + if (ret == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS)) + ret = MAPSEC_NONE; + return ret; +} -- cgit v1.2.3 From 5249e584f73c871886a382e581148ba2d3217116 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 10:19:21 -0500 Subject: through sub_80C3878 --- asm/region_map.s | 515 ------------------------------------------------------- src/region_map.c | 126 ++++++++++++++ 2 files changed, 126 insertions(+), 515 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 62323a302..b08e56f6c 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,521 +5,6 @@ .text - thumb_func_start sub_80C35DC -sub_80C35DC: @ 80C35DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x58 - cmp r0, 0x6D - bls _080C35EA - b _080C3870 -_080C35EA: - lsls r0, 2 - ldr r1, _080C35F4 @ =_080C35F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C35F4: .4byte _080C35F8 - .align 2, 0 -_080C35F8: - .4byte _080C37B0 - .4byte _080C37B6 - .4byte _080C37C0 - .4byte _080C37C8 - .4byte _080C37D0 - .4byte _080C37D8 - .4byte _080C37E0 - .4byte _080C37E8 - .4byte _080C37F0 - .4byte _080C37F8 - .4byte _080C3800 - .4byte _080C3840 - .4byte _080C3858 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3808 - .4byte _080C3810 - .4byte _080C3818 - .4byte _080C3820 - .4byte _080C3828 - .4byte _080C3830 - .4byte _080C3836 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C3870 - .4byte _080C384C -_080C37B0: - movs r0, 0x89 - lsls r0, 4 - b _080C385A -_080C37B6: - ldr r0, _080C37BC @ =0x00000891 - b _080C385A - .align 2, 0 -_080C37BC: .4byte 0x00000891 -_080C37C0: - ldr r0, _080C37C4 @ =0x00000892 - b _080C385A - .align 2, 0 -_080C37C4: .4byte 0x00000892 -_080C37C8: - ldr r0, _080C37CC @ =0x00000893 - b _080C385A - .align 2, 0 -_080C37CC: .4byte 0x00000893 -_080C37D0: - ldr r0, _080C37D4 @ =0x00000894 - b _080C385A - .align 2, 0 -_080C37D4: .4byte 0x00000894 -_080C37D8: - ldr r0, _080C37DC @ =0x00000895 - b _080C385A - .align 2, 0 -_080C37DC: .4byte 0x00000895 -_080C37E0: - ldr r0, _080C37E4 @ =0x00000896 - b _080C385A - .align 2, 0 -_080C37E4: .4byte 0x00000896 -_080C37E8: - ldr r0, _080C37EC @ =0x00000897 - b _080C385A - .align 2, 0 -_080C37EC: .4byte 0x00000897 -_080C37F0: - ldr r0, _080C37F4 @ =0x00000898 - b _080C385A - .align 2, 0 -_080C37F4: .4byte 0x00000898 -_080C37F8: - ldr r0, _080C37FC @ =0x00000899 - b _080C385A - .align 2, 0 -_080C37FC: .4byte 0x00000899 -_080C3800: - ldr r0, _080C3804 @ =0x0000089a - b _080C385A - .align 2, 0 -_080C3804: .4byte 0x0000089a -_080C3808: - ldr r0, _080C380C @ =0x0000089b - b _080C385A - .align 2, 0 -_080C380C: .4byte 0x0000089b -_080C3810: - ldr r0, _080C3814 @ =0x0000089c - b _080C385A - .align 2, 0 -_080C3814: .4byte 0x0000089c -_080C3818: - ldr r0, _080C381C @ =0x0000089d - b _080C385A - .align 2, 0 -_080C381C: .4byte 0x0000089d -_080C3820: - ldr r0, _080C3824 @ =0x0000089e - b _080C385A - .align 2, 0 -_080C3824: .4byte 0x0000089e -_080C3828: - ldr r0, _080C382C @ =0x0000089f - b _080C385A - .align 2, 0 -_080C382C: .4byte 0x0000089f -_080C3830: - movs r0, 0x8A - lsls r0, 4 - b _080C385A -_080C3836: - ldr r0, _080C383C @ =0x000008a1 - b _080C385A - .align 2, 0 -_080C383C: .4byte 0x000008a1 -_080C3840: - movs r0, 0x3 - bl sub_80C0E04 - lsls r0, 24 - cmp r0, 0 - bne _080C3850 -_080C384C: - movs r0, 0 - b _080C3872 -_080C3850: - ldr r0, _080C3854 @ =0x000008a2 - b _080C385A - .align 2, 0 -_080C3854: .4byte 0x000008a2 -_080C3858: - ldr r0, _080C386C @ =0x000008a3 -_080C385A: - bl FlagGet - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080C3868 - movs r1, 0x2 -_080C3868: - adds r0, r1, 0 - b _080C3872 - .align 2, 0 -_080C386C: .4byte 0x000008a3 -_080C3870: - movs r0, 0x1 -_080C3872: - pop {r1} - bx r1 - thumb_func_end sub_80C35DC - - thumb_func_start sub_80C3878 -sub_80C3878: @ 80C3878 - push {lr} - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x7E - cmp r0, 0x47 - bls _080C3886 - b _080C3AC0 -_080C3886: - lsls r0, 2 - ldr r1, _080C3890 @ =_080C3894 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C3890: .4byte _080C3894 - .align 2, 0 -_080C3894: - .4byte _080C39B8 - .4byte _080C39C0 - .4byte _080C39C8 - .4byte _080C39D0 - .4byte _080C39D8 - .4byte _080C39E0 - .4byte _080C39E8 - .4byte _080C39F0 - .4byte _080C39F8 - .4byte _080C3A00 - .4byte _080C3A08 - .4byte _080C3A10 - .4byte _080C3A18 - .4byte _080C3A1E - .4byte _080C3A28 - .4byte _080C3A30 - .4byte _080C3A38 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3A40 - .4byte _080C3A48 - .4byte _080C3A50 - .4byte _080C3A58 - .4byte _080C3A60 - .4byte _080C3A68 - .4byte _080C3A70 - .4byte _080C3A78 - .4byte _080C3A80 - .4byte _080C3A88 - .4byte _080C3A90 - .4byte _080C3A98 - .4byte _080C3A9E - .4byte _080C3AA8 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C3AC0 - .4byte _080C39B4 -_080C39B4: - movs r0, 0 - b _080C3AC2 -_080C39B8: - ldr r0, _080C39BC @ =0x000008a4 - b _080C3AAA - .align 2, 0 -_080C39BC: .4byte 0x000008a4 -_080C39C0: - ldr r0, _080C39C4 @ =0x000008a5 - b _080C3AAA - .align 2, 0 -_080C39C4: .4byte 0x000008a5 -_080C39C8: - ldr r0, _080C39CC @ =0x000008a6 - b _080C3AAA - .align 2, 0 -_080C39CC: .4byte 0x000008a6 -_080C39D0: - ldr r0, _080C39D4 @ =0x000008a7 - b _080C3AAA - .align 2, 0 -_080C39D4: .4byte 0x000008a7 -_080C39D8: - ldr r0, _080C39DC @ =0x000008a8 - b _080C3AAA - .align 2, 0 -_080C39DC: .4byte 0x000008a8 -_080C39E0: - ldr r0, _080C39E4 @ =0x000008a9 - b _080C3AAA - .align 2, 0 -_080C39E4: .4byte 0x000008a9 -_080C39E8: - ldr r0, _080C39EC @ =0x000008aa - b _080C3AAA - .align 2, 0 -_080C39EC: .4byte 0x000008aa -_080C39F0: - ldr r0, _080C39F4 @ =0x000008ab - b _080C3AAA - .align 2, 0 -_080C39F4: .4byte 0x000008ab -_080C39F8: - ldr r0, _080C39FC @ =0x000008ac - b _080C3AAA - .align 2, 0 -_080C39FC: .4byte 0x000008ac -_080C3A00: - ldr r0, _080C3A04 @ =0x000008ad - b _080C3AAA - .align 2, 0 -_080C3A04: .4byte 0x000008ad -_080C3A08: - ldr r0, _080C3A0C @ =0x000008ae - b _080C3AAA - .align 2, 0 -_080C3A0C: .4byte 0x000008ae -_080C3A10: - ldr r0, _080C3A14 @ =0x000008af - b _080C3AAA - .align 2, 0 -_080C3A14: .4byte 0x000008af -_080C3A18: - movs r0, 0x8B - lsls r0, 4 - b _080C3AAA -_080C3A1E: - ldr r0, _080C3A24 @ =0x000008b1 - b _080C3AAA - .align 2, 0 -_080C3A24: .4byte 0x000008b1 -_080C3A28: - ldr r0, _080C3A2C @ =0x000008b2 - b _080C3AAA - .align 2, 0 -_080C3A2C: .4byte 0x000008b2 -_080C3A30: - ldr r0, _080C3A34 @ =0x000008b3 - b _080C3AAA - .align 2, 0 -_080C3A34: .4byte 0x000008b3 -_080C3A38: - ldr r0, _080C3A3C @ =0x000008b4 - b _080C3AAA - .align 2, 0 -_080C3A3C: .4byte 0x000008b4 -_080C3A40: - ldr r0, _080C3A44 @ =0x000008b5 - b _080C3AAA - .align 2, 0 -_080C3A44: .4byte 0x000008b5 -_080C3A48: - ldr r0, _080C3A4C @ =0x000008b6 - b _080C3AAA - .align 2, 0 -_080C3A4C: .4byte 0x000008b6 -_080C3A50: - ldr r0, _080C3A54 @ =0x000008b7 - b _080C3AAA - .align 2, 0 -_080C3A54: .4byte 0x000008b7 -_080C3A58: - ldr r0, _080C3A5C @ =0x000008b8 - b _080C3AAA - .align 2, 0 -_080C3A5C: .4byte 0x000008b8 -_080C3A60: - ldr r0, _080C3A64 @ =0x000008b9 - b _080C3AAA - .align 2, 0 -_080C3A64: .4byte 0x000008b9 -_080C3A68: - ldr r0, _080C3A6C @ =0x000008ba - b _080C3AAA - .align 2, 0 -_080C3A6C: .4byte 0x000008ba -_080C3A70: - ldr r0, _080C3A74 @ =0x000008bb - b _080C3AAA - .align 2, 0 -_080C3A74: .4byte 0x000008bb -_080C3A78: - ldr r0, _080C3A7C @ =0x000008bc - b _080C3AAA - .align 2, 0 -_080C3A7C: .4byte 0x000008bc -_080C3A80: - ldr r0, _080C3A84 @ =0x000008bd - b _080C3AAA - .align 2, 0 -_080C3A84: .4byte 0x000008bd -_080C3A88: - ldr r0, _080C3A8C @ =0x000008be - b _080C3AAA - .align 2, 0 -_080C3A8C: .4byte 0x000008be -_080C3A90: - ldr r0, _080C3A94 @ =0x000008bf - b _080C3AAA - .align 2, 0 -_080C3A94: .4byte 0x000008bf -_080C3A98: - movs r0, 0x8C - lsls r0, 4 - b _080C3AAA -_080C3A9E: - ldr r0, _080C3AA4 @ =0x000008c1 - b _080C3AAA - .align 2, 0 -_080C3AA4: .4byte 0x000008c1 -_080C3AA8: - ldr r0, _080C3ABC @ =0x000008c2 -_080C3AAA: - bl FlagGet - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080C3AB8 - movs r1, 0x2 -_080C3AB8: - adds r0, r1, 0 - b _080C3AC2 - .align 2, 0 -_080C3ABC: .4byte 0x000008c2 -_080C3AC0: - movs r0, 0x1 -_080C3AC2: - pop {r1} - bx r1 - thumb_func_end sub_80C3878 - thumb_func_start sub_80C3AC8 sub_80C3AC8: @ 80C3AC8 push {lr} diff --git a/src/region_map.c b/src/region_map.c index e8252065e..c07ebcfb0 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -2314,3 +2314,129 @@ u16 sub_80C3580(void) ret = MAPSEC_NONE; return ret; } + +u8 sub_80C35DC(u8 mapsec) +{ + switch (mapsec) + { + case MAPSEC_PALLET_TOWN: + return FlagGet(FLAG_WORLD_MAP_PALLET_TOWN) ? 2 : 3; + case MAPSEC_VIRIDIAN_CITY: + return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY) ? 2 : 3; + case MAPSEC_PEWTER_CITY: + return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY) ? 2 : 3; + case MAPSEC_CERULEAN_CITY: + return FlagGet(FLAG_WORLD_MAP_CERULEAN_CITY) ? 2 : 3; + case MAPSEC_LAVENDER_TOWN: + return FlagGet(FLAG_WORLD_MAP_LAVENDER_TOWN) ? 2 : 3; + case MAPSEC_VERMILION_CITY: + return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY) ? 2 : 3; + case MAPSEC_CELADON_CITY: + return FlagGet(FLAG_WORLD_MAP_CELADON_CITY) ? 2 : 3; + case MAPSEC_FUCHSIA_CITY: + return FlagGet(FLAG_WORLD_MAP_FUCHSIA_CITY) ? 2 : 3; + case MAPSEC_CINNABAR_ISLAND: + return FlagGet(FLAG_WORLD_MAP_CINNABAR_ISLAND) ? 2 : 3; + case MAPSEC_INDIGO_PLATEAU: + return FlagGet(FLAG_WORLD_MAP_INDIGO_PLATEAU_EXTERIOR) ? 2 : 3; + case MAPSEC_SAFFRON_CITY: + return FlagGet(FLAG_WORLD_MAP_SAFFRON_CITY) ? 2 : 3; + case MAPSEC_ONE_ISLAND: + return FlagGet(FLAG_WORLD_MAP_ONE_ISLAND) ? 2 : 3; + case MAPSEC_TWO_ISLAND: + return FlagGet(FLAG_WORLD_MAP_TWO_ISLAND) ? 2 : 3; + case MAPSEC_THREE_ISLAND: + return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND) ? 2 : 3; + case MAPSEC_FOUR_ISLAND: + return FlagGet(FLAG_WORLD_MAP_FOUR_ISLAND) ? 2 : 3; + case MAPSEC_FIVE_ISLAND: + return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND) ? 2 : 3; + case MAPSEC_SEVEN_ISLAND: + return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND) ? 2 : 3; + case MAPSEC_SIX_ISLAND: + return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND) ? 2 : 3; + case MAPSEC_ROUTE_4_FLYDUP: + if (!sub_80C0E04(3)) + return 0; + return FlagGet(FLAG_WORLD_MAP_ROUTE4_POKEMON_CENTER_1F) ? 2 : 3; + case MAPSEC_ROUTE_10_FLYDUP: + return FlagGet(FLAG_WORLD_MAP_ROUTE10_POKEMON_CENTER_1F) ? 2 : 3; + case MAPSEC_NONE: + return 0; + default: + return 1; + } +} + +u8 sub_80C3878(u8 mapsec) +{ + switch (mapsec) + { + case MAPSEC_NONE: + return 0; + case MAPSEC_VIRIDIAN_FOREST: + return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_FOREST) ? 2 : 3; + case MAPSEC_MT_MOON: + return FlagGet(FLAG_WORLD_MAP_MT_MOON_1F) ? 2 : 3; + case MAPSEC_S_S_ANNE: + return FlagGet(FLAG_WORLD_MAP_SSANNE_EXTERIOR) ? 2 : 3; + case MAPSEC_UNDERGROUND_PATH: + return FlagGet(FLAG_WORLD_MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL) ? 2 : 3; + case MAPSEC_UNDERGROUND_PATH_2: + return FlagGet(FLAG_WORLD_MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL) ? 2 : 3; + case MAPSEC_DIGLETTS_CAVE: + return FlagGet(FLAG_WORLD_MAP_DIGLETTS_CAVE_B1F) ? 2 : 3; + case MAPSEC_KANTO_VICTORY_ROAD: + return FlagGet(FLAG_WORLD_MAP_VICTORY_ROAD_1F) ? 2 : 3; + case MAPSEC_ROCKET_HIDEOUT: + return FlagGet(FLAG_WORLD_MAP_ROCKET_HIDEOUT_B1F) ? 2 : 3; + case MAPSEC_SILPH_CO: + return FlagGet(FLAG_WORLD_MAP_SILPH_CO_1F) ? 2 : 3; + case MAPSEC_POKEMON_MANSION: + return FlagGet(FLAG_WORLD_MAP_POKEMON_MANSION_1F) ? 2 : 3; + case MAPSEC_KANTO_SAFARI_ZONE: + return FlagGet(FLAG_WORLD_MAP_SAFARI_ZONE_CENTER) ? 2 : 3; + case MAPSEC_POKEMON_LEAGUE: + return FlagGet(FLAG_WORLD_MAP_POKEMON_LEAGUE_LORELEIS_ROOM) ? 2 : 3; + case MAPSEC_ROCK_TUNNEL: + return FlagGet(FLAG_WORLD_MAP_ROCK_TUNNEL_1F) ? 2 : 3; + case MAPSEC_SEAFOAM_ISLANDS: + return FlagGet(FLAG_WORLD_MAP_SEAFOAM_ISLANDS_1F) ? 2 : 3; + case MAPSEC_POKEMON_TOWER: + return FlagGet(FLAG_WORLD_MAP_POKEMON_TOWER_1F) ? 2 : 3; + case MAPSEC_CERULEAN_CAVE: + return FlagGet(FLAG_WORLD_MAP_CERULEAN_CAVE_1F) ? 2 : 3; + case MAPSEC_POWER_PLANT: + return FlagGet(FLAG_WORLD_MAP_POWER_PLANT) ? 2 : 3; + case MAPSEC_NAVEL_ROCK: + return FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR) ? 2 : 3; + case MAPSEC_MT_EMBER: + return FlagGet(FLAG_WORLD_MAP_MT_EMBER_EXTERIOR) ? 2 : 3; + case MAPSEC_BERRY_FOREST: + return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST) ? 2 : 3; + case MAPSEC_ICEFALL_CAVE: + return FlagGet(FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE) ? 2 : 3; + case MAPSEC_ROCKET_WAREHOUSE: + return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE) ? 2 : 3; + case MAPSEC_TRAINER_TOWER_2: + return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY) ? 2 : 3; + case MAPSEC_DOTTED_HOLE: + return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F) ? 2 : 3; + case MAPSEC_LOST_CAVE: + return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE) ? 2 : 3; + case MAPSEC_PATTERN_BUSH: + return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH) ? 2 : 3; + case MAPSEC_ALTERING_CAVE: + return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_ALTERING_CAVE) ? 2 : 3; + case MAPSEC_TANOBY_CHAMBERS: + return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER) ? 2 : 3; + case MAPSEC_THREE_ISLE_PATH: + return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND_DUNSPARCE_TUNNEL) ? 2 : 3; + case MAPSEC_TANOBY_KEY: + return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY) ? 2 : 3; + case MAPSEC_BIRTH_ISLAND: + return FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR) ? 2 : 3; + default: + return 1; + } +} -- cgit v1.2.3 From 268cf6626f4a79ea612cde6e60f4605bf1886cf4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 11:23:31 -0500 Subject: through sub_80C3B28 --- asm/region_map.s | 310 ------------------------------------------------------- src/region_map.c | 98 ++++++++++++++++++ 2 files changed, 98 insertions(+), 310 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index b08e56f6c..85735a08b 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,316 +5,6 @@ .text - thumb_func_start sub_80C3AC8 -sub_80C3AC8: @ 80C3AC8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080C3AE4 - cmp r0, 0x1 - beq _080C3AF0 - ldr r0, _080C3AE0 @ =gUnknown_20399E4 - ldr r0, [r0] - ldrb r0, [r0, 0x16] - b _080C3AF6 - .align 2, 0 -_080C3AE0: .4byte gUnknown_20399E4 -_080C3AE4: - ldr r0, _080C3AEC @ =gUnknown_20399E4 - ldr r0, [r0] - ldrb r0, [r0, 0x16] - b _080C3AF6 - .align 2, 0 -_080C3AEC: .4byte gUnknown_20399E4 -_080C3AF0: - ldr r0, _080C3AFC @ =gUnknown_20399E4 - ldr r0, [r0] - ldrb r0, [r0, 0x18] -_080C3AF6: - pop {r1} - bx r1 - .align 2, 0 -_080C3AFC: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3AC8 - - thumb_func_start sub_80C3B00 -sub_80C3B00: @ 80C3B00 - push {lr} - ldr r0, _080C3B24 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_080C3B24: .4byte gSaveBlock1Ptr - thumb_func_end sub_80C3B00 - - thumb_func_start sub_80C3B28 -sub_80C3B28: @ 80C3B28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080C3B58 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x8 - bhi _080C3B84 - lsls r0, 2 - ldr r1, _080C3B5C @ =_080C3B60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C3B58: .4byte gSaveBlock1Ptr -_080C3B5C: .4byte _080C3B60 - .align 2, 0 -_080C3B60: - .4byte _080C3B84 - .4byte _080C3B84 - .4byte _080C3B84 - .4byte _080C3BAC - .4byte _080C3B84 - .4byte _080C3B84 - .4byte _080C3BAC - .4byte _080C3C2C - .4byte _080C3BF0 -_080C3B84: - ldr r0, _080C3BA0 @ =gUnknown_20399E4 - ldr r2, [r0] - ldr r1, _080C3BA4 @ =gMapHeader - ldrb r0, [r1, 0x14] - strh r0, [r2, 0x14] - ldr r0, [r1] - ldrh r1, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldr r0, _080C3BA8 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r4, [r0] - ldrh r5, [r0, 0x2] - b _080C3C9A - .align 2, 0 -_080C3BA0: .4byte gUnknown_20399E4 -_080C3BA4: .4byte gMapHeader -_080C3BA8: .4byte gSaveBlock1Ptr -_080C3BAC: - ldr r4, _080C3BE8 @ =gSaveBlock1Ptr - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - adds r1, 0x25 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r2, r0, 0 - ldr r0, _080C3BEC @ =gUnknown_20399E4 - ldr r1, [r0] - ldrb r0, [r2, 0x14] - strh r0, [r1, 0x14] - ldr r0, [r2] - ldrh r1, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldr r0, [r4] - ldrh r4, [r0, 0x28] - ldrh r5, [r0, 0x2A] - b _080C3C9A - .align 2, 0 -_080C3BE8: .4byte gSaveBlock1Ptr -_080C3BEC: .4byte gUnknown_20399E4 -_080C3BF0: - ldr r4, _080C3C24 @ =gSaveBlock1Ptr - ldr r1, [r4] - movs r0, 0x14 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x15] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r2, r0, 0 - ldr r0, _080C3C28 @ =gUnknown_20399E4 - ldr r1, [r0] - ldrb r0, [r2, 0x14] - strh r0, [r1, 0x14] - ldr r0, [r2] - ldrh r1, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldr r0, [r4] - ldrh r4, [r0, 0x18] - ldrh r5, [r0, 0x1A] - b _080C3C9A - .align 2, 0 -_080C3C24: .4byte gSaveBlock1Ptr -_080C3C28: .4byte gUnknown_20399E4 -_080C3C2C: - ldr r4, _080C3C5C @ =gUnknown_20399E4 - ldr r0, [r4] - ldr r1, _080C3C60 @ =gMapHeader - ldrb r1, [r1, 0x14] - strh r1, [r0, 0x14] - cmp r1, 0xC4 - beq _080C3C68 - ldr r0, _080C3C64 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r5, r0, 0 - adds r5, 0x24 - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r5, r1] - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r2, r0, 0 - b _080C3C8E - .align 2, 0 -_080C3C5C: .4byte gUnknown_20399E4 -_080C3C60: .4byte gMapHeader -_080C3C64: .4byte gSaveBlock1Ptr -_080C3C68: - ldr r0, _080C3D30 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r5, r0, 0 - adds r5, 0x14 - ldrb r0, [r0, 0x14] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r5, r1] - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r2, r0, 0 - ldr r1, [r4] - ldrb r0, [r2, 0x14] - strh r0, [r1, 0x14] -_080C3C8E: - ldr r0, [r2] - ldrh r1, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r4, [r5, 0x4] - ldrh r5, [r5, 0x6] -_080C3C9A: - ldr r0, _080C3D34 @ =gUnknown_20399E4 - ldr r7, [r0] - ldrh r0, [r7, 0x14] - subs r0, 0x58 - strh r0, [r7, 0x14] - ldr r0, _080C3D38 @ =gUnknown_83F2178 - mov r10, r0 - ldrh r0, [r7, 0x14] - lsls r0, 2 - mov r9, r0 - add r0, r10 - ldrh r6, [r0] - adds r0, r1, 0 - adds r1, r6, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080C3CC4 - movs r1, 0x1 -_080C3CC4: - adds r0, r4, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r6 - bcc _080C3CD8 - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080C3CD8: - mov r0, r10 - adds r0, 0x2 - add r0, r9 - ldrh r6, [r0] - mov r0, r8 - adds r1, r6, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080C3CF2 - movs r1, 0x1 -_080C3CF2: - adds r0, r5, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r6 - bcc _080C3D06 - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080C3D06: - ldr r1, _080C3D3C @ =gUnknown_83F1E60 - mov r2, r9 - adds r0, r2, r1 - ldrh r0, [r0] - adds r0, r4, r0 - strh r0, [r7] - ldrh r0, [r7, 0x14] - lsls r0, 2 - adds r1, 0x2 - adds r0, r1 - ldrh r0, [r0] - adds r0, r5, r0 - strh r0, [r7, 0x2] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C3D30: .4byte gSaveBlock1Ptr -_080C3D34: .4byte gUnknown_20399E4 -_080C3D38: .4byte gUnknown_83F2178 -_080C3D3C: .4byte gUnknown_83F1E60 - thumb_func_end sub_80C3B28 - thumb_func_start sub_80C3D40 sub_80C3D40: @ 80C3D40 push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index c07ebcfb0..c380319dc 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -310,6 +310,8 @@ extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34; extern const struct OamData gUnknown_83F1C3C; extern const union AnimCmd *const gUnknown_83F1C50[]; extern const u8 *const gUnknown_83F1CAC[]; +extern const u16 gUnknown_83F1E60[][2]; +extern const u16 gUnknown_83F2178[][2]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -2440,3 +2442,99 @@ u8 sub_80C3878(u8 mapsec) return 1; } } + +u8 sub_80C3AC8(u8 a0) +{ + switch (a0) + { + default: + return gUnknown_20399E4->field_016; + case 0: + return gUnknown_20399E4->field_016; + case 1: + return gUnknown_20399E4->field_018; + } +} + +u8 sub_80C3B00(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; +} + +void sub_80C3B28(void) +{ + u16 width; + u32 divisor; + u16 height; + u16 x; + u16 y; + u32 r6; + const struct MapHeader * mapHeader; + struct WarpData * warp; + + switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + { + default: + case 1: + case 2: + case 3: + case 5: + case 6: + gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId; + width = gMapHeader.mapLayout->width; + height = gMapHeader.mapLayout->height; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + break; + case 4: + case 7: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); + gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId; + width = mapHeader->mapLayout->width; + height = mapHeader->mapLayout->height; + x = gSaveBlock1Ptr->escapeWarp.x; + y = gSaveBlock1Ptr->escapeWarp.y; + break; + case 9: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum); + gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId; + width = mapHeader->mapLayout->width; + height = mapHeader->mapLayout->height; + x = gSaveBlock1Ptr->warp2.x; + y = gSaveBlock1Ptr->warp2.y; + break; + case 8: + if ((gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId) != MAPSEC_SPECIAL_AREA) + { + warp = &gSaveBlock1Ptr->escapeWarp; + mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); + } + else + { + warp = &gSaveBlock1Ptr->warp2; + mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); + gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId; + } + width = mapHeader->mapLayout->width; + height = mapHeader->mapLayout->height; + x = warp->x; + y = warp->y; + break; + } + + gUnknown_20399E4->field_014 -= MAPSECS_KANTO; + divisor = width / gUnknown_83F2178[gUnknown_20399E4->field_014][0]; + if (divisor == 0) + divisor = 1; + x /= divisor; + if (x >= gUnknown_83F2178[gUnknown_20399E4->field_014][0]) + x = gUnknown_83F2178[gUnknown_20399E4->field_014][0] - 1; + divisor = height / gUnknown_83F2178[gUnknown_20399E4->field_014][1]; + if (divisor == 0) + divisor = 1; + y /= divisor; + if (y >= gUnknown_83F2178[gUnknown_20399E4->field_014][1]) + y = gUnknown_83F2178[gUnknown_20399E4->field_014][1] - 1; + gUnknown_20399E4->field_000 = x + gUnknown_83F1E60[gUnknown_20399E4->field_014][0]; + gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1]; +} -- cgit v1.2.3 From e34c1fd3d6177faba453818b3fc502f88f7215c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 12:01:00 -0500 Subject: sub_80C3D40 --- asm/region_map.s | 460 ------------------------------------------------------- src/region_map.c | 183 +++++++++++++++++++++- 2 files changed, 182 insertions(+), 461 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 85735a08b..a91d4bd7e 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,466 +5,6 @@ .text - thumb_func_start sub_80C3D40 -sub_80C3D40: @ 80C3D40 - push {r4,r5,lr} - bl sub_80C3B00 - lsls r0, 16 - lsrs r0, 16 - subs r0, 0x66 - cmp r0, 0x5C - bls _080C3D52 - b _080C4132 -_080C3D52: - lsls r0, 2 - ldr r1, _080C3D5C @ =_080C3D60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C3D5C: .4byte _080C3D60 - .align 2, 0 -_080C3D60: - .4byte _080C4034 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C40A0 - .4byte _080C40C4 - .4byte _080C40E8 - .4byte _080C4108 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4064 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4028 - .4byte _080C4132 - .4byte _080C3F24 - .4byte _080C3F50 - .4byte _080C3F78 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3F44 - .4byte _080C3EE4 - .4byte _080C3EF0 - .4byte _080C3ED4 - .4byte _080C3F38 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3F04 - .4byte _080C4132 - .4byte _080C3F10 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3FB0 - .4byte _080C3FC8 - .4byte _080C3FD4 - .4byte _080C4132 - .4byte _080C3FF4 - .4byte _080C3FBC - .4byte _080C4014 - .4byte _080C4132 - .4byte _080C3FE0 - .4byte _080C4132 - .4byte _080C4008 - .4byte _080C4132 - .4byte _080C4132 - .4byte _080C3FA4 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 - .4byte _080C4008 -_080C3ED4: - ldr r0, _080C3EE0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xC - strh r0, [r1] - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3EE0: .4byte gUnknown_20399E4 -_080C3EE4: - ldr r0, _080C3EEC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - b _080C411C - .align 2, 0 -_080C3EEC: .4byte gUnknown_20399E4 -_080C3EF0: - ldr r0, _080C3F00 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - strh r0, [r1] - movs r0, 0xE - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F00: .4byte gUnknown_20399E4 -_080C3F04: - ldr r0, _080C3F0C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - b _080C411C - .align 2, 0 -_080C3F0C: .4byte gUnknown_20399E4 -_080C3F10: - ldr r0, _080C3F20 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - strh r0, [r1] - movs r0, 0x4 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F20: .4byte gUnknown_20399E4 -_080C3F24: - ldr r0, _080C3F34 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - strh r0, [r1] - movs r0, 0x9 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3F34: .4byte gUnknown_20399E4 -_080C3F38: - ldr r0, _080C3F40 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x2 - b _080C3FE6 - .align 2, 0 -_080C3F40: .4byte gUnknown_20399E4 -_080C3F44: - ldr r0, _080C3F4C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xB - b _080C411C - .align 2, 0 -_080C3F4C: .4byte gUnknown_20399E4 -_080C3F50: - ldr r0, _080C3F70 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r2, 0xE - strh r2, [r1] - movs r0, 0x7 - strh r0, [r1, 0x2] - ldr r0, _080C3F74 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1E - beq _080C3F6C - b _080C4136 -_080C3F6C: - b _080C40B6 - .align 2, 0 -_080C3F70: .4byte gUnknown_20399E4 -_080C3F74: .4byte gSaveBlock1Ptr -_080C3F78: - ldr r0, _080C3F9C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xC - strh r0, [r1] - movs r2, 0x6 - strh r2, [r1, 0x2] - ldr r0, _080C3FA0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x23 - beq _080C3F94 - b _080C4136 -_080C3F94: - movs r0, 0xF - strh r0, [r1] - b _080C4136 - .align 2, 0 -_080C3F9C: .4byte gUnknown_20399E4 -_080C3FA0: .4byte gSaveBlock1Ptr -_080C3FA4: - ldr r0, _080C3FAC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x12 - b _080C4092 - .align 2, 0 -_080C3FAC: .4byte gUnknown_20399E4 -_080C3FB0: - ldr r0, _080C3FB8 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xA - b _080C401A - .align 2, 0 -_080C3FB8: .4byte gUnknown_20399E4 -_080C3FBC: - ldr r0, _080C3FC4 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x5 - b _080C411C - .align 2, 0 -_080C3FC4: .4byte gUnknown_20399E4 -_080C3FC8: - ldr r0, _080C3FD0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x2 - b _080C3FE6 - .align 2, 0 -_080C3FD0: .4byte gUnknown_20399E4 -_080C3FD4: - ldr r0, _080C3FDC @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE - b _080C4078 - .align 2, 0 -_080C3FDC: .4byte gUnknown_20399E4 -_080C3FE0: - ldr r0, _080C3FF0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x11 -_080C3FE6: - strh r0, [r1] - movs r0, 0x3 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C3FF0: .4byte gUnknown_20399E4 -_080C3FF4: - ldr r0, _080C4004 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x11 - strh r0, [r1] - movs r0, 0xB - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4004: .4byte gUnknown_20399E4 -_080C4008: - ldr r0, _080C4010 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x9 - b _080C4078 - .align 2, 0 -_080C4010: .4byte gUnknown_20399E4 -_080C4014: - ldr r0, _080C4024 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x10 -_080C401A: - strh r0, [r1] - movs r0, 0x8 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4024: .4byte gUnknown_20399E4 -_080C4028: - ldr r0, _080C4030 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C411C - .align 2, 0 -_080C4030: .4byte gUnknown_20399E4 -_080C4034: - ldr r0, _080C404C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C4054 - ldr r0, _080C4050 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C40D8 - .align 2, 0 -_080C404C: .4byte gSaveBlock1Ptr -_080C4050: .4byte gUnknown_20399E4 -_080C4054: - cmp r0, 0x3 - bne _080C412C - ldr r0, _080C4060 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 - b _080C40B4 - .align 2, 0 -_080C4060: .4byte gUnknown_20399E4 -_080C4064: - ldr r0, _080C4080 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x27 - bne _080C4088 - ldr r0, _080C4084 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 -_080C4078: - strh r0, [r1] - movs r0, 0xC - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4080: .4byte gSaveBlock1Ptr -_080C4084: .4byte gUnknown_20399E4 -_080C4088: - cmp r0, 0x28 - bne _080C4136 - ldr r0, _080C409C @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0x4 -_080C4092: - strh r0, [r1] - movs r0, 0xD - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C409C: .4byte gUnknown_20399E4 -_080C40A0: - ldr r0, _080C40BC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080C412C - ldr r0, _080C40C0 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE -_080C40B4: - strh r0, [r1] -_080C40B6: - movs r0, 0x5 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C40BC: .4byte gSaveBlock1Ptr -_080C40C0: .4byte gUnknown_20399E4 -_080C40C4: - ldr r0, _080C40E0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C40E4 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xE -_080C40D8: - strh r0, [r1] - movs r0, 0x7 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C40E0: .4byte gSaveBlock1Ptr -_080C40E4: .4byte gUnknown_20399E4 -_080C40E8: - ldr r0, _080C4100 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C4104 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xD - b _080C411C - .align 2, 0 -_080C4100: .4byte gSaveBlock1Ptr -_080C4104: .4byte gUnknown_20399E4 -_080C4108: - ldr r0, _080C4124 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080C412C - ldr r0, _080C4128 @ =gUnknown_20399E4 - ldr r1, [r0] - movs r0, 0xF -_080C411C: - strh r0, [r1] - movs r0, 0x6 - strh r0, [r1, 0x2] - b _080C4136 - .align 2, 0 -_080C4124: .4byte gSaveBlock1Ptr -_080C4128: .4byte gUnknown_20399E4 -_080C412C: - bl sub_80C3B28 - b _080C4136 -_080C4132: - bl sub_80C3B28 -_080C4136: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080C4160 @ =gUnknown_20399E4 - ldr r1, [r4] - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r5, 0 - ldrsh r3, [r1, r5] - movs r1, 0 - bl sub_80C4164 - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x14] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C4160: .4byte gUnknown_20399E4 - thumb_func_end sub_80C3D40 - thumb_func_start sub_80C4164 sub_80C4164: @ 80C4164 push {r4,r5,lr} diff --git a/src/region_map.c b/src/region_map.c index c380319dc..40dbadf0e 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -18,6 +18,7 @@ #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" +#include "constants/maps.h" #define FREE_IF_NOT_NULL(ptr) ({ \ if (ptr) { \ @@ -2456,7 +2457,7 @@ u8 sub_80C3AC8(u8 a0) } } -u8 sub_80C3B00(void) +u16 sub_80C3B00(void) { return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; } @@ -2538,3 +2539,183 @@ void sub_80C3B28(void) gUnknown_20399E4->field_000 = x + gUnknown_83F1E60[gUnknown_20399E4->field_014][0]; gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1]; } + +void sub_80C3D40(void) +{ + switch (sub_80C3B00()) + { + case MAPSEC_KANTO_SAFARI_ZONE: + gUnknown_20399E4->field_000 = 12; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_SILPH_CO: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_POKEMON_MANSION: + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 14; + break; + case MAPSEC_POKEMON_TOWER: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_POWER_PLANT: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 4; + break; + case MAPSEC_S_S_ANNE: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 9; + break; + case MAPSEC_POKEMON_LEAGUE: + gUnknown_20399E4->field_000 = 2; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_ROCKET_HIDEOUT: + gUnknown_20399E4->field_000 = 11; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_UNDERGROUND_PATH: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 7; + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE)) + { + gUnknown_20399E4->field_000 = 14; // optimized out but required to match + gUnknown_20399E4->field_002 = 5; + } + break; + case MAPSEC_UNDERGROUND_PATH_2: + gUnknown_20399E4->field_000 = 12; + gUnknown_20399E4->field_002 = 6; + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE)) + { + gUnknown_20399E4->field_000 = 15; + gUnknown_20399E4->field_002 = 6; // optimized out but required to match + } + break; + case MAPSEC_BIRTH_ISLAND: + gUnknown_20399E4->field_000 = 18; + gUnknown_20399E4->field_002 = 13; + break; + case MAPSEC_NAVEL_ROCK: + gUnknown_20399E4->field_000 = 10; + gUnknown_20399E4->field_002 = 8; + break; + case MAPSEC_TRAINER_TOWER_2: + gUnknown_20399E4->field_000 = 5; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_MT_EMBER: + gUnknown_20399E4->field_000 = 2; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_BERRY_FOREST: + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_PATTERN_BUSH: + gUnknown_20399E4->field_000 = 17; + gUnknown_20399E4->field_002 = 3; + break; + case MAPSEC_ROCKET_WAREHOUSE: + gUnknown_20399E4->field_000 = 17; + gUnknown_20399E4->field_002 = 11; + break; + case MAPSEC_DILFORD_CHAMBER: + case MAPSEC_LIPTOO_CHAMBER: + case MAPSEC_MONEAN_CHAMBER: + case MAPSEC_RIXY_CHAMBER: + case MAPSEC_SCUFIB_CHAMBER: + case MAPSEC_TANOBY_CHAMBERS: + case MAPSEC_VIAPOIS_CHAMBER: + case MAPSEC_WEEPTH_CHAMBER: + gUnknown_20399E4->field_000 = 9; + gUnknown_20399E4->field_002 = 12; + break; + case MAPSEC_DOTTED_HOLE: + gUnknown_20399E4->field_000 = 16; + gUnknown_20399E4->field_002 = 8; + break; + case MAPSEC_VIRIDIAN_FOREST: + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 6; + break; + case MAPSEC_ROUTE_2: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 7; + } + else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(CERULEAN_CITY)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 5; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_21: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_NORTH)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 12; + } + else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_SOUTH)) + { + gUnknown_20399E4->field_000 = 4; + gUnknown_20399E4->field_002 = 13; + } + break; + case MAPSEC_ROUTE_5: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_CITY)) + { + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 5; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_6: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 7; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_7: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 13; + gUnknown_20399E4->field_002 = 6; + } + else + { + sub_80C3B28(); + } + break; + case MAPSEC_ROUTE_8: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 15; + gUnknown_20399E4->field_002 = 6; + } + else + { + sub_80C3B28(); + } + break; + default: + sub_80C3B28(); + break; + } + gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); +} -- cgit v1.2.3 From e4d869bfc6aceb8b8e208016f08158a3a89dfd46 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 12:49:19 -0500 Subject: through sub_80C438C --- asm/region_map.s | 293 ------------------------------------------------------- src/region_map.c | 132 ++++++++++++++++++++++--- 2 files changed, 121 insertions(+), 304 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index a91d4bd7e..ac9ceeefd 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,299 +5,6 @@ .text - thumb_func_start sub_80C4164 -sub_80C4164: @ 80C4164 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r1, r3, 16 - cmp r0, 0x1 - beq _080C4198 - cmp r0, 0x1 - bgt _080C4186 - cmp r0, 0 - beq _080C4190 - b _080C41D0 -_080C4186: - cmp r5, 0x2 - beq _080C41A0 - cmp r5, 0x3 - beq _080C41A8 - b _080C41D0 -_080C4190: - ldr r3, _080C4194 @ =gUnknown_83F2490 - b _080C41AA - .align 2, 0 -_080C4194: .4byte gUnknown_83F2490 -_080C4198: - ldr r3, _080C419C @ =gUnknown_83F2724 - b _080C41AA - .align 2, 0 -_080C419C: .4byte gUnknown_83F2724 -_080C41A0: - ldr r3, _080C41A4 @ =gUnknown_83F29B8 - b _080C41AA - .align 2, 0 -_080C41A4: .4byte gUnknown_83F29B8 -_080C41A8: - ldr r3, _080C41CC @ =gUnknown_83F2C4C -_080C41AA: - lsls r1, 16 - asrs r1, 16 - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x16 - muls r0, r2 - adds r1, r0 - lsls r0, r4, 2 - adds r0, r4 - lsls r2, r0, 5 - adds r0, r2 - lsls r0, 1 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - b _080C41D2 - .align 2, 0 -_080C41CC: .4byte gUnknown_83F2C4C -_080C41D0: - movs r0, 0xC5 -_080C41D2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80C4164 - - thumb_func_start sub_80C41D8 -sub_80C41D8: @ 80C41D8 - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r4, _080C4204 @ =gUnknown_20399E8 - movs r0, 0x8C - bl AllocZeroed - adds r1, r0, 0 - str r1, [r4] - ldr r0, _080C4208 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080C4210 - ldr r0, _080C420C @ =gUnknown_83EF59C - adds r1, 0xC - bl LZ77UnCompWram - b _080C4218 - .align 2, 0 -_080C4204: .4byte gUnknown_20399E8 -_080C4208: .4byte gSaveBlock2Ptr -_080C420C: .4byte gUnknown_83EF59C -_080C4210: - ldr r0, _080C423C @ =gUnknown_83EF524 - adds r1, 0xC - bl LZ77UnCompWram -_080C4218: - ldr r4, _080C4240 @ =gUnknown_20399E8 - ldr r0, [r4] - strh r6, [r0, 0x8] - strh r5, [r0, 0xA] - bl sub_80C3508 - ldr r1, [r4] - strh r0, [r1] - bl sub_80C3514 - ldr r1, [r4] - strh r0, [r1, 0x2] - bl sub_80C4244 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C423C: .4byte gUnknown_83EF524 -_080C4240: .4byte gUnknown_20399E8 - thumb_func_end sub_80C41D8 - - thumb_func_start sub_80C4244 -sub_80C4244: @ 80C4244 - push {r4-r6,lr} - sub sp, 0x40 - ldr r6, _080C42FC @ =gUnknown_20399E8 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xC - str r0, [sp, 0x30] - movs r1, 0x80 - add r5, sp, 0x30 - str r1, [r5, 0x4] - ldrh r0, [r2, 0x8] - lsls r0, 16 - orrs r0, r1 - str r0, [r5, 0x4] - ldr r0, _080C4300 @ =gUnknown_83EF27C - str r0, [sp, 0x38] - ldrh r3, [r2, 0xA] - ldr r1, _080C4304 @ =0xffff0000 - add r4, sp, 0x38 - ldr r0, [r4, 0x4] - ands r0, r1 - orrs r0, r3 - str r0, [r4, 0x4] - ldrh r0, [r2, 0x8] - add r1, sp, 0x18 - movs r3, 0 - strh r0, [r1] - ldrh r2, [r2, 0xA] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - ldr r0, _080C4308 @ =gUnknown_83F1C54 - str r0, [sp, 0x1C] - ldr r0, _080C430C @ =gUnknown_83F1C64 - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, _080C4310 @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x28] - ldr r0, _080C4314 @ =SpriteCallbackDummy - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - ldr r0, _080C4318 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080C42AA - ldr r0, _080C431C @ =gUnknown_83EF29C - str r0, [sp, 0x38] -_080C42AA: - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - ldr r0, [r6] - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r1, 19 - movs r3, 0x90 - lsls r3, 14 - adds r1, r3 - asrs r1, 16 - movs r3, 0x2 - ldrsh r2, [r0, r3] - lsls r2, 19 - movs r0, 0x90 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - mov r0, sp - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080C4320 @ =gSprites - adds r1, r0 - str r1, [r2, 0x4] - movs r0, 0x1 - bl sub_80C4324 - add sp, 0x40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C42FC: .4byte gUnknown_20399E8 -_080C4300: .4byte gUnknown_83EF27C -_080C4304: .4byte 0xffff0000 -_080C4308: .4byte gUnknown_83F1C54 -_080C430C: .4byte gUnknown_83F1C64 -_080C4310: .4byte gDummySpriteAffineAnimTable -_080C4314: .4byte SpriteCallbackDummy -_080C4318: .4byte gSaveBlock2Ptr -_080C431C: .4byte gUnknown_83EF29C -_080C4320: .4byte gSprites - thumb_func_end sub_80C4244 - - thumb_func_start sub_80C4324 -sub_80C4324: @ 80C4324 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080C4344 @ =gUnknown_20399E8 - ldr r1, [r1] - ldr r2, [r1, 0x4] - adds r2, 0x3E - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - ldrb r3, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r0 - strb r1, [r2] - bx lr - .align 2, 0 -_080C4344: .4byte gUnknown_20399E8 - thumb_func_end sub_80C4324 - - thumb_func_start sub_80C4348 -sub_80C4348: @ 80C4348 - push {r4,lr} - ldr r4, _080C437C @ =gUnknown_20399E8 - ldr r0, [r4] - ldr r0, [r0, 0x4] - cmp r0, 0 - beq _080C4368 - bl DestroySprite - ldr r0, [r4] - ldrh r0, [r0, 0x8] - bl FreeSpriteTilesByTag - ldr r0, [r4] - ldrh r0, [r0, 0xA] - bl FreeSpritePaletteByTag -_080C4368: - ldr r0, [r4] - cmp r0, 0 - beq _080C4376 - bl Free - movs r0, 0 - str r0, [r4] -_080C4376: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C437C: .4byte gUnknown_20399E8 - thumb_func_end sub_80C4348 - - thumb_func_start sub_80C4380 -sub_80C4380: @ 80C4380 - ldr r0, _080C4388 @ =gUnknown_20399E8 - ldr r0, [r0] - ldrh r0, [r0] - bx lr - .align 2, 0 -_080C4388: .4byte gUnknown_20399E8 - thumb_func_end sub_80C4380 - - thumb_func_start sub_80C438C -sub_80C438C: @ 80C438C - ldr r0, _080C4394 @ =gUnknown_20399E8 - ldr r0, [r0] - ldrh r0, [r0, 0x2] - bx lr - .align 2, 0 -_080C4394: .4byte gUnknown_20399E8 - thumb_func_end sub_80C438C - thumb_func_start sub_80C4398 sub_80C4398: @ 80C4398 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index 40dbadf0e..7ce44b421 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -163,12 +163,22 @@ struct UnkStruct_20399E4 u16 field_024[0x080]; }; +struct UnkStruct_20399E8 +{ + s16 field_00; + s16 field_02; + struct Sprite * field_04; + u16 field_08; + u16 field_0A; + u16 field_0C[0x40]; +}; + 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 void * gUnknown_20399E8 = NULL; +EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL; EWRAM_DATA void * gUnknown_20399EC = NULL; EWRAM_DATA void * gUnknown_20399F0[3] = {}; EWRAM_DATA void * gUnknown_20399FC = NULL; @@ -232,14 +242,18 @@ u8 sub_80C31C0(void); u8 sub_80C3348(void); u8 sub_80C3400(void); void sub_80C3418(void); +u16 sub_80C3508(void); +u16 sub_80C3514(void); u16 sub_80C3520(void); +u16 sub_80C3580(void); u8 sub_80C35DC(u8 a0); u8 sub_80C3878(u8 a0); u8 sub_80C3AC8(u8 a0); void sub_80C3D40(void); u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); void sub_80C41D8(u16 a0, u16 a1); -void sub_80C4324(u8 a0); +void sub_80C4244(void); +void sub_80C4324(bool8 a0); void sub_80C4348(void); u16 sub_80C4380(); u16 sub_80C438C(); @@ -262,19 +276,20 @@ void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); -u16 sub_80C3508(void); -u16 sub_80C3514(void); -u16 sub_80C3580(void); #include "data/text/map_section_names.h" extern const u16 gUnknown_83EF23C[]; extern const u16 gUnknown_83EF25C[]; +extern const u16 gUnknown_83EF27C[]; +extern const u16 gUnknown_83EF29C[]; extern const u16 gUnknown_83EF2DC[]; extern const u16 gUnknown_83EF384[]; extern const u16 gUnknown_83EF3A4[]; extern const u32 gUnknown_83EF3C4[]; extern const u32 gUnknown_83EF450[]; extern const u32 gUnknown_83EF4E0[]; +extern const u32 gUnknown_83EF524[]; +extern const u32 gUnknown_83EF59C[]; extern const u32 gUnknown_83EF61C[]; extern const u32 gUnknown_83F0330[]; extern const u32 gUnknown_83F0E0C[]; @@ -310,9 +325,15 @@ extern const union AnimCmd *const gUnknown_83F1C30[]; extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34; 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 u8 *const gUnknown_83F1CAC[]; extern const u16 gUnknown_83F1E60[][2]; extern const u16 gUnknown_83F2178[][2]; +extern const u8 gUnknown_83F2490[][15][22]; +extern const u8 gUnknown_83F2724[][15][22]; +extern const u8 gUnknown_83F29B8[][15][22]; +extern const u8 gUnknown_83F2C4C[][15][22]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -580,7 +601,7 @@ void sub_80C04E4(u8 taskId) sub_80C4E18(gUnknown_8418EB5); sub_80C4E74(gUnknown_8418E8B); sub_80C4ED0(FALSE); - sub_80C4324(0); + sub_80C4324(FALSE); sub_80C3154(FALSE); sub_80C48BC(sub_80C0E20(), 25, 0); sub_80C4960(sub_80C0E20(), 25, 0); @@ -1054,7 +1075,7 @@ void sub_80C1098(u8 taskId) sub_80C0E48(gUnknown_20399D8->field_1CCA); if (sub_80C0E34() == gUnknown_20399D8->field_1CCA) { - sub_80C4324(0); + sub_80C4324(FALSE); sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0); sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0); } @@ -1205,9 +1226,9 @@ bool8 sub_80C1478(void) sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0); } if (gUnknown_20399D8->field_1CCA != sub_80C0E34()) - sub_80C4324(1); + sub_80C4324(TRUE); else - sub_80C4324(0); + sub_80C4324(FALSE); sub_80C4CF0(1, &data); return FALSE; } @@ -1766,7 +1787,7 @@ void sub_80C267C(u8 taskId) gUnknown_20399E0->field_CCC++; break; case 7: - sub_80C4324(0); + sub_80C4324(FALSE); sub_80C3154(FALSE); gUnknown_20399E0->field_CCC++; break; @@ -1946,7 +1967,7 @@ void sub_80C2C7C(u8 taskId) break; case 3: sub_80C22C4(6, FALSE); - sub_80C4324(1); + sub_80C4324(TRUE); sub_80C3154(TRUE); sub_80C4960(255, 25, 1); sub_80C48BC(255, 25, 1); @@ -2719,3 +2740,92 @@ void sub_80C3D40(void) } gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); } + +u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3) +{ + switch (a0) + { + case 0: + return gUnknown_83F2490[a1][a2][a3]; + case 1: + return gUnknown_83F2724[a1][a2][a3]; + case 2: + return gUnknown_83F29B8[a1][a2][a3]; + case 3: + return gUnknown_83F2C4C[a1][a2][a3]; + default: + return MAPSEC_NONE; + } +} + +void sub_80C41D8(u16 a0, u16 a1) +{ + gUnknown_20399E8 = AllocZeroed(sizeof(struct UnkStruct_20399E8)); + if (gSaveBlock2Ptr->playerGender == FEMALE) + LZ77UnCompWram(gUnknown_83EF59C, gUnknown_20399E8->field_0C); + else + LZ77UnCompWram(gUnknown_83EF524, gUnknown_20399E8->field_0C); + gUnknown_20399E8->field_08 = a0; + gUnknown_20399E8->field_0A = a1; + gUnknown_20399E8->field_00 = sub_80C3508(); + gUnknown_20399E8->field_02 = sub_80C3514(); + sub_80C4244(); +} + +void sub_80C4244(void) +{ + u8 spriteId; + struct SpriteSheet spriteSheet = { + .data = gUnknown_20399E8->field_0C, + .size = 0x80, + .tag = gUnknown_20399E8->field_08 + }; + struct SpritePalette spritePalette = { + .data = gUnknown_83EF27C, + .tag = gUnknown_20399E8->field_0A + }; + struct SpriteTemplate template = { + .tileTag = gUnknown_20399E8->field_08, + .paletteTag = gUnknown_20399E8->field_0A, + .oam = &gUnknown_83F1C54, + .anims = gUnknown_83F1C64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + }; + + if (gSaveBlock2Ptr->playerGender == FEMALE) + spritePalette.data = gUnknown_83EF29C; + + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&template, 8 * gUnknown_20399E8->field_00 + 36, 8 * gUnknown_20399E8->field_02 + 36, 2); + gUnknown_20399E8->field_04 = &gSprites[spriteId]; + sub_80C4324(TRUE); +} + +void sub_80C4324(bool8 a0) +{ + gUnknown_20399E8->field_04->invisible = a0; +} + +void sub_80C4348(void) +{ + if (gUnknown_20399E8->field_04 != NULL) + { + DestroySprite(gUnknown_20399E8->field_04); + FreeSpriteTilesByTag(gUnknown_20399E8->field_08); + FreeSpritePaletteByTag(gUnknown_20399E8->field_0A); + } + FREE_IF_NOT_NULL(gUnknown_20399E8); +} + +u16 sub_80C4380(void) +{ + return gUnknown_20399E8->field_00; +} + +u16 sub_80C438C(void) +{ + return gUnknown_20399E8->field_02; +} -- cgit v1.2.3 From b39a83fc032e8f5d168561906bad3907bc794d08 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 14:21:55 -0500 Subject: through sub_80C47F0 --- asm/region_map.s | 643 ------------------------------------------------------- ld_script.txt | 2 - src/region_map.c | 199 ++++++++++++++++- 3 files changed, 197 insertions(+), 647 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index ac9ceeefd..7572aec7b 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -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} diff --git a/ld_script.txt b/ld_script.txt index 19fdde8dc..01bc181a6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1,5 +1,3 @@ -ENTRY(Start) - gNumMusicPlayers = 4; gMaxLines = 0; diff --git a/src/region_map.c b/src/region_map.c index 7ce44b421..90b25c36b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -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++; + } + } + } +} -- cgit v1.2.3 From 62e29fdc9e5d083448da11ff4df7fec1f85e5d4c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 14:47:12 -0500 Subject: through sub_80C4BB8 --- asm/region_map.s | 414 ------------------------------------------------------- src/region_map.c | 180 +++++++++++++++++++----- 2 files changed, 148 insertions(+), 446 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 7572aec7b..0a8d5406b 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,420 +5,6 @@ .text - thumb_func_start sub_80C48BC -sub_80C48BC: @ 80C48BC - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - cmp r1, 0x19 - bne _080C4920 - movs r3, 0 - ldr r0, _080C491C @ =gUnknown_20399EC - mov r12, r0 - movs r1, 0x1 - adds r0, r5, 0 - ands r0, r1 - lsls r5, r0, 2 - movs r6, 0x5 - negs r6, r6 -_080C48E0: - mov r7, r12 - ldr r1, [r7] - lsls r2, r3, 4 - adds r0, r1, r2 - movs r7, 0xB5 - lsls r7, 2 - adds r0, r7 - ldrb r0, [r0] - cmp r0, r4 - beq _080C48F8 - cmp r4, 0xFF - bne _080C490E -_080C48F8: - movs r7, 0xB6 - lsls r7, 2 - adds r0, r1, r7 - adds r0, r2 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1] -_080C490E: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x18 - bls _080C48E0 - b _080C4954 - .align 2, 0 -_080C491C: .4byte gUnknown_20399EC -_080C4920: - ldr r0, _080C495C @ =gUnknown_20399EC - ldr r2, [r0] - lsls r1, 4 - adds r0, r2, r1 - movs r3, 0xB5 - lsls r3, 2 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _080C4954 - movs r7, 0xB6 - lsls r7, 2 - adds r0, r2, r7 - adds r0, r1 - ldr r2, [r0] - adds r2, 0x3E - movs r0, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_080C4954: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C495C: .4byte gUnknown_20399EC - thumb_func_end sub_80C48BC - - thumb_func_start sub_80C4960 -sub_80C4960: @ 80C4960 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - cmp r1, 0x19 - bne _080C49C4 - movs r3, 0 - ldr r0, _080C49C0 @ =gUnknown_20399EC - mov r12, r0 - movs r1, 0x1 - adds r0, r5, 0 - ands r0, r1 - lsls r5, r0, 2 - movs r6, 0x5 - negs r6, r6 -_080C4984: - mov r7, r12 - ldr r1, [r7] - lsls r2, r3, 4 - adds r0, r1, r2 - movs r7, 0xA2 - lsls r7, 1 - adds r0, r7 - ldrb r0, [r0] - cmp r0, r4 - beq _080C499C - cmp r4, 0xFF - bne _080C49B2 -_080C499C: - movs r7, 0xA4 - lsls r7, 1 - adds r0, r1, r7 - adds r0, r2 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1] -_080C49B2: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x18 - bls _080C4984 - b _080C49F8 - .align 2, 0 -_080C49C0: .4byte gUnknown_20399EC -_080C49C4: - ldr r0, _080C4A00 @ =gUnknown_20399EC - ldr r2, [r0] - lsls r1, 4 - adds r0, r2, r1 - movs r3, 0xA2 - lsls r3, 1 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r4 - beq _080C49F8 - movs r7, 0xA4 - lsls r7, 1 - adds r0, r2, r7 - adds r0, r1 - ldr r2, [r0] - adds r2, 0x3E - movs r0, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_080C49F8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C4A00: .4byte gUnknown_20399EC - thumb_func_end sub_80C4960 - - thumb_func_start sub_80C4A04 -sub_80C4A04: @ 80C4A04 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _080C4AA4 @ =gUnknown_20399EC -_080C4A0A: - ldr r0, [r6] - lsls r4, r5, 4 - movs r1, 0xB6 - lsls r1, 2 - adds r0, r1 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _080C4A3E - bl DestroySprite - ldr r0, [r6] - adds r0, r4 - movs r1, 0xB7 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r6] - adds r0, r4 - ldr r1, _080C4AA8 @ =0x000002de - adds r0, r1 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080C4A3E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x18 - bls _080C4A0A - movs r5, 0 - ldr r6, _080C4AA4 @ =gUnknown_20399EC -_080C4A4C: - ldr r0, [r6] - lsls r4, r5, 4 - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _080C4A82 - bl DestroySprite - ldr r0, [r6] - adds r0, r4 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r6] - adds r0, r4 - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080C4A82: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x18 - bls _080C4A4C - ldr r4, _080C4AA4 @ =gUnknown_20399EC - ldr r0, [r4] - cmp r0, 0 - beq _080C4A9C - bl Free - movs r0, 0 - str r0, [r4] -_080C4A9C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C4AA4: .4byte gUnknown_20399EC -_080C4AA8: .4byte 0x000002de - thumb_func_end sub_80C4A04 - - thumb_func_start sub_80C4AAC -sub_80C4AAC: @ 80C4AAC - push {r4,lr} - lsls r0, 24 - ldr r1, _080C4B24 @ =gUnknown_20399F0 - lsrs r0, 22 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - bne _080C4B28 - movs r0, 0x14 - bl AllocZeroed - str r0, [r4] - movs r0, 0x50 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1] - movs r0, 0x54 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0x2] - movs r0, 0x52 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0x4] - movs r0, 0x48 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0x6] - movs r0, 0x4A - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0x8] - movs r0, 0x40 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0xA] - movs r0, 0x42 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0xC] - movs r0, 0x44 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0xE] - movs r0, 0x46 - bl GetGpuReg - ldr r1, [r4] - strh r0, [r1, 0x10] - movs r0, 0x1 - b _080C4B2A - .align 2, 0 -_080C4B24: .4byte gUnknown_20399F0 -_080C4B28: - movs r0, 0 -_080C4B2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C4AAC - - thumb_func_start sub_80C4B30 -sub_80C4B30: @ 80C4B30 - push {r4,lr} - lsls r0, 24 - ldr r1, _080C4B44 @ =gUnknown_20399F0 - lsrs r0, 22 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - bne _080C4B48 - movs r0, 0 - b _080C4BB0 - .align 2, 0 -_080C4B44: .4byte gUnknown_20399F0 -_080C4B48: - ldrh r1, [r0] - movs r0, 0x50 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x54 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x52 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x6] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xA] - movs r0, 0x40 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xC] - movs r0, 0x42 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x10] - movs r0, 0x46 - bl SetGpuReg - ldr r0, [r4] - cmp r0, 0 - beq _080C4BAE - bl Free - movs r0, 0 - str r0, [r4] -_080C4BAE: - movs r0, 0x1 -_080C4BB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C4B30 - - thumb_func_start sub_80C4BB8 -sub_80C4BB8: @ 80C4BB8 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _080C4BE0 @ =gUnknown_20399F0 -_080C4BBE: - lsls r0, r5, 2 - adds r4, r0, r6 - ldr r0, [r4] - cmp r0, 0 - beq _080C4BD0 - bl Free - movs r0, 0 - str r0, [r4] -_080C4BD0: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080C4BBE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C4BE0: .4byte gUnknown_20399F0 - thumb_func_end sub_80C4BB8 - thumb_func_start sub_80C4BE4 sub_80C4BE4: @ 80C4BE4 push {lr} diff --git a/src/region_map.c b/src/region_map.c index 90b25c36b..493533c93 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -173,21 +173,21 @@ struct UnkStruct_20399E8 u16 field_0C[0x40]; }; // size = 0x8C -struct UnkStruct_20399EC_2D4 +struct UnkStruct_20399EC_140 { - u8 field_0; - struct Sprite * field_4; - u8 filler_8[8]; + u8 filler_0[4]; + u8 field_4; + struct Sprite * field_8; + u16 field_C; + u16 field_E; }; 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]; + struct UnkStruct_20399EC_140 field_140[25]; + struct UnkStruct_20399EC_140 field_2D0[25]; u8 field_460; u8 filler_461[2]; u8 field_463; @@ -195,6 +195,19 @@ struct UnkStruct_20399EC TaskFunc field_468; }; // size = 0x46C +struct UnkStruct_20399F0 +{ + u16 bldcnt; + u16 bldy; + u16 bldalpha; + u16 winin; + u16 winout; + u16 win0h; + u16 win1h; + u16 win0v; + u16 win1v; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; @@ -202,7 +215,7 @@ 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 struct UnkStruct_20399EC * gUnknown_20399EC = NULL; -EWRAM_DATA void * gUnknown_20399F0[3] = {}; +EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; EWRAM_DATA void * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); @@ -284,11 +297,11 @@ 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_80C48BC(u8 a0, u8 a1, bool8 a2); +void sub_80C4960(u8 a0, u8 a1, bool8 a2); void sub_80C4A04(void); -void sub_80C4B30(u8 a0); -void sub_80C4AAC(u8 a0); +bool8 sub_80C4AAC(u8 a0); +bool8 sub_80C4B30(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); void sub_80C4C48(u16 a0); @@ -636,8 +649,8 @@ void sub_80C04E4(u8 taskId) sub_80C4ED0(FALSE); sub_80C4324(FALSE); sub_80C3154(FALSE); - sub_80C48BC(sub_80C0E20(), 25, 0); - sub_80C4960(sub_80C0E20(), 25, 0); + sub_80C48BC(sub_80C0E20(), 25, FALSE); + sub_80C4960(sub_80C0E20(), 25, FALSE); } gUnknown_20399D4->field_47A0++; break; @@ -1109,8 +1122,8 @@ void sub_80C1098(u8 taskId) if (sub_80C0E34() == gUnknown_20399D8->field_1CCA) { sub_80C4324(FALSE); - sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0); - sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0); + sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE); + sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE); } gUnknown_20399D8->field_1CC8++; } @@ -1243,8 +1256,8 @@ bool8 sub_80C1478(void) 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); + sub_80C48BC(255, 25, TRUE); + sub_80C4960(255, 25, TRUE); return TRUE; } if (r6) @@ -1253,10 +1266,10 @@ bool8 sub_80C1478(void) 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); + sub_80C48BC(255, 25, TRUE); + sub_80C4960(255, 25, TRUE); + sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE); + sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE); } if (gUnknown_20399D8->field_1CCA != sub_80C0E34()) sub_80C4324(TRUE); @@ -1828,8 +1841,8 @@ void sub_80C267C(u8 taskId) gUnknown_20399E0->field_CD0 = 15; sub_80C253C(); sub_80C0A88(0); - sub_80C48BC(sub_80C0E20(), 25, 0); - sub_80C4960(sub_80C0E20(), 25, 0); + sub_80C48BC(sub_80C0E20(), 25, FALSE); + sub_80C4960(sub_80C0E20(), 25, FALSE); gUnknown_20399E0->field_CCC++; break; case 9: @@ -2002,8 +2015,8 @@ void sub_80C2C7C(u8 taskId) sub_80C22C4(6, FALSE); sub_80C4324(TRUE); sub_80C3154(TRUE); - sub_80C4960(255, 25, 1); - sub_80C48BC(255, 25, 1); + sub_80C4960(255, 25, TRUE); + sub_80C48BC(255, 25, TRUE); gUnknown_20399E0->field_CCE = 0; gUnknown_20399E0->field_CD0 = 0; gUnknown_20399E0->field_CCF++; @@ -2935,9 +2948,9 @@ void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) LoadSpriteSheet(&spriteSheet); LoadSpritePalette(&spritePalette); spriteId = CreateSprite(&template, 8 * a2 + 36, 8 * a3 + 36, 1); - gUnknown_20399EC->field_2D4[a1].field_4 = &gSprites[spriteId]; + gUnknown_20399EC->field_2D0[a1].field_8 = &gSprites[spriteId]; gSprites[spriteId].invisible = TRUE; - gUnknown_20399EC->field_2D4[a1].field_0 = a0; + gUnknown_20399EC->field_2D0[a1].field_4 = a0; } void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) @@ -2970,9 +2983,9 @@ void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) 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]; + gUnknown_20399EC->field_140[a1].field_8 = &gSprites[spriteId]; gSprites[spriteId].invisible = TRUE; - gUnknown_20399EC->field_144[a1].field_0 = a0; + gUnknown_20399EC->field_140[a1].field_4 = a0; } void sub_80C4750(void) @@ -3017,10 +3030,113 @@ void sub_80C47F0(void) sub_80C4614(i, r6, k, j, r6 + 35, 10); if (sub_80C3878(mapsec) != 2) { - StartSpriteAnim(gUnknown_20399EC->field_144[r6].field_4, 1); + StartSpriteAnim(gUnknown_20399EC->field_140[r6].field_8, 1); } r6++; } } } } + +void sub_80C48BC(u8 a0, u8 a1, bool8 a2) +{ + u8 i; + if (a1 == 25) + { + for (i = 0; i < 25; i++) + { + if (gUnknown_20399EC->field_2D0[i].field_4 == a0 || a0 == 0xFF) + gUnknown_20399EC->field_2D0[i].field_8->invisible = a2; + } + } + else + { + if (gUnknown_20399EC->field_2D0[a1].field_4 == a0) + gUnknown_20399EC->field_2D0[a1].field_8->invisible = a2; + } +} + +void sub_80C4960(u8 a0, u8 a1, bool8 a2) +{ + u8 i; + if (a1 == 25) + { + for (i = 0; i < 25; i++) + { + if (gUnknown_20399EC->field_140[i].field_4 == a0 || a0 == 0xFF) + gUnknown_20399EC->field_140[i].field_8->invisible = a2; + } + } + else + { + if (gUnknown_20399EC->field_140[a1].field_4 != a0) + gUnknown_20399EC->field_140[a1].field_8->invisible = a2; + } +} + +void sub_80C4A04(void) +{ + u8 i; + for (i = 0; i < 25; i++) + { + if (gUnknown_20399EC->field_2D0[i].field_8 != NULL) + { + DestroySprite(gUnknown_20399EC->field_2D0[i].field_8); + FreeSpriteTilesByTag(gUnknown_20399EC->field_2D0[i].field_C); + FreeSpritePaletteByTag(gUnknown_20399EC->field_2D0[i].field_E); + } + } + for (i = 0; i < 25; i++) + { + if (gUnknown_20399EC->field_140[i].field_8 != NULL) + { + DestroySprite(gUnknown_20399EC->field_140[i].field_8); + FreeSpriteTilesByTag(gUnknown_20399EC->field_140[i].field_C); + FreeSpritePaletteByTag(gUnknown_20399EC->field_140[i].field_E); + } + } + FREE_IF_NOT_NULL(gUnknown_20399EC); +} + +bool8 sub_80C4AAC(u8 a0) +{ + if (gUnknown_20399F0[a0] != NULL) + return FALSE; + gUnknown_20399F0[a0] = AllocZeroed(sizeof(struct UnkStruct_20399F0)); + gUnknown_20399F0[a0]->bldcnt = GetGpuReg(REG_OFFSET_BLDCNT); + gUnknown_20399F0[a0]->bldy = GetGpuReg(REG_OFFSET_BLDY); + gUnknown_20399F0[a0]->bldalpha = GetGpuReg(REG_OFFSET_BLDALPHA); + gUnknown_20399F0[a0]->winin = GetGpuReg(REG_OFFSET_WININ); + gUnknown_20399F0[a0]->winout = GetGpuReg(REG_OFFSET_WINOUT); + gUnknown_20399F0[a0]->win0h = GetGpuReg(REG_OFFSET_WIN0H); + gUnknown_20399F0[a0]->win1h = GetGpuReg(REG_OFFSET_WIN1H); + gUnknown_20399F0[a0]->win0v = GetGpuReg(REG_OFFSET_WIN0V); + gUnknown_20399F0[a0]->win1v = GetGpuReg(REG_OFFSET_WIN1V); + return TRUE; +} + +bool8 sub_80C4B30(u8 a0) +{ + if (gUnknown_20399F0[a0] == NULL) + return FALSE; + SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_20399F0[a0]->bldcnt); + SetGpuReg(REG_OFFSET_BLDY, gUnknown_20399F0[a0]->bldy); + SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_20399F0[a0]->bldalpha); + SetGpuReg(REG_OFFSET_WININ, gUnknown_20399F0[a0]->winin); + SetGpuReg(REG_OFFSET_WINOUT, gUnknown_20399F0[a0]->winout); + SetGpuReg(REG_OFFSET_WIN0H, gUnknown_20399F0[a0]->win0h); + SetGpuReg(REG_OFFSET_WIN1H, gUnknown_20399F0[a0]->win1h); + SetGpuReg(REG_OFFSET_WIN0V, gUnknown_20399F0[a0]->win0v); + SetGpuReg(REG_OFFSET_WIN1V, gUnknown_20399F0[a0]->win1v); + FREE_IF_NOT_NULL(gUnknown_20399F0[a0]); + return TRUE; +} + +void sub_80C4BB8(void) +{ + u8 i; + for (i = 0; i < 3; i++) + { + FREE_IF_NOT_NULL(gUnknown_20399F0[i]); + } +} -- cgit v1.2.3 From b8ec686427958353a8649ccdc39f35ab509cd532 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 15:13:48 -0500 Subject: through sub_80C4D30 --- asm/region_map.s | 190 ------------------------------------------------------ data/region_map.s | 8 ++- src/region_map.c | 81 +++++++++++++++++++++-- 3 files changed, 83 insertions(+), 196 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 0a8d5406b..09875ebd6 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,196 +5,6 @@ .text - thumb_func_start sub_80C4BE4 -sub_80C4BE4: @ 80C4BE4 - push {lr} - sub sp, 0x8 - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - bl sub_80C4C2C - movs r0, 0 - bl sub_80C4C48 - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0x1 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C74 - movs r0, 0 - movs r1, 0x1 - bl sub_80C4C9C - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C4C9C - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_80C4BE4 - - thumb_func_start sub_80C4C2C -sub_80C4C2C: @ 80C4C2C - push {lr} - adds r3, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - orrs r3, r1 - orrs r3, r2 - lsrs r3, 16 - movs r0, 0x50 - adds r1, r3, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80C4C2C - - thumb_func_start sub_80C4C48 -sub_80C4C48: @ 80C4C48 - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x54 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80C4C48 - - thumb_func_start sub_80C4C5C -sub_80C4C5C: @ 80C4C5C - push {lr} - adds r2, r0, 0 - lsls r1, 16 - lsls r2, 24 - orrs r2, r1 - lsrs r2, 16 - movs r0, 0x52 - adds r1, r2, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80C4C5C - - thumb_func_start sub_80C4C74 -sub_80C4C74: @ 80C4C74 - push {lr} - lsls r0, 16 - lsls r1, 24 - orrs r1, r0 - lsrs r1, 16 - movs r0, 0x48 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80C4C74 - - thumb_func_start sub_80C4C88 -sub_80C4C88: @ 80C4C88 - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4A - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80C4C88 - - thumb_func_start sub_80C4C9C -sub_80C4C9C: @ 80C4C9C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r1, _080C4CBC @ =gUnknown_83F1CA0 - mov r0, sp - movs r2, 0x4 - bl memcpy - cmp r4, 0 - beq _080C4CC0 - cmp r4, 0x1 - beq _080C4CDC - b _080C4CE8 - .align 2, 0 -_080C4CBC: .4byte gUnknown_83F1CA0 -_080C4CC0: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - lsls r0, r5, 1 - add r0, sp - ldrh r0, [r0] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - b _080C4CE8 -_080C4CDC: - lsls r0, r5, 1 - add r0, sp - ldrh r1, [r0] - movs r0, 0 - bl ClearGpuRegBits -_080C4CE8: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C4C9C - - thumb_func_start sub_80C4CF0 -sub_80C4CF0: @ 80C4CF0 - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - ldr r5, _080C4D2C @ =gUnknown_83F1CA4 - lsrs r4, 23 - adds r0, r4, r5 - ldrb r0, [r0] - ldrh r1, [r6, 0x2] - lsls r1, 8 - ldrh r2, [r6, 0x6] - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - bl SetGpuReg - adds r5, 0x1 - adds r4, r5 - ldrb r0, [r4] - ldrh r1, [r6] - lsls r1, 8 - ldrh r2, [r6, 0x4] - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - bl SetGpuReg - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C4D2C: .4byte gUnknown_83F1CA4 - thumb_func_end sub_80C4CF0 - - thumb_func_start sub_80C4D30 -sub_80C4D30: @ 80C4D30 - push {lr} - bl sub_80C4BB8 - bl sub_80C4BE4 - pop {r0} - bx r0 - thumb_func_end sub_80C4D30 - thumb_func_start sub_80C4D40 sub_80C4D40: @ 80C4D40 push {lr} diff --git a/data/region_map.s b/data/region_map.s index 01bbb7a5a..2cca09daf 100644 --- a/data/region_map.s +++ b/data/region_map.s @@ -461,10 +461,14 @@ gUnknown_83F1C98:: @ 83F1C98 .4byte gAnimCmd_83F1C8C gUnknown_83F1CA0:: @ 83F1CA0 - .2byte 0x2000, 0x4000 + .2byte 0x2000 @ DISPCNT_WIN0_ON + .2byte 0x4000 @ DISPCNT_WIN1_ON gUnknown_83F1CA4:: @ 83F1CA4 - .2byte 0x4044, 0x4246 + .byte OFFSET_REG_WIN0V + .byte OFFSET_REG_WIN0H + .byte OFFSET_REG_WIN1V + .byte OFFSET_REG_WIN1H gUnknown_83F1CA8:: @ 83F1CA8 .byte 15, 1, 2 diff --git a/src/region_map.c b/src/region_map.c index 493533c93..e19e8e151 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -305,7 +305,7 @@ bool8 sub_80C4B30(u8 a0); void sub_80C4BE4(void); void sub_80C4C2C(u8 a0, u16 a1, u16 a2); void sub_80C4C48(u16 a0); -void sub_80C4C5C(u16 a0); +void sub_80C4C5C(u16 a0, u16 a1); void sub_80C4C74(u16 a0, u16 a1); void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); @@ -373,6 +373,8 @@ 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 u16 gUnknown_83F1CA0[]; +extern const u8 gUnknown_83F1CA4[][2]; extern const u8 *const gUnknown_83F1CAC[]; extern const u16 gUnknown_83F1E60[][2]; extern const u16 gUnknown_83F2178[][2]; @@ -1034,14 +1036,14 @@ void sub_80C0FE0(void) { sub_80C4BE4(); sub_80C4C2C(27, 4, 64); - sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); } bool8 sub_80C1014(void) { if (gUnknown_20399D8->field_1CCD < 16) { - sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); gUnknown_20399D8->field_1CCD += 2; return FALSE; } @@ -1056,7 +1058,7 @@ bool8 sub_80C1058(void) if (gUnknown_20399D8->field_1CCD >= 2) { gUnknown_20399D8->field_1CCD -= 2; - sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD); + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); return FALSE; } else @@ -3140,3 +3142,74 @@ void sub_80C4BB8(void) FREE_IF_NOT_NULL(gUnknown_20399F0[i]); } } + +void sub_80C4BE4(void) +{ + struct UnkStruct_80C4CF0 data = {}; + sub_80C4C2C(0, 0, 0); + sub_80C4C48(0); + sub_80C4CF0(0, &data); + sub_80C4CF0(1, &data); + sub_80C4C74(0, 0); + sub_80C4C9C(0, 1); + sub_80C4C9C(1, 1); +} + +void sub_80C4C2C(u8 a0, u16 a1, u16 a2) +{ + u16 regval = a0 << 8; + regval |= a1; + regval |= a2; + SetGpuReg(REG_OFFSET_BLDCNT, regval); +} + +void sub_80C4C48(u16 a0) +{ + SetGpuReg(REG_OFFSET_BLDY, a0); +} + +void sub_80C4C5C(u16 a0, u16 a1) +{ + u16 regval = a0 << 8; + regval |= a1; + SetGpuReg(REG_OFFSET_BLDALPHA, regval); +} + +void sub_80C4C74(u16 a0, u16 a1) +{ + u16 regval = a1 << 8; + regval |= a0; + SetGpuReg(REG_OFFSET_WININ, regval); +} + +void sub_80C4C88(u16 a0) +{ + SetGpuReg(REG_OFFSET_WINOUT, a0); +} + +void sub_80C4C9C(u8 a0, u8 a1) +{ + u16 data[2]; + memcpy(data, gUnknown_83F1CA0, 4); + switch (a1) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | data[a0]); + break; + case 1: + ClearGpuRegBits(REG_OFFSET_DISPCNT, data[a0]); + break; + } +} + +void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1) +{ + SetGpuReg(gUnknown_83F1CA4[a0][0], (a1->v2 << 8) | a1->v6); + SetGpuReg(gUnknown_83F1CA4[a0][1], (a1->v0 << 8) | a1->v4); +} + +void sub_80C4D30(void) +{ + sub_80C4BB8(); + sub_80C4BE4(); +} -- cgit v1.2.3 From ce44eb021c16246d2f6ff2b564b70ccc24c98e30 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 15:37:15 -0500 Subject: through sub_80C4E08 --- asm/region_map.s | 124 --------------------------------------------------- include/region_map.h | 4 +- src/quest_log.c | 4 +- src/region_map.c | 56 +++++++++++++++++++++++ 4 files changed, 60 insertions(+), 128 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 09875ebd6..4f1b771f4 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,130 +5,6 @@ .text - thumb_func_start sub_80C4D40 -sub_80C4D40: @ 80C4D40 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080C4D68 @ =gUnknown_20399D4 - ldr r0, [r0] - cmp r0, 0 - bne _080C4D70 - cmp r1, 0x5E - bne _080C4D70 - ldr r0, _080C4D6C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0xA - bne _080C4D70 - ldrb r0, [r1, 0x5] - cmp r0, 0x6 - bhi _080C4D70 - movs r0, 0x1 - b _080C4D72 - .align 2, 0 -_080C4D68: .4byte gUnknown_20399D4 -_080C4D6C: .4byte gSaveBlock1Ptr -_080C4D70: - movs r0, 0 -_080C4D72: - pop {r1} - bx r1 - thumb_func_end sub_80C4D40 - - thumb_func_start GetMapName -GetMapName: @ 80C4D78 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - lsrs r0, r1, 16 - ldr r2, _080C4D9C @ =0xffa80000 - adds r1, r2 - lsrs r5, r1, 16 - cmp r5, 0x6C - bhi _080C4DBC - bl sub_80C4D40 - cmp r0, 0x1 - bne _080C4DA4 - ldr r1, _080C4DA0 @ =gMapSecName_CeladonDept - b _080C4DAC - .align 2, 0 -_080C4D9C: .4byte 0xffa80000 -_080C4DA0: .4byte gMapSecName_CeladonDept -_080C4DA4: - ldr r0, _080C4DB8 @ =gUnknown_83F1CAC - lsls r1, r5, 2 - adds r1, r0 - ldr r1, [r1] -_080C4DAC: - adds r0, r6, 0 - bl StringCopy - adds r1, r0, 0 - b _080C4DCE - .align 2, 0 -_080C4DB8: .4byte gUnknown_83F1CAC -_080C4DBC: - cmp r4, 0 - bne _080C4DC2 - movs r4, 0x12 -_080C4DC2: - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl StringFill - b _080C4DF2 -_080C4DCE: - cmp r4, 0 - beq _080C4DF0 - subs r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcs _080C4DEC - movs r2, 0 -_080C4DDE: - strb r2, [r1] - adds r1, 0x1 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcc _080C4DDE -_080C4DEC: - movs r0, 0xFF - strb r0, [r1] -_080C4DF0: - adds r0, r1, 0 -_080C4DF2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetMapName - - thumb_func_start GetMapNameGeneric -GetMapNameGeneric: @ 80C4DF8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - movs r2, 0 - bl GetMapName - pop {r1} - bx r1 - thumb_func_end GetMapNameGeneric - - thumb_func_start sub_80C4E08 -sub_80C4E08: @ 80C4E08 - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl GetMapNameGeneric - pop {r1} - bx r1 - thumb_func_end sub_80C4E08 - thumb_func_start sub_80C4E18 sub_80C4E18: @ 80C4E18 push {r4,lr} diff --git a/include/region_map.h b/include/region_map.h index 67287b6c4..76195a3af 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -92,9 +92,9 @@ void FreeRegionMapIconResources(void); u16 GetRegionMapSectionIdAt(u16 x, u16 y); void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); -u8 *GetMapName(u8 *, u16, u16); +u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); bool32 sub_8124668(u8 mapSecId); -void GetMapNameGeneric(u8 *, u8); +u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); void sub_80BFF50(u8 a0, void (*a1)(void)); void MCB2_FlyMap(void); diff --git a/src/quest_log.c b/src/quest_log.c index 970071a0f..4d94c78ad 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3119,7 +3119,7 @@ static const u16 *sub_8113FBC(const u16 *a0) StringCopy(gStringVar1, ItemId_GetName(r5[0])); if (r5[0] == ITEM_ESCAPE_ROPE) { - GetMapNameGeneric(gStringVar2, r5[2]); + GetMapNameGeneric(gStringVar2, (u8)r5[2]); StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6); } else if (r5[1] != 0xFFFF) @@ -4373,7 +4373,7 @@ static u16 *sub_81157DC(u16 *a0, const u16 *a1) static const u16 *sub_8115800(const u16 *a0) { const u16 *r4 = sub_8113E88(42, a0); - GetMapNameGeneric(gStringVar1, r4[0]); + GetMapNameGeneric(gStringVar1, (u8)r4[0]); StringExpandPlaceholders(gStringVar4, gUnknown_841B064); return r4 + 1; } diff --git a/src/region_map.c b/src/region_map.c index e19e8e151..6678a226a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3213,3 +3213,59 @@ void sub_80C4D30(void) sub_80C4BB8(); sub_80C4BE4(); } + +bool32 sub_80C4D40(u16 a0) +{ + if (gUnknown_20399D4 != NULL) + return FALSE; + if (a0 != MAPSEC_CELADON_CITY) + return FALSE; + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) + return FALSE; + if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_2F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_3F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_4F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_5F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ROOF) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR)) + return FALSE; + return TRUE; +} + +u8 *GetMapName(u8 *dst0, u16 mapsec, u16 fill) +{ + u8 *dst; + u16 i; + u16 idx;; + if ((idx = mapsec - MAPSECS_KANTO) <= MAPSEC_SPECIAL_AREA - MAPSECS_KANTO) + { + if (sub_80C4D40(mapsec) == TRUE) + dst = StringCopy(dst0, gMapSecName_CeladonDept); + else + dst = StringCopy(dst0, gUnknown_83F1CAC[idx]); + } + else + { + if (fill == 0) + fill = 18; + return StringFill(dst0, CHAR_SPACE, fill); + } + if (fill != 0) + { + for (i = dst - dst0; i < fill; i++) + *dst++ = CHAR_SPACE; + *dst = EOS; + } + return dst; +} + +u8 *GetMapNameGeneric(u8 *dest, u16 mapsec) +{ + return GetMapName(dest, mapsec, 0); +} + +u8 *sub_80C4E08(u8 *dest, u16 mapsec) +{ + return GetMapNameGeneric(dest, mapsec); +} -- cgit v1.2.3 From 1235d7c50643f925a30e0e4dfa299ea6ff624dc2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 16:25:13 -0500 Subject: through sub_80C527C --- asm/region_map.s | 562 ------------------------------------------------- include/field_effect.h | 1 + include/overworld.h | 1 + include/region_map.h | 66 ------ src/region_map.c | 217 ++++++++++++++++++- 5 files changed, 217 insertions(+), 630 deletions(-) diff --git a/asm/region_map.s b/asm/region_map.s index 4f1b771f4..1f63bde6c 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,568 +5,6 @@ .text - thumb_func_start sub_80C4E18 -sub_80C4E18: @ 80C4E18 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _080C4E38 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C4E3C @ =0x00004799 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C4E40 - movs r0, 0x3 - movs r1, 0 - bl FillWindowPixelBuffer - b _080C4E48 - .align 2, 0 -_080C4E38: .4byte gUnknown_20399D4 -_080C4E3C: .4byte 0x00004799 -_080C4E40: - movs r0, 0x3 - movs r1, 0xFF - bl FillWindowPixelBuffer -_080C4E48: - ldr r0, _080C4E70 @ =gUnknown_83F1CA8 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x3 - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C4E70: .4byte gUnknown_83F1CA8 - thumb_func_end sub_80C4E18 - - thumb_func_start sub_80C4E74 -sub_80C4E74: @ 80C4E74 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _080C4E94 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C4E98 @ =0x00004799 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C4E9C - movs r0, 0x4 - movs r1, 0 - bl FillWindowPixelBuffer - b _080C4EA4 - .align 2, 0 -_080C4E94: .4byte gUnknown_20399D4 -_080C4E98: .4byte 0x00004799 -_080C4E9C: - movs r0, 0x4 - movs r1, 0xFF - bl FillWindowPixelBuffer -_080C4EA4: - ldr r0, _080C4ECC @ =gUnknown_83F1CA8 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x4 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C4ECC: .4byte gUnknown_83F1CA8 - thumb_func_end sub_80C4E74 - - thumb_func_start sub_80C4ED0 -sub_80C4ED0: @ 80C4ED0 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _080C4EE6 - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - b _080C4EF2 -_080C4EE6: - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0x4 - bl ClearWindowTilemap -_080C4EF2: - pop {r0} - bx r0 - thumb_func_end sub_80C4ED0 - - thumb_func_start MCB2_FlyMap -MCB2_FlyMap: @ 80C4EF8 - push {lr} - bl sub_80C51E8 - movs r0, 0x2 - bl sub_80BFEDC - pop {r0} - bx r0 - thumb_func_end MCB2_FlyMap - - thumb_func_start sub_80C4F08 -sub_80C4F08: @ 80C4F08 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C4F28 @ =gUnknown_20399FC - ldr r2, [r0] - ldrb r0, [r2] - cmp r0, 0x6 - bls _080C4F1C - b _080C51B8 -_080C4F1C: - lsls r0, 2 - ldr r1, _080C4F2C @ =_080C4F30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C4F28: .4byte gUnknown_20399FC -_080C4F2C: .4byte _080C4F30 - .align 2, 0 -_080C4F30: - .4byte _080C4F4C - .4byte _080C4F92 - .4byte _080C4FEC - .4byte _080C5000 - .4byte _080C5028 - .4byte _080C5180 - .4byte _080C5196 -_080C4F4C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_80C0E20 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80C07E4 - adds r2, r0, 0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80C4398 - movs r0, 0 - movs r1, 0 - bl sub_80C3008 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C41D8 - movs r0, 0 - bl sub_80C3154 - movs r0, 0 - bl sub_80C4324 - b _080C51A6 -_080C4F92: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C4FAE - bl sub_80C07E4 - adds r1, r0, 0 - adds r0, r5, 0 - bl sub_80C2208 - b _080C51A6 -_080C4FAE: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _080C4FE8 @ =gUnknown_8418EB5 - bl sub_80C4E18 - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C48BC - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C4960 - b _080C51A6 - .align 2, 0 -_080C4FE8: .4byte gUnknown_8418EB5 -_080C4FEC: - ldr r0, _080C4FFC @ =gUnknown_8418EB0 - bl sub_80C4E74 - movs r0, 0 - bl sub_80C4ED0 - b _080C51A6 - .align 2, 0 -_080C4FFC: .4byte gUnknown_8418EB0 -_080C5000: - ldr r0, _080C5024 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C500E - b _080C51DC -_080C500E: - bl sub_80C0B18 - movs r0, 0 - bl PutWindowTilemap - bl sub_80C0BB0 - movs r0, 0x1 - bl PutWindowTilemap - b _080C51A6 - .align 2, 0 -_080C5024: .4byte gPaletteFade -_080C5028: - bl sub_80C3400 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x5 - bls _080C5038 - b _080C51DC -_080C5038: - lsls r0, 2 - ldr r1, _080C5044 @ =_080C5048 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5044: .4byte _080C5048 - .align 2, 0 -_080C5048: - .4byte _080C51DC - .4byte _080C51DC - .4byte _080C5070 - .4byte _080C50F8 - .4byte _080C5168 - .4byte _080C5060 -_080C5060: - ldr r0, _080C506C @ =gUnknown_20399FC - ldr r1, [r0] - movs r0, 0x6 - strb r0, [r1] - b _080C51DC - .align 2, 0 -_080C506C: .4byte gUnknown_20399FC -_080C5070: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C5086 - movs r0, 0x66 - bl PlaySE - b _080C508A -_080C5086: - bl sub_80C0450 -_080C508A: - bl sub_80C3178 - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0B9C - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C50C4 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xD - bne _080C50C4 - movs r0, 0xE1 - bl PlaySE - ldr r0, _080C50C0 @ =gUnknown_8418E95 - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50C0: .4byte gUnknown_8418E95 -_080C50C4: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080C50E0 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080C50EC -_080C50E0: - ldr r0, _080C50E8 @ =gUnknown_8418EB0 - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50E8: .4byte gUnknown_8418EB0 -_080C50EC: - ldr r0, _080C50F4 @ =gUnknown_8418E8B - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50F4: .4byte gUnknown_8418E8B -_080C50F8: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080C5114 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080C51DC -_080C5114: - movs r0, 0x3 - bl sub_80C0E04 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _080C51DC - ldr r0, _080C514C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _080C5140 - cmp r0, 0x8 - bne _080C5154 -_080C5140: - ldr r2, _080C5150 @ =gUnknown_20399FC - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0x2] - ldr r1, [r2] - b _080C51AA - .align 2, 0 -_080C514C: .4byte gSaveBlock1Ptr -_080C5150: .4byte gUnknown_20399FC -_080C5154: - movs r0, 0x1 - bl PlaySE - ldr r1, _080C5164 @ =gUnknown_20399FC - ldr r0, [r1] - strb r4, [r0, 0x2] - ldr r1, [r1] - b _080C51AA - .align 2, 0 -_080C5164: .4byte gUnknown_20399FC -_080C5168: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C517C @ =sub_80C07F8 - adds r1, r5, 0 - bl sub_80C0E70 - b _080C51DC - .align 2, 0 -_080C517C: .4byte sub_80C07F8 -_080C5180: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C51A6 - adds r0, r5, 0 - bl sub_80C2C1C - b _080C51A6 -_080C5196: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080C51A6: - ldr r0, _080C51B4 @ =gUnknown_20399FC - ldr r1, [r0] -_080C51AA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C51DC - .align 2, 0 -_080C51B4: .4byte gUnknown_20399FC -_080C51B8: - ldr r0, _080C51E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080C51DC - ldrb r0, [r2, 0x2] - cmp r0, 0x1 - bne _080C51D6 - bl sub_80C3520 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C527C -_080C51D6: - adds r0, r5, 0 - bl sub_80C5208 -_080C51DC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C51E4: .4byte gPaletteFade - thumb_func_end sub_80C4F08 - - thumb_func_start sub_80C51E8 -sub_80C51E8: @ 80C51E8 - push {r4,lr} - ldr r4, _080C5204 @ =gUnknown_20399FC - movs r0, 0x4 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - strb r1, [r0, 0x1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C5204: .4byte gUnknown_20399FC - thumb_func_end sub_80C51E8 - - thumb_func_start sub_80C5208 -sub_80C5208: @ 80C5208 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C5220 - bl sub_80C25BC -_080C5220: - bl sub_80C4A04 - bl sub_80C3188 - bl sub_80C4348 - bl sub_80C4D30 - bl sub_80C0898 - adds r0, r4, 0 - bl DestroyTask - bl FreeAllWindowBuffers - ldr r0, _080C5250 @ =gUnknown_20399FC - ldr r0, [r0] - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - bne _080C5258 - ldr r0, _080C5254 @ =CB2_ReturnToField - bl SetMainCallback2 - b _080C525E - .align 2, 0 -_080C5250: .4byte gUnknown_20399FC -_080C5254: .4byte CB2_ReturnToField -_080C5258: - ldr r0, _080C5274 @ =CB2_ReturnToPartyMenuFromFlyMap - bl SetMainCallback2 -_080C525E: - ldr r4, _080C5278 @ =gUnknown_20399FC - ldr r0, [r4] - cmp r0, 0 - beq _080C526E - bl Free - movs r0, 0 - str r0, [r4] -_080C526E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C5274: .4byte CB2_ReturnToPartyMenuFromFlyMap -_080C5278: .4byte gUnknown_20399FC - thumb_func_end sub_80C5208 - - thumb_func_start sub_80C527C -sub_80C527C: @ 80C527C - push {r4,r5,lr} - lsls r0, 16 - ldr r1, _080C52A4 @ =0xffa80000 - adds r0, r1 - lsrs r0, 16 - ldr r5, _080C52A8 @ =gUnknown_83F2EE0 - lsls r1, r0, 1 - adds r4, r1, r0 - adds r0, r5, 0x2 - adds r1, r4, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080C52AC - bl sub_805546C - adds r0, r4, r5 - bl sub_8124C1C - b _080C52C6 - .align 2, 0 -_080C52A4: .4byte 0xffa80000 -_080C52A8: .4byte gUnknown_83F2EE0 -_080C52AC: - adds r0, r4, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r5, 0x1 - adds r1, r4, r1 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - bl warp1_set_2 -_080C52C6: - bl sub_80842C8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C527C - thumb_func_start sub_80C52D0 sub_80C52D0: @ 80C52D0 push {lr} diff --git a/include/field_effect.h b/include/field_effect.h index 4afc5cace..c2d14d43c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -23,5 +23,6 @@ void sub_80853CC(u8 a0); void sub_8083598(u8 a0); void sub_8083A5C(struct Sprite * sprite, u8 spriteId); u8 sub_8083970(u16 species, s16 x, s16 y, bool8 unused); +void sub_80842C8(void); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/overworld.h b/include/overworld.h index 04d28701c..324150779 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -149,5 +149,6 @@ void sub_8055778(int); void sub_8055738(u8 loc); void sub_8056078(void *, void *); +void sub_805546C(u8 a0); #endif //GUARD_OVERWORLD_H diff --git a/include/region_map.h b/include/region_map.h index 76195a3af..bc5f789bd 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -24,76 +24,10 @@ enum { MAPSECTYPE_CITY_CANTFLY, }; -struct RegionMap { - /*0x000*/ u16 mapSecId; - /*0x002*/ u8 iconDrawType; - /*0x003*/ u8 posWithinMapSec; - /*0x004*/ u8 mapSecName[0x14]; - /*0x018*/ u8 (*inputCallback)(void); - /*0x01c*/ struct Sprite *cursorSprite; - /*0x020*/ struct Sprite *playerIconSprite; - /*0x024*/ s32 bg2x; - /*0x028*/ s32 bg2y; - /*0x02c*/ u32 bg2pa; - /*0x034*/ u32 bg2pc; - /*0x030*/ u32 bg2pb; - /*0x038*/ u32 bg2pd; - /*0x03c*/ s32 unk_03c; - /*0x040*/ s32 unk_040; - /*0x044*/ s32 unk_044; - /*0x048*/ s32 unk_048; - /*0x04c*/ s32 unk_04c; - /*0x050*/ s32 unk_050; - /*0x054*/ u16 cursorPosX; - /*0x056*/ u16 cursorPosY; - /*0x058*/ u16 cursorTileTag; - /*0x05a*/ u16 cursorPaletteTag; - /*0x05c*/ s16 scrollX; - /*0x05e*/ s16 scrollY; - /*0x060*/ s16 unk_060; - /*0x062*/ s16 unk_062; - /*0x064*/ u16 zoomedCursorPosX; - /*0x066*/ u16 zoomedCursorPosY; - /*0x068*/ s16 zoomedCursorDeltaY; - /*0x06a*/ s16 zoomedCursorDeltaX; - /*0x06c*/ u16 zoomedCursorMovementFrameCounter; - /*0x06e*/ u16 unk_06e; - /*0x070*/ u16 playerIconTileTag; - /*0x072*/ u16 playerIconPaletteTag; - /*0x074*/ u16 playerIconSpritePosX; - /*0x076*/ u16 playerIconSpritePosY; - /*0x078*/ bool8 zoomed; - /*0x079*/ u8 initStep; - /*0x07a*/ s8 cursorMovementFrameCounter; - /*0x07b*/ s8 cursorDeltaX; - /*0x07c*/ s8 cursorDeltaY; - /*0x07d*/ bool8 needUpdateVideoRegs; - /*0x07e*/ bool8 blinkPlayerIcon; - /*0x07f*/ bool8 playerIsInCave; - /*0x080*/ u8 bgNum; - /*0x081*/ u8 charBaseIdx; - /*0x082*/ u8 mapBaseIdx; - /*0x083*/ bool8 bgManaged; - /*0x084*/ u8 filler_084[0x100]; - /*0x184*/ u8 cursorSmallImage[0x100]; - /*0x284*/ u8 cursorLargeImage[0x600]; -}; // size = 0x884 - // Exported RAM declarations // Exported ROM declarations -void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed); -bool8 sub_8122DB0(void); -void UpdateRegionMapVideoRegs(void); -void InitRegionMap(struct RegionMap *regionMap, u8 argument); -u8 sub_81230AC(void); -bool8 sub_8123514(void); -void FreeRegionMapIconResources(void); -u16 GetRegionMapSectionIdAt(u16 x, u16 y); -void CreateRegionMapPlayerIcon(u16 x, u16 y); -void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); -bool32 sub_8124668(u8 mapSecId); u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); void sub_80BFF50(u8 a0, void (*a1)(void)); void MCB2_FlyMap(void); diff --git a/src/region_map.c b/src/region_map.c index 6678a226a..f997791ba 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -10,6 +10,8 @@ #include "region_map.h" #include "window.h" #include "sound.h" +#include "party_menu.h" +#include "field_effect.h" #include "new_menu_helpers.h" #include "menu.h" #include "string_util.h" @@ -160,7 +162,7 @@ struct UnkStruct_20399E4 struct Sprite * field_01C; u16 field_020; u16 field_022; - u16 field_024[0x080]; + u16 field_024[0x80]; }; // size = 0x124 struct UnkStruct_20399E8 @@ -208,6 +210,13 @@ struct UnkStruct_20399F0 u16 win1v; }; +struct UnkStruct_20399FC +{ + u8 field_0; + u8 field_1; + u8 field_2; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; @@ -216,7 +225,7 @@ EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL; EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL; EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; -EWRAM_DATA void * gUnknown_20399FC = NULL; +EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); void sub_80C0100(void); @@ -315,6 +324,9 @@ void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); +void sub_80C51E8(void); +void sub_80C5208(u8 taskId); +void sub_80C527C(u16 a0); #include "data/text/map_section_names.h" extern const u16 gUnknown_83EF23C[]; @@ -375,6 +387,7 @@ extern const union AnimCmd *const gUnknown_83F1C94[]; extern const union AnimCmd *const gUnknown_83F1C98[]; extern const u16 gUnknown_83F1CA0[]; extern const u8 gUnknown_83F1CA4[][2]; +extern const u8 gUnknown_83F1CA8[]; extern const u8 *const gUnknown_83F1CAC[]; extern const u16 gUnknown_83F1E60[][2]; extern const u16 gUnknown_83F2178[][2]; @@ -382,6 +395,7 @@ extern const u8 gUnknown_83F2490[][15][22]; extern const u8 gUnknown_83F2724[][15][22]; extern const u8 gUnknown_83F29B8[][15][22]; extern const u8 gUnknown_83F2C4C[][15][22]; +extern const u8 gUnknown_83F2EE0[][3]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -3269,3 +3283,202 @@ u8 *sub_80C4E08(u8 *dest, u16 mapsec) { return GetMapNameGeneric(dest, mapsec); } + +void sub_80C4E18(const u8 *str) +{ + if (gUnknown_20399D4->field_4797[2] == 1) + FillWindowPixelBuffer(3, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(3, PIXEL_FILL(15)); + AddTextPrinterParameterized3(3, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(3, 2); +} + +void sub_80C4E74(const u8 *str) +{ + if (gUnknown_20399D4->field_4797[2] == 1) + FillWindowPixelBuffer(4, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(4, PIXEL_FILL(15)); + AddTextPrinterParameterized3(4, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(4, 3); +} + +void sub_80C4ED0(bool8 mode) +{ + if (!mode) + { + PutWindowTilemap(3); + PutWindowTilemap(4); + } + else + { + ClearWindowTilemap(3); + ClearWindowTilemap(4); + } +} + +void MCB2_FlyMap(void) +{ + sub_80C51E8(); + sub_80BFEDC(2); +} + +void sub_80C4F08(u8 taskId) +{ + switch (gUnknown_20399FC->field_0) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C4398(sub_80C0E20(), taskId, sub_80C07E4()); + sub_80C3008(0, 0); + sub_80C41D8(1, 1); + sub_80C3154(FALSE); + sub_80C4324(FALSE); + gUnknown_20399FC->field_0++; + break; + case 1: + if (sub_80C0E04(2) == TRUE) + { + sub_80C2208(taskId, sub_80C07E4()); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gUnknown_8418EB5); + sub_80C48BC(sub_80C0E20(), 25, FALSE); + sub_80C4960(sub_80C0E20(), 25, FALSE); + } + gUnknown_20399FC->field_0++; + break; + case 2: + sub_80C4E74(gUnknown_8418EB0); + sub_80C4ED0(FALSE); + gUnknown_20399FC->field_0++; + break; + case 3: + if (!gPaletteFade.active) + { + sub_80C0B18(); + PutWindowTilemap(0); + sub_80C0BB0(); + PutWindowTilemap(1); + gUnknown_20399FC->field_0++; + } + break; + case 4: + switch (sub_80C3400()) + { + case 1: + case 2: + break; + case 6: + gUnknown_20399FC->field_0 = 6; + break; + case 3: + if (sub_80C3AC8(0) == 2) + PlaySE(SE_Z_PAGE); + else + sub_80C0450(); + sub_80C3178(); + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0B9C(); + if (sub_80C3508() == 21 && sub_80C3514() == 13) + { + PlaySE(SE_W255); + sub_80C4E74(gUnknown_8418E95); + } + else if (sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) + { + sub_80C4E74(gUnknown_8418EB0); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + break; + case 4: + if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && sub_80C0E04(3) == TRUE) + { + switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + { + case 4: + case 8: + gUnknown_20399FC->field_2 = FALSE; + gUnknown_20399FC->field_0++; + break; + default: + PlaySE(SE_KAIFUKU); + gUnknown_20399FC->field_2 = TRUE; + gUnknown_20399FC->field_0++; + break; + } + } + break; + case 5: + sub_80C0E70(sub_80C0E20(), taskId, sub_80C07F8); + break; + } + break; + case 5: + if (sub_80C0E04(2) == TRUE) + sub_80C2C1C(taskId); + gUnknown_20399FC->field_0++; + break; + case 6: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gUnknown_20399FC->field_0++; + break; + default: + if (!gPaletteFade.active) + { + if (gUnknown_20399FC->field_2 == TRUE) + sub_80C527C(sub_80C3520()); + sub_80C5208(taskId); + } + break; + } +} + +void sub_80C51E8(void) +{ + gUnknown_20399FC = AllocZeroed(sizeof(struct UnkStruct_20399FC)); + gUnknown_20399FC->field_0 = 0; + gUnknown_20399FC->field_1 = 0; +} + +void sub_80C5208(u8 taskId) +{ + if (sub_80C0E04(2) == TRUE) + sub_80C25BC(); + sub_80C4A04(); + sub_80C3188(); + sub_80C4348(); + sub_80C4D30(); + sub_80C0898(); + DestroyTask(taskId); + FreeAllWindowBuffers(); + if (gUnknown_20399FC->field_2 == TRUE) + SetMainCallback2(CB2_ReturnToField); + else + SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap); + FREE_IF_NOT_NULL(gUnknown_20399FC); +} + +void sub_80C527C(u16 mapsec) +{ + u16 idx = mapsec - MAPSECS_KANTO; + if (gUnknown_83F2EE0[idx][2]) + { + sub_805546C(gUnknown_83F2EE0[idx][2]); + sub_8124C1C(gUnknown_83F2EE0[idx]); + } + else + { + warp1_set_2(gUnknown_83F2EE0[idx][0], gUnknown_83F2EE0[idx][1], -1); + } + sub_80842C8(); +} -- cgit v1.2.3 From 4b0befea41350d6da1f4e6e3d2841242e3167d82 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 16:42:53 -0500 Subject: Split out image_processing_effects --- asm/image_processing_effects.s | 3486 +++++++++++++++++++++++++++++++++++++++ asm/region_map.s | 3486 --------------------------------------- data/image_processing_effects.s | 3204 +++++++++++++++++++++++++++++++++++ data/region_map.s | 3202 ----------------------------------- ld_script.txt | 3 +- 5 files changed, 6692 insertions(+), 6689 deletions(-) create mode 100644 asm/image_processing_effects.s delete mode 100644 asm/region_map.s create mode 100644 data/image_processing_effects.s diff --git a/asm/image_processing_effects.s b/asm/image_processing_effects.s new file mode 100644 index 000000000..1f63bde6c --- /dev/null +++ b/asm/image_processing_effects.s @@ -0,0 +1,3486 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80C52D0 +sub_80C52D0: @ 80C52D0 + push {lr} + ldr r2, _080C5318 @ =gUnknown_3005334 + ldr r1, [r0, 0x4] + str r1, [r2] + ldr r2, _080C531C @ =gUnknown_3005348 + ldrb r1, [r0, 0x1F] + strb r1, [r2] + ldr r2, _080C5320 @ =gUnknown_3005330 + ldrb r1, [r0, 0x19] + strb r1, [r2] + ldr r2, _080C5324 @ =gUnknown_3005344 + ldrb r1, [r0, 0x1A] + strb r1, [r2] + ldr r2, _080C5328 @ =gUnknown_3005340 + ldrb r1, [r0, 0x1B] + strb r1, [r2] + ldr r2, _080C532C @ =gUnknown_3005338 + ldrb r1, [r0, 0x1C] + strb r1, [r2] + ldr r2, _080C5330 @ =gUnknown_300534C + ldrb r1, [r0, 0x1D] + strb r1, [r2] + ldr r2, _080C5334 @ =gUnknown_300533C + ldrb r1, [r0, 0x1E] + strb r1, [r2] + ldrb r0, [r0] + subs r0, 0x2 + cmp r0, 0x22 + bls _080C530C + b _080C5458 +_080C530C: + lsls r0, 2 + ldr r1, _080C5338 @ =_080C533C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5318: .4byte gUnknown_3005334 +_080C531C: .4byte gUnknown_3005348 +_080C5320: .4byte gUnknown_3005330 +_080C5324: .4byte gUnknown_3005344 +_080C5328: .4byte gUnknown_3005340 +_080C532C: .4byte gUnknown_3005338 +_080C5330: .4byte gUnknown_300534C +_080C5334: .4byte gUnknown_300533C +_080C5338: .4byte _080C533C + .align 2, 0 +_080C533C: + .4byte _080C53C8 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5428 + .4byte _080C5458 + .4byte _080C53CE + .4byte _080C53D4 + .4byte _080C53E8 + .4byte _080C53FA + .4byte _080C5458 + .4byte _080C5410 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5416 + .4byte _080C53F4 + .4byte _080C541C + .4byte _080C5422 + .4byte _080C5458 + .4byte _080C5458 + .4byte _080C5434 +_080C53C8: + bl sub_80C55D4 + b _080C5458 +_080C53CE: + bl sub_80C568C + b _080C5458 +_080C53D4: + bl sub_80C5884 + ldr r0, _080C53E4 @ =gUnknown_3005348 + ldrb r0, [r0] + bl sub_80C5748 + b _080C5458 + .align 2, 0 +_080C53E4: .4byte gUnknown_3005348 +_080C53E8: + bl sub_80C5884 + bl sub_80C59D4 + bl sub_80C57EC +_080C53F4: + bl sub_80C59D4 + b _080C5458 +_080C53FA: + bl sub_80C5884 + bl sub_80C5B9C + bl sub_80C5B9C + bl sub_80C5C44 + bl sub_80C57EC + b _080C5458 +_080C5410: + bl sub_80C5A6C + b _080C5458 +_080C5416: + bl sub_80C5884 + b _080C5458 +_080C541C: + bl sub_80C5B9C + b _080C5458 +_080C5422: + bl sub_80C5C44 + b _080C5458 +_080C5428: + bl sub_80C55F4 + movs r0, 0x3 + bl sub_80C545C + b _080C5458 +_080C5434: + bl sub_80C5884 + bl sub_80C5B9C + bl sub_80C5C44 + bl sub_80C57EC + bl sub_80C568C + bl sub_80C568C + movs r0, 0x2 + bl sub_80C545C + movs r0, 0x4 + bl sub_80C5514 +_080C5458: + pop {r0} + bx r0 + thumb_func_end sub_80C52D0 + + thumb_func_start sub_80C545C +sub_80C545C: @ 80C545C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r7, r0, 24 + movs r2, 0 + ldr r0, _080C54FC @ =gUnknown_3005338 + mov r8, r0 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C54EE + ldr r1, _080C5500 @ =gUnknown_3005340 + mov r12, r1 + ldr r3, _080C5504 @ =gUnknown_300534C + mov r10, r3 + ldr r0, _080C5508 @ =gUnknown_3005330 + mov r9, r0 +_080C5482: + ldr r1, _080C550C @ =gUnknown_3005344 + ldrb r0, [r1] + adds r0, r2 + mov r3, r10 + ldrb r1, [r3] + muls r0, r1 + lsls r0, 1 + ldr r3, _080C5510 @ =gUnknown_3005334 + ldr r1, [r3] + adds r1, r0 + mov r3, r9 + ldrb r0, [r3] + lsls r0, 1 + adds r3, r1, r0 + movs r4, 0 + adds r5, r2, 0x1 + mov r0, r12 + ldrb r0, [r0] + cmp r4, r0 + bcs _080C54E2 + movs r6, 0x80 + lsls r6, 8 +_080C54AE: + ldrh r1, [r3] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _080C54D2 + movs r0, 0x1F + ands r0, r1 + adds r0, r7 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1F + bls _080C54C8 + movs r2, 0x1F +_080C54C8: + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_080C54D2: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r3, 0x2 + mov r1, r12 + ldrb r1, [r1] + cmp r4, r1 + bcc _080C54AE +_080C54E2: + lsls r0, r5, 24 + lsrs r2, r0, 24 + mov r3, r8 + ldrb r3, [r3] + cmp r2, r3 + bcc _080C5482 +_080C54EE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C54FC: .4byte gUnknown_3005338 +_080C5500: .4byte gUnknown_3005340 +_080C5504: .4byte gUnknown_300534C +_080C5508: .4byte gUnknown_3005330 +_080C550C: .4byte gUnknown_3005344 +_080C5510: .4byte gUnknown_3005334 + thumb_func_end sub_80C545C + + thumb_func_start sub_80C5514 +sub_80C5514: @ 80C5514 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080C55BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C55AC + ldr r1, _080C55C0 @ =gUnknown_3005340 + mov r10, r1 +_080C5532: + ldr r3, _080C55C4 @ =gUnknown_3005344 + ldrb r0, [r3] + adds r0, r2 + ldr r3, _080C55C8 @ =gUnknown_300534C + ldrb r1, [r3] + muls r0, r1 + lsls r0, 1 + ldr r3, _080C55CC @ =gUnknown_3005334 + ldr r1, [r3] + adds r1, r0 + ldr r3, _080C55D0 @ =gUnknown_3005330 + ldrb r0, [r3] + lsls r0, 1 + adds r3, r1, r0 + movs r5, 0 + adds r7, r2, 0x1 + mov r0, r10 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C55A0 + movs r1, 0x80 + lsls r1, 8 + mov r9, r1 + movs r0, 0x1F + mov r12, r0 + mov r1, r8 + subs r6, r0, r1 +_080C5568: + ldrh r1, [r3] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _080C5590 + movs r4, 0x1F + mov r2, r12 + ands r2, r1 + cmp r2, r6 + ble _080C5586 + mov r1, r8 + lsrs r0, r1, 1 + subs r0, r4, r0 + lsls r0, 24 + lsrs r2, r0, 24 +_080C5586: + lsls r0, r2, 10 + lsls r1, r2, 5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_080C5590: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r3, 0x2 + mov r0, r10 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C5568 +_080C55A0: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r1, _080C55BC @ =gUnknown_3005338 + ldrb r1, [r1] + cmp r2, r1 + bcc _080C5532 +_080C55AC: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C55BC: .4byte gUnknown_3005338 +_080C55C0: .4byte gUnknown_3005340 +_080C55C4: .4byte gUnknown_3005344 +_080C55C8: .4byte gUnknown_300534C +_080C55CC: .4byte gUnknown_3005334 +_080C55D0: .4byte gUnknown_3005330 + thumb_func_end sub_80C5514 + + thumb_func_start sub_80C55D4 +sub_80C55D4: @ 80C55D4 + push {r4,r5,lr} + movs r4, 0 + ldr r5, _080C55F0 @ =0x00000c7f +_080C55DA: + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_80C5CF8 + adds r4, 0x1 + cmp r4, r5 + bls _080C55DA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C55F0: .4byte 0x00000c7f + thumb_func_end sub_80C55D4 + + thumb_func_start sub_80C55F4 +sub_80C55F4: @ 80C55F4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5674 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5666 + ldr r0, _080C5678 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C567C @ =gUnknown_3005340 +_080C560C: + ldr r0, _080C5680 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5684 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5688 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C565A + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5638: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C564C + adds r0, r4, 0 + str r3, [sp] + bl sub_80C5ECC + strh r0, [r4] + ldr r3, [sp] +_080C564C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5638 +_080C565A: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5674 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C560C +_080C5666: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5674: .4byte gUnknown_3005338 +_080C5678: .4byte gUnknown_3005334 +_080C567C: .4byte gUnknown_3005340 +_080C5680: .4byte gUnknown_3005344 +_080C5684: .4byte gUnknown_300534C +_080C5688: .4byte gUnknown_3005330 + thumb_func_end sub_80C55F4 + + thumb_func_start sub_80C568C +sub_80C568C: @ 80C568C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r2, 0 + ldr r0, _080C5730 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5722 + ldr r0, _080C5734 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5738 @ =gUnknown_300534C +_080C56A4: + ldr r0, _080C573C @ =gUnknown_3005344 + ldrb r1, [r0] + ldrb r0, [r3] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5740 @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r2 + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + ldrb r0, [r3] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5744 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r7, r2, 0x1 + cmp r5, r0 + bge _080C5716 + ldr r6, _080C5738 @ =gUnknown_300534C +_080C56DA: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080C5700 + ldrb r2, [r6] + lsls r2, 1 + adds r2, r4, r2 + mov r0, sp + adds r1, r4, 0 + str r3, [sp, 0x4] + bl sub_80C61BC + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r3, [sp, 0x4] +_080C5700: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r6] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5744 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C56DA +_080C5716: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C5730 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C56A4 +_080C5722: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5730: .4byte gUnknown_3005340 +_080C5734: .4byte gUnknown_3005334 +_080C5738: .4byte gUnknown_300534C +_080C573C: .4byte gUnknown_3005344 +_080C5740: .4byte gUnknown_3005330 +_080C5744: .4byte gUnknown_3005338 + thumb_func_end sub_80C568C + + thumb_func_start sub_80C5748 +sub_80C5748: @ 80C5748 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r2, 0 + ldr r0, _080C57D4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C57C4 + ldr r0, _080C57D8 @ =gUnknown_3005334 + mov r9, r0 + ldr r3, _080C57DC @ =gUnknown_3005340 +_080C5768: + ldr r0, _080C57E0 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C57E4 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r9 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C57E8 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C57B8 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5794: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C57AA + adds r0, r4, 0 + mov r1, r8 + str r3, [sp] + bl sub_80C5F00 + strh r0, [r4] + ldr r3, [sp] +_080C57AA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5794 +_080C57B8: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C57D4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5768 +_080C57C4: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C57D4: .4byte gUnknown_3005338 +_080C57D8: .4byte gUnknown_3005334 +_080C57DC: .4byte gUnknown_3005340 +_080C57E0: .4byte gUnknown_3005344 +_080C57E4: .4byte gUnknown_300534C +_080C57E8: .4byte gUnknown_3005330 + thumb_func_end sub_80C5748 + + thumb_func_start sub_80C57EC +sub_80C57EC: @ 80C57EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C586C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C585E + ldr r0, _080C5870 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5874 @ =gUnknown_3005340 +_080C5804: + ldr r0, _080C5878 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C587C @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5880 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C5852 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5830: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5844 + adds r0, r4, 0 + str r3, [sp] + bl sub_80C600C + strh r0, [r4] + ldr r3, [sp] +_080C5844: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5830 +_080C5852: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C586C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5804 +_080C585E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C586C: .4byte gUnknown_3005338 +_080C5870: .4byte gUnknown_3005334 +_080C5874: .4byte gUnknown_3005340 +_080C5878: .4byte gUnknown_3005344 +_080C587C: .4byte gUnknown_300534C +_080C5880: .4byte gUnknown_3005330 + thumb_func_end sub_80C57EC + + thumb_func_start sub_80C5884 +sub_80C5884: @ 80C5884 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r7, 0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r7, r0 + bcs _080C5910 + ldr r0, _080C59C0 @ =gUnknown_3005334 + mov r8, r0 +_080C589A: + ldr r0, _080C59C4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r7 + ldr r0, _080C59C8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r2, r8 + ldr r1, [r2] + adds r1, r0 + ldr r0, _080C59CC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r5, r1, r0 + adds r4, r5, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80C603C + strh r0, [r5] + movs r6, 0x1 + adds r5, r4, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + adds r7, 0x1 + cmp r6, r0 + bge _080C58FA +_080C58D2: + adds r4, r5, 0x2 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80C603C + strh r0, [r5] + subs r1, r5, 0x2 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r5, r4, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + cmp r6, r0 + blt _080C58D2 +_080C58FA: + subs r1, r5, 0x2 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + lsls r0, r7, 24 + lsrs r7, r0, 24 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r7, r0 + bcc _080C589A +_080C5910: + movs r6, 0 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r6, r0 + bcs _080C59B0 + ldr r3, _080C59C0 @ =gUnknown_3005334 + mov r9, r3 + ldr r0, _080C59C8 @ =gUnknown_300534C + mov r8, r0 +_080C5922: + ldr r0, _080C59C4 @ =gUnknown_3005344 + ldrb r0, [r0] + mov r2, r8 + ldrb r1, [r2] + muls r0, r1 + lsls r0, 1 + mov r3, r9 + ldr r2, [r3] + adds r2, r0 + ldr r0, _080C59CC @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r6 + lsls r0, 1 + adds r5, r2, r0 + lsls r1, 1 + adds r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + movs r7, 0x1 + mov r1, r8 + ldrb r0, [r1] + lsls r0, 1 + adds r5, r0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, 0x1 + cmp r7, r0 + bge _080C5994 + ldr r4, _080C59C8 @ =gUnknown_300534C +_080C5962: + ldrb r1, [r4] + lsls r1, 1 + adds r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + ldrb r1, [r4] + lsls r1, 1 + subs r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] + lsls r0, 1 + adds r5, r0 + ldr r0, _080C59BC @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r7, r0 + blt _080C5962 +_080C5994: + mov r2, r8 + ldrb r1, [r2] + lsls r1, 1 + subs r1, r5, r1 + adds r0, r5, 0 + bl sub_80C603C + strh r0, [r5] + lsls r0, r6, 24 + lsrs r6, r0, 24 + ldr r0, _080C59D0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r6, r0 + bcc _080C5922 +_080C59B0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C59BC: .4byte gUnknown_3005338 +_080C59C0: .4byte gUnknown_3005334 +_080C59C4: .4byte gUnknown_3005344 +_080C59C8: .4byte gUnknown_300534C +_080C59CC: .4byte gUnknown_3005330 +_080C59D0: .4byte gUnknown_3005340 + thumb_func_end sub_80C5884 + + thumb_func_start sub_80C59D4 +sub_80C59D4: @ 80C59D4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5A54 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5A46 + ldr r0, _080C5A58 @ =gUnknown_3005334 + mov r8, r0 + ldr r3, _080C5A5C @ =gUnknown_3005340 +_080C59EC: + ldr r0, _080C5A60 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5A64 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r4, r8 + ldr r1, [r4] + adds r1, r0 + ldr r0, _080C5A68 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + adds r6, r2, 0x1 + ldrb r0, [r3] + cmp r5, r0 + bcs _080C5A3A + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5A18: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5A2C + adds r0, r4, 0 + str r3, [sp] + bl sub_80C606C + strh r0, [r4] + ldr r3, [sp] +_080C5A2C: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r5, r0 + bcc _080C5A18 +_080C5A3A: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5A54 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C59EC +_080C5A46: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5A54: .4byte gUnknown_3005338 +_080C5A58: .4byte gUnknown_3005334 +_080C5A5C: .4byte gUnknown_3005340 +_080C5A60: .4byte gUnknown_3005344 +_080C5A64: .4byte gUnknown_300534C +_080C5A68: .4byte gUnknown_3005330 + thumb_func_end sub_80C59D4 + + thumb_func_start sub_80C5A6C +sub_80C5A6C: @ 80C5A6C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _080C5B98 @ =gUnknown_3005334 + ldr r4, [r0] + movs r6, 0 + movs r0, 0x80 + lsls r0, 8 + adds r5, r0, 0 +_080C5A84: + movs r7, 0 +_080C5A86: + ldrh r0, [r4] + ands r0, r5 + cmp r0, 0 + bne _080C5A96 + adds r0, r4, 0 + bl sub_80C606C + strh r0, [r4] +_080C5A96: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r4, 0x2 + cmp r7, 0x3F + bls _080C5A86 + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _080C5A84 + movs r7, 0 + ldr r1, _080C5B98 @ =gUnknown_3005334 + mov r10, r1 + mov r3, sp + movs r2, 0x80 + lsls r2, 8 + mov r9, r2 +_080C5ABA: + lsls r0, r7, 1 + mov r2, r10 + ldr r1, [r2] + adds r4, r1, r0 + ldrh r1, [r4] + strh r1, [r3] + mov r1, r9 + strh r1, [r4] + movs r6, 0x1 + adds r4, 0x80 + adds r5, r0, 0 +_080C5AD0: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + ands r0, r2 + cmp r0, 0 + bne _080C5AF0 + adds r2, r4, 0 + adds r2, 0x80 + mov r0, sp + adds r1, r4, 0 + str r3, [sp, 0x4] + bl sub_80C62DC + strh r0, [r4] + ldr r3, [sp, 0x4] + strh r0, [r3] +_080C5AF0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, 0x80 + cmp r6, 0x3E + bls _080C5AD0 + mov r0, r9 + strh r0, [r4] + mov r1, r10 + ldr r0, [r1] + adds r4, r0, r5 + ldrh r0, [r4] + strh r0, [r3] + mov r2, r9 + strh r2, [r4] + movs r6, 0x1 + adds r4, 0x80 + movs r0, 0x80 + lsls r0, 8 + mov r8, r0 +_080C5B18: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + adds r5, r4, 0 + adds r5, 0x80 + cmp r0, 0 + bne _080C5B38 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + str r3, [sp, 0x4] + bl sub_80C62DC + strh r0, [r4] + ldr r3, [sp, 0x4] + strh r0, [r3] +_080C5B38: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, r5, 0 + cmp r6, 0x3E + bls _080C5B18 + mov r2, r9 + strh r2, [r4] + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3F + bls _080C5ABA + ldr r0, _080C5B98 @ =gUnknown_3005334 + ldr r4, [r0] + movs r6, 0 + movs r0, 0x80 + lsls r0, 8 + mov r8, r0 +_080C5B5E: + movs r7, 0 + adds r5, r6, 0x1 +_080C5B62: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + cmp r0, 0 + bne _080C5B74 + adds r0, r4, 0 + bl sub_80C606C + strh r0, [r4] +_080C5B74: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r4, 0x2 + cmp r7, 0x3F + bls _080C5B62 + lsls r0, r5, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _080C5B5E + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5B98: .4byte gUnknown_3005334 + thumb_func_end sub_80C5A6C + + thumb_func_start sub_80C5B9C +sub_80C5B9C: @ 80C5B9C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C5C2C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5C1E + ldr r0, _080C5C30 @ =gUnknown_3005334 + mov r8, r0 +_080C5BB2: + ldr r0, _080C5C34 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C5C38 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C5C3C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + adds r4, 0x2 + ldr r0, _080C5C40 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, r2, 0x1 + cmp r5, r0 + bge _080C5C12 + movs r0, 0x80 + lsls r0, 8 + adds r7, r0, 0 +_080C5BEA: + ldrh r0, [r4] + ands r0, r7 + cmp r0, 0 + bne _080C5C00 + mov r0, sp + adds r1, r4, 0 + bl sub_80C6098 + strh r0, [r4] + mov r1, sp + strh r0, [r1] +_080C5C00: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C5C40 @ =gUnknown_3005340 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C5BEA +_080C5C12: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5C2C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5BB2 +_080C5C1E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5C2C: .4byte gUnknown_3005338 +_080C5C30: .4byte gUnknown_3005334 +_080C5C34: .4byte gUnknown_3005344 +_080C5C38: .4byte gUnknown_300534C +_080C5C3C: .4byte gUnknown_3005330 +_080C5C40: .4byte gUnknown_3005340 + thumb_func_end sub_80C5B9C + + thumb_func_start sub_80C5C44 +sub_80C5C44: @ 80C5C44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r2, 0 + ldr r0, _080C5CE0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C5CD2 + ldr r0, _080C5CE4 @ =gUnknown_3005334 + mov r8, r0 + ldr r7, _080C5CE8 @ =gUnknown_300534C +_080C5C5C: + ldr r0, _080C5CEC @ =gUnknown_3005344 + ldrb r1, [r0] + ldrb r0, [r7] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C5CF0 @ =gUnknown_3005330 + ldrb r0, [r0] + adds r0, r2 + lsls r0, 1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, 0x1 + ldrb r0, [r7] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5CF4 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + adds r6, r2, 0x1 + cmp r5, r0 + bge _080C5CC6 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C5C96: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + bne _080C5CB0 + mov r0, sp + adds r1, r4, 0 + str r2, [sp, 0x4] + bl sub_80C6098 + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r2, [sp, 0x4] +_080C5CB0: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r7] + lsls r0, 1 + adds r4, r0 + ldr r0, _080C5CF4 @ =gUnknown_3005338 + ldrb r0, [r0] + subs r0, 0x1 + cmp r5, r0 + blt _080C5C96 +_080C5CC6: + lsls r0, r6, 24 + lsrs r2, r0, 24 + ldr r0, _080C5CE0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C5C5C +_080C5CD2: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5CE0: .4byte gUnknown_3005340 +_080C5CE4: .4byte gUnknown_3005334 +_080C5CE8: .4byte gUnknown_300534C +_080C5CEC: .4byte gUnknown_3005344 +_080C5CF0: .4byte gUnknown_3005330 +_080C5CF4: .4byte gUnknown_3005338 + thumb_func_end sub_80C5C44 + + thumb_func_start sub_80C5CF8 +sub_80C5CF8: @ 80C5CF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + mov r2, sp + ldr r3, _080C5D64 @ =gUnknown_83F3024 + lsls r1, r0, 1 + add r1, r10 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r3, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r2, 0x1] + mov r5, sp + adds r0, r3, 0x2 + adds r1, r0 + ldrb r4, [r1] + lsls r2, r4, 24 + lsrs r1, r2, 27 + movs r0, 0x7 + ands r1, r0 + strh r1, [r5, 0x2] + lsrs r2, 25 + mov r9, r2 + movs r0, 0x3 + ands r2, r0 + mov r9, r2 + movs r5, 0x1 + ands r5, r4 + movs r4, 0x1 + mov r8, r4 + cmp r8, r1 + bcs _080C5DAA + mov r3, sp +_080C5D4A: + cmp r5, 0 + bne _080C5D68 + mov r0, r8 + lsls r2, r0, 2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + mov r4, r8 + subs r0, r4 + strb r0, [r1] + ldrb r0, [r3, 0x1] + add r0, r8 + b _080C5D7A + .align 2, 0 +_080C5D64: .4byte gUnknown_83F3024 +_080C5D68: + mov r0, r8 + lsls r2, r0, 2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r1] + ldrb r0, [r3, 0x1] + subs r0, 0x1 +_080C5D7A: + strb r0, [r1, 0x1] + add r2, sp + ldrb r0, [r2] + cmp r0, 0x3F + bhi _080C5D8A + ldrb r0, [r2, 0x1] + cmp r0, 0x3F + bls _080C5D92 +_080C5D8A: + mov r0, r8 + subs r0, 0x1 + strh r0, [r3, 0x2] + b _080C5DAA +_080C5D92: + ldrh r0, [r3, 0x2] + mov r1, r8 + subs r0, r1 + strh r0, [r2, 0x2] + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r0, [r3, 0x2] + cmp r8, r0 + bcc _080C5D4A +_080C5DAA: + movs r2, 0 + mov r8, r2 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r8, r0 + bcc _080C5DB8 + b _080C5EBA +_080C5DB8: + movs r3, 0x1F +_080C5DBA: + ldr r1, _080C5E18 @ =gUnknown_3005334 + mov r4, r8 + lsls r0, r4, 2 + mov r2, sp + adds r6, r2, r0 + ldrb r0, [r6, 0x1] + lsls r0, 7 + ldr r1, [r1] + adds r1, r0 + ldrb r0, [r6] + lsls r0, 1 + adds r2, r1, r0 + ldrh r1, [r2] + movs r4, 0x80 + lsls r4, 8 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080C5EA6 + movs r7, 0x1F + ands r7, r1 + lsls r0, r1, 16 + lsrs r5, r0, 21 + ands r5, r3 + lsrs r4, r0, 26 + ands r4, r3 + mov r0, r9 + cmp r0, 0 + blt _080C5E9C + cmp r0, 0x1 + ble _080C5E1C + cmp r0, 0x3 + bgt _080C5E9C + ldrh r0, [r6, 0x2] + adds r1, r7, r0 + lsls r1, 16 + lsrs r7, r1, 16 + adds r1, r5, r0 + lsls r1, 16 + lsrs r5, r1, 16 + adds r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r7, 0x1F + bls _080C5E90 + movs r7, 0x1F + b _080C5E90 + .align 2, 0 +_080C5E18: .4byte gUnknown_3005334 +_080C5E1C: + mov r1, r10 + lsls r0, r1, 1 + add r0, r10 + ldr r1, _080C5E50 @ =gUnknown_83F3024 + adds r1, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsrs r0, 3 + movs r1, 0x7 + ands r0, r1 + movs r1, 0x3 + str r2, [sp, 0x18] + str r3, [sp, 0x1C] + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + cmp r0, 0x1 + beq _080C5E6C + cmp r0, 0x1 + bgt _080C5E54 + cmp r0, 0 + beq _080C5E5A + b _080C5E9C + .align 2, 0 +_080C5E50: .4byte gUnknown_83F3024 +_080C5E54: + cmp r0, 0x2 + beq _080C5E7E + b _080C5E9C +_080C5E5A: + ldrh r0, [r6, 0x2] + cmp r7, r0 + bcc _080C5E68 + subs r0, r7, r0 + lsls r0, 16 + lsrs r7, r0, 16 + b _080C5E9C +_080C5E68: + movs r7, 0 + b _080C5E9C +_080C5E6C: + ldrh r0, [r6, 0x2] + cmp r5, r0 + bcc _080C5E7A + subs r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 + b _080C5E9C +_080C5E7A: + movs r5, 0 + b _080C5E9C +_080C5E7E: + ldrh r0, [r6, 0x2] + cmp r4, r0 + bcc _080C5E8C + subs r0, r4, r0 + lsls r0, 16 + lsrs r4, r0, 16 + b _080C5E9C +_080C5E8C: + movs r4, 0 + b _080C5E9C +_080C5E90: + cmp r5, 0x1F + bls _080C5E96 + movs r5, 0x1F +_080C5E96: + cmp r4, 0x1F + bls _080C5E9C + movs r4, 0x1F +_080C5E9C: + lsls r0, r4, 10 + lsls r1, r5, 5 + orrs r0, r1 + orrs r7, r0 + strh r7, [r2] +_080C5EA6: + mov r0, r8 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r8, r0 + bcs _080C5EBA + b _080C5DBA +_080C5EBA: + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80C5CF8 + + thumb_func_start sub_80C5ECC +sub_80C5ECC: @ 80C5ECC + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r0, r1, 10 + lsls r2, r1, 5 + orrs r0, r2 + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80C5ECC + + thumb_func_start sub_80C5F00 +sub_80C5F00: @ 80C5F00 + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldrh r0, [r0] + movs r2, 0x1F + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r2 + lsrs r0, 26 + ands r0, r2 + cmp r1, 0x10 + bhi _080C5F30 + cmp r3, 0x10 + bhi _080C5F30 + cmp r0, 0x10 + bhi _080C5F30 + adds r0, r4, 0 + bl sub_80C5F3C + lsls r0, 16 + lsrs r0, 16 + b _080C5F32 +_080C5F30: + ldr r0, _080C5F38 @ =0x00007fff +_080C5F32: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C5F38: .4byte 0x00007fff + thumb_func_end sub_80C5F00 + + thumb_func_start sub_80C5F3C +sub_80C5F3C: @ 80C5F3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0 + mov r8, r0 + movs r6, 0 + movs r7, 0 + adds r0, r4, 0 + movs r1, 0x6 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bhi _080C5FF4 + lsls r0, 2 + ldr r1, _080C5F80 @ =_080C5F84 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5F80: .4byte _080C5F84 + .align 2, 0 +_080C5F84: + .4byte _080C5F9C + .4byte _080C5FAC + .4byte _080C5FBC + .4byte _080C5FCA + .4byte _080C5FD8 + .4byte _080C5FE6 +_080C5F9C: + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r6, r0, 16 + adds r7, r6, 0 + movs r1, 0 + mov r8, r1 + b _080C5FF4 +_080C5FAC: + movs r7, 0 + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r6, r8 + b _080C5FF4 +_080C5FBC: + movs r0, 0x15 + subs r0, r5 + lsls r0, 16 + lsrs r7, r0, 16 + movs r6, 0 + mov r8, r7 + b _080C5FF4 +_080C5FCA: + movs r7, 0 + movs r6, 0 + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r0, 16 + b _080C5FF2 +_080C5FD8: + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r7, r0, 16 + movs r6, 0 + mov r8, r6 + b _080C5FF4 +_080C5FE6: + movs r7, 0 + movs r0, 0x17 + subs r0, r5 + lsls r0, 16 + lsrs r6, r0, 16 + movs r0, 0 +_080C5FF2: + mov r8, r0 +_080C5FF4: + lsls r0, r7, 10 + lsls r1, r6, 5 + orrs r0, r1 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, 16 + lsrs r0, 16 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C5F3C + + thumb_func_start sub_80C600C +sub_80C600C: @ 80C600C + push {lr} + ldrh r0, [r0] + movs r2, 0x1F + movs r1, 0x1F + ands r1, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r2 + lsrs r0, 26 + ands r0, r2 + cmp r1, 0x10 + bhi _080C6030 + cmp r3, 0x10 + bhi _080C6030 + cmp r0, 0x10 + bhi _080C6030 + movs r0, 0 + b _080C6032 +_080C6030: + ldr r0, _080C6038 @ =0x00007fff +_080C6032: + pop {r1} + bx r1 + .align 2, 0 +_080C6038: .4byte 0x00007fff + thumb_func_end sub_80C600C + + thumb_func_start sub_80C603C +sub_80C603C: @ 80C603C + push {r4,lr} + adds r4, r0, 0 + ldrh r3, [r4] + cmp r3, 0 + beq _080C6064 + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _080C6056 + adds r0, r2, 0 + b _080C6066 +_080C6056: + ldrh r1, [r1] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080C6064 + ldrh r0, [r4] + b _080C6066 +_080C6064: + movs r0, 0 +_080C6066: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C603C + + thumb_func_start sub_80C606C +sub_80C606C: @ 80C606C + push {r4,lr} + ldrh r1, [r0] + movs r0, 0x1F + movs r3, 0x1F + ands r3, r1 + lsls r1, 16 + lsrs r2, r1, 21 + lsrs r1, 26 + subs r3, r0, r3 + adds r4, r0, 0 + bics r4, r2 + adds r2, r4, 0 + bics r0, r1 + lsls r0, 10 + lsls r2, 5 + orrs r0, r2 + orrs r0, r3 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C606C + + thumb_func_start sub_80C6098 +sub_80C6098: @ 80C6098 + push {r4-r7,lr} + sub sp, 0x14 + adds r7, r1, 0 + ldrh r4, [r0] + ldrh r5, [r7] + lsls r6, r4, 16 + lsls r0, r5, 16 + mov r12, r0 + cmp r4, r5 + beq _080C610A + mov r2, sp + movs r3, 0x1F + movs r1, 0x1F + adds r0, r1, 0 + ands r0, r4 + strh r0, [r2] + lsrs r0, r6, 21 + ands r0, r3 + strh r0, [r2, 0x2] + lsrs r0, r6, 26 + ands r0, r3 + strh r0, [r2, 0x4] + mov r0, sp + ands r1, r5 + strh r1, [r0, 0x6] + mov r1, sp + mov r2, r12 + lsrs r0, r2, 21 + ands r0, r3 + strh r0, [r1, 0x8] + lsrs r0, r2, 26 + ands r0, r3 + strh r0, [r1, 0xA] + mov r0, sp + ldrh r0, [r0] + cmp r0, 0x19 + bls _080C60F2 + mov r0, sp + ldrh r0, [r0, 0x2] + cmp r0, 0x19 + bls _080C60F2 + mov r0, sp + ldrh r0, [r0, 0x4] + cmp r0, 0x19 + bhi _080C610A +_080C60F2: + mov r0, sp + ldrh r0, [r0, 0x6] + cmp r0, 0x19 + bls _080C610E + mov r0, sp + ldrh r0, [r0, 0x8] + cmp r0, 0x19 + bls _080C610E + mov r0, sp + ldrh r0, [r0, 0xA] + cmp r0, 0x19 + bls _080C610E +_080C610A: + ldrh r0, [r7] + b _080C61B4 +_080C610E: + movs r4, 0 + add r6, sp, 0xC + mov r7, sp + adds r7, 0x6 + adds r5, r6, 0 +_080C6118: + lsls r2, r4, 1 + mov r1, sp + adds r0, r1, r2 + adds r1, r7, r2 + ldrh r3, [r0] + ldrh r0, [r1] + cmp r3, r0 + bls _080C612E + adds r1, r5, r2 + subs r0, r3, r0 + b _080C6132 +_080C612E: + adds r1, r5, r2 + subs r0, r3 +_080C6132: + strh r0, [r1] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x2 + bls _080C6118 + adds r1, r6, 0 + ldrh r0, [r1, 0x2] + ldrh r3, [r1] + cmp r3, r0 + bcc _080C6158 + ldrh r2, [r1, 0x4] + cmp r3, r2 + bcc _080C6152 + adds r2, r3, 0 + b _080C616C +_080C6152: + cmp r0, r2 + bcs _080C615E + b _080C6166 +_080C6158: + ldrh r2, [r1, 0x4] + cmp r0, r2 + bcc _080C6162 +_080C615E: + ldrh r2, [r1, 0x2] + b _080C616C +_080C6162: + cmp r2, r3 + bcc _080C616A +_080C6166: + ldrh r2, [r1, 0x4] + b _080C616C +_080C616A: + ldrh r2, [r6] +_080C616C: + mov r0, sp + ldrh r1, [r0, 0x6] + lsrs r0, r2, 1 + movs r6, 0x1F + subs r6, r0 + adds r0, r1, 0 + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + mov r0, sp + ldrh r0, [r0, 0x8] + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + mov r0, sp + ldrh r0, [r0, 0xA] + muls r0, r6 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + lsls r4, 5 + orrs r0, r4 + orrs r5, r0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r5, 0 +_080C61B4: + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C6098 + + thumb_func_start sub_80C61BC +sub_80C61BC: @ 80C61BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r3, r0, 0 + mov r10, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, r10 + ldrh r0, [r0] + cmp r1, r0 + bne _080C61E4 + ldrh r0, [r2] + cmp r0, r1 + bne _080C61E4 + mov r1, r10 + ldrh r0, [r1] + b _080C62CC +_080C61E4: + mov r2, r10 + ldrh r0, [r2] + movs r1, 0x1F + mov r9, r1 + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + lsls r0, 16 + lsrs r2, r0, 21 + mov r1, r9 + ands r1, r2 + mov r8, r1 + lsrs r0, 26 + mov r2, r9 + ands r2, r0 + str r2, [sp, 0x4] + ldrh r2, [r3] + adds r0, r4, 0 + ands r0, r2 + lsls r2, 16 + lsrs r1, r2, 21 + mov r3, r9 + ands r1, r3 + adds r0, r1 + lsrs r2, 26 + ands r2, r3 + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, 0x4] + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, 16 + lsrs r0, r1, 21 + mov r2, r9 + ands r0, r2 + adds r4, r0 + lsrs r1, 26 + ands r1, r2 + adds r4, r1 + adds r0, r4, 0 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r7, r6 + bne _080C6266 + cmp r1, r6 + bne _080C6266 + mov r3, r10 + ldrh r0, [r3] + b _080C62CC +_080C6266: + cmp r7, r6 + bls _080C626E + subs r0, r7, r6 + b _080C6270 +_080C626E: + subs r0, r6, r7 +_080C6270: + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, r6 + bls _080C627C + subs r0, r1, r6 + b _080C627E +_080C627C: + subs r0, r6, r1 +_080C627E: + lsls r0, 16 + lsrs r0, 16 + cmp r2, r0 + bcc _080C6288 + adds r0, r2, 0 +_080C6288: + lsrs r0, 1 + movs r4, 0x1F + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r8 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0x4] + adds r0, r1, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + mov r2, r8 + lsls r1, r2, 5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r0, 16 +_080C62CC: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C61BC + + thumb_func_start sub_80C62DC +sub_80C62DC: @ 80C62DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r3, r0, 0 + mov r10, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, r10 + ldrh r0, [r0] + cmp r1, r0 + bne _080C6304 + ldrh r0, [r2] + cmp r0, r1 + bne _080C6304 + mov r1, r10 + ldrh r0, [r1] + b _080C63EA +_080C6304: + mov r2, r10 + ldrh r0, [r2] + movs r1, 0x1F + mov r9, r1 + movs r4, 0x1F + adds r5, r4, 0 + ands r5, r0 + lsls r0, 16 + lsrs r2, r0, 21 + mov r1, r9 + ands r1, r2 + mov r8, r1 + lsrs r0, 26 + mov r2, r9 + ands r2, r0 + str r2, [sp, 0x4] + ldrh r2, [r3] + adds r0, r4, 0 + ands r0, r2 + lsls r2, 16 + lsrs r1, r2, 21 + mov r3, r9 + ands r1, r3 + adds r0, r1 + lsrs r2, 26 + ands r2, r3 + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, 0x4] + adds r0, r2 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, 16 + lsrs r0, r1, 21 + mov r2, r9 + ands r0, r2 + adds r4, r0 + lsrs r1, 26 + ands r1, r2 + adds r4, r1 + adds r0, r4, 0 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r7, r6 + bne _080C6386 + cmp r1, r6 + bne _080C6386 + mov r3, r10 + ldrh r0, [r3] + b _080C63EA +_080C6386: + cmp r7, r6 + bls _080C638E + subs r0, r7, r6 + b _080C6390 +_080C638E: + subs r0, r6, r7 +_080C6390: + lsls r0, 16 + lsrs r2, r0, 16 + cmp r1, r6 + bls _080C639C + subs r0, r1, r6 + b _080C639E +_080C639C: + subs r0, r6, r1 +_080C639E: + lsls r0, 16 + lsrs r0, 16 + cmp r2, r0 + bcc _080C63A8 + adds r0, r2, 0 +_080C63A8: + movs r4, 0x1F + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r0, r8 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0x4] + adds r0, r1, 0 + muls r0, r4 + movs r1, 0x1F + bl __divsi3 + lsls r0, 16 + lsrs r0, 6 + mov r2, r8 + lsls r1, r2, 5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, 16 + lsrs r0, 16 +_080C63EA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80C62DC + + thumb_func_start sub_80C63FC +sub_80C63FC: @ 80C63FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + ldrb r1, [r0, 0x1D] + lsrs r5, r1, 3 + ldrb r1, [r0, 0x1E] + lsrs r1, 3 + str r1, [sp, 0x8] + ldr r1, [r0, 0x4] + str r1, [sp] + ldr r2, [r0, 0x10] + str r2, [sp, 0x4] + ldrh r0, [r0, 0x16] + cmp r0, 0x2 + bne _080C64AC + movs r1, 0 + ldr r0, [sp, 0x8] + cmp r1, r0 + bcc _080C642A + b _080C6538 +_080C642A: + movs r0, 0 + adds r2, r1, 0x1 + mov r10, r2 + cmp r0, r5 + bcs _080C649E + adds r2, r1, 0 + muls r2, r5 + mov r9, r2 + lsls r1, 3 + mov r8, r1 +_080C643E: + movs r4, 0 + lsls r6, r0, 4 + adds r7, r0, 0x1 + add r0, r9 + lsls r0, 6 + ldr r1, [sp, 0x4] + adds r1, r0 + mov r12, r1 +_080C644E: + lsls r0, r4, 3 + mov r2, r12 + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, 3 + muls r0, r5 + lsls r0, 1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r0, [r2, 0x2] + lsls r0, 8 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r2, 0x6] + lsls r0, 8 + ldrh r1, [r2, 0x4] + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r0, [r2, 0xA] + lsls r0, 8 + ldrh r1, [r2, 0x8] + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r2, 0xE] + lsls r0, 8 + ldrh r1, [r2, 0xC] + orrs r0, r1 + strh r0, [r3, 0x6] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x7 + bls _080C644E + lsls r0, r7, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080C643E +_080C649E: + mov r1, r10 + lsls r0, r1, 16 + lsrs r1, r0, 16 + ldr r2, [sp, 0x8] + cmp r1, r2 + bcc _080C642A + b _080C6538 +_080C64AC: + movs r1, 0 + ldr r0, [sp, 0x8] + cmp r1, r0 + bcs _080C6538 +_080C64B4: + movs r0, 0 + adds r2, r1, 0x1 + mov r10, r2 + cmp r0, r5 + bcs _080C652C + adds r2, r1, 0 + muls r2, r5 + mov r9, r2 + lsls r1, 3 + mov r8, r1 +_080C64C8: + movs r4, 0 + lsls r6, r0, 4 + adds r7, r0, 0x1 + add r0, r9 + lsls r0, 5 + ldr r1, [sp, 0x4] + adds r1, r0 + mov r12, r1 +_080C64D8: + lsls r0, r4, 2 + mov r2, r12 + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, 3 + muls r0, r5 + lsls r0, 1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r1, [r2, 0x2] + lsls r1, 4 + ldrh r0, [r2] + orrs r1, r0 + ldrh r0, [r2, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2, 0x6] + lsls r0, 12 + orrs r1, r0 + strh r1, [r3] + ldrh r1, [r2, 0xA] + lsls r1, 4 + ldrh r0, [r2, 0x8] + orrs r1, r0 + ldrh r0, [r2, 0xC] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2, 0xE] + lsls r0, 12 + orrs r1, r0 + strh r1, [r3, 0x2] + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x7 + bls _080C64D8 + lsls r0, r7, 16 + lsrs r0, 16 + cmp r0, r5 + bcc _080C64C8 +_080C652C: + mov r1, r10 + lsls r0, r1, 16 + lsrs r1, r0, 16 + ldr r2, [sp, 0x8] + cmp r1, r2 + bcc _080C64B4 +_080C6538: + 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_80C63FC + + thumb_func_start sub_80C6548 +sub_80C6548: @ 80C6548 + push {lr} + ldr r2, _080C6598 @ =gUnknown_3005354 + ldrb r1, [r0, 0x18] + lsls r1, 4 + strh r1, [r2] + ldr r3, _080C659C @ =gUnknown_3005350 + ldrh r2, [r2] + lsls r2, 1 + ldr r1, [r0, 0x8] + adds r1, r2 + str r1, [r3] + ldr r2, _080C65A0 @ =gUnknown_3005334 + ldr r1, [r0, 0x4] + str r1, [r2] + ldr r2, _080C65A4 @ =gUnknown_3005330 + ldrb r1, [r0, 0x19] + strb r1, [r2] + ldr r2, _080C65A8 @ =gUnknown_3005344 + ldrb r1, [r0, 0x1A] + strb r1, [r2] + ldr r2, _080C65AC @ =gUnknown_3005340 + ldrb r1, [r0, 0x1B] + strb r1, [r2] + ldr r2, _080C65B0 @ =gUnknown_3005338 + ldrb r1, [r0, 0x1C] + strb r1, [r2] + ldr r2, _080C65B4 @ =gUnknown_300534C + ldrb r1, [r0, 0x1D] + strb r1, [r2] + ldr r2, _080C65B8 @ =gUnknown_300533C + ldrb r1, [r0, 0x1E] + strb r1, [r2] + ldrh r0, [r0, 0x14] + cmp r0, 0x5 + bhi _080C660E + lsls r0, 2 + ldr r1, _080C65BC @ =_080C65C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C6598: .4byte gUnknown_3005354 +_080C659C: .4byte gUnknown_3005350 +_080C65A0: .4byte gUnknown_3005334 +_080C65A4: .4byte gUnknown_3005330 +_080C65A8: .4byte gUnknown_3005344 +_080C65AC: .4byte gUnknown_3005340 +_080C65B0: .4byte gUnknown_3005338 +_080C65B4: .4byte gUnknown_300534C +_080C65B8: .4byte gUnknown_300533C +_080C65BC: .4byte _080C65C0 + .align 2, 0 +_080C65C0: + .4byte _080C65D8 + .4byte _080C65E0 + .4byte _080C65E8 + .4byte _080C65F2 + .4byte _080C65FC + .4byte _080C6606 +_080C65D8: + movs r0, 0 + bl sub_80C6748 + b _080C660E +_080C65E0: + movs r0, 0x1 + bl sub_80C6748 + b _080C660E +_080C65E8: + bl sub_80C6614 + bl sub_80C6AB8 + b _080C660E +_080C65F2: + bl sub_80C6714 + bl sub_80C6A08 + b _080C660E +_080C65FC: + bl sub_80C66D8 + bl sub_80C6958 + b _080C660E +_080C6606: + bl sub_80C66BC + bl sub_80C68A0 +_080C660E: + pop {r0} + bx r0 + thumb_func_end sub_80C6548 + + thumb_func_start sub_80C6614 +sub_80C6614: @ 80C6614 + ldr r2, _080C667C @ =gUnknown_3005350 + ldr r1, [r2] + movs r0, 0 + strh r0, [r1] + ldr r0, [r2] + ldr r2, _080C6680 @ =0x000018c6 + adds r1, r2, 0 + strh r1, [r0, 0x2] + ldr r2, _080C6684 @ =0x000077bd + adds r1, r2, 0 + strh r1, [r0, 0x4] + ldr r2, _080C6688 @ =0x00002d6b + adds r1, r2, 0 + strh r1, [r0, 0x6] + ldr r2, _080C668C @ =0x000018dd + adds r1, r2, 0 + strh r1, [r0, 0x8] + ldr r2, _080C6690 @ =0x00001ba6 + adds r1, r2, 0 + strh r1, [r0, 0xA] + ldr r2, _080C6694 @ =0x000074c6 + adds r1, r2, 0 + strh r1, [r0, 0xC] + ldr r2, _080C6698 @ =0x00001bbd + adds r1, r2, 0 + strh r1, [r0, 0xE] + ldr r2, _080C669C @ =0x000074dd + adds r1, r2, 0 + strh r1, [r0, 0x10] + ldr r2, _080C66A0 @ =0x000077a6 + adds r1, r2, 0 + strh r1, [r0, 0x12] + ldr r2, _080C66A4 @ =0x0000197d + adds r1, r2, 0 + strh r1, [r0, 0x14] + ldr r2, _080C66A8 @ =0x00001bab + adds r1, r2, 0 + strh r1, [r0, 0x16] + ldr r2, _080C66AC @ =0x00007566 + adds r1, r2, 0 + strh r1, [r0, 0x18] + ldr r2, _080C66B0 @ =0x00002cdd + adds r1, r2, 0 + strh r1, [r0, 0x1A] + ldr r2, _080C66B4 @ =0x00002fa6 + adds r1, r2, 0 + strh r1, [r0, 0x1C] + ldr r2, _080C66B8 @ =0x000074cb + adds r1, r2, 0 + strh r1, [r0, 0x1E] + bx lr + .align 2, 0 +_080C667C: .4byte gUnknown_3005350 +_080C6680: .4byte 0x000018c6 +_080C6684: .4byte 0x000077bd +_080C6688: .4byte 0x00002d6b +_080C668C: .4byte 0x000018dd +_080C6690: .4byte 0x00001ba6 +_080C6694: .4byte 0x000074c6 +_080C6698: .4byte 0x00001bbd +_080C669C: .4byte 0x000074dd +_080C66A0: .4byte 0x000077a6 +_080C66A4: .4byte 0x0000197d +_080C66A8: .4byte 0x00001bab +_080C66AC: .4byte 0x00007566 +_080C66B0: .4byte 0x00002cdd +_080C66B4: .4byte 0x00002fa6 +_080C66B8: .4byte 0x000074cb + thumb_func_end sub_80C6614 + + thumb_func_start sub_80C66BC +sub_80C66BC: @ 80C66BC + ldr r2, _080C66D0 @ =gUnknown_3005350 + ldr r0, [r2] + movs r1, 0 + strh r1, [r0] + ldr r2, [r2] + strh r1, [r2, 0x2] + ldr r1, _080C66D4 @ =0x00007fff + adds r0, r1, 0 + strh r0, [r2, 0x4] + bx lr + .align 2, 0 +_080C66D0: .4byte gUnknown_3005350 +_080C66D4: .4byte 0x00007fff + thumb_func_end sub_80C66BC + + thumb_func_start sub_80C66D8 +sub_80C66D8: @ 80C66D8 + push {r4,r5,lr} + ldr r1, _080C6710 @ =gUnknown_3005350 + ldr r0, [r1] + movs r2, 0 + strh r2, [r0] + ldr r0, [r1] + strh r2, [r0, 0x2] + movs r4, 0 + adds r5, r1, 0 +_080C66EA: + ldr r0, [r5] + lsls r2, r4, 1 + adds r2, r0 + adds r0, r4, 0x2 + lsls r3, r0, 1 + lsls r1, r0, 11 + lsls r0, 6 + orrs r1, r0 + orrs r1, r3 + strh r1, [r2, 0x4] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xD + bls _080C66EA + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080C6710: .4byte gUnknown_3005350 + thumb_func_end sub_80C66D8 + + thumb_func_start sub_80C6714 +sub_80C6714: @ 80C6714 + push {r4,lr} + ldr r2, _080C6744 @ =gUnknown_3005350 + ldr r1, [r2] + movs r0, 0 + strh r0, [r1] + movs r3, 0 + adds r4, r2, 0 +_080C6722: + ldr r0, [r4] + lsls r2, r3, 1 + adds r2, r0 + lsls r0, r3, 10 + lsls r1, r3, 5 + orrs r0, r1 + orrs r0, r3 + strh r0, [r2, 0x2] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1F + bls _080C6722 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C6744: .4byte gUnknown_3005350 + thumb_func_end sub_80C6714 + + thumb_func_start sub_80C6748 +sub_80C6748: @ 80C6748 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + movs r1, 0xDF + mov r9, r1 + cmp r0, 0 + bne _080C6760 + movs r2, 0xFF + mov r9, r2 +_080C6760: + movs r6, 0 + ldr r3, _080C67E4 @ =gUnknown_3005350 + mov r12, r3 + mov r0, r9 + lsls r4, r0, 1 + ldr r5, _080C67E8 @ =gUnknown_3005338 + cmp r6, r9 + bcs _080C6784 + movs r2, 0 +_080C6772: + ldr r0, [r3] + lsls r1, r6, 1 + adds r1, r0 + strh r2, [r1] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, r9 + bcc _080C6772 +_080C6784: + mov r1, r12 + ldr r0, [r1] + adds r0, r4, r0 + ldr r2, _080C67EC @ =0x00003def + adds r1, r2, 0 + strh r1, [r0] + movs r3, 0 + ldrb r5, [r5] + cmp r3, r5 + bcs _080C6888 +_080C6798: + ldr r2, _080C67F0 @ =gUnknown_3005334 + ldr r0, _080C67F4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r3 + ldr r0, _080C67F8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + ldr r1, [r2] + adds r1, r0 + ldr r0, _080C67FC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r6, 0 + ldr r0, _080C6800 @ =gUnknown_3005340 + adds r2, r0, 0 + adds r3, 0x1 + mov r10, r3 + ldrb r3, [r2] + cmp r6, r3 + bcs _080C687A + ldr r0, _080C6804 @ =gUnknown_3005354 + mov r8, r0 +_080C67C8: + ldrh r0, [r4] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6808 + mov r1, r8 + ldrh r0, [r1] + strh r0, [r4] + adds r6, 0x1 + adds r7, r4, 0x2 + b _080C686E + .align 2, 0 +_080C67E4: .4byte gUnknown_3005350 +_080C67E8: .4byte gUnknown_3005338 +_080C67EC: .4byte 0x00003def +_080C67F0: .4byte gUnknown_3005334 +_080C67F4: .4byte gUnknown_3005344 +_080C67F8: .4byte gUnknown_300534C +_080C67FC: .4byte gUnknown_3005330 +_080C6800: .4byte gUnknown_3005340 +_080C6804: .4byte gUnknown_3005354 +_080C6808: + adds r0, r4, 0 + bl sub_80C6B68 + lsls r0, 16 + lsrs r5, r0, 16 + movs r3, 0x1 + adds r6, 0x1 + adds r7, r4, 0x2 + cmp r3, r9 + bcs _080C6864 + ldr r0, _080C6834 @ =gUnknown_3005350 + ldr r2, [r0] + ldrh r1, [r2, 0x2] + mov r12, r0 + cmp r1, 0 + bne _080C6838 + strh r5, [r2, 0x2] + mov r2, r8 + ldrh r0, [r2] + adds r0, 0x1 + b _080C6862 + .align 2, 0 +_080C6834: .4byte gUnknown_3005350 +_080C6838: + mov r2, r12 + ldr r1, [r2] + lsls r0, r3, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _080C685C + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r9 + bcs _080C6864 + lsls r0, r3, 1 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, 0 + bne _080C6838 + strh r5, [r1] +_080C685C: + mov r1, r8 + ldrh r0, [r1] + adds r0, r3 +_080C6862: + strh r0, [r4] +_080C6864: + ldr r2, _080C6898 @ =gUnknown_3005340 + cmp r3, r9 + bne _080C686E + mov r3, r9 + strh r3, [r4] +_080C686E: + lsls r0, r6, 24 + lsrs r6, r0, 24 + adds r4, r7, 0 + ldrb r0, [r2] + cmp r6, r0 + bcc _080C67C8 +_080C687A: + mov r1, r10 + lsls r0, r1, 24 + lsrs r3, r0, 24 + ldr r0, _080C689C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r3, r0 + bcc _080C6798 +_080C6888: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6898: .4byte gUnknown_3005340 +_080C689C: .4byte gUnknown_3005338 + thumb_func_end sub_80C6748 + + thumb_func_start sub_80C68A0 +sub_80C68A0: @ 80C68A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r2, 0 + ldr r0, _080C68F4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6944 + ldr r0, _080C68F8 @ =gUnknown_3005334 + mov r8, r0 +_080C68B4: + ldr r0, _080C68FC @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6900 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6904 @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r6, 0 + ldr r0, _080C6908 @ =gUnknown_3005340 + adds r3, r0, 0 + adds r7, r2, 0x1 + ldrb r0, [r3] + cmp r6, r0 + bcs _080C6938 + ldr r5, _080C690C @ =gUnknown_3005354 +_080C68E0: + ldrh r0, [r4] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6910 + ldrh r0, [r5] + strh r0, [r4] + b _080C692A + .align 2, 0 +_080C68F4: .4byte gUnknown_3005338 +_080C68F8: .4byte gUnknown_3005334 +_080C68FC: .4byte gUnknown_3005344 +_080C6900: .4byte gUnknown_300534C +_080C6904: .4byte gUnknown_3005330 +_080C6908: .4byte gUnknown_3005340 +_080C690C: .4byte gUnknown_3005354 +_080C6910: + adds r0, r4, 0 + bl sub_80C600C + lsls r0, 16 + cmp r0, 0 + bne _080C6922 + ldrh r0, [r5] + adds r0, 0x1 + b _080C6926 +_080C6922: + ldrh r0, [r5] + adds r0, 0x2 +_080C6926: + strh r0, [r4] + ldr r3, _080C6950 @ =gUnknown_3005340 +_080C692A: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + adds r4, 0x2 + ldrb r0, [r3] + cmp r6, r0 + bcc _080C68E0 +_080C6938: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6954 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C68B4 +_080C6944: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6950: .4byte gUnknown_3005340 +_080C6954: .4byte gUnknown_3005338 + thumb_func_end sub_80C68A0 + + thumb_func_start sub_80C6958 +sub_80C6958: @ 80C6958 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C69AC @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C69F4 + ldr r0, _080C69B0 @ =gUnknown_3005334 + mov r8, r0 +_080C696E: + ldr r0, _080C69B4 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C69B8 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C69BC @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C69C0 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C69E8 + ldr r6, _080C69C4 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C699E: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C69C8 + ldrh r0, [r6] + strh r0, [r4] + b _080C69D8 + .align 2, 0 +_080C69AC: .4byte gUnknown_3005338 +_080C69B0: .4byte gUnknown_3005334 +_080C69B4: .4byte gUnknown_3005344 +_080C69B8: .4byte gUnknown_300534C +_080C69BC: .4byte gUnknown_3005330 +_080C69C0: .4byte gUnknown_3005340 +_080C69C4: .4byte gUnknown_3005354 +_080C69C8: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6CAC + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C69D8: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6A00 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C699E +_080C69E8: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6A04 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C696E +_080C69F4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6A00: .4byte gUnknown_3005340 +_080C6A04: .4byte gUnknown_3005338 + thumb_func_end sub_80C6958 + + thumb_func_start sub_80C6A08 +sub_80C6A08: @ 80C6A08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C6A5C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6AA4 + ldr r0, _080C6A60 @ =gUnknown_3005334 + mov r8, r0 +_080C6A1E: + ldr r0, _080C6A64 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6A68 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6A6C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C6A70 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C6A98 + ldr r6, _080C6A74 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C6A4E: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C6A78 + ldrh r0, [r6] + strh r0, [r4] + b _080C6A88 + .align 2, 0 +_080C6A5C: .4byte gUnknown_3005338 +_080C6A60: .4byte gUnknown_3005334 +_080C6A64: .4byte gUnknown_3005344 +_080C6A68: .4byte gUnknown_300534C +_080C6A6C: .4byte gUnknown_3005330 +_080C6A70: .4byte gUnknown_3005340 +_080C6A74: .4byte gUnknown_3005354 +_080C6A78: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6CE0 + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C6A88: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6AB0 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C6A4E +_080C6A98: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6AB4 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C6A1E +_080C6AA4: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6AB0: .4byte gUnknown_3005340 +_080C6AB4: .4byte gUnknown_3005338 + thumb_func_end sub_80C6A08 + + thumb_func_start sub_80C6AB8 +sub_80C6AB8: @ 80C6AB8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r2, 0 + ldr r0, _080C6B0C @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcs _080C6B54 + ldr r0, _080C6B10 @ =gUnknown_3005334 + mov r8, r0 +_080C6ACE: + ldr r0, _080C6B14 @ =gUnknown_3005344 + ldrb r1, [r0] + adds r1, r2 + ldr r0, _080C6B18 @ =gUnknown_300534C + ldrb r0, [r0] + muls r0, r1 + lsls r0, 1 + mov r3, r8 + ldr r1, [r3] + adds r1, r0 + ldr r0, _080C6B1C @ =gUnknown_3005330 + ldrb r0, [r0] + lsls r0, 1 + adds r4, r1, r0 + movs r5, 0 + ldr r0, _080C6B20 @ =gUnknown_3005340 + adds r7, r2, 0x1 + ldrb r0, [r0] + cmp r5, r0 + bcs _080C6B48 + ldr r6, _080C6B24 @ =gUnknown_3005354 + movs r0, 0x80 + lsls r0, 8 + adds r2, r0, 0 +_080C6AFE: + ldrh r0, [r4] + ands r0, r2 + cmp r0, 0 + beq _080C6B28 + ldrh r0, [r6] + strh r0, [r4] + b _080C6B38 + .align 2, 0 +_080C6B0C: .4byte gUnknown_3005338 +_080C6B10: .4byte gUnknown_3005334 +_080C6B14: .4byte gUnknown_3005344 +_080C6B18: .4byte gUnknown_300534C +_080C6B1C: .4byte gUnknown_3005330 +_080C6B20: .4byte gUnknown_3005340 +_080C6B24: .4byte gUnknown_3005354 +_080C6B28: + adds r0, r4, 0 + str r2, [sp] + bl sub_80C6BDC + ldrh r1, [r6] + adds r0, r1 + strh r0, [r4] + ldr r2, [sp] +_080C6B38: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r4, 0x2 + ldr r0, _080C6B60 @ =gUnknown_3005340 + ldrb r0, [r0] + cmp r5, r0 + bcc _080C6AFE +_080C6B48: + lsls r0, r7, 24 + lsrs r2, r0, 24 + ldr r0, _080C6B64 @ =gUnknown_3005338 + ldrb r0, [r0] + cmp r2, r0 + bcc _080C6ACE +_080C6B54: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6B60: .4byte gUnknown_3005340 +_080C6B64: .4byte gUnknown_3005338 + thumb_func_end sub_80C6AB8 + + thumb_func_start sub_80C6B68 +sub_80C6B68: @ 80C6B68 + push {r4,lr} + ldrh r0, [r0] + movs r1, 0x1F + movs r4, 0x1F + ands r4, r0 + lsls r0, 16 + lsrs r3, r0, 21 + ands r3, r1 + lsrs r2, r0, 26 + ands r2, r1 + movs r1, 0x3 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6B8C + movs r0, 0x1C + ands r0, r4 + adds r4, r0, 0x4 +_080C6B8C: + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6B9A + movs r0, 0x1C + ands r0, r3 + adds r3, r0, 0x4 +_080C6B9A: + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080C6BA8 + movs r0, 0x1C + ands r0, r2 + adds r2, r0, 0x4 +_080C6BA8: + cmp r4, 0x5 + bhi _080C6BAE + movs r4, 0x6 +_080C6BAE: + cmp r4, 0x1E + bls _080C6BB4 + movs r4, 0x1E +_080C6BB4: + cmp r3, 0x5 + bhi _080C6BBA + movs r3, 0x6 +_080C6BBA: + cmp r3, 0x1E + bls _080C6BC0 + movs r3, 0x1E +_080C6BC0: + cmp r2, 0x5 + bhi _080C6BC6 + movs r2, 0x6 +_080C6BC6: + cmp r2, 0x1E + bls _080C6BCC + movs r2, 0x1E +_080C6BCC: + lsls r0, r2, 10 + lsls r1, r3, 5 + orrs r0, r1 + orrs r4, r0 + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80C6B68 + + thumb_func_start sub_80C6BDC +sub_80C6BDC: @ 80C6BDC + push {lr} + ldrh r0, [r0] + movs r1, 0x1F + movs r3, 0x1F + ands r3, r0 + lsls r0, 16 + lsrs r2, r0, 21 + ands r2, r1 + lsrs r0, 26 + ands r0, r1 + cmp r3, 0xB + bhi _080C6C00 + cmp r2, 0xA + bhi _080C6C00 + cmp r0, 0xA + bhi _080C6C00 + movs r0, 0x1 + b _080C6CA6 +_080C6C00: + cmp r3, 0x13 + bls _080C6C24 + cmp r2, 0x13 + bls _080C6C0C + cmp r0, 0x13 + bhi _080C6C30 +_080C6C0C: + cmp r3, 0x13 + bls _080C6C24 + cmp r2, 0x13 + bls _080C6C1A + cmp r0, 0xE + bhi _080C6C30 + b _080C6C68 +_080C6C1A: + cmp r0, 0x13 + bls _080C6C24 + cmp r2, 0xE + bhi _080C6C30 + b _080C6C44 +_080C6C24: + cmp r2, 0x13 + bls _080C6C34 + cmp r0, 0x13 + bls _080C6C34 + cmp r3, 0xE + bls _080C6C8C +_080C6C30: + movs r0, 0x2 + b _080C6CA6 +_080C6C34: + cmp r3, 0x13 + bls _080C6C58 + cmp r2, 0xB + bls _080C6C4C + cmp r0, 0xB + bls _080C6C48 + cmp r2, r0 + bcs _080C6C68 +_080C6C44: + movs r0, 0x8 + b _080C6CA6 +_080C6C48: + movs r0, 0xA + b _080C6CA6 +_080C6C4C: + cmp r0, 0xB + bls _080C6C54 + movs r0, 0xD + b _080C6CA6 +_080C6C54: + movs r0, 0x4 + b _080C6CA6 +_080C6C58: + cmp r2, 0x13 + bls _080C6C7C + cmp r3, 0xB + bls _080C6C70 + cmp r0, 0xB + bls _080C6C6C + cmp r3, r0 + bcc _080C6C8C +_080C6C68: + movs r0, 0x7 + b _080C6CA6 +_080C6C6C: + movs r0, 0xB + b _080C6CA6 +_080C6C70: + cmp r0, 0xB + bls _080C6C78 + movs r0, 0xE + b _080C6CA6 +_080C6C78: + movs r0, 0x5 + b _080C6CA6 +_080C6C7C: + cmp r0, 0x13 + bls _080C6CA4 + cmp r3, 0xB + bls _080C6C90 + cmp r2, 0xB + bls _080C6C98 + cmp r3, r2 + bcs _080C6C44 +_080C6C8C: + movs r0, 0x9 + b _080C6CA6 +_080C6C90: + cmp r2, 0xB + bls _080C6C98 + movs r0, 0xC + b _080C6CA6 +_080C6C98: + cmp r0, 0xB + bls _080C6CA0 + movs r0, 0xF + b _080C6CA6 +_080C6CA0: + movs r0, 0x6 + b _080C6CA6 +_080C6CA4: + movs r0, 0x3 +_080C6CA6: + pop {r1} + bx r1 + thumb_func_end sub_80C6BDC + + thumb_func_start sub_80C6CAC +sub_80C6CAC: @ 80C6CAC + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + movs r1, 0x1E + ands r0, r1 + lsls r0, 16 + cmp r0, 0 + beq _080C6CD8 + lsrs r0, 17 + b _080C6CDA +_080C6CD8: + movs r0, 0x1 +_080C6CDA: + pop {r1} + bx r1 + thumb_func_end sub_80C6CAC + + thumb_func_start sub_80C6CE0 +sub_80C6CE0: @ 80C6CE0 + push {lr} + ldrh r1, [r0] + movs r3, 0x1F + movs r0, 0x1F + ands r0, r1 + lsls r1, 16 + lsrs r2, r1, 21 + ands r2, r3 + lsrs r1, 26 + ands r1, r3 + adds r0, r2 + adds r0, r1 + movs r1, 0x3 + bl __divsi3 + lsls r0, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80C6CE0 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s deleted file mode 100644 index 1f63bde6c..000000000 --- a/asm/region_map.s +++ /dev/null @@ -1,3486 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80C52D0 -sub_80C52D0: @ 80C52D0 - push {lr} - ldr r2, _080C5318 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C531C @ =gUnknown_3005348 - ldrb r1, [r0, 0x1F] - strb r1, [r2] - ldr r2, _080C5320 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C5324 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C5328 @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C532C @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C5330 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C5334 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrb r0, [r0] - subs r0, 0x2 - cmp r0, 0x22 - bls _080C530C - b _080C5458 -_080C530C: - lsls r0, 2 - ldr r1, _080C5338 @ =_080C533C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5318: .4byte gUnknown_3005334 -_080C531C: .4byte gUnknown_3005348 -_080C5320: .4byte gUnknown_3005330 -_080C5324: .4byte gUnknown_3005344 -_080C5328: .4byte gUnknown_3005340 -_080C532C: .4byte gUnknown_3005338 -_080C5330: .4byte gUnknown_300534C -_080C5334: .4byte gUnknown_300533C -_080C5338: .4byte _080C533C - .align 2, 0 -_080C533C: - .4byte _080C53C8 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5428 - .4byte _080C5458 - .4byte _080C53CE - .4byte _080C53D4 - .4byte _080C53E8 - .4byte _080C53FA - .4byte _080C5458 - .4byte _080C5410 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5416 - .4byte _080C53F4 - .4byte _080C541C - .4byte _080C5422 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5434 -_080C53C8: - bl sub_80C55D4 - b _080C5458 -_080C53CE: - bl sub_80C568C - b _080C5458 -_080C53D4: - bl sub_80C5884 - ldr r0, _080C53E4 @ =gUnknown_3005348 - ldrb r0, [r0] - bl sub_80C5748 - b _080C5458 - .align 2, 0 -_080C53E4: .4byte gUnknown_3005348 -_080C53E8: - bl sub_80C5884 - bl sub_80C59D4 - bl sub_80C57EC -_080C53F4: - bl sub_80C59D4 - b _080C5458 -_080C53FA: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - b _080C5458 -_080C5410: - bl sub_80C5A6C - b _080C5458 -_080C5416: - bl sub_80C5884 - b _080C5458 -_080C541C: - bl sub_80C5B9C - b _080C5458 -_080C5422: - bl sub_80C5C44 - b _080C5458 -_080C5428: - bl sub_80C55F4 - movs r0, 0x3 - bl sub_80C545C - b _080C5458 -_080C5434: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - bl sub_80C568C - bl sub_80C568C - movs r0, 0x2 - bl sub_80C545C - movs r0, 0x4 - bl sub_80C5514 -_080C5458: - pop {r0} - bx r0 - thumb_func_end sub_80C52D0 - - thumb_func_start sub_80C545C -sub_80C545C: @ 80C545C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0 - ldr r0, _080C54FC @ =gUnknown_3005338 - mov r8, r0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C54EE - ldr r1, _080C5500 @ =gUnknown_3005340 - mov r12, r1 - ldr r3, _080C5504 @ =gUnknown_300534C - mov r10, r3 - ldr r0, _080C5508 @ =gUnknown_3005330 - mov r9, r0 -_080C5482: - ldr r1, _080C550C @ =gUnknown_3005344 - ldrb r0, [r1] - adds r0, r2 - mov r3, r10 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C5510 @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r4, 0 - adds r5, r2, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r4, r0 - bcs _080C54E2 - movs r6, 0x80 - lsls r6, 8 -_080C54AE: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080C54D2 - movs r0, 0x1F - ands r0, r1 - adds r0, r7 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080C54C8 - movs r2, 0x1F -_080C54C8: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C54D2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, 0x2 - mov r1, r12 - ldrb r1, [r1] - cmp r4, r1 - bcc _080C54AE -_080C54E2: - lsls r0, r5, 24 - lsrs r2, r0, 24 - mov r3, r8 - ldrb r3, [r3] - cmp r2, r3 - bcc _080C5482 -_080C54EE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C54FC: .4byte gUnknown_3005338 -_080C5500: .4byte gUnknown_3005340 -_080C5504: .4byte gUnknown_300534C -_080C5508: .4byte gUnknown_3005330 -_080C550C: .4byte gUnknown_3005344 -_080C5510: .4byte gUnknown_3005334 - thumb_func_end sub_80C545C - - thumb_func_start sub_80C5514 -sub_80C5514: @ 80C5514 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C55BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C55AC - ldr r1, _080C55C0 @ =gUnknown_3005340 - mov r10, r1 -_080C5532: - ldr r3, _080C55C4 @ =gUnknown_3005344 - ldrb r0, [r3] - adds r0, r2 - ldr r3, _080C55C8 @ =gUnknown_300534C - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C55CC @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - ldr r3, _080C55D0 @ =gUnknown_3005330 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r5, 0 - adds r7, r2, 0x1 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C55A0 - movs r1, 0x80 - lsls r1, 8 - mov r9, r1 - movs r0, 0x1F - mov r12, r0 - mov r1, r8 - subs r6, r0, r1 -_080C5568: - ldrh r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080C5590 - movs r4, 0x1F - mov r2, r12 - ands r2, r1 - cmp r2, r6 - ble _080C5586 - mov r1, r8 - lsrs r0, r1, 1 - subs r0, r4, r0 - lsls r0, 24 - lsrs r2, r0, 24 -_080C5586: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C5590: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, 0x2 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C5568 -_080C55A0: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r1, _080C55BC @ =gUnknown_3005338 - ldrb r1, [r1] - cmp r2, r1 - bcc _080C5532 -_080C55AC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C55BC: .4byte gUnknown_3005338 -_080C55C0: .4byte gUnknown_3005340 -_080C55C4: .4byte gUnknown_3005344 -_080C55C8: .4byte gUnknown_300534C -_080C55CC: .4byte gUnknown_3005334 -_080C55D0: .4byte gUnknown_3005330 - thumb_func_end sub_80C5514 - - thumb_func_start sub_80C55D4 -sub_80C55D4: @ 80C55D4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080C55F0 @ =0x00000c7f -_080C55DA: - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_80C5CF8 - adds r4, 0x1 - cmp r4, r5 - bls _080C55DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C55F0: .4byte 0x00000c7f - thumb_func_end sub_80C55D4 - - thumb_func_start sub_80C55F4 -sub_80C55F4: @ 80C55F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5666 - ldr r0, _080C5678 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C567C @ =gUnknown_3005340 -_080C560C: - ldr r0, _080C5680 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5684 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5688 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C565A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5638: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C564C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C5ECC - strh r0, [r4] - ldr r3, [sp] -_080C564C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5638 -_080C565A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C560C -_080C5666: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5674: .4byte gUnknown_3005338 -_080C5678: .4byte gUnknown_3005334 -_080C567C: .4byte gUnknown_3005340 -_080C5680: .4byte gUnknown_3005344 -_080C5684: .4byte gUnknown_300534C -_080C5688: .4byte gUnknown_3005330 - thumb_func_end sub_80C55F4 - - thumb_func_start sub_80C568C -sub_80C568C: @ 80C568C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5722 - ldr r0, _080C5734 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5738 @ =gUnknown_300534C -_080C56A4: - ldr r0, _080C573C @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r3] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5740 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r3] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, r2, 0x1 - cmp r5, r0 - bge _080C5716 - ldr r6, _080C5738 @ =gUnknown_300534C -_080C56DA: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5700 - ldrb r2, [r6] - lsls r2, 1 - adds r2, r4, r2 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C61BC - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r3, [sp, 0x4] -_080C5700: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C56DA -_080C5716: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C56A4 -_080C5722: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5730: .4byte gUnknown_3005340 -_080C5734: .4byte gUnknown_3005334 -_080C5738: .4byte gUnknown_300534C -_080C573C: .4byte gUnknown_3005344 -_080C5740: .4byte gUnknown_3005330 -_080C5744: .4byte gUnknown_3005338 - thumb_func_end sub_80C568C - - thumb_func_start sub_80C5748 -sub_80C5748: @ 80C5748 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C57C4 - ldr r0, _080C57D8 @ =gUnknown_3005334 - mov r9, r0 - ldr r3, _080C57DC @ =gUnknown_3005340 -_080C5768: - ldr r0, _080C57E0 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C57E4 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r9 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C57E8 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C57B8 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5794: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C57AA - adds r0, r4, 0 - mov r1, r8 - str r3, [sp] - bl sub_80C5F00 - strh r0, [r4] - ldr r3, [sp] -_080C57AA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5794 -_080C57B8: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5768 -_080C57C4: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C57D4: .4byte gUnknown_3005338 -_080C57D8: .4byte gUnknown_3005334 -_080C57DC: .4byte gUnknown_3005340 -_080C57E0: .4byte gUnknown_3005344 -_080C57E4: .4byte gUnknown_300534C -_080C57E8: .4byte gUnknown_3005330 - thumb_func_end sub_80C5748 - - thumb_func_start sub_80C57EC -sub_80C57EC: @ 80C57EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C585E - ldr r0, _080C5870 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5874 @ =gUnknown_3005340 -_080C5804: - ldr r0, _080C5878 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C587C @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5880 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5852 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5830: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5844 - adds r0, r4, 0 - str r3, [sp] - bl sub_80C600C - strh r0, [r4] - ldr r3, [sp] -_080C5844: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5830 -_080C5852: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5804 -_080C585E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C586C: .4byte gUnknown_3005338 -_080C5870: .4byte gUnknown_3005334 -_080C5874: .4byte gUnknown_3005340 -_080C5878: .4byte gUnknown_3005344 -_080C587C: .4byte gUnknown_300534C -_080C5880: .4byte gUnknown_3005330 - thumb_func_end sub_80C57EC - - thumb_func_start sub_80C5884 -sub_80C5884: @ 80C5884 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r7, 0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcs _080C5910 - ldr r0, _080C59C0 @ =gUnknown_3005334 - mov r8, r0 -_080C589A: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r7 - ldr r0, _080C59C8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r2, r8 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r5, r1, r0 - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - movs r6, 0x1 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, 0x1 - cmp r6, r0 - bge _080C58FA -_080C58D2: - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r6, r0 - blt _080C58D2 -_080C58FA: - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r7, 24 - lsrs r7, r0, 24 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcc _080C589A -_080C5910: - movs r6, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcs _080C59B0 - ldr r3, _080C59C0 @ =gUnknown_3005334 - mov r9, r3 - ldr r0, _080C59C8 @ =gUnknown_300534C - mov r8, r0 -_080C5922: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r0, [r0] - mov r2, r8 - ldrb r1, [r2] - muls r0, r1 - lsls r0, 1 - mov r3, r9 - ldr r2, [r3] - adds r2, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r6 - lsls r0, 1 - adds r5, r2, r0 - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - movs r7, 0x1 - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, 0x1 - cmp r7, r0 - bge _080C5994 - ldr r4, _080C59C8 @ =gUnknown_300534C -_080C5962: - ldrb r1, [r4] - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - ldrb r1, [r4] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r7, r0 - blt _080C5962 -_080C5994: - mov r2, r8 - ldrb r1, [r2] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r6, 24 - lsrs r6, r0, 24 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcc _080C5922 -_080C59B0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C59BC: .4byte gUnknown_3005338 -_080C59C0: .4byte gUnknown_3005334 -_080C59C4: .4byte gUnknown_3005344 -_080C59C8: .4byte gUnknown_300534C -_080C59CC: .4byte gUnknown_3005330 -_080C59D0: .4byte gUnknown_3005340 - thumb_func_end sub_80C5884 - - thumb_func_start sub_80C59D4 -sub_80C59D4: @ 80C59D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5A46 - ldr r0, _080C5A58 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5A5C @ =gUnknown_3005340 -_080C59EC: - ldr r0, _080C5A60 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5A64 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5A68 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5A3A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5A18: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5A2C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C606C - strh r0, [r4] - ldr r3, [sp] -_080C5A2C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5A18 -_080C5A3A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C59EC -_080C5A46: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5A54: .4byte gUnknown_3005338 -_080C5A58: .4byte gUnknown_3005334 -_080C5A5C: .4byte gUnknown_3005340 -_080C5A60: .4byte gUnknown_3005344 -_080C5A64: .4byte gUnknown_300534C -_080C5A68: .4byte gUnknown_3005330 - thumb_func_end sub_80C59D4 - - thumb_func_start sub_80C5A6C -sub_80C5A6C: @ 80C5A6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - adds r5, r0, 0 -_080C5A84: - movs r7, 0 -_080C5A86: - ldrh r0, [r4] - ands r0, r5 - cmp r0, 0 - bne _080C5A96 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5A96: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5A86 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5A84 - movs r7, 0 - ldr r1, _080C5B98 @ =gUnknown_3005334 - mov r10, r1 - mov r3, sp - movs r2, 0x80 - lsls r2, 8 - mov r9, r2 -_080C5ABA: - lsls r0, r7, 1 - mov r2, r10 - ldr r1, [r2] - adds r4, r1, r0 - ldrh r1, [r4] - strh r1, [r3] - mov r1, r9 - strh r1, [r4] - movs r6, 0x1 - adds r4, 0x80 - adds r5, r0, 0 -_080C5AD0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - ands r0, r2 - cmp r0, 0 - bne _080C5AF0 - adds r2, r4, 0 - adds r2, 0x80 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5AF0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x80 - cmp r6, 0x3E - bls _080C5AD0 - mov r0, r9 - strh r0, [r4] - mov r1, r10 - ldr r0, [r1] - adds r4, r0, r5 - ldrh r0, [r4] - strh r0, [r3] - mov r2, r9 - strh r2, [r4] - movs r6, 0x1 - adds r4, 0x80 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B18: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - adds r5, r4, 0 - adds r5, 0x80 - cmp r0, 0 - bne _080C5B38 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5B38: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r5, 0 - cmp r6, 0x3E - bls _080C5B18 - mov r2, r9 - strh r2, [r4] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3F - bls _080C5ABA - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B5E: - movs r7, 0 - adds r5, r6, 0x1 -_080C5B62: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _080C5B74 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5B74: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5B62 - lsls r0, r5, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5B5E - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5B98: .4byte gUnknown_3005334 - thumb_func_end sub_80C5A6C - - thumb_func_start sub_80C5B9C -sub_80C5B9C: @ 80C5B9C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5C1E - ldr r0, _080C5C30 @ =gUnknown_3005334 - mov r8, r0 -_080C5BB2: - ldr r0, _080C5C34 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5C38 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5C3C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5C12 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5BEA: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5C00 - mov r0, sp - adds r1, r4, 0 - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] -_080C5C00: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5BEA -_080C5C12: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5BB2 -_080C5C1E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5C2C: .4byte gUnknown_3005338 -_080C5C30: .4byte gUnknown_3005334 -_080C5C34: .4byte gUnknown_3005344 -_080C5C38: .4byte gUnknown_300534C -_080C5C3C: .4byte gUnknown_3005330 -_080C5C40: .4byte gUnknown_3005340 - thumb_func_end sub_80C5B9C - - thumb_func_start sub_80C5C44 -sub_80C5C44: @ 80C5C44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5CD2 - ldr r0, _080C5CE4 @ =gUnknown_3005334 - mov r8, r0 - ldr r7, _080C5CE8 @ =gUnknown_300534C -_080C5C5C: - ldr r0, _080C5CEC @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r7] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5CF0 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5CC6 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C5C96: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - bne _080C5CB0 - mov r0, sp - adds r1, r4, 0 - str r2, [sp, 0x4] - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r2, [sp, 0x4] -_080C5CB0: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5C96 -_080C5CC6: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5C5C -_080C5CD2: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5CE0: .4byte gUnknown_3005340 -_080C5CE4: .4byte gUnknown_3005334 -_080C5CE8: .4byte gUnknown_300534C -_080C5CEC: .4byte gUnknown_3005344 -_080C5CF0: .4byte gUnknown_3005330 -_080C5CF4: .4byte gUnknown_3005338 - thumb_func_end sub_80C5C44 - - thumb_func_start sub_80C5CF8 -sub_80C5CF8: @ 80C5CF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - mov r2, sp - ldr r3, _080C5D64 @ =gUnknown_83F3024 - lsls r1, r0, 1 - add r1, r10 - adds r0, r1, r3 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r2, 0x1] - mov r5, sp - adds r0, r3, 0x2 - adds r1, r0 - ldrb r4, [r1] - lsls r2, r4, 24 - lsrs r1, r2, 27 - movs r0, 0x7 - ands r1, r0 - strh r1, [r5, 0x2] - lsrs r2, 25 - mov r9, r2 - movs r0, 0x3 - ands r2, r0 - mov r9, r2 - movs r5, 0x1 - ands r5, r4 - movs r4, 0x1 - mov r8, r4 - cmp r8, r1 - bcs _080C5DAA - mov r3, sp -_080C5D4A: - cmp r5, 0 - bne _080C5D68 - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - mov r4, r8 - subs r0, r4 - strb r0, [r1] - ldrb r0, [r3, 0x1] - add r0, r8 - b _080C5D7A - .align 2, 0 -_080C5D64: .4byte gUnknown_83F3024 -_080C5D68: - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r3, 0x1] - subs r0, 0x1 -_080C5D7A: - strb r0, [r1, 0x1] - add r2, sp - ldrb r0, [r2] - cmp r0, 0x3F - bhi _080C5D8A - ldrb r0, [r2, 0x1] - cmp r0, 0x3F - bls _080C5D92 -_080C5D8A: - mov r0, r8 - subs r0, 0x1 - strh r0, [r3, 0x2] - b _080C5DAA -_080C5D92: - ldrh r0, [r3, 0x2] - mov r1, r8 - subs r0, r1 - strh r0, [r2, 0x2] - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrh r0, [r3, 0x2] - cmp r8, r0 - bcc _080C5D4A -_080C5DAA: - movs r2, 0 - mov r8, r2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcc _080C5DB8 - b _080C5EBA -_080C5DB8: - movs r3, 0x1F -_080C5DBA: - ldr r1, _080C5E18 @ =gUnknown_3005334 - mov r4, r8 - lsls r0, r4, 2 - mov r2, sp - adds r6, r2, r0 - ldrb r0, [r6, 0x1] - lsls r0, 7 - ldr r1, [r1] - adds r1, r0 - ldrb r0, [r6] - lsls r0, 1 - adds r2, r1, r0 - ldrh r1, [r2] - movs r4, 0x80 - lsls r4, 8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5EA6 - movs r7, 0x1F - ands r7, r1 - lsls r0, r1, 16 - lsrs r5, r0, 21 - ands r5, r3 - lsrs r4, r0, 26 - ands r4, r3 - mov r0, r9 - cmp r0, 0 - blt _080C5E9C - cmp r0, 0x1 - ble _080C5E1C - cmp r0, 0x3 - bgt _080C5E9C - ldrh r0, [r6, 0x2] - adds r1, r7, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r1, r5, r0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r7, 0x1F - bls _080C5E90 - movs r7, 0x1F - b _080C5E90 - .align 2, 0 -_080C5E18: .4byte gUnknown_3005334 -_080C5E1C: - mov r1, r10 - lsls r0, r1, 1 - add r0, r10 - ldr r1, _080C5E50 @ =gUnknown_83F3024 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsrs r0, 3 - movs r1, 0x7 - ands r0, r1 - movs r1, 0x3 - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - cmp r0, 0x1 - beq _080C5E6C - cmp r0, 0x1 - bgt _080C5E54 - cmp r0, 0 - beq _080C5E5A - b _080C5E9C - .align 2, 0 -_080C5E50: .4byte gUnknown_83F3024 -_080C5E54: - cmp r0, 0x2 - beq _080C5E7E - b _080C5E9C -_080C5E5A: - ldrh r0, [r6, 0x2] - cmp r7, r0 - bcc _080C5E68 - subs r0, r7, r0 - lsls r0, 16 - lsrs r7, r0, 16 - b _080C5E9C -_080C5E68: - movs r7, 0 - b _080C5E9C -_080C5E6C: - ldrh r0, [r6, 0x2] - cmp r5, r0 - bcc _080C5E7A - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - b _080C5E9C -_080C5E7A: - movs r5, 0 - b _080C5E9C -_080C5E7E: - ldrh r0, [r6, 0x2] - cmp r4, r0 - bcc _080C5E8C - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - b _080C5E9C -_080C5E8C: - movs r4, 0 - b _080C5E9C -_080C5E90: - cmp r5, 0x1F - bls _080C5E96 - movs r5, 0x1F -_080C5E96: - cmp r4, 0x1F - bls _080C5E9C - movs r4, 0x1F -_080C5E9C: - lsls r0, r4, 10 - lsls r1, r5, 5 - orrs r0, r1 - orrs r7, r0 - strh r7, [r2] -_080C5EA6: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcs _080C5EBA - b _080C5DBA -_080C5EBA: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C5CF8 - - thumb_func_start sub_80C5ECC -sub_80C5ECC: @ 80C5ECC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 10 - lsls r2, r1, 5 - orrs r0, r2 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C5ECC - - thumb_func_start sub_80C5F00 -sub_80C5F00: @ 80C5F00 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C5F30 - cmp r3, 0x10 - bhi _080C5F30 - cmp r0, 0x10 - bhi _080C5F30 - adds r0, r4, 0 - bl sub_80C5F3C - lsls r0, 16 - lsrs r0, 16 - b _080C5F32 -_080C5F30: - ldr r0, _080C5F38 @ =0x00007fff -_080C5F32: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C5F38: .4byte 0x00007fff - thumb_func_end sub_80C5F00 - - thumb_func_start sub_80C5F3C -sub_80C5F3C: @ 80C5F3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - mov r8, r0 - movs r6, 0 - movs r7, 0 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _080C5FF4 - lsls r0, 2 - ldr r1, _080C5F80 @ =_080C5F84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5F80: .4byte _080C5F84 - .align 2, 0 -_080C5F84: - .4byte _080C5F9C - .4byte _080C5FAC - .4byte _080C5FBC - .4byte _080C5FCA - .4byte _080C5FD8 - .4byte _080C5FE6 -_080C5F9C: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r6, 0 - movs r1, 0 - mov r8, r1 - b _080C5FF4 -_080C5FAC: - movs r7, 0 - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r6, r8 - b _080C5FF4 -_080C5FBC: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r7 - b _080C5FF4 -_080C5FCA: - movs r7, 0 - movs r6, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - b _080C5FF2 -_080C5FD8: - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r6 - b _080C5FF4 -_080C5FE6: - movs r7, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 -_080C5FF2: - mov r8, r0 -_080C5FF4: - lsls r0, r7, 10 - lsls r1, r6, 5 - orrs r0, r1 - mov r1, r8 - orrs r1, r0 - lsls r0, r1, 16 - lsrs r0, 16 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C5F3C - - thumb_func_start sub_80C600C -sub_80C600C: @ 80C600C - push {lr} - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C6030 - cmp r3, 0x10 - bhi _080C6030 - cmp r0, 0x10 - bhi _080C6030 - movs r0, 0 - b _080C6032 -_080C6030: - ldr r0, _080C6038 @ =0x00007fff -_080C6032: - pop {r1} - bx r1 - .align 2, 0 -_080C6038: .4byte 0x00007fff - thumb_func_end sub_80C600C - - thumb_func_start sub_80C603C -sub_80C603C: @ 80C603C - push {r4,lr} - adds r4, r0, 0 - ldrh r3, [r4] - cmp r3, 0 - beq _080C6064 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _080C6056 - adds r0, r2, 0 - b _080C6066 -_080C6056: - ldrh r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C6064 - ldrh r0, [r4] - b _080C6066 -_080C6064: - movs r0, 0 -_080C6066: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C603C - - thumb_func_start sub_80C606C -sub_80C606C: @ 80C606C - push {r4,lr} - ldrh r1, [r0] - movs r0, 0x1F - movs r3, 0x1F - ands r3, r1 - lsls r1, 16 - lsrs r2, r1, 21 - lsrs r1, 26 - subs r3, r0, r3 - adds r4, r0, 0 - bics r4, r2 - adds r2, r4, 0 - bics r0, r1 - lsls r0, 10 - lsls r2, 5 - orrs r0, r2 - orrs r0, r3 - lsls r0, 16 - lsrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C606C - - thumb_func_start sub_80C6098 -sub_80C6098: @ 80C6098 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r1, 0 - ldrh r4, [r0] - ldrh r5, [r7] - lsls r6, r4, 16 - lsls r0, r5, 16 - mov r12, r0 - cmp r4, r5 - beq _080C610A - mov r2, sp - movs r3, 0x1F - movs r1, 0x1F - adds r0, r1, 0 - ands r0, r4 - strh r0, [r2] - lsrs r0, r6, 21 - ands r0, r3 - strh r0, [r2, 0x2] - lsrs r0, r6, 26 - ands r0, r3 - strh r0, [r2, 0x4] - mov r0, sp - ands r1, r5 - strh r1, [r0, 0x6] - mov r1, sp - mov r2, r12 - lsrs r0, r2, 21 - ands r0, r3 - strh r0, [r1, 0x8] - lsrs r0, r2, 26 - ands r0, r3 - strh r0, [r1, 0xA] - mov r0, sp - ldrh r0, [r0] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x4] - cmp r0, 0x19 - bhi _080C610A -_080C60F2: - mov r0, sp - ldrh r0, [r0, 0x6] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0x8] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0xA] - cmp r0, 0x19 - bls _080C610E -_080C610A: - ldrh r0, [r7] - b _080C61B4 -_080C610E: - movs r4, 0 - add r6, sp, 0xC - mov r7, sp - adds r7, 0x6 - adds r5, r6, 0 -_080C6118: - lsls r2, r4, 1 - mov r1, sp - adds r0, r1, r2 - adds r1, r7, r2 - ldrh r3, [r0] - ldrh r0, [r1] - cmp r3, r0 - bls _080C612E - adds r1, r5, r2 - subs r0, r3, r0 - b _080C6132 -_080C612E: - adds r1, r5, r2 - subs r0, r3 -_080C6132: - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6118 - adds r1, r6, 0 - ldrh r0, [r1, 0x2] - ldrh r3, [r1] - cmp r3, r0 - bcc _080C6158 - ldrh r2, [r1, 0x4] - cmp r3, r2 - bcc _080C6152 - adds r2, r3, 0 - b _080C616C -_080C6152: - cmp r0, r2 - bcs _080C615E - b _080C6166 -_080C6158: - ldrh r2, [r1, 0x4] - cmp r0, r2 - bcc _080C6162 -_080C615E: - ldrh r2, [r1, 0x2] - b _080C616C -_080C6162: - cmp r2, r3 - bcc _080C616A -_080C6166: - ldrh r2, [r1, 0x4] - b _080C616C -_080C616A: - ldrh r2, [r6] -_080C616C: - mov r0, sp - ldrh r1, [r0, 0x6] - lsrs r0, r2, 1 - movs r6, 0x1F - subs r6, r0 - adds r0, r1, 0 - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, sp - ldrh r0, [r0, 0x8] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - ldrh r0, [r0, 0xA] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - lsls r4, 5 - orrs r0, r4 - orrs r5, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r5, 0 -_080C61B4: - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C6098 - - thumb_func_start sub_80C61BC -sub_80C61BC: @ 80C61BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C61E4 - ldrh r0, [r2] - cmp r0, r1 - bne _080C61E4 - mov r1, r10 - ldrh r0, [r1] - b _080C62CC -_080C61E4: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6266 - cmp r1, r6 - bne _080C6266 - mov r3, r10 - ldrh r0, [r3] - b _080C62CC -_080C6266: - cmp r7, r6 - bls _080C626E - subs r0, r7, r6 - b _080C6270 -_080C626E: - subs r0, r6, r7 -_080C6270: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C627C - subs r0, r1, r6 - b _080C627E -_080C627C: - subs r0, r6, r1 -_080C627E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C6288 - adds r0, r2, 0 -_080C6288: - lsrs r0, 1 - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C62CC: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C61BC - - thumb_func_start sub_80C62DC -sub_80C62DC: @ 80C62DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C6304 - ldrh r0, [r2] - cmp r0, r1 - bne _080C6304 - mov r1, r10 - ldrh r0, [r1] - b _080C63EA -_080C6304: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6386 - cmp r1, r6 - bne _080C6386 - mov r3, r10 - ldrh r0, [r3] - b _080C63EA -_080C6386: - cmp r7, r6 - bls _080C638E - subs r0, r7, r6 - b _080C6390 -_080C638E: - subs r0, r6, r7 -_080C6390: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C639C - subs r0, r1, r6 - b _080C639E -_080C639C: - subs r0, r6, r1 -_080C639E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C63A8 - adds r0, r2, 0 -_080C63A8: - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C63EA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C62DC - - thumb_func_start sub_80C63FC -sub_80C63FC: @ 80C63FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldrb r1, [r0, 0x1D] - lsrs r5, r1, 3 - ldrb r1, [r0, 0x1E] - lsrs r1, 3 - str r1, [sp, 0x8] - ldr r1, [r0, 0x4] - str r1, [sp] - ldr r2, [r0, 0x10] - str r2, [sp, 0x4] - ldrh r0, [r0, 0x16] - cmp r0, 0x2 - bne _080C64AC - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcc _080C642A - b _080C6538 -_080C642A: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C649E - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C643E: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 6 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C644E: - lsls r0, r4, 3 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r0, [r2, 0x2] - lsls r0, 8 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0x6] - lsls r0, 8 - ldrh r1, [r2, 0x4] - orrs r0, r1 - strh r0, [r3, 0x2] - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0x8] - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r2, 0xE] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r3, 0x6] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C644E - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C643E -_080C649E: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C642A - b _080C6538 -_080C64AC: - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcs _080C6538 -_080C64B4: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C652C - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C64C8: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 5 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C64D8: - lsls r0, r4, 2 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r1, [r2, 0x2] - lsls r1, 4 - ldrh r0, [r2] - orrs r1, r0 - ldrh r0, [r2, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0x6] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3] - ldrh r1, [r2, 0xA] - lsls r1, 4 - ldrh r0, [r2, 0x8] - orrs r1, r0 - ldrh r0, [r2, 0xC] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0xE] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3, 0x2] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C64D8 - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C64C8 -_080C652C: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C64B4 -_080C6538: - 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_80C63FC - - thumb_func_start sub_80C6548 -sub_80C6548: @ 80C6548 - push {lr} - ldr r2, _080C6598 @ =gUnknown_3005354 - ldrb r1, [r0, 0x18] - lsls r1, 4 - strh r1, [r2] - ldr r3, _080C659C @ =gUnknown_3005350 - ldrh r2, [r2] - lsls r2, 1 - ldr r1, [r0, 0x8] - adds r1, r2 - str r1, [r3] - ldr r2, _080C65A0 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C65A4 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C65A8 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C65AC @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C65B0 @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C65B4 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C65B8 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrh r0, [r0, 0x14] - cmp r0, 0x5 - bhi _080C660E - lsls r0, 2 - ldr r1, _080C65BC @ =_080C65C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C6598: .4byte gUnknown_3005354 -_080C659C: .4byte gUnknown_3005350 -_080C65A0: .4byte gUnknown_3005334 -_080C65A4: .4byte gUnknown_3005330 -_080C65A8: .4byte gUnknown_3005344 -_080C65AC: .4byte gUnknown_3005340 -_080C65B0: .4byte gUnknown_3005338 -_080C65B4: .4byte gUnknown_300534C -_080C65B8: .4byte gUnknown_300533C -_080C65BC: .4byte _080C65C0 - .align 2, 0 -_080C65C0: - .4byte _080C65D8 - .4byte _080C65E0 - .4byte _080C65E8 - .4byte _080C65F2 - .4byte _080C65FC - .4byte _080C6606 -_080C65D8: - movs r0, 0 - bl sub_80C6748 - b _080C660E -_080C65E0: - movs r0, 0x1 - bl sub_80C6748 - b _080C660E -_080C65E8: - bl sub_80C6614 - bl sub_80C6AB8 - b _080C660E -_080C65F2: - bl sub_80C6714 - bl sub_80C6A08 - b _080C660E -_080C65FC: - bl sub_80C66D8 - bl sub_80C6958 - b _080C660E -_080C6606: - bl sub_80C66BC - bl sub_80C68A0 -_080C660E: - pop {r0} - bx r0 - thumb_func_end sub_80C6548 - - thumb_func_start sub_80C6614 -sub_80C6614: @ 80C6614 - ldr r2, _080C667C @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - ldr r0, [r2] - ldr r2, _080C6680 @ =0x000018c6 - adds r1, r2, 0 - strh r1, [r0, 0x2] - ldr r2, _080C6684 @ =0x000077bd - adds r1, r2, 0 - strh r1, [r0, 0x4] - ldr r2, _080C6688 @ =0x00002d6b - adds r1, r2, 0 - strh r1, [r0, 0x6] - ldr r2, _080C668C @ =0x000018dd - adds r1, r2, 0 - strh r1, [r0, 0x8] - ldr r2, _080C6690 @ =0x00001ba6 - adds r1, r2, 0 - strh r1, [r0, 0xA] - ldr r2, _080C6694 @ =0x000074c6 - adds r1, r2, 0 - strh r1, [r0, 0xC] - ldr r2, _080C6698 @ =0x00001bbd - adds r1, r2, 0 - strh r1, [r0, 0xE] - ldr r2, _080C669C @ =0x000074dd - adds r1, r2, 0 - strh r1, [r0, 0x10] - ldr r2, _080C66A0 @ =0x000077a6 - adds r1, r2, 0 - strh r1, [r0, 0x12] - ldr r2, _080C66A4 @ =0x0000197d - adds r1, r2, 0 - strh r1, [r0, 0x14] - ldr r2, _080C66A8 @ =0x00001bab - adds r1, r2, 0 - strh r1, [r0, 0x16] - ldr r2, _080C66AC @ =0x00007566 - adds r1, r2, 0 - strh r1, [r0, 0x18] - ldr r2, _080C66B0 @ =0x00002cdd - adds r1, r2, 0 - strh r1, [r0, 0x1A] - ldr r2, _080C66B4 @ =0x00002fa6 - adds r1, r2, 0 - strh r1, [r0, 0x1C] - ldr r2, _080C66B8 @ =0x000074cb - adds r1, r2, 0 - strh r1, [r0, 0x1E] - bx lr - .align 2, 0 -_080C667C: .4byte gUnknown_3005350 -_080C6680: .4byte 0x000018c6 -_080C6684: .4byte 0x000077bd -_080C6688: .4byte 0x00002d6b -_080C668C: .4byte 0x000018dd -_080C6690: .4byte 0x00001ba6 -_080C6694: .4byte 0x000074c6 -_080C6698: .4byte 0x00001bbd -_080C669C: .4byte 0x000074dd -_080C66A0: .4byte 0x000077a6 -_080C66A4: .4byte 0x0000197d -_080C66A8: .4byte 0x00001bab -_080C66AC: .4byte 0x00007566 -_080C66B0: .4byte 0x00002cdd -_080C66B4: .4byte 0x00002fa6 -_080C66B8: .4byte 0x000074cb - thumb_func_end sub_80C6614 - - thumb_func_start sub_80C66BC -sub_80C66BC: @ 80C66BC - ldr r2, _080C66D0 @ =gUnknown_3005350 - ldr r0, [r2] - movs r1, 0 - strh r1, [r0] - ldr r2, [r2] - strh r1, [r2, 0x2] - ldr r1, _080C66D4 @ =0x00007fff - adds r0, r1, 0 - strh r0, [r2, 0x4] - bx lr - .align 2, 0 -_080C66D0: .4byte gUnknown_3005350 -_080C66D4: .4byte 0x00007fff - thumb_func_end sub_80C66BC - - thumb_func_start sub_80C66D8 -sub_80C66D8: @ 80C66D8 - push {r4,r5,lr} - ldr r1, _080C6710 @ =gUnknown_3005350 - ldr r0, [r1] - movs r2, 0 - strh r2, [r0] - ldr r0, [r1] - strh r2, [r0, 0x2] - movs r4, 0 - adds r5, r1, 0 -_080C66EA: - ldr r0, [r5] - lsls r2, r4, 1 - adds r2, r0 - adds r0, r4, 0x2 - lsls r3, r0, 1 - lsls r1, r0, 11 - lsls r0, 6 - orrs r1, r0 - orrs r1, r3 - strh r1, [r2, 0x4] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xD - bls _080C66EA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C6710: .4byte gUnknown_3005350 - thumb_func_end sub_80C66D8 - - thumb_func_start sub_80C6714 -sub_80C6714: @ 80C6714 - push {r4,lr} - ldr r2, _080C6744 @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - movs r3, 0 - adds r4, r2, 0 -_080C6722: - ldr r0, [r4] - lsls r2, r3, 1 - adds r2, r0 - lsls r0, r3, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r0, r3 - strh r0, [r2, 0x2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _080C6722 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C6744: .4byte gUnknown_3005350 - thumb_func_end sub_80C6714 - - thumb_func_start sub_80C6748 -sub_80C6748: @ 80C6748 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - movs r1, 0xDF - mov r9, r1 - cmp r0, 0 - bne _080C6760 - movs r2, 0xFF - mov r9, r2 -_080C6760: - movs r6, 0 - ldr r3, _080C67E4 @ =gUnknown_3005350 - mov r12, r3 - mov r0, r9 - lsls r4, r0, 1 - ldr r5, _080C67E8 @ =gUnknown_3005338 - cmp r6, r9 - bcs _080C6784 - movs r2, 0 -_080C6772: - ldr r0, [r3] - lsls r1, r6, 1 - adds r1, r0 - strh r2, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r9 - bcc _080C6772 -_080C6784: - mov r1, r12 - ldr r0, [r1] - adds r0, r4, r0 - ldr r2, _080C67EC @ =0x00003def - adds r1, r2, 0 - strh r1, [r0] - movs r3, 0 - ldrb r5, [r5] - cmp r3, r5 - bcs _080C6888 -_080C6798: - ldr r2, _080C67F0 @ =gUnknown_3005334 - ldr r0, _080C67F4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r3 - ldr r0, _080C67F8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C67FC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6800 @ =gUnknown_3005340 - adds r2, r0, 0 - adds r3, 0x1 - mov r10, r3 - ldrb r3, [r2] - cmp r6, r3 - bcs _080C687A - ldr r0, _080C6804 @ =gUnknown_3005354 - mov r8, r0 -_080C67C8: - ldrh r0, [r4] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6808 - mov r1, r8 - ldrh r0, [r1] - strh r0, [r4] - adds r6, 0x1 - adds r7, r4, 0x2 - b _080C686E - .align 2, 0 -_080C67E4: .4byte gUnknown_3005350 -_080C67E8: .4byte gUnknown_3005338 -_080C67EC: .4byte 0x00003def -_080C67F0: .4byte gUnknown_3005334 -_080C67F4: .4byte gUnknown_3005344 -_080C67F8: .4byte gUnknown_300534C -_080C67FC: .4byte gUnknown_3005330 -_080C6800: .4byte gUnknown_3005340 -_080C6804: .4byte gUnknown_3005354 -_080C6808: - adds r0, r4, 0 - bl sub_80C6B68 - lsls r0, 16 - lsrs r5, r0, 16 - movs r3, 0x1 - adds r6, 0x1 - adds r7, r4, 0x2 - cmp r3, r9 - bcs _080C6864 - ldr r0, _080C6834 @ =gUnknown_3005350 - ldr r2, [r0] - ldrh r1, [r2, 0x2] - mov r12, r0 - cmp r1, 0 - bne _080C6838 - strh r5, [r2, 0x2] - mov r2, r8 - ldrh r0, [r2] - adds r0, 0x1 - b _080C6862 - .align 2, 0 -_080C6834: .4byte gUnknown_3005350 -_080C6838: - mov r2, r12 - ldr r1, [r2] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080C685C - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r9 - bcs _080C6864 - lsls r0, r3, 1 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - bne _080C6838 - strh r5, [r1] -_080C685C: - mov r1, r8 - ldrh r0, [r1] - adds r0, r3 -_080C6862: - strh r0, [r4] -_080C6864: - ldr r2, _080C6898 @ =gUnknown_3005340 - cmp r3, r9 - bne _080C686E - mov r3, r9 - strh r3, [r4] -_080C686E: - lsls r0, r6, 24 - lsrs r6, r0, 24 - adds r4, r7, 0 - ldrb r0, [r2] - cmp r6, r0 - bcc _080C67C8 -_080C687A: - mov r1, r10 - lsls r0, r1, 24 - lsrs r3, r0, 24 - ldr r0, _080C689C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r3, r0 - bcc _080C6798 -_080C6888: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6898: .4byte gUnknown_3005340 -_080C689C: .4byte gUnknown_3005338 - thumb_func_end sub_80C6748 - - thumb_func_start sub_80C68A0 -sub_80C68A0: @ 80C68A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r2, 0 - ldr r0, _080C68F4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6944 - ldr r0, _080C68F8 @ =gUnknown_3005334 - mov r8, r0 -_080C68B4: - ldr r0, _080C68FC @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6900 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6904 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6908 @ =gUnknown_3005340 - adds r3, r0, 0 - adds r7, r2, 0x1 - ldrb r0, [r3] - cmp r6, r0 - bcs _080C6938 - ldr r5, _080C690C @ =gUnknown_3005354 -_080C68E0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6910 - ldrh r0, [r5] - strh r0, [r4] - b _080C692A - .align 2, 0 -_080C68F4: .4byte gUnknown_3005338 -_080C68F8: .4byte gUnknown_3005334 -_080C68FC: .4byte gUnknown_3005344 -_080C6900: .4byte gUnknown_300534C -_080C6904: .4byte gUnknown_3005330 -_080C6908: .4byte gUnknown_3005340 -_080C690C: .4byte gUnknown_3005354 -_080C6910: - adds r0, r4, 0 - bl sub_80C600C - lsls r0, 16 - cmp r0, 0 - bne _080C6922 - ldrh r0, [r5] - adds r0, 0x1 - b _080C6926 -_080C6922: - ldrh r0, [r5] - adds r0, 0x2 -_080C6926: - strh r0, [r4] - ldr r3, _080C6950 @ =gUnknown_3005340 -_080C692A: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r6, r0 - bcc _080C68E0 -_080C6938: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6954 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C68B4 -_080C6944: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6950: .4byte gUnknown_3005340 -_080C6954: .4byte gUnknown_3005338 - thumb_func_end sub_80C68A0 - - thumb_func_start sub_80C6958 -sub_80C6958: @ 80C6958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C69AC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C69F4 - ldr r0, _080C69B0 @ =gUnknown_3005334 - mov r8, r0 -_080C696E: - ldr r0, _080C69B4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C69B8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C69BC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C69C0 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C69E8 - ldr r6, _080C69C4 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C699E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C69C8 - ldrh r0, [r6] - strh r0, [r4] - b _080C69D8 - .align 2, 0 -_080C69AC: .4byte gUnknown_3005338 -_080C69B0: .4byte gUnknown_3005334 -_080C69B4: .4byte gUnknown_3005344 -_080C69B8: .4byte gUnknown_300534C -_080C69BC: .4byte gUnknown_3005330 -_080C69C0: .4byte gUnknown_3005340 -_080C69C4: .4byte gUnknown_3005354 -_080C69C8: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CAC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C69D8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6A00 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C699E -_080C69E8: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6A04 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C696E -_080C69F4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6A00: .4byte gUnknown_3005340 -_080C6A04: .4byte gUnknown_3005338 - thumb_func_end sub_80C6958 - - thumb_func_start sub_80C6A08 -sub_80C6A08: @ 80C6A08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6A5C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6AA4 - ldr r0, _080C6A60 @ =gUnknown_3005334 - mov r8, r0 -_080C6A1E: - ldr r0, _080C6A64 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6A68 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6A6C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6A70 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6A98 - ldr r6, _080C6A74 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6A4E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6A78 - ldrh r0, [r6] - strh r0, [r4] - b _080C6A88 - .align 2, 0 -_080C6A5C: .4byte gUnknown_3005338 -_080C6A60: .4byte gUnknown_3005334 -_080C6A64: .4byte gUnknown_3005344 -_080C6A68: .4byte gUnknown_300534C -_080C6A6C: .4byte gUnknown_3005330 -_080C6A70: .4byte gUnknown_3005340 -_080C6A74: .4byte gUnknown_3005354 -_080C6A78: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CE0 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6A88: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6AB0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6A4E -_080C6A98: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6AB4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6A1E -_080C6AA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6AB0: .4byte gUnknown_3005340 -_080C6AB4: .4byte gUnknown_3005338 - thumb_func_end sub_80C6A08 - - thumb_func_start sub_80C6AB8 -sub_80C6AB8: @ 80C6AB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6B0C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6B54 - ldr r0, _080C6B10 @ =gUnknown_3005334 - mov r8, r0 -_080C6ACE: - ldr r0, _080C6B14 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6B18 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6B1C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6B20 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6B48 - ldr r6, _080C6B24 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6AFE: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6B28 - ldrh r0, [r6] - strh r0, [r4] - b _080C6B38 - .align 2, 0 -_080C6B0C: .4byte gUnknown_3005338 -_080C6B10: .4byte gUnknown_3005334 -_080C6B14: .4byte gUnknown_3005344 -_080C6B18: .4byte gUnknown_300534C -_080C6B1C: .4byte gUnknown_3005330 -_080C6B20: .4byte gUnknown_3005340 -_080C6B24: .4byte gUnknown_3005354 -_080C6B28: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6BDC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6B38: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6B60 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6AFE -_080C6B48: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6B64 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6ACE -_080C6B54: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6B60: .4byte gUnknown_3005340 -_080C6B64: .4byte gUnknown_3005338 - thumb_func_end sub_80C6AB8 - - thumb_func_start sub_80C6B68 -sub_80C6B68: @ 80C6B68 - push {r4,lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r4, 0x1F - ands r4, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r1 - lsrs r2, r0, 26 - ands r2, r1 - movs r1, 0x3 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B8C - movs r0, 0x1C - ands r0, r4 - adds r4, r0, 0x4 -_080C6B8C: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B9A - movs r0, 0x1C - ands r0, r3 - adds r3, r0, 0x4 -_080C6B9A: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6BA8 - movs r0, 0x1C - ands r0, r2 - adds r2, r0, 0x4 -_080C6BA8: - cmp r4, 0x5 - bhi _080C6BAE - movs r4, 0x6 -_080C6BAE: - cmp r4, 0x1E - bls _080C6BB4 - movs r4, 0x1E -_080C6BB4: - cmp r3, 0x5 - bhi _080C6BBA - movs r3, 0x6 -_080C6BBA: - cmp r3, 0x1E - bls _080C6BC0 - movs r3, 0x1E -_080C6BC0: - cmp r2, 0x5 - bhi _080C6BC6 - movs r2, 0x6 -_080C6BC6: - cmp r2, 0x1E - bls _080C6BCC - movs r2, 0x1E -_080C6BCC: - lsls r0, r2, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r4, r0 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C6B68 - - thumb_func_start sub_80C6BDC -sub_80C6BDC: @ 80C6BDC - push {lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r3, 0x1F - ands r3, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r1 - lsrs r0, 26 - ands r0, r1 - cmp r3, 0xB - bhi _080C6C00 - cmp r2, 0xA - bhi _080C6C00 - cmp r0, 0xA - bhi _080C6C00 - movs r0, 0x1 - b _080C6CA6 -_080C6C00: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C0C - cmp r0, 0x13 - bhi _080C6C30 -_080C6C0C: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C1A - cmp r0, 0xE - bhi _080C6C30 - b _080C6C68 -_080C6C1A: - cmp r0, 0x13 - bls _080C6C24 - cmp r2, 0xE - bhi _080C6C30 - b _080C6C44 -_080C6C24: - cmp r2, 0x13 - bls _080C6C34 - cmp r0, 0x13 - bls _080C6C34 - cmp r3, 0xE - bls _080C6C8C -_080C6C30: - movs r0, 0x2 - b _080C6CA6 -_080C6C34: - cmp r3, 0x13 - bls _080C6C58 - cmp r2, 0xB - bls _080C6C4C - cmp r0, 0xB - bls _080C6C48 - cmp r2, r0 - bcs _080C6C68 -_080C6C44: - movs r0, 0x8 - b _080C6CA6 -_080C6C48: - movs r0, 0xA - b _080C6CA6 -_080C6C4C: - cmp r0, 0xB - bls _080C6C54 - movs r0, 0xD - b _080C6CA6 -_080C6C54: - movs r0, 0x4 - b _080C6CA6 -_080C6C58: - cmp r2, 0x13 - bls _080C6C7C - cmp r3, 0xB - bls _080C6C70 - cmp r0, 0xB - bls _080C6C6C - cmp r3, r0 - bcc _080C6C8C -_080C6C68: - movs r0, 0x7 - b _080C6CA6 -_080C6C6C: - movs r0, 0xB - b _080C6CA6 -_080C6C70: - cmp r0, 0xB - bls _080C6C78 - movs r0, 0xE - b _080C6CA6 -_080C6C78: - movs r0, 0x5 - b _080C6CA6 -_080C6C7C: - cmp r0, 0x13 - bls _080C6CA4 - cmp r3, 0xB - bls _080C6C90 - cmp r2, 0xB - bls _080C6C98 - cmp r3, r2 - bcs _080C6C44 -_080C6C8C: - movs r0, 0x9 - b _080C6CA6 -_080C6C90: - cmp r2, 0xB - bls _080C6C98 - movs r0, 0xC - b _080C6CA6 -_080C6C98: - cmp r0, 0xB - bls _080C6CA0 - movs r0, 0xF - b _080C6CA6 -_080C6CA0: - movs r0, 0x6 - b _080C6CA6 -_080C6CA4: - movs r0, 0x3 -_080C6CA6: - pop {r1} - bx r1 - thumb_func_end sub_80C6BDC - - thumb_func_start sub_80C6CAC -sub_80C6CAC: @ 80C6CAC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - movs r1, 0x1E - ands r0, r1 - lsls r0, 16 - cmp r0, 0 - beq _080C6CD8 - lsrs r0, 17 - b _080C6CDA -_080C6CD8: - movs r0, 0x1 -_080C6CDA: - pop {r1} - bx r1 - thumb_func_end sub_80C6CAC - - thumb_func_start sub_80C6CE0 -sub_80C6CE0: @ 80C6CE0 - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C6CE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/image_processing_effects.s b/data/image_processing_effects.s new file mode 100644 index 000000000..df83b2d54 --- /dev/null +++ b/data/image_processing_effects.s @@ -0,0 +1,3204 @@ + .section .rodata + .align 2, 0 + +gUnknown_83F3024:: @ 83F3024 + .byte 0x00, 0x1d, 0x1c + .byte 0x0e, 0x1e, 0x1b + .byte 0x00, 0x01, 0x32 + .byte 0x2e, 0x1e, 0x37 + .byte 0x0a, 0x22, 0x1f + .byte 0x05, 0x26, 0x2e + .byte 0x12, 0x17, 0x1e + .byte 0x1a, 0x03, 0x11 + .byte 0x05, 0x11, 0x18 + .byte 0x05, 0x27, 0x2f + .byte 0x1a, 0x3f, 0x12 + .byte 0x22, 0x3f, 0x16 + .byte 0x2b, 0x2f, 0x2e + .byte 0x11, 0x02, 0x2d + .byte 0x23, 0x0d, 0x28 + .byte 0x17, 0x0c, 0x19 + .byte 0x2f, 0x0e, 0x13 + .byte 0x30, 0x18, 0x20 + .byte 0x2d, 0x28, 0x22 + .byte 0x01, 0x03, 0x19 + .byte 0x0e, 0x2a, 0x2b + .byte 0x22, 0x15, 0x25 + .byte 0x22, 0x0a, 0x26 + .byte 0x39, 0x06, 0x23 + .byte 0x16, 0x07, 0x2f + .byte 0x22, 0x3a, 0x1b + .byte 0x3b, 0x36, 0x35 + .byte 0x0a, 0x2b, 0x24 + .byte 0x36, 0x09, 0x12 + .byte 0x1c, 0x2f, 0x23 + .byte 0x2e, 0x38, 0x2c + .byte 0x05, 0x2a, 0x20 + .byte 0x07, 0x14, 0x32 + .byte 0x31, 0x08, 0x17 + .byte 0x1a, 0x24, 0x2d + .byte 0x22, 0x0a, 0x16 + .byte 0x1b, 0x26, 0x2b + .byte 0x29, 0x16, 0x11 + .byte 0x35, 0x08, 0x14 + .byte 0x1e, 0x08, 0x14 + .byte 0x05, 0x31, 0x14 + .byte 0x38, 0x31, 0x17 + .byte 0x34, 0x33, 0x12 + .byte 0x11, 0x09, 0x1f + .byte 0x28, 0x3d, 0x32 + .byte 0x35, 0x03, 0x1e + .byte 0x3c, 0x2b, 0x2e + .byte 0x10, 0x01, 0x17 + .byte 0x03, 0x3e, 0x22 + .byte 0x17, 0x18, 0x34 + .byte 0x08, 0x29, 0x19 + .byte 0x03, 0x24, 0x28 + .byte 0x3d, 0x33, 0x2f + .byte 0x31, 0x24, 0x19 + .byte 0x1b, 0x18, 0x26 + .byte 0x07, 0x0d, 0x25 + .byte 0x2d, 0x3f, 0x12 + .byte 0x2f, 0x15, 0x25 + .byte 0x29, 0x0f, 0x12 + .byte 0x07, 0x2c, 0x12 + .byte 0x2c, 0x0b, 0x26 + .byte 0x12, 0x1a, 0x16 + .byte 0x00, 0x0b, 0x2f + .byte 0x16, 0x35, 0x24 + .byte 0x1f, 0x1c, 0x22 + .byte 0x29, 0x33, 0x27 + .byte 0x3b, 0x30, 0x17 + .byte 0x11, 0x06, 0x35 + .byte 0x3e, 0x31, 0x2f + .byte 0x11, 0x3a, 0x25 + .byte 0x2a, 0x02, 0x19 + .byte 0x33, 0x18, 0x35 + .byte 0x2a, 0x20, 0x21 + .byte 0x2e, 0x32, 0x1b + .byte 0x3b, 0x1f, 0x23 + .byte 0x39, 0x29, 0x2a + .byte 0x2e, 0x31, 0x29 + .byte 0x2a, 0x0e, 0x2d + .byte 0x2d, 0x00, 0x1f + .byte 0x38, 0x28, 0x1b + .byte 0x14, 0x3b, 0x2b + .byte 0x2e, 0x04, 0x26 + .byte 0x36, 0x30, 0x11 + .byte 0x3b, 0x21, 0x2d + .byte 0x2b, 0x3f, 0x1b + .byte 0x20, 0x13, 0x31 + .byte 0x33, 0x0c, 0x30 + .byte 0x22, 0x2b, 0x2b + .byte 0x16, 0x02, 0x1e + .byte 0x1c, 0x12, 0x1c + .byte 0x0f, 0x3c, 0x36 + .byte 0x38, 0x10, 0x2d + .byte 0x18, 0x2f, 0x2d + .byte 0x35, 0x3b, 0x11 + .byte 0x37, 0x31, 0x13 + .byte 0x13, 0x3d, 0x2f + .byte 0x1e, 0x2c, 0x33 + .byte 0x2e, 0x37, 0x12 + .byte 0x3c, 0x1f, 0x33 + .byte 0x32, 0x2a, 0x27 + .byte 0x0d, 0x3b, 0x1c + .byte 0x35, 0x2a, 0x27 + .byte 0x09, 0x3d, 0x27 + .byte 0x12, 0x0b, 0x18 + .byte 0x0c, 0x15, 0x1d + .byte 0x20, 0x01, 0x1c + .byte 0x08, 0x3b, 0x1c + .byte 0x12, 0x37, 0x33 + .byte 0x15, 0x03, 0x2c + .byte 0x2a, 0x3b, 0x31 + .byte 0x0f, 0x04, 0x35 + .byte 0x08, 0x17, 0x33 + .byte 0x38, 0x3d, 0x2a + .byte 0x2f, 0x35, 0x16 + .byte 0x10, 0x35, 0x16 + .byte 0x23, 0x13, 0x2c + .byte 0x2f, 0x06, 0x20 + .byte 0x27, 0x3a, 0x24 + .byte 0x00, 0x1c, 0x2a + .byte 0x03, 0x39, 0x1d + .byte 0x28, 0x07, 0x1a + .byte 0x20, 0x0a, 0x37 + .byte 0x07, 0x35, 0x2d + .byte 0x15, 0x2f, 0x2c + .byte 0x10, 0x2c, 0x23 + .byte 0x3f, 0x29, 0x14 + .byte 0x2a, 0x21, 0x36 + .byte 0x34, 0x1a, 0x2c + .byte 0x1c, 0x3d, 0x33 + .byte 0x38, 0x2b, 0x22 + .byte 0x35, 0x28, 0x1f + .byte 0x3d, 0x0f, 0x1c + .byte 0x1e, 0x3e, 0x1b + .byte 0x0c, 0x3e, 0x1f + .byte 0x2b, 0x31, 0x2c + .byte 0x32, 0x39, 0x11 + .byte 0x05, 0x09, 0x11 + .byte 0x04, 0x38, 0x2a + .byte 0x32, 0x00, 0x16 + .byte 0x13, 0x0b, 0x31 + .byte 0x34, 0x2a, 0x13 + .byte 0x2c, 0x22, 0x21 + .byte 0x39, 0x2f, 0x15 + .byte 0x37, 0x28, 0x1e + .byte 0x07, 0x3b, 0x2d + .byte 0x11, 0x03, 0x28 + .byte 0x2d, 0x30, 0x1e + .byte 0x31, 0x11, 0x11 + .byte 0x23, 0x01, 0x1e + .byte 0x3d, 0x31, 0x34 + .byte 0x1c, 0x02, 0x34 + .byte 0x21, 0x0e, 0x25 + .byte 0x3d, 0x07, 0x17 + .byte 0x33, 0x15, 0x10 + .byte 0x29, 0x32, 0x32 + .byte 0x18, 0x1f, 0x30 + .byte 0x2d, 0x3b, 0x30 + .byte 0x27, 0x3e, 0x16 + .byte 0x31, 0x15, 0x12 + .byte 0x30, 0x25, 0x17 + .byte 0x33, 0x06, 0x34 + .byte 0x00, 0x29, 0x18 + .byte 0x3c, 0x03, 0x12 + .byte 0x2c, 0x0c, 0x11 + .byte 0x09, 0x30, 0x30 + .byte 0x10, 0x0e, 0x11 + .byte 0x27, 0x16, 0x1b + .byte 0x0c, 0x3b, 0x2e + .byte 0x2b, 0x33, 0x1e + .byte 0x13, 0x2d, 0x2d + .byte 0x11, 0x24, 0x29 + .byte 0x34, 0x3e, 0x2b + .byte 0x24, 0x1e, 0x21 + .byte 0x27, 0x1a, 0x2d + .byte 0x04, 0x39, 0x16 + .byte 0x3e, 0x33, 0x26 + .byte 0x1b, 0x2e, 0x25 + .byte 0x0c, 0x06, 0x19 + .byte 0x25, 0x19, 0x18 + .byte 0x1d, 0x33, 0x33 + .byte 0x1d, 0x28, 0x2d + .byte 0x1c, 0x10, 0x2a + .byte 0x1f, 0x35, 0x1e + .byte 0x34, 0x02, 0x10 + .byte 0x2b, 0x3a, 0x14 + .byte 0x0d, 0x0b, 0x15 + .byte 0x0c, 0x2c, 0x10 + .byte 0x37, 0x3a, 0x19 + .byte 0x06, 0x13, 0x17 + .byte 0x24, 0x10, 0x25 + .byte 0x24, 0x04, 0x1e + .byte 0x00, 0x35, 0x34 + .byte 0x3a, 0x00, 0x37 + .byte 0x3c, 0x07, 0x1a + .byte 0x2b, 0x28, 0x36 + .byte 0x34, 0x39, 0x2f + .byte 0x28, 0x09, 0x1f + .byte 0x38, 0x31, 0x30 + .byte 0x16, 0x25, 0x31 + .byte 0x18, 0x28, 0x31 + .byte 0x18, 0x0c, 0x22 + .byte 0x06, 0x39, 0x2d + .byte 0x3d, 0x20, 0x24 + .byte 0x2e, 0x27, 0x21 + .byte 0x3e, 0x18, 0x18 + .byte 0x15, 0x3c, 0x24 + .byte 0x06, 0x1b, 0x26 + .byte 0x15, 0x0e, 0x22 + .byte 0x0a, 0x0d, 0x1f + .byte 0x18, 0x16, 0x34 + .byte 0x10, 0x28, 0x21 + .byte 0x20, 0x11, 0x11 + .byte 0x36, 0x32, 0x15 + .byte 0x3b, 0x2e, 0x24 + .byte 0x1f, 0x2d, 0x12 + .byte 0x36, 0x2e, 0x20 + .byte 0x0b, 0x17, 0x33 + .byte 0x26, 0x03, 0x1f + .byte 0x08, 0x19, 0x31 + .byte 0x2a, 0x18, 0x25 + .byte 0x35, 0x2d, 0x2d + .byte 0x30, 0x38, 0x18 + .byte 0x1c, 0x25, 0x14 + .byte 0x1c, 0x22, 0x28 + .byte 0x08, 0x23, 0x21 + .byte 0x26, 0x1e, 0x30 + .byte 0x19, 0x0f, 0x15 + .byte 0x10, 0x2f, 0x22 + .byte 0x12, 0x02, 0x25 + .byte 0x3c, 0x01, 0x1d + .byte 0x0e, 0x14, 0x18 + .byte 0x0d, 0x18, 0x17 + .byte 0x22, 0x0b, 0x31 + .byte 0x13, 0x34, 0x21 + .byte 0x0f, 0x2d, 0x36 + .byte 0x39, 0x1f, 0x25 + .byte 0x18, 0x10, 0x1f + .byte 0x2d, 0x20, 0x20 + .byte 0x19, 0x0b, 0x31 + .byte 0x33, 0x13, 0x14 + .byte 0x2e, 0x11, 0x21 + .byte 0x2d, 0x0a, 0x37 + .byte 0x07, 0x15, 0x1b + .byte 0x32, 0x04, 0x32 + .byte 0x06, 0x18, 0x1b + .byte 0x13, 0x24, 0x12 + .byte 0x36, 0x22, 0x16 + .byte 0x1d, 0x29, 0x1c + .byte 0x35, 0x17, 0x21 + .byte 0x36, 0x17, 0x2b + .byte 0x35, 0x32, 0x19 + .byte 0x2a, 0x0f, 0x2e + .byte 0x10, 0x00, 0x34 + .byte 0x02, 0x0e, 0x28 + .byte 0x31, 0x32, 0x32 + .byte 0x3b, 0x05, 0x20 + .byte 0x36, 0x26, 0x12 + .byte 0x34, 0x06, 0x34 + .byte 0x1e, 0x31, 0x32 + .byte 0x35, 0x05, 0x34 + .byte 0x1e, 0x13, 0x15 + .byte 0x15, 0x14, 0x2c + .byte 0x29, 0x1c, 0x18 + .byte 0x24, 0x24, 0x12 + .byte 0x22, 0x29, 0x18 + .byte 0x34, 0x36, 0x30 + .byte 0x1e, 0x01, 0x23 + .byte 0x0c, 0x3c, 0x24 + .byte 0x0a, 0x3d, 0x16 + .byte 0x27, 0x1e, 0x23 + .byte 0x15, 0x02, 0x12 + .byte 0x11, 0x19, 0x2a + .byte 0x1d, 0x31, 0x15 + .byte 0x03, 0x3b, 0x2a + .byte 0x21, 0x19, 0x2c + .byte 0x0a, 0x23, 0x11 + .byte 0x25, 0x11, 0x1a + .byte 0x1a, 0x0a, 0x34 + .byte 0x3b, 0x0b, 0x33 + .byte 0x21, 0x0b, 0x37 + .byte 0x01, 0x31, 0x28 + .byte 0x35, 0x1d, 0x27 + .byte 0x2c, 0x30, 0x31 + .byte 0x2e, 0x39, 0x2d + .byte 0x30, 0x05, 0x2c + .byte 0x12, 0x2a, 0x2b + .byte 0x39, 0x22, 0x20 + .byte 0x15, 0x34, 0x1c + .byte 0x1c, 0x01, 0x15 + .byte 0x20, 0x16, 0x22 + .byte 0x13, 0x04, 0x18 + .byte 0x1e, 0x13, 0x10 + .byte 0x25, 0x33, 0x15 + .byte 0x39, 0x03, 0x31 + .byte 0x3f, 0x36, 0x18 + .byte 0x14, 0x23, 0x10 + .byte 0x2f, 0x1e, 0x1f + .byte 0x1f, 0x17, 0x2c + .byte 0x02, 0x16, 0x31 + .byte 0x20, 0x18, 0x30 + .byte 0x2e, 0x18, 0x37 + .byte 0x3b, 0x0e, 0x30 + .byte 0x10, 0x39, 0x24 + .byte 0x26, 0x39, 0x1e + .byte 0x30, 0x26, 0x2e + .byte 0x12, 0x01, 0x14 + .byte 0x37, 0x2a, 0x2e + .byte 0x21, 0x06, 0x1d + .byte 0x2a, 0x16, 0x32 + .byte 0x09, 0x38, 0x1c + .byte 0x07, 0x22, 0x17 + .byte 0x3b, 0x2d, 0x15 + .byte 0x07, 0x1e, 0x2e + .byte 0x1b, 0x2e, 0x1d + .byte 0x04, 0x09, 0x30 + .byte 0x30, 0x2d, 0x37 + .byte 0x2d, 0x34, 0x24 + .byte 0x18, 0x24, 0x25 + .byte 0x0e, 0x2d, 0x26 + .byte 0x23, 0x0a, 0x16 + .byte 0x12, 0x2d, 0x11 + .byte 0x21, 0x28, 0x2e + .byte 0x0f, 0x01, 0x21 + .byte 0x01, 0x31, 0x12 + .byte 0x3f, 0x1b, 0x1e + .byte 0x21, 0x25, 0x2b + .byte 0x26, 0x18, 0x13 + .byte 0x15, 0x2d, 0x34 + .byte 0x23, 0x21, 0x36 + .byte 0x0e, 0x2e, 0x1c + .byte 0x14, 0x22, 0x1c + .byte 0x2c, 0x0b, 0x28 + .byte 0x1a, 0x18, 0x21 + .byte 0x21, 0x07, 0x1a + .byte 0x24, 0x26, 0x29 + .byte 0x2b, 0x0a, 0x34 + .byte 0x3e, 0x27, 0x33 + .byte 0x12, 0x34, 0x1b + .byte 0x1f, 0x01, 0x2a + .byte 0x2e, 0x06, 0x23 + .byte 0x2f, 0x1f, 0x14 + .byte 0x18, 0x06, 0x26 + .byte 0x31, 0x1f, 0x2b + .byte 0x22, 0x26, 0x2e + .byte 0x1e, 0x15, 0x16 + .byte 0x20, 0x22, 0x28 + .byte 0x15, 0x37, 0x12 + .byte 0x25, 0x04, 0x2c + .byte 0x1f, 0x04, 0x2e + .byte 0x0c, 0x13, 0x18 + .byte 0x07, 0x0b, 0x36 + .byte 0x1d, 0x1c, 0x2a + .byte 0x30, 0x22, 0x1c + .byte 0x2e, 0x12, 0x2f + .byte 0x2b, 0x21, 0x1e + .byte 0x16, 0x38, 0x30 + .byte 0x04, 0x02, 0x16 + .byte 0x05, 0x14, 0x20 + .byte 0x38, 0x3c, 0x33 + .byte 0x21, 0x1b, 0x2f + .byte 0x14, 0x2a, 0x27 + .byte 0x38, 0x14, 0x1b + .byte 0x2b, 0x1f, 0x2b + .byte 0x29, 0x2b, 0x25 + .byte 0x27, 0x36, 0x21 + .byte 0x11, 0x22, 0x1b + .byte 0x29, 0x03, 0x1b + .byte 0x18, 0x24, 0x28 + .byte 0x21, 0x2d, 0x36 + .byte 0x3c, 0x2c, 0x24 + .byte 0x33, 0x17, 0x1f + .byte 0x2a, 0x3a, 0x21 + .byte 0x0a, 0x23, 0x37 + .byte 0x00, 0x0b, 0x21 + .byte 0x11, 0x38, 0x19 + .byte 0x0f, 0x0e, 0x1c + .byte 0x1f, 0x0f, 0x37 + .byte 0x3c, 0x10, 0x37 + .byte 0x38, 0x31, 0x35 + .byte 0x07, 0x15, 0x28 + .byte 0x1e, 0x2e, 0x19 + .byte 0x26, 0x10, 0x33 + .byte 0x3d, 0x35, 0x2f + .byte 0x3a, 0x04, 0x34 + .byte 0x0d, 0x18, 0x1a + .byte 0x01, 0x2d, 0x15 + .byte 0x3d, 0x1a, 0x17 + .byte 0x17, 0x3f, 0x32 + .byte 0x0b, 0x21, 0x11 + .byte 0x1e, 0x26, 0x2b + .byte 0x0d, 0x19, 0x24 + .byte 0x2e, 0x04, 0x1b + .byte 0x1b, 0x33, 0x20 + .byte 0x15, 0x21, 0x1d + .byte 0x1f, 0x04, 0x21 + .byte 0x0f, 0x12, 0x1f + .byte 0x2d, 0x2a, 0x32 + .byte 0x03, 0x37, 0x1f + .byte 0x35, 0x07, 0x27 + .byte 0x24, 0x1f, 0x31 + .byte 0x2f, 0x30, 0x15 + .byte 0x06, 0x00, 0x24 + .byte 0x0b, 0x22, 0x1a + .byte 0x0c, 0x3b, 0x29 + .byte 0x14, 0x1a, 0x17 + .byte 0x37, 0x20, 0x25 + .byte 0x3f, 0x26, 0x37 + .byte 0x3a, 0x3e, 0x10 + .byte 0x22, 0x04, 0x11 + .byte 0x28, 0x12, 0x1c + .byte 0x03, 0x2e, 0x2e + .byte 0x0e, 0x38, 0x28 + .byte 0x01, 0x29, 0x22 + .byte 0x1e, 0x33, 0x19 + .byte 0x06, 0x21, 0x27 + .byte 0x33, 0x19, 0x1a + .byte 0x02, 0x05, 0x17 + .byte 0x11, 0x11, 0x2c + .byte 0x1f, 0x26, 0x1e + .byte 0x39, 0x1f, 0x28 + .byte 0x2e, 0x2f, 0x12 + .byte 0x22, 0x34, 0x13 + .byte 0x3b, 0x26, 0x2f + .byte 0x34, 0x00, 0x14 + .byte 0x10, 0x31, 0x11 + .byte 0x1d, 0x2d, 0x2a + .byte 0x08, 0x08, 0x37 + .byte 0x15, 0x18, 0x34 + .byte 0x04, 0x2b, 0x24 + .byte 0x2f, 0x1e, 0x27 + .byte 0x22, 0x2a, 0x24 + .byte 0x07, 0x14, 0x25 + .byte 0x01, 0x27, 0x19 + .byte 0x29, 0x0a, 0x29 + .byte 0x3d, 0x1c, 0x2f + .byte 0x0d, 0x1f, 0x1c + .byte 0x24, 0x3d, 0x32 + .byte 0x36, 0x1d, 0x24 + .byte 0x14, 0x21, 0x16 + .byte 0x1a, 0x0d, 0x29 + .byte 0x3f, 0x2b, 0x2a + .byte 0x1a, 0x3e, 0x35 + .byte 0x11, 0x28, 0x18 + .byte 0x32, 0x05, 0x15 + .byte 0x21, 0x2e, 0x34 + .byte 0x2d, 0x14, 0x2a + .byte 0x3c, 0x08, 0x37 + .byte 0x3f, 0x34, 0x1e + .byte 0x27, 0x24, 0x1c + .byte 0x16, 0x16, 0x33 + .byte 0x29, 0x3b, 0x19 + .byte 0x36, 0x2f, 0x1c + .byte 0x03, 0x25, 0x2c + .byte 0x0b, 0x16, 0x36 + .byte 0x1c, 0x1d, 0x1b + .byte 0x2c, 0x27, 0x1b + .byte 0x0b, 0x1f, 0x2b + .byte 0x08, 0x10, 0x27 + .byte 0x3f, 0x25, 0x2f + .byte 0x33, 0x13, 0x1f + .byte 0x04, 0x31, 0x37 + .byte 0x0e, 0x2f, 0x12 + .byte 0x08, 0x23, 0x20 + .byte 0x3a, 0x1a, 0x1e + .byte 0x2f, 0x0b, 0x1f + .byte 0x1e, 0x20, 0x19 + .byte 0x23, 0x3b, 0x14 + .byte 0x25, 0x00, 0x27 + .byte 0x14, 0x04, 0x25 + .byte 0x36, 0x1a, 0x2b + .byte 0x27, 0x21, 0x15 + .byte 0x28, 0x13, 0x2c + .byte 0x0e, 0x3c, 0x35 + .byte 0x0c, 0x2d, 0x2b + .byte 0x37, 0x16, 0x15 + .byte 0x29, 0x15, 0x1d + .byte 0x17, 0x34, 0x36 + .byte 0x09, 0x0a, 0x31 + .byte 0x37, 0x22, 0x28 + .byte 0x17, 0x2b, 0x35 + .byte 0x14, 0x2b, 0x12 + .byte 0x08, 0x13, 0x1f + .byte 0x31, 0x13, 0x28 + .byte 0x06, 0x07, 0x35 + .byte 0x23, 0x3a, 0x29 + .byte 0x0f, 0x24, 0x2e + .byte 0x07, 0x35, 0x26 + .byte 0x0e, 0x12, 0x15 + .byte 0x23, 0x33, 0x2c + .byte 0x0e, 0x21, 0x26 + .byte 0x1c, 0x12, 0x25 + .byte 0x23, 0x1d, 0x2f + .byte 0x04, 0x35, 0x33 + .byte 0x16, 0x01, 0x24 + .byte 0x3d, 0x2c, 0x2e + .byte 0x35, 0x0a, 0x25 + .byte 0x11, 0x13, 0x25 + .byte 0x1b, 0x1b, 0x15 + .byte 0x15, 0x39, 0x10 + .byte 0x0b, 0x35, 0x24 + .byte 0x3a, 0x27, 0x30 + .byte 0x2e, 0x2f, 0x15 + .byte 0x10, 0x1f, 0x35 + .byte 0x1b, 0x28, 0x35 + .byte 0x26, 0x30, 0x37 + .byte 0x34, 0x37, 0x2b + .byte 0x0f, 0x30, 0x29 + .byte 0x2e, 0x3f, 0x2b + .byte 0x38, 0x34, 0x2b + .byte 0x2b, 0x2f, 0x25 + .byte 0x0d, 0x28, 0x2a + .byte 0x33, 0x18, 0x10 + .byte 0x21, 0x12, 0x11 + .byte 0x1f, 0x22, 0x34 + .byte 0x11, 0x25, 0x23 + .byte 0x21, 0x3f, 0x11 + .byte 0x26, 0x27, 0x25 + .byte 0x28, 0x36, 0x12 + .byte 0x15, 0x26, 0x32 + .byte 0x11, 0x18, 0x24 + .byte 0x32, 0x25, 0x37 + .byte 0x27, 0x3a, 0x33 + .byte 0x35, 0x07, 0x1c + .byte 0x1a, 0x0e, 0x2a + .byte 0x1e, 0x2f, 0x1f + .byte 0x00, 0x2e, 0x21 + .byte 0x1b, 0x3c, 0x14 + .byte 0x2f, 0x3a, 0x2f + .byte 0x3e, 0x38, 0x15 + .byte 0x1a, 0x13, 0x2f + .byte 0x29, 0x0d, 0x2f + .byte 0x37, 0x17, 0x18 + .byte 0x30, 0x1c, 0x35 + .byte 0x15, 0x34, 0x14 + .byte 0x28, 0x11, 0x2c + .byte 0x2c, 0x25, 0x2a + .byte 0x20, 0x3f, 0x28 + .byte 0x0c, 0x34, 0x1b + .byte 0x30, 0x2e, 0x25 + .byte 0x37, 0x1c, 0x24 + .byte 0x1f, 0x25, 0x26 + .byte 0x0c, 0x19, 0x34 + .byte 0x18, 0x10, 0x35 + .byte 0x0a, 0x13, 0x11 + .byte 0x25, 0x13, 0x20 + .byte 0x13, 0x19, 0x11 + .byte 0x20, 0x28, 0x1d + .byte 0x3e, 0x30, 0x1b + .byte 0x23, 0x24, 0x21 + .byte 0x0d, 0x23, 0x23 + .byte 0x1d, 0x28, 0x2e + .byte 0x2d, 0x12, 0x1f + .byte 0x0e, 0x2e, 0x2b + .byte 0x0b, 0x31, 0x32 + .byte 0x24, 0x3c, 0x2c + .byte 0x13, 0x3c, 0x12 + .byte 0x28, 0x16, 0x2a + .byte 0x05, 0x0c, 0x32 + .byte 0x39, 0x0b, 0x32 + .byte 0x21, 0x04, 0x14 + .byte 0x10, 0x31, 0x32 + .byte 0x12, 0x1f, 0x23 + .byte 0x39, 0x2e, 0x2e + .byte 0x22, 0x3d, 0x27 + .byte 0x0c, 0x1e, 0x18 + .byte 0x25, 0x00, 0x17 + .byte 0x06, 0x31, 0x14 + .byte 0x13, 0x21, 0x1a + .byte 0x14, 0x20, 0x35 + .byte 0x0a, 0x3b, 0x25 + .byte 0x33, 0x08, 0x28 + .byte 0x3d, 0x02, 0x33 + .byte 0x23, 0x00, 0x13 + .byte 0x22, 0x21, 0x28 + .byte 0x30, 0x14, 0x2e + .byte 0x14, 0x32, 0x36 + .byte 0x39, 0x23, 0x1e + .byte 0x1c, 0x11, 0x30 + .byte 0x37, 0x16, 0x30 + .byte 0x15, 0x31, 0x1f + .byte 0x34, 0x28, 0x2c + .byte 0x35, 0x05, 0x29 + .byte 0x37, 0x33, 0x2a + .byte 0x1c, 0x17, 0x2e + .byte 0x10, 0x06, 0x16 + .byte 0x32, 0x1f, 0x2f + .byte 0x00, 0x29, 0x1e + .byte 0x04, 0x01, 0x16 + .byte 0x3b, 0x23, 0x1e + .byte 0x1b, 0x34, 0x2a + .byte 0x30, 0x11, 0x2b + .byte 0x03, 0x00, 0x1f + .byte 0x1d, 0x37, 0x1a + .byte 0x3a, 0x18, 0x25 + .byte 0x1c, 0x16, 0x2c + .byte 0x04, 0x3f, 0x33 + .byte 0x26, 0x23, 0x2d + .byte 0x15, 0x2c, 0x27 + .byte 0x02, 0x35, 0x27 + .byte 0x07, 0x35, 0x33 + .byte 0x1a, 0x0c, 0x10 + .byte 0x28, 0x26, 0x2c + .byte 0x2f, 0x36, 0x16 + .byte 0x37, 0x0b, 0x27 + .byte 0x1b, 0x3d, 0x18 + .byte 0x27, 0x1f, 0x20 + .byte 0x2b, 0x2a, 0x33 + .byte 0x0b, 0x0f, 0x20 + .byte 0x35, 0x3c, 0x2f + .byte 0x33, 0x21, 0x15 + .byte 0x2d, 0x26, 0x34 + .byte 0x1f, 0x1a, 0x21 + .byte 0x2f, 0x2c, 0x2a + .byte 0x1a, 0x32, 0x1a + .byte 0x3b, 0x3f, 0x21 + .byte 0x13, 0x3f, 0x13 + .byte 0x0f, 0x24, 0x22 + .byte 0x14, 0x1b, 0x10 + .byte 0x21, 0x06, 0x28 + .byte 0x25, 0x34, 0x10 + .byte 0x2e, 0x0e, 0x14 + .byte 0x3c, 0x3e, 0x25 + .byte 0x16, 0x06, 0x30 + .byte 0x0b, 0x04, 0x1f + .byte 0x3e, 0x02, 0x24 + .byte 0x0c, 0x17, 0x25 + .byte 0x2b, 0x3c, 0x2d + .byte 0x15, 0x36, 0x33 + .byte 0x18, 0x23, 0x2a + .byte 0x1d, 0x10, 0x2a + .byte 0x35, 0x17, 0x28 + .byte 0x00, 0x37, 0x24 + .byte 0x0a, 0x3b, 0x15 + .byte 0x1d, 0x0b, 0x1f + .byte 0x3c, 0x31, 0x25 + .byte 0x1d, 0x0f, 0x1d + .byte 0x20, 0x13, 0x34 + .byte 0x11, 0x2b, 0x2e + .byte 0x23, 0x0c, 0x2e + .byte 0x24, 0x02, 0x14 + .byte 0x31, 0x16, 0x19 + .byte 0x0e, 0x23, 0x35 + .byte 0x1a, 0x10, 0x16 + .byte 0x14, 0x04, 0x19 + .byte 0x2d, 0x27, 0x37 + .byte 0x33, 0x02, 0x31 + .byte 0x02, 0x04, 0x16 + .byte 0x0d, 0x22, 0x25 + .byte 0x25, 0x00, 0x16 + .byte 0x2a, 0x3f, 0x26 + .byte 0x20, 0x0c, 0x12 + .byte 0x2f, 0x2e, 0x35 + .byte 0x1b, 0x0d, 0x22 + .byte 0x1e, 0x01, 0x34 + .byte 0x05, 0x22, 0x21 + .byte 0x34, 0x2a, 0x32 + .byte 0x0b, 0x09, 0x1d + .byte 0x3f, 0x32, 0x2f + .byte 0x3d, 0x18, 0x2d + .byte 0x0b, 0x38, 0x36 + .byte 0x39, 0x17, 0x28 + .byte 0x34, 0x04, 0x24 + .byte 0x36, 0x0e, 0x2a + .byte 0x38, 0x01, 0x14 + .byte 0x3c, 0x24, 0x22 + .byte 0x21, 0x03, 0x18 + .byte 0x32, 0x2f, 0x12 + .byte 0x29, 0x24, 0x31 + .byte 0x0a, 0x3b, 0x12 + .byte 0x1a, 0x1c, 0x20 + .byte 0x30, 0x31, 0x1b + .byte 0x1a, 0x21, 0x10 + .byte 0x05, 0x29, 0x10 + .byte 0x26, 0x2d, 0x13 + .byte 0x16, 0x0c, 0x1d + .byte 0x2b, 0x06, 0x1b + .byte 0x06, 0x12, 0x14 + .byte 0x38, 0x0f, 0x35 + .byte 0x23, 0x3a, 0x2c + .byte 0x00, 0x19, 0x33 + .byte 0x29, 0x14, 0x2d + .byte 0x2a, 0x21, 0x29 + .byte 0x14, 0x31, 0x14 + .byte 0x1a, 0x06, 0x1e + .byte 0x18, 0x1b, 0x28 + .byte 0x3b, 0x16, 0x29 + .byte 0x15, 0x1e, 0x12 + .byte 0x34, 0x0a, 0x14 + .byte 0x1b, 0x05, 0x27 + .byte 0x0b, 0x01, 0x26 + .byte 0x2a, 0x22, 0x35 + .byte 0x21, 0x20, 0x18 + .byte 0x20, 0x37, 0x17 + .byte 0x14, 0x1f, 0x11 + .byte 0x1d, 0x11, 0x25 + .byte 0x24, 0x2b, 0x2f + .byte 0x07, 0x3f, 0x1f + .byte 0x2c, 0x25, 0x25 + .byte 0x2a, 0x29, 0x18 + .byte 0x11, 0x24, 0x28 + .byte 0x31, 0x2c, 0x2a + .byte 0x39, 0x0b, 0x26 + .byte 0x28, 0x10, 0x26 + .byte 0x22, 0x06, 0x16 + .byte 0x09, 0x2c, 0x13 + .byte 0x34, 0x19, 0x15 + .byte 0x3a, 0x12, 0x21 + .byte 0x1d, 0x38, 0x23 + .byte 0x12, 0x25, 0x24 + .byte 0x21, 0x30, 0x12 + .byte 0x37, 0x1a, 0x12 + .byte 0x24, 0x3b, 0x25 + .byte 0x32, 0x15, 0x23 + .byte 0x0d, 0x1a, 0x10 + .byte 0x16, 0x2e, 0x26 + .byte 0x1d, 0x14, 0x16 + .byte 0x3e, 0x2e, 0x1f + .byte 0x0a, 0x16, 0x10 + .byte 0x1d, 0x30, 0x2b + .byte 0x04, 0x3a, 0x19 + .byte 0x08, 0x2d, 0x2e + .byte 0x28, 0x1e, 0x33 + .byte 0x0a, 0x12, 0x2e + .byte 0x0d, 0x03, 0x2f + .byte 0x26, 0x3a, 0x1e + .byte 0x35, 0x3b, 0x2a + .byte 0x03, 0x1a, 0x18 + .byte 0x3f, 0x0b, 0x27 + .byte 0x04, 0x05, 0x34 + .byte 0x36, 0x0b, 0x27 + .byte 0x3b, 0x17, 0x11 + .byte 0x0d, 0x27, 0x26 + .byte 0x2c, 0x1f, 0x20 + .byte 0x26, 0x10, 0x20 + .byte 0x25, 0x23, 0x2d + .byte 0x37, 0x09, 0x13 + .byte 0x14, 0x17, 0x2d + .byte 0x2e, 0x3d, 0x23 + .byte 0x1d, 0x1a, 0x1f + .byte 0x21, 0x33, 0x2e + .byte 0x28, 0x17, 0x13 + .byte 0x26, 0x3c, 0x36 + .byte 0x14, 0x1a, 0x33 + .byte 0x32, 0x20, 0x2b + .byte 0x19, 0x3e, 0x20 + .byte 0x0c, 0x02, 0x2d + .byte 0x3c, 0x3c, 0x2a + .byte 0x30, 0x30, 0x28 + .byte 0x25, 0x3f, 0x1e + .byte 0x03, 0x17, 0x1e + .byte 0x35, 0x11, 0x1c + .byte 0x1b, 0x14, 0x2a + .byte 0x28, 0x3a, 0x23 + .byte 0x0e, 0x1f, 0x12 + .byte 0x36, 0x21, 0x20 + .byte 0x07, 0x3b, 0x10 + .byte 0x23, 0x19, 0x34 + .byte 0x0d, 0x2e, 0x18 + .byte 0x3f, 0x20, 0x25 + .byte 0x3e, 0x3b, 0x15 + .byte 0x0b, 0x2e, 0x12 + .byte 0x37, 0x0b, 0x23 + .byte 0x3d, 0x32, 0x1f + .byte 0x16, 0x03, 0x27 + .byte 0x14, 0x0c, 0x21 + .byte 0x18, 0x03, 0x30 + .byte 0x3e, 0x21, 0x13 + .byte 0x0f, 0x00, 0x32 + .byte 0x3f, 0x23, 0x16 + .byte 0x0e, 0x31, 0x1d + .byte 0x18, 0x1c, 0x1d + .byte 0x30, 0x0e, 0x1e + .byte 0x21, 0x20, 0x23 + .byte 0x3f, 0x0c, 0x1e + .byte 0x14, 0x33, 0x22 + .byte 0x22, 0x21, 0x15 + .byte 0x36, 0x05, 0x1e + .byte 0x1d, 0x31, 0x14 + .byte 0x20, 0x11, 0x37 + .byte 0x0d, 0x33, 0x19 + .byte 0x25, 0x05, 0x36 + .byte 0x1e, 0x31, 0x20 + .byte 0x35, 0x3a, 0x2f + .byte 0x32, 0x2f, 0x30 + .byte 0x14, 0x23, 0x2d + .byte 0x35, 0x1e, 0x29 + .byte 0x05, 0x05, 0x1b + .byte 0x09, 0x1f, 0x26 + .byte 0x2f, 0x0b, 0x15 + .byte 0x15, 0x11, 0x13 + .byte 0x29, 0x1b, 0x18 + .byte 0x1c, 0x13, 0x35 + .byte 0x34, 0x31, 0x23 + .byte 0x27, 0x3f, 0x2f + .byte 0x09, 0x30, 0x19 + .byte 0x23, 0x12, 0x34 + .byte 0x02, 0x2a, 0x21 + .byte 0x09, 0x3c, 0x1d + .byte 0x0c, 0x02, 0x10 + .byte 0x22, 0x05, 0x17 + .byte 0x22, 0x08, 0x1b + .byte 0x0a, 0x0f, 0x15 + .byte 0x02, 0x11, 0x13 + .byte 0x01, 0x21, 0x22 + .byte 0x16, 0x39, 0x33 + .byte 0x24, 0x38, 0x34 + .byte 0x0f, 0x1e, 0x2b + .byte 0x2b, 0x15, 0x15 + .byte 0x20, 0x22, 0x2e + .byte 0x3a, 0x3f, 0x31 + .byte 0x1a, 0x27, 0x2b + .byte 0x29, 0x34, 0x14 + .byte 0x16, 0x39, 0x2f + .byte 0x13, 0x3e, 0x16 + .byte 0x36, 0x21, 0x30 + .byte 0x00, 0x24, 0x2b + .byte 0x24, 0x21, 0x30 + .byte 0x15, 0x31, 0x13 + .byte 0x10, 0x37, 0x24 + .byte 0x08, 0x07, 0x23 + .byte 0x21, 0x09, 0x25 + .byte 0x05, 0x3c, 0x32 + .byte 0x19, 0x03, 0x25 + .byte 0x0f, 0x29, 0x2b + .byte 0x16, 0x07, 0x13 + .byte 0x3e, 0x3d, 0x25 + .byte 0x36, 0x0b, 0x28 + .byte 0x2e, 0x2b, 0x16 + .byte 0x0c, 0x31, 0x11 + .byte 0x30, 0x13, 0x2d + .byte 0x26, 0x3e, 0x37 + .byte 0x29, 0x2f, 0x2e + .byte 0x15, 0x3d, 0x17 + .byte 0x1c, 0x2e, 0x21 + .byte 0x33, 0x2f, 0x10 + .byte 0x0d, 0x05, 0x1d + .byte 0x1c, 0x1a, 0x12 + .byte 0x0e, 0x18, 0x37 + .byte 0x1b, 0x11, 0x14 + .byte 0x06, 0x14, 0x21 + .byte 0x31, 0x0e, 0x27 + .byte 0x1a, 0x03, 0x10 + .byte 0x00, 0x34, 0x31 + .byte 0x3f, 0x0b, 0x1d + .byte 0x0f, 0x12, 0x1f + .byte 0x1a, 0x15, 0x10 + .byte 0x0f, 0x00, 0x24 + .byte 0x3e, 0x0a, 0x2a + .byte 0x30, 0x2b, 0x24 + .byte 0x26, 0x31, 0x10 + .byte 0x2d, 0x2f, 0x2f + .byte 0x3f, 0x0c, 0x13 + .byte 0x12, 0x0b, 0x16 + .byte 0x15, 0x07, 0x1f + .byte 0x28, 0x10, 0x32 + .byte 0x0f, 0x17, 0x15 + .byte 0x0b, 0x27, 0x33 + .byte 0x34, 0x1d, 0x10 + .byte 0x1c, 0x3a, 0x12 + .byte 0x2c, 0x27, 0x37 + .byte 0x0a, 0x1a, 0x32 + .byte 0x05, 0x1f, 0x21 + .byte 0x24, 0x0d, 0x1f + .byte 0x1c, 0x17, 0x24 + .byte 0x2f, 0x3b, 0x32 + .byte 0x3b, 0x25, 0x10 + .byte 0x03, 0x2f, 0x21 + .byte 0x0c, 0x10, 0x23 + .byte 0x0e, 0x3a, 0x2c + .byte 0x33, 0x03, 0x2c + .byte 0x12, 0x06, 0x1c + .byte 0x2a, 0x37, 0x30 + .byte 0x3f, 0x01, 0x1e + .byte 0x35, 0x16, 0x37 + .byte 0x2c, 0x32, 0x35 + .byte 0x05, 0x11, 0x22 + .byte 0x29, 0x09, 0x20 + .byte 0x2b, 0x0d, 0x1f + .byte 0x18, 0x0d, 0x20 + .byte 0x23, 0x39, 0x16 + .byte 0x0f, 0x3a, 0x18 + .byte 0x21, 0x35, 0x2b + .byte 0x36, 0x26, 0x2b + .byte 0x23, 0x05, 0x2f + .byte 0x1b, 0x08, 0x17 + .byte 0x3e, 0x09, 0x16 + .byte 0x2d, 0x3a, 0x37 + .byte 0x15, 0x35, 0x35 + .byte 0x29, 0x0a, 0x12 + .byte 0x02, 0x39, 0x1f + .byte 0x14, 0x34, 0x33 + .byte 0x17, 0x1d, 0x18 + .byte 0x16, 0x1d, 0x1a + .byte 0x01, 0x39, 0x22 + .byte 0x1e, 0x27, 0x36 + .byte 0x32, 0x14, 0x26 + .byte 0x0a, 0x39, 0x36 + .byte 0x1f, 0x0d, 0x1e + .byte 0x0b, 0x0a, 0x19 + .byte 0x35, 0x1d, 0x34 + .byte 0x03, 0x12, 0x16 + .byte 0x0c, 0x13, 0x2e + .byte 0x0c, 0x34, 0x1e + .byte 0x10, 0x14, 0x1e + .byte 0x23, 0x32, 0x27 + .byte 0x02, 0x10, 0x29 + .byte 0x35, 0x18, 0x33 + .byte 0x33, 0x1d, 0x1a + .byte 0x3c, 0x15, 0x23 + .byte 0x3e, 0x3f, 0x22 + .byte 0x2a, 0x02, 0x2c + .byte 0x28, 0x0a, 0x2f + .byte 0x1a, 0x06, 0x35 + .byte 0x3c, 0x17, 0x2b + .byte 0x03, 0x12, 0x17 + .byte 0x2f, 0x0a, 0x26 + .byte 0x12, 0x38, 0x11 + .byte 0x36, 0x1b, 0x23 + .byte 0x01, 0x39, 0x35 + .byte 0x19, 0x19, 0x17 + .byte 0x09, 0x28, 0x22 + .byte 0x1e, 0x27, 0x2c + .byte 0x35, 0x33, 0x2c + .byte 0x27, 0x25, 0x31 + .byte 0x06, 0x31, 0x2d + .byte 0x1a, 0x39, 0x28 + .byte 0x2d, 0x04, 0x1e + .byte 0x24, 0x3e, 0x1c + .byte 0x3c, 0x30, 0x1b + .byte 0x3f, 0x3e, 0x37 + .byte 0x22, 0x36, 0x11 + .byte 0x00, 0x01, 0x1c + .byte 0x12, 0x1a, 0x10 + .byte 0x12, 0x1e, 0x2c + .byte 0x1f, 0x12, 0x2a + .byte 0x2f, 0x06, 0x19 + .byte 0x35, 0x1a, 0x18 + .byte 0x3b, 0x09, 0x36 + .byte 0x34, 0x1d, 0x13 + .byte 0x02, 0x07, 0x10 + .byte 0x20, 0x2f, 0x1d + .byte 0x0b, 0x03, 0x33 + .byte 0x1c, 0x16, 0x31 + .byte 0x05, 0x13, 0x1b + .byte 0x29, 0x06, 0x13 + .byte 0x30, 0x2d, 0x36 + .byte 0x2a, 0x2d, 0x2c + .byte 0x19, 0x34, 0x1c + .byte 0x0f, 0x15, 0x12 + .byte 0x36, 0x15, 0x2c + .byte 0x3a, 0x06, 0x1c + .byte 0x12, 0x1d, 0x26 + .byte 0x03, 0x38, 0x1d + .byte 0x01, 0x01, 0x2d + .byte 0x17, 0x2e, 0x10 + .byte 0x14, 0x17, 0x1c + .byte 0x34, 0x0f, 0x28 + .byte 0x09, 0x37, 0x1b + .byte 0x28, 0x1d, 0x26 + .byte 0x29, 0x2d, 0x36 + .byte 0x1e, 0x17, 0x28 + .byte 0x15, 0x0f, 0x1c + .byte 0x20, 0x2d, 0x10 + .byte 0x27, 0x16, 0x2e + .byte 0x14, 0x09, 0x12 + .byte 0x3b, 0x3d, 0x21 + .byte 0x25, 0x1a, 0x2c + .byte 0x00, 0x22, 0x36 + .byte 0x0d, 0x30, 0x10 + .byte 0x17, 0x19, 0x1b + .byte 0x00, 0x3b, 0x21 + .byte 0x2a, 0x28, 0x34 + .byte 0x2d, 0x0f, 0x16 + .byte 0x0a, 0x30, 0x28 + .byte 0x06, 0x00, 0x25 + .byte 0x31, 0x2e, 0x2a + .byte 0x14, 0x33, 0x28 + .byte 0x36, 0x10, 0x2e + .byte 0x05, 0x2e, 0x19 + .byte 0x19, 0x1a, 0x15 + .byte 0x2c, 0x14, 0x17 + .byte 0x37, 0x0f, 0x13 + .byte 0x32, 0x17, 0x1b + .byte 0x39, 0x18, 0x32 + .byte 0x2e, 0x32, 0x1e + .byte 0x24, 0x1d, 0x31 + .byte 0x12, 0x1d, 0x2b + .byte 0x14, 0x0c, 0x27 + .byte 0x36, 0x2e, 0x32 + .byte 0x06, 0x0a, 0x1a + .byte 0x28, 0x28, 0x20 + .byte 0x3a, 0x3a, 0x17 + .byte 0x08, 0x27, 0x36 + .byte 0x18, 0x1a, 0x10 + .byte 0x1e, 0x26, 0x1b + .byte 0x1f, 0x33, 0x1f + .byte 0x21, 0x17, 0x2f + .byte 0x01, 0x08, 0x20 + .byte 0x35, 0x03, 0x19 + .byte 0x3b, 0x02, 0x20 + .byte 0x02, 0x2d, 0x23 + .byte 0x0e, 0x17, 0x32 + .byte 0x31, 0x29, 0x11 + .byte 0x22, 0x17, 0x22 + .byte 0x3a, 0x2c, 0x23 + .byte 0x34, 0x20, 0x18 + .byte 0x00, 0x3a, 0x22 + .byte 0x25, 0x33, 0x21 + .byte 0x33, 0x04, 0x27 + .byte 0x04, 0x18, 0x32 + .byte 0x2c, 0x0c, 0x2f + .byte 0x28, 0x14, 0x2c + .byte 0x3f, 0x30, 0x2b + .byte 0x30, 0x21, 0x1d + .byte 0x01, 0x25, 0x32 + .byte 0x05, 0x23, 0x34 + .byte 0x24, 0x10, 0x30 + .byte 0x3d, 0x14, 0x1b + .byte 0x3f, 0x38, 0x2f + .byte 0x22, 0x1b, 0x32 + .byte 0x25, 0x07, 0x37 + .byte 0x0a, 0x0c, 0x1d + .byte 0x03, 0x1e, 0x1a + .byte 0x0f, 0x3c, 0x12 + .byte 0x11, 0x18, 0x1d + .byte 0x00, 0x35, 0x2f + .byte 0x32, 0x18, 0x14 + .byte 0x23, 0x30, 0x1b + .byte 0x11, 0x3d, 0x12 + .byte 0x1a, 0x16, 0x35 + .byte 0x28, 0x05, 0x24 + .byte 0x17, 0x3d, 0x37 + .byte 0x2e, 0x09, 0x2e + .byte 0x18, 0x1d, 0x17 + .byte 0x20, 0x1f, 0x18 + .byte 0x23, 0x2c, 0x2f + .byte 0x20, 0x3f, 0x16 + .byte 0x3f, 0x29, 0x2e + .byte 0x23, 0x3b, 0x29 + .byte 0x18, 0x39, 0x13 + .byte 0x1e, 0x32, 0x35 + .byte 0x14, 0x1d, 0x2a + .byte 0x35, 0x01, 0x1d + .byte 0x3e, 0x3b, 0x1e + .byte 0x22, 0x1e, 0x16 + .byte 0x18, 0x22, 0x12 + .byte 0x3e, 0x29, 0x33 + .byte 0x2f, 0x14, 0x19 + .byte 0x3b, 0x07, 0x15 + .byte 0x06, 0x3d, 0x29 + .byte 0x35, 0x37, 0x23 + .byte 0x34, 0x1d, 0x2d + .byte 0x18, 0x12, 0x1b + .byte 0x0b, 0x13, 0x24 + .byte 0x13, 0x38, 0x1c + .byte 0x1f, 0x0b, 0x1b + .byte 0x13, 0x21, 0x1c + .byte 0x06, 0x39, 0x32 + .byte 0x37, 0x3d, 0x26 + .byte 0x29, 0x26, 0x15 + .byte 0x3c, 0x33, 0x27 + .byte 0x00, 0x01, 0x2e + .byte 0x15, 0x18, 0x31 + .byte 0x0d, 0x2c, 0x13 + .byte 0x27, 0x3b, 0x20 + .byte 0x2d, 0x01, 0x26 + .byte 0x23, 0x15, 0x30 + .byte 0x24, 0x00, 0x17 + .byte 0x37, 0x3f, 0x33 + .byte 0x25, 0x24, 0x31 + .byte 0x06, 0x3b, 0x37 + .byte 0x03, 0x18, 0x1a + .byte 0x2c, 0x34, 0x14 + .byte 0x1d, 0x36, 0x18 + .byte 0x3a, 0x04, 0x23 + .byte 0x12, 0x26, 0x15 + .byte 0x2b, 0x19, 0x1a + .byte 0x29, 0x2c, 0x36 + .byte 0x01, 0x19, 0x1d + .byte 0x2f, 0x06, 0x2b + .byte 0x0c, 0x12, 0x26 + .byte 0x36, 0x32, 0x1d + .byte 0x0d, 0x12, 0x28 + .byte 0x03, 0x28, 0x13 + .byte 0x29, 0x06, 0x17 + .byte 0x03, 0x38, 0x21 + .byte 0x30, 0x2c, 0x10 + .byte 0x22, 0x00, 0x28 + .byte 0x24, 0x3b, 0x1c + .byte 0x20, 0x3e, 0x13 + .byte 0x02, 0x0c, 0x19 + .byte 0x29, 0x2c, 0x1a + .byte 0x39, 0x30, 0x22 + .byte 0x2a, 0x1f, 0x22 + .byte 0x14, 0x34, 0x2c + .byte 0x14, 0x25, 0x1b + .byte 0x06, 0x3b, 0x15 + .byte 0x06, 0x1c, 0x13 + .byte 0x15, 0x03, 0x18 + .byte 0x1e, 0x2a, 0x1b + .byte 0x17, 0x25, 0x2f + .byte 0x1c, 0x29, 0x2e + .byte 0x02, 0x32, 0x1e + .byte 0x1d, 0x28, 0x35 + .byte 0x36, 0x03, 0x34 + .byte 0x16, 0x3d, 0x2a + .byte 0x12, 0x0d, 0x13 + .byte 0x1d, 0x2d, 0x21 + .byte 0x32, 0x17, 0x2e + .byte 0x1a, 0x15, 0x26 + .byte 0x22, 0x2f, 0x15 + .byte 0x3c, 0x0e, 0x20 + .byte 0x2f, 0x27, 0x13 + .byte 0x04, 0x09, 0x32 + .byte 0x1e, 0x01, 0x34 + .byte 0x06, 0x16, 0x1e + .byte 0x2e, 0x1b, 0x1c + .byte 0x28, 0x13, 0x2a + .byte 0x30, 0x34, 0x12 + .byte 0x12, 0x32, 0x18 + .byte 0x1d, 0x1d, 0x35 + .byte 0x07, 0x1c, 0x16 + .byte 0x2d, 0x3d, 0x35 + .byte 0x1c, 0x1b, 0x24 + .byte 0x21, 0x2d, 0x1e + .byte 0x10, 0x09, 0x14 + .byte 0x3d, 0x11, 0x12 + .byte 0x25, 0x02, 0x26 + .byte 0x23, 0x02, 0x19 + .byte 0x19, 0x05, 0x14 + .byte 0x0b, 0x21, 0x1a + .byte 0x09, 0x02, 0x2c + .byte 0x18, 0x28, 0x2d + .byte 0x1e, 0x10, 0x12 + .byte 0x2e, 0x18, 0x2e + .byte 0x1f, 0x02, 0x2c + .byte 0x14, 0x17, 0x24 + .byte 0x39, 0x08, 0x32 + .byte 0x16, 0x14, 0x22 + .byte 0x16, 0x28, 0x21 + .byte 0x11, 0x10, 0x2c + .byte 0x23, 0x36, 0x2b + .byte 0x39, 0x21, 0x26 + .byte 0x0e, 0x06, 0x2d + .byte 0x3c, 0x3e, 0x26 + .byte 0x2a, 0x1b, 0x1f + .byte 0x00, 0x3c, 0x33 + .byte 0x35, 0x3f, 0x14 + .byte 0x00, 0x0b, 0x10 + .byte 0x34, 0x3c, 0x17 + .byte 0x2d, 0x07, 0x1f + .byte 0x24, 0x39, 0x27 + .byte 0x16, 0x00, 0x1d + .byte 0x33, 0x2b, 0x1e + .byte 0x0f, 0x08, 0x31 + .byte 0x3a, 0x09, 0x13 + .byte 0x0c, 0x21, 0x1c + .byte 0x2a, 0x17, 0x34 + .byte 0x29, 0x27, 0x10 + .byte 0x37, 0x1b, 0x18 + .byte 0x15, 0x08, 0x2f + .byte 0x1f, 0x16, 0x12 + .byte 0x1f, 0x28, 0x34 + .byte 0x1c, 0x20, 0x22 + .byte 0x12, 0x01, 0x12 + .byte 0x21, 0x31, 0x10 + .byte 0x22, 0x26, 0x1e + .byte 0x01, 0x3d, 0x11 + .byte 0x1e, 0x27, 0x25 + .byte 0x3d, 0x30, 0x24 + .byte 0x1d, 0x11, 0x22 + .byte 0x36, 0x30, 0x16 + .byte 0x1f, 0x3e, 0x2a + .byte 0x3c, 0x27, 0x1b + .byte 0x1f, 0x29, 0x10 + .byte 0x1e, 0x05, 0x2a + .byte 0x0a, 0x10, 0x14 + .byte 0x1f, 0x00, 0x2e + .byte 0x0b, 0x3b, 0x18 + .byte 0x0a, 0x39, 0x30 + .byte 0x37, 0x0b, 0x1f + .byte 0x1d, 0x0a, 0x29 + .byte 0x3e, 0x1c, 0x33 + .byte 0x13, 0x2e, 0x28 + .byte 0x27, 0x1b, 0x1e + .byte 0x1d, 0x02, 0x1c + .byte 0x01, 0x25, 0x14 + .byte 0x3a, 0x10, 0x1c + .byte 0x12, 0x05, 0x2a + .byte 0x30, 0x20, 0x26 + .byte 0x2f, 0x2e, 0x2e + .byte 0x03, 0x07, 0x24 + .byte 0x36, 0x04, 0x2b + .byte 0x11, 0x25, 0x2d + .byte 0x28, 0x0e, 0x2e + .byte 0x0f, 0x1d, 0x15 + .byte 0x1c, 0x28, 0x30 + .byte 0x1f, 0x23, 0x26 + .byte 0x36, 0x12, 0x37 + .byte 0x3a, 0x31, 0x10 + .byte 0x2c, 0x2c, 0x2f + .byte 0x1a, 0x0d, 0x15 + .byte 0x3f, 0x3c, 0x32 + .byte 0x35, 0x1c, 0x16 + .byte 0x33, 0x16, 0x28 + .byte 0x1d, 0x3f, 0x21 + .byte 0x2c, 0x3e, 0x2b + .byte 0x24, 0x23, 0x2f + .byte 0x32, 0x15, 0x2a + .byte 0x1b, 0x10, 0x35 + .byte 0x18, 0x37, 0x10 + .byte 0x3b, 0x1e, 0x11 + .byte 0x2b, 0x16, 0x24 + .byte 0x1d, 0x16, 0x26 + .byte 0x3c, 0x2d, 0x11 + .byte 0x15, 0x28, 0x28 + .byte 0x27, 0x27, 0x27 + .byte 0x3b, 0x3a, 0x16 + .byte 0x1a, 0x0c, 0x1a + .byte 0x15, 0x08, 0x25 + .byte 0x0b, 0x10, 0x22 + .byte 0x1a, 0x3e, 0x17 + .byte 0x28, 0x1f, 0x1e + .byte 0x01, 0x1e, 0x1e + .byte 0x1c, 0x2f, 0x10 + .byte 0x25, 0x0b, 0x34 + .byte 0x3e, 0x0c, 0x1a + .byte 0x1b, 0x10, 0x2a + .byte 0x0f, 0x14, 0x17 + .byte 0x0f, 0x3f, 0x17 + .byte 0x03, 0x15, 0x1f + .byte 0x02, 0x36, 0x17 + .byte 0x15, 0x1d, 0x18 + .byte 0x08, 0x36, 0x10 + .byte 0x14, 0x0d, 0x2b + .byte 0x0a, 0x05, 0x1d + .byte 0x26, 0x12, 0x1e + .byte 0x3e, 0x18, 0x19 + .byte 0x36, 0x18, 0x37 + .byte 0x17, 0x39, 0x2e + .byte 0x0d, 0x04, 0x19 + .byte 0x16, 0x22, 0x15 + .byte 0x3e, 0x26, 0x1f + .byte 0x00, 0x06, 0x17 + .byte 0x33, 0x22, 0x1d + .byte 0x2b, 0x39, 0x2b + .byte 0x3e, 0x31, 0x1c + .byte 0x22, 0x3f, 0x13 + .byte 0x30, 0x1c, 0x31 + .byte 0x07, 0x2b, 0x14 + .byte 0x32, 0x35, 0x1e + .byte 0x02, 0x07, 0x20 + .byte 0x0f, 0x3b, 0x11 + .byte 0x20, 0x07, 0x12 + .byte 0x2a, 0x30, 0x1d + .byte 0x28, 0x38, 0x36 + .byte 0x20, 0x01, 0x17 + .byte 0x15, 0x20, 0x21 + .byte 0x3a, 0x1b, 0x1e + .byte 0x38, 0x12, 0x24 + .byte 0x03, 0x3e, 0x1f + .byte 0x29, 0x1d, 0x13 + .byte 0x20, 0x27, 0x19 + .byte 0x12, 0x25, 0x20 + .byte 0x32, 0x33, 0x2b + .byte 0x3f, 0x05, 0x31 + .byte 0x35, 0x3c, 0x2d + .byte 0x2d, 0x02, 0x2e + .byte 0x10, 0x2a, 0x16 + .byte 0x17, 0x08, 0x31 + .byte 0x17, 0x2e, 0x2b + .byte 0x30, 0x1e, 0x15 + .byte 0x31, 0x15, 0x26 + .byte 0x08, 0x10, 0x33 + .byte 0x15, 0x01, 0x27 + .byte 0x12, 0x07, 0x2f + .byte 0x29, 0x27, 0x34 + .byte 0x3f, 0x08, 0x31 + .byte 0x1c, 0x20, 0x1a + .byte 0x33, 0x0c, 0x13 + .byte 0x18, 0x31, 0x24 + .byte 0x37, 0x2d, 0x2e + .byte 0x21, 0x18, 0x24 + .byte 0x3a, 0x27, 0x31 + .byte 0x35, 0x3e, 0x30 + .byte 0x3a, 0x14, 0x33 + .byte 0x0f, 0x1a, 0x2d + .byte 0x30, 0x2e, 0x11 + .byte 0x1a, 0x31, 0x1d + .byte 0x17, 0x3c, 0x18 + .byte 0x33, 0x31, 0x23 + .byte 0x1d, 0x39, 0x2d + .byte 0x10, 0x1d, 0x2f + .byte 0x24, 0x15, 0x1c + .byte 0x25, 0x01, 0x2b + .byte 0x22, 0x16, 0x2e + .byte 0x1b, 0x25, 0x35 + .byte 0x37, 0x10, 0x26 + .byte 0x39, 0x01, 0x36 + .byte 0x17, 0x2b, 0x14 + .byte 0x09, 0x16, 0x17 + .byte 0x20, 0x28, 0x23 + .byte 0x26, 0x3a, 0x26 + .byte 0x27, 0x2a, 0x24 + .byte 0x36, 0x02, 0x2c + .byte 0x29, 0x30, 0x35 + .byte 0x36, 0x01, 0x1f + .byte 0x28, 0x3b, 0x1d + .byte 0x23, 0x1e, 0x2d + .byte 0x11, 0x1e, 0x2c + .byte 0x2f, 0x32, 0x19 + .byte 0x3f, 0x26, 0x31 + .byte 0x38, 0x1e, 0x17 + .byte 0x05, 0x18, 0x2e + .byte 0x00, 0x2e, 0x12 + .byte 0x34, 0x3f, 0x34 + .byte 0x16, 0x10, 0x29 + .byte 0x20, 0x3d, 0x36 + .byte 0x2f, 0x16, 0x25 + .byte 0x12, 0x17, 0x10 + .byte 0x21, 0x37, 0x35 + .byte 0x25, 0x37, 0x2d + .byte 0x01, 0x08, 0x27 + .byte 0x03, 0x1f, 0x29 + .byte 0x0d, 0x2a, 0x16 + .byte 0x3a, 0x3f, 0x33 + .byte 0x2b, 0x19, 0x1d + .byte 0x2a, 0x1f, 0x29 + .byte 0x28, 0x2c, 0x10 + .byte 0x28, 0x30, 0x10 + .byte 0x39, 0x14, 0x1b + .byte 0x00, 0x18, 0x21 + .byte 0x28, 0x0c, 0x37 + .byte 0x11, 0x10, 0x11 + .byte 0x3c, 0x33, 0x32 + .byte 0x33, 0x36, 0x1a + .byte 0x36, 0x00, 0x1c + .byte 0x31, 0x1b, 0x1d + .byte 0x38, 0x1d, 0x10 + .byte 0x3c, 0x39, 0x27 + .byte 0x3a, 0x3f, 0x14 + .byte 0x19, 0x12, 0x14 + .byte 0x0d, 0x1f, 0x18 + .byte 0x00, 0x25, 0x18 + .byte 0x28, 0x1c, 0x32 + .byte 0x27, 0x03, 0x1a + .byte 0x26, 0x2d, 0x2a + .byte 0x29, 0x28, 0x27 + .byte 0x0a, 0x2a, 0x18 + .byte 0x0a, 0x1a, 0x30 + .byte 0x20, 0x1a, 0x2e + .byte 0x06, 0x0b, 0x1d + .byte 0x0f, 0x0c, 0x1c + .byte 0x35, 0x28, 0x1c + .byte 0x3d, 0x16, 0x23 + .byte 0x21, 0x1c, 0x31 + .byte 0x14, 0x1c, 0x2e + .byte 0x22, 0x32, 0x35 + .byte 0x09, 0x29, 0x30 + .byte 0x20, 0x1a, 0x10 + .byte 0x31, 0x3f, 0x2c + .byte 0x0a, 0x3d, 0x37 + .byte 0x0b, 0x2e, 0x2d + .byte 0x1f, 0x22, 0x31 + .byte 0x06, 0x07, 0x29 + .byte 0x22, 0x17, 0x2d + .byte 0x30, 0x11, 0x18 + .byte 0x0c, 0x19, 0x15 + .byte 0x07, 0x0a, 0x34 + .byte 0x18, 0x29, 0x27 + .byte 0x33, 0x0c, 0x30 + .byte 0x03, 0x1a, 0x37 + .byte 0x06, 0x01, 0x2d + .byte 0x0f, 0x3b, 0x2b + .byte 0x11, 0x1f, 0x37 + .byte 0x2b, 0x21, 0x36 + .byte 0x3f, 0x23, 0x17 + .byte 0x17, 0x07, 0x2b + .byte 0x2b, 0x0e, 0x30 + .byte 0x11, 0x39, 0x1d + .byte 0x29, 0x03, 0x33 + .byte 0x30, 0x03, 0x2f + .byte 0x3c, 0x20, 0x26 + .byte 0x03, 0x22, 0x14 + .byte 0x3a, 0x28, 0x35 + .byte 0x01, 0x28, 0x2b + .byte 0x3e, 0x15, 0x18 + .byte 0x30, 0x07, 0x17 + .byte 0x3b, 0x2c, 0x30 + .byte 0x15, 0x07, 0x2c + .byte 0x17, 0x27, 0x1d + .byte 0x3f, 0x1e, 0x33 + .byte 0x0d, 0x17, 0x10 + .byte 0x15, 0x0e, 0x30 + .byte 0x09, 0x05, 0x30 + .byte 0x2d, 0x20, 0x15 + .byte 0x3c, 0x3d, 0x30 + .byte 0x0c, 0x17, 0x1c + .byte 0x1a, 0x0d, 0x25 + .byte 0x2b, 0x2b, 0x2a + .byte 0x02, 0x16, 0x2d + .byte 0x17, 0x31, 0x17 + .byte 0x00, 0x08, 0x13 + .byte 0x37, 0x35, 0x21 + .byte 0x1e, 0x1c, 0x1f + .byte 0x2b, 0x32, 0x1c + .byte 0x10, 0x2a, 0x16 + .byte 0x3a, 0x33, 0x31 + .byte 0x17, 0x2b, 0x2a + .byte 0x0c, 0x3d, 0x11 + .byte 0x28, 0x0a, 0x30 + .byte 0x23, 0x0a, 0x26 + .byte 0x0a, 0x14, 0x24 + .byte 0x0b, 0x0f, 0x30 + .byte 0x1b, 0x1e, 0x29 + .byte 0x02, 0x35, 0x28 + .byte 0x3b, 0x02, 0x14 + .byte 0x00, 0x0f, 0x35 + .byte 0x1c, 0x3c, 0x2e + .byte 0x28, 0x38, 0x19 + .byte 0x1b, 0x11, 0x12 + .byte 0x09, 0x16, 0x10 + .byte 0x2e, 0x0d, 0x20 + .byte 0x3d, 0x04, 0x32 + .byte 0x16, 0x2c, 0x25 + .byte 0x02, 0x3d, 0x18 + .byte 0x0b, 0x13, 0x1c + .byte 0x22, 0x2a, 0x1c + .byte 0x20, 0x27, 0x22 + .byte 0x05, 0x26, 0x22 + .byte 0x12, 0x1d, 0x2c + .byte 0x08, 0x05, 0x2e + .byte 0x3f, 0x1c, 0x17 + .byte 0x24, 0x0d, 0x33 + .byte 0x36, 0x08, 0x24 + .byte 0x10, 0x22, 0x29 + .byte 0x1c, 0x0a, 0x11 + .byte 0x25, 0x0f, 0x10 + .byte 0x24, 0x38, 0x2f + .byte 0x25, 0x32, 0x1e + .byte 0x06, 0x2a, 0x29 + .byte 0x3e, 0x3a, 0x28 + .byte 0x34, 0x17, 0x33 + .byte 0x18, 0x33, 0x17 + .byte 0x07, 0x14, 0x1f + .byte 0x11, 0x17, 0x20 + .byte 0x13, 0x0e, 0x14 + .byte 0x3b, 0x1c, 0x12 + .byte 0x2a, 0x13, 0x37 + .byte 0x2a, 0x35, 0x32 + .byte 0x30, 0x02, 0x25 + .byte 0x00, 0x07, 0x1f + .byte 0x0c, 0x04, 0x2c + .byte 0x37, 0x37, 0x30 + .byte 0x25, 0x12, 0x25 + .byte 0x12, 0x22, 0x21 + .byte 0x22, 0x35, 0x33 + .byte 0x07, 0x20, 0x2d + .byte 0x27, 0x0e, 0x30 + .byte 0x34, 0x19, 0x1a + .byte 0x0a, 0x3c, 0x25 + .byte 0x07, 0x1d, 0x2b + .byte 0x31, 0x3a, 0x12 + .byte 0x1a, 0x3d, 0x37 + .byte 0x16, 0x15, 0x16 + .byte 0x39, 0x13, 0x15 + .byte 0x2d, 0x03, 0x2e + .byte 0x06, 0x39, 0x2c + .byte 0x16, 0x00, 0x13 + .byte 0x35, 0x2a, 0x35 + .byte 0x24, 0x01, 0x18 + .byte 0x24, 0x37, 0x28 + .byte 0x25, 0x1b, 0x34 + .byte 0x25, 0x19, 0x17 + .byte 0x27, 0x2f, 0x1b + .byte 0x27, 0x0d, 0x10 + .byte 0x36, 0x3c, 0x30 + .byte 0x3c, 0x33, 0x23 + .byte 0x3e, 0x27, 0x1e + .byte 0x25, 0x2d, 0x29 + .byte 0x1f, 0x12, 0x21 + .byte 0x37, 0x32, 0x1f + .byte 0x11, 0x21, 0x35 + .byte 0x30, 0x0c, 0x19 + .byte 0x25, 0x3d, 0x26 + .byte 0x17, 0x02, 0x1d + .byte 0x14, 0x2e, 0x11 + .byte 0x38, 0x13, 0x30 + .byte 0x0a, 0x2b, 0x20 + .byte 0x1e, 0x10, 0x15 + .byte 0x37, 0x30, 0x2e + .byte 0x1e, 0x04, 0x2c + .byte 0x14, 0x34, 0x19 + .byte 0x08, 0x14, 0x18 + .byte 0x0e, 0x1c, 0x30 + .byte 0x1a, 0x2e, 0x1b + .byte 0x1f, 0x39, 0x31 + .byte 0x0c, 0x1c, 0x28 + .byte 0x3e, 0x33, 0x23 + .byte 0x0f, 0x13, 0x16 + .byte 0x25, 0x39, 0x2f + .byte 0x14, 0x1b, 0x1a + .byte 0x28, 0x3e, 0x21 + .byte 0x2d, 0x19, 0x11 + .byte 0x0c, 0x34, 0x32 + .byte 0x39, 0x31, 0x19 + .byte 0x1a, 0x08, 0x34 + .byte 0x09, 0x2f, 0x11 + .byte 0x30, 0x04, 0x1c + .byte 0x02, 0x3b, 0x1b + .byte 0x33, 0x21, 0x33 + .byte 0x38, 0x02, 0x1a + .byte 0x31, 0x38, 0x32 + .byte 0x1f, 0x1d, 0x16 + .byte 0x17, 0x10, 0x1b + .byte 0x32, 0x20, 0x17 + .byte 0x00, 0x33, 0x12 + .byte 0x21, 0x0f, 0x27 + .byte 0x14, 0x19, 0x27 + .byte 0x24, 0x2c, 0x37 + .byte 0x25, 0x05, 0x2f + .byte 0x3d, 0x25, 0x11 + .byte 0x12, 0x30, 0x1a + .byte 0x16, 0x03, 0x1a + .byte 0x14, 0x09, 0x13 + .byte 0x02, 0x23, 0x22 + .byte 0x01, 0x3c, 0x10 + .byte 0x3f, 0x2d, 0x23 + .byte 0x31, 0x3f, 0x23 + .byte 0x17, 0x00, 0x33 + .byte 0x3f, 0x0f, 0x2f + .byte 0x26, 0x07, 0x15 + .byte 0x21, 0x2b, 0x2a + .byte 0x38, 0x39, 0x1e + .byte 0x09, 0x25, 0x2b + .byte 0x3b, 0x30, 0x25 + .byte 0x12, 0x2d, 0x13 + .byte 0x32, 0x19, 0x28 + .byte 0x24, 0x1c, 0x2d + .byte 0x35, 0x32, 0x26 + .byte 0x0d, 0x23, 0x1e + .byte 0x1d, 0x07, 0x21 + .byte 0x0b, 0x34, 0x17 + .byte 0x2d, 0x32, 0x32 + .byte 0x3a, 0x3c, 0x35 + .byte 0x1a, 0x10, 0x33 + .byte 0x1a, 0x07, 0x22 + .byte 0x3b, 0x1b, 0x2a + .byte 0x33, 0x1f, 0x26 + .byte 0x0e, 0x35, 0x1a + .byte 0x3b, 0x0a, 0x1c + .byte 0x11, 0x07, 0x11 + .byte 0x0d, 0x3c, 0x2d + .byte 0x1e, 0x37, 0x29 + .byte 0x11, 0x05, 0x12 + .byte 0x15, 0x2f, 0x1c + .byte 0x24, 0x31, 0x16 + .byte 0x2b, 0x21, 0x1b + .byte 0x23, 0x10, 0x31 + .byte 0x02, 0x14, 0x29 + .byte 0x26, 0x20, 0x16 + .byte 0x10, 0x17, 0x10 + .byte 0x0b, 0x0f, 0x33 + .byte 0x01, 0x2e, 0x14 + .byte 0x21, 0x0e, 0x37 + .byte 0x1a, 0x1d, 0x2f + .byte 0x1e, 0x30, 0x24 + .byte 0x04, 0x14, 0x2d + .byte 0x11, 0x00, 0x30 + .byte 0x08, 0x2a, 0x1d + .byte 0x1d, 0x22, 0x21 + .byte 0x24, 0x2c, 0x37 + .byte 0x24, 0x11, 0x12 + .byte 0x04, 0x2e, 0x28 + .byte 0x1d, 0x18, 0x23 + .byte 0x3c, 0x16, 0x16 + .byte 0x10, 0x17, 0x31 + .byte 0x20, 0x21, 0x12 + .byte 0x33, 0x3e, 0x34 + .byte 0x06, 0x13, 0x13 + .byte 0x17, 0x38, 0x2b + .byte 0x14, 0x0d, 0x15 + .byte 0x24, 0x3b, 0x2b + .byte 0x34, 0x3b, 0x1e + .byte 0x18, 0x07, 0x34 + .byte 0x37, 0x1d, 0x1f + .byte 0x0b, 0x29, 0x20 + .byte 0x12, 0x1e, 0x1d + .byte 0x1a, 0x24, 0x24 + .byte 0x3d, 0x28, 0x24 + .byte 0x0b, 0x12, 0x33 + .byte 0x1b, 0x3a, 0x22 + .byte 0x14, 0x13, 0x2a + .byte 0x31, 0x38, 0x15 + .byte 0x37, 0x2b, 0x2e + .byte 0x19, 0x1e, 0x2c + .byte 0x3f, 0x1b, 0x2a + .byte 0x33, 0x1f, 0x33 + .byte 0x3f, 0x15, 0x29 + .byte 0x01, 0x1e, 0x18 + .byte 0x1f, 0x22, 0x19 + .byte 0x33, 0x3c, 0x34 + .byte 0x1e, 0x12, 0x22 + .byte 0x0d, 0x37, 0x2c + .byte 0x0f, 0x08, 0x31 + .byte 0x2e, 0x09, 0x36 + .byte 0x01, 0x05, 0x1e + .byte 0x1c, 0x04, 0x1e + .byte 0x0c, 0x01, 0x1c + .byte 0x29, 0x28, 0x2f + .byte 0x39, 0x2d, 0x14 + .byte 0x09, 0x22, 0x36 + .byte 0x04, 0x37, 0x37 + .byte 0x2d, 0x2f, 0x35 + .byte 0x24, 0x23, 0x1b + .byte 0x08, 0x20, 0x32 + .byte 0x20, 0x1f, 0x34 + .byte 0x02, 0x31, 0x19 + .byte 0x18, 0x13, 0x36 + .byte 0x06, 0x2b, 0x1e + .byte 0x0e, 0x1b, 0x10 + .byte 0x2f, 0x0e, 0x1c + .byte 0x11, 0x38, 0x13 + .byte 0x01, 0x37, 0x19 + .byte 0x14, 0x11, 0x26 + .byte 0x31, 0x3d, 0x33 + .byte 0x1d, 0x1b, 0x34 + .byte 0x25, 0x31, 0x2f + .byte 0x11, 0x0a, 0x2f + .byte 0x39, 0x17, 0x1b + .byte 0x05, 0x0e, 0x13 + .byte 0x29, 0x25, 0x22 + .byte 0x15, 0x0d, 0x20 + .byte 0x2b, 0x27, 0x21 + .byte 0x3e, 0x24, 0x27 + .byte 0x2a, 0x2b, 0x16 + .byte 0x24, 0x3d, 0x15 + .byte 0x15, 0x30, 0x31 + .byte 0x0f, 0x33, 0x24 + .byte 0x06, 0x16, 0x13 + .byte 0x06, 0x31, 0x10 + .byte 0x2e, 0x3f, 0x10 + .byte 0x05, 0x0d, 0x2f + .byte 0x3c, 0x1f, 0x19 + .byte 0x12, 0x13, 0x24 + .byte 0x0f, 0x33, 0x36 + .byte 0x15, 0x3b, 0x33 + .byte 0x03, 0x0f, 0x2a + .byte 0x3b, 0x3c, 0x2c + .byte 0x36, 0x09, 0x29 + .byte 0x11, 0x3b, 0x27 + .byte 0x28, 0x2b, 0x31 + .byte 0x1a, 0x0e, 0x2f + .byte 0x39, 0x2c, 0x31 + .byte 0x0e, 0x3c, 0x35 + .byte 0x2c, 0x24, 0x33 + .byte 0x3d, 0x11, 0x2b + .byte 0x07, 0x3c, 0x37 + .byte 0x14, 0x18, 0x13 + .byte 0x1d, 0x3f, 0x2e + .byte 0x30, 0x12, 0x25 + .byte 0x26, 0x1d, 0x11 + .byte 0x07, 0x11, 0x1e + .byte 0x34, 0x01, 0x11 + .byte 0x0b, 0x39, 0x21 + .byte 0x29, 0x02, 0x29 + .byte 0x15, 0x10, 0x1a + .byte 0x30, 0x1f, 0x35 + .byte 0x3c, 0x2b, 0x2a + .byte 0x30, 0x3b, 0x36 + .byte 0x20, 0x1a, 0x23 + .byte 0x32, 0x24, 0x2b + .byte 0x15, 0x20, 0x1c + .byte 0x25, 0x3d, 0x36 + .byte 0x2d, 0x14, 0x31 + .byte 0x18, 0x23, 0x17 + .byte 0x18, 0x05, 0x13 + .byte 0x34, 0x30, 0x37 + .byte 0x0e, 0x39, 0x23 + .byte 0x1d, 0x1f, 0x17 + .byte 0x01, 0x15, 0x2f + .byte 0x0b, 0x3e, 0x1b + .byte 0x0d, 0x19, 0x2e + .byte 0x31, 0x38, 0x1c + .byte 0x15, 0x34, 0x15 + .byte 0x13, 0x19, 0x29 + .byte 0x19, 0x14, 0x27 + .byte 0x15, 0x18, 0x23 + .byte 0x29, 0x0c, 0x27 + .byte 0x2d, 0x0e, 0x17 + .byte 0x34, 0x18, 0x10 + .byte 0x3b, 0x1e, 0x29 + .byte 0x34, 0x2c, 0x22 + .byte 0x31, 0x08, 0x13 + .byte 0x1d, 0x18, 0x1a + .byte 0x1c, 0x0b, 0x2a + .byte 0x19, 0x1e, 0x1a + .byte 0x23, 0x27, 0x17 + .byte 0x3b, 0x0e, 0x37 + .byte 0x19, 0x2b, 0x16 + .byte 0x2f, 0x08, 0x21 + .byte 0x37, 0x02, 0x20 + .byte 0x0b, 0x32, 0x30 + .byte 0x16, 0x05, 0x30 + .byte 0x13, 0x05, 0x1a + .byte 0x07, 0x39, 0x19 + .byte 0x0c, 0x3b, 0x2a + .byte 0x15, 0x05, 0x30 + .byte 0x30, 0x05, 0x19 + .byte 0x13, 0x00, 0x12 + .byte 0x27, 0x16, 0x2a + .byte 0x0f, 0x28, 0x27 + .byte 0x0c, 0x23, 0x2f + .byte 0x39, 0x28, 0x2a + .byte 0x24, 0x25, 0x1f + .byte 0x18, 0x29, 0x14 + .byte 0x16, 0x05, 0x1a + .byte 0x35, 0x2f, 0x26 + .byte 0x0a, 0x3a, 0x29 + .byte 0x34, 0x2c, 0x36 + .byte 0x2e, 0x3a, 0x15 + .byte 0x1a, 0x0a, 0x2d + .byte 0x16, 0x14, 0x2e + .byte 0x35, 0x28, 0x2a + .byte 0x35, 0x0f, 0x11 + .byte 0x11, 0x32, 0x19 + .byte 0x20, 0x1a, 0x28 + .byte 0x17, 0x1a, 0x28 + .byte 0x16, 0x33, 0x25 + .byte 0x13, 0x2c, 0x29 + .byte 0x09, 0x16, 0x33 + .byte 0x1d, 0x27, 0x26 + .byte 0x15, 0x0c, 0x2f + .byte 0x22, 0x1c, 0x19 + .byte 0x29, 0x33, 0x10 + .byte 0x2d, 0x11, 0x1b + .byte 0x16, 0x19, 0x2e + .byte 0x0d, 0x0c, 0x28 + .byte 0x37, 0x3a, 0x34 + .byte 0x2a, 0x1d, 0x37 + .byte 0x30, 0x0a, 0x36 + .byte 0x24, 0x39, 0x1b + .byte 0x39, 0x0a, 0x32 + .byte 0x11, 0x03, 0x2d + .byte 0x32, 0x1d, 0x30 + .byte 0x38, 0x1e, 0x27 + .byte 0x2e, 0x17, 0x18 + .byte 0x16, 0x17, 0x2a + .byte 0x36, 0x3b, 0x31 + .byte 0x17, 0x04, 0x19 + .byte 0x3a, 0x25, 0x2d + .byte 0x00, 0x36, 0x27 + .byte 0x25, 0x12, 0x33 + .byte 0x06, 0x0a, 0x14 + .byte 0x11, 0x05, 0x2f + .byte 0x03, 0x35, 0x2f + .byte 0x0b, 0x34, 0x29 + .byte 0x00, 0x31, 0x13 + .byte 0x27, 0x0f, 0x1c + .byte 0x1d, 0x06, 0x2d + .byte 0x1c, 0x30, 0x27 + .byte 0x2f, 0x2a, 0x27 + .byte 0x16, 0x20, 0x31 + .byte 0x33, 0x2b, 0x2b + .byte 0x05, 0x30, 0x36 + .byte 0x29, 0x23, 0x35 + .byte 0x10, 0x16, 0x2f + .byte 0x2d, 0x20, 0x29 + .byte 0x37, 0x13, 0x24 + .byte 0x2d, 0x0e, 0x25 + .byte 0x08, 0x0a, 0x18 + .byte 0x0f, 0x03, 0x1b + .byte 0x31, 0x0c, 0x37 + .byte 0x1e, 0x34, 0x31 + .byte 0x1b, 0x0e, 0x25 + .byte 0x1a, 0x07, 0x34 + .byte 0x0d, 0x3c, 0x33 + .byte 0x00, 0x3a, 0x36 + .byte 0x04, 0x27, 0x12 + .byte 0x23, 0x18, 0x24 + .byte 0x0d, 0x0b, 0x18 + .byte 0x31, 0x32, 0x37 + .byte 0x00, 0x0d, 0x21 + .byte 0x32, 0x10, 0x12 + .byte 0x26, 0x0d, 0x19 + .byte 0x29, 0x24, 0x2b + .byte 0x3d, 0x21, 0x1f + .byte 0x1e, 0x1b, 0x28 + .byte 0x0d, 0x12, 0x28 + .byte 0x35, 0x1e, 0x23 + .byte 0x0a, 0x2e, 0x22 + .byte 0x27, 0x27, 0x35 + .byte 0x01, 0x0e, 0x20 + .byte 0x31, 0x39, 0x29 + .byte 0x3b, 0x24, 0x36 + .byte 0x14, 0x10, 0x33 + .byte 0x18, 0x2c, 0x26 + .byte 0x04, 0x2d, 0x15 + .byte 0x1a, 0x11, 0x37 + .byte 0x0f, 0x0b, 0x14 + .byte 0x0e, 0x2c, 0x2c + .byte 0x21, 0x17, 0x2c + .byte 0x16, 0x21, 0x35 + .byte 0x3e, 0x10, 0x10 + .byte 0x0a, 0x05, 0x1e + .byte 0x3b, 0x09, 0x13 + .byte 0x26, 0x18, 0x1e + .byte 0x23, 0x0c, 0x1a + .byte 0x33, 0x37, 0x1f + .byte 0x09, 0x12, 0x35 + .byte 0x3d, 0x0d, 0x15 + .byte 0x36, 0x06, 0x24 + .byte 0x33, 0x30, 0x29 + .byte 0x3b, 0x0f, 0x28 + .byte 0x34, 0x2a, 0x2c + .byte 0x02, 0x12, 0x35 + .byte 0x09, 0x22, 0x31 + .byte 0x3b, 0x31, 0x1c + .byte 0x33, 0x22, 0x27 + .byte 0x3d, 0x34, 0x15 + .byte 0x14, 0x22, 0x28 + .byte 0x28, 0x10, 0x1e + .byte 0x21, 0x31, 0x10 + .byte 0x2d, 0x16, 0x21 + .byte 0x1e, 0x05, 0x33 + .byte 0x0f, 0x30, 0x31 + .byte 0x0e, 0x1a, 0x35 + .byte 0x38, 0x2e, 0x28 + .byte 0x26, 0x37, 0x1e + .byte 0x2b, 0x13, 0x33 + .byte 0x1f, 0x1e, 0x37 + .byte 0x0a, 0x28, 0x24 + .byte 0x32, 0x1c, 0x1a + .byte 0x1f, 0x3f, 0x19 + .byte 0x39, 0x39, 0x29 + .byte 0x2c, 0x1b, 0x14 + .byte 0x15, 0x2a, 0x17 + .byte 0x32, 0x0f, 0x21 + .byte 0x30, 0x21, 0x18 + .byte 0x23, 0x2a, 0x27 + .byte 0x3d, 0x07, 0x10 + .byte 0x0b, 0x3f, 0x2f + .byte 0x31, 0x02, 0x2e + .byte 0x08, 0x39, 0x2f + .byte 0x3f, 0x20, 0x18 + .byte 0x2d, 0x34, 0x11 + .byte 0x2e, 0x34, 0x10 + .byte 0x26, 0x12, 0x23 + .byte 0x25, 0x0a, 0x37 + .byte 0x34, 0x09, 0x25 + .byte 0x0a, 0x3e, 0x16 + .byte 0x1a, 0x17, 0x11 + .byte 0x38, 0x1c, 0x20 + .byte 0x11, 0x21, 0x26 + .byte 0x05, 0x0f, 0x18 + .byte 0x26, 0x2b, 0x32 + .byte 0x0a, 0x0c, 0x16 + .byte 0x03, 0x29, 0x1d + .byte 0x29, 0x3b, 0x23 + .byte 0x16, 0x1b, 0x29 + .byte 0x07, 0x09, 0x17 + .byte 0x17, 0x2c, 0x1c + .byte 0x35, 0x33, 0x30 + .byte 0x17, 0x12, 0x1e + .byte 0x3d, 0x1a, 0x2b + .byte 0x21, 0x1d, 0x10 + .byte 0x0a, 0x08, 0x17 + .byte 0x14, 0x3c, 0x36 + .byte 0x28, 0x36, 0x36 + .byte 0x3b, 0x20, 0x1b + .byte 0x13, 0x22, 0x1d + .byte 0x13, 0x3a, 0x15 + .byte 0x02, 0x23, 0x2c + .byte 0x3e, 0x19, 0x14 + .byte 0x39, 0x3c, 0x1a + .byte 0x10, 0x08, 0x1e + .byte 0x0a, 0x13, 0x29 + .byte 0x3f, 0x38, 0x2c + .byte 0x07, 0x23, 0x1f + .byte 0x19, 0x2a, 0x24 + .byte 0x14, 0x3c, 0x1f + .byte 0x0d, 0x04, 0x37 + .byte 0x1a, 0x2f, 0x28 + .byte 0x2a, 0x1d, 0x1e + .byte 0x11, 0x37, 0x29 + .byte 0x28, 0x27, 0x12 + .byte 0x0d, 0x00, 0x26 + .byte 0x0a, 0x3c, 0x26 + .byte 0x1f, 0x1c, 0x33 + .byte 0x04, 0x3a, 0x2c + .byte 0x24, 0x3d, 0x2b + .byte 0x26, 0x31, 0x2f + .byte 0x13, 0x1c, 0x21 + .byte 0x3e, 0x12, 0x23 + .byte 0x36, 0x0a, 0x1a + .byte 0x2d, 0x1e, 0x19 + .byte 0x05, 0x1f, 0x1b + .byte 0x1e, 0x0a, 0x1f + .byte 0x20, 0x08, 0x24 + .byte 0x2c, 0x0c, 0x33 + .byte 0x1d, 0x1f, 0x11 + .byte 0x0e, 0x12, 0x10 + .byte 0x27, 0x12, 0x19 + .byte 0x2a, 0x13, 0x31 + .byte 0x1c, 0x04, 0x30 + .byte 0x1a, 0x38, 0x1f + .byte 0x2c, 0x35, 0x25 + .byte 0x07, 0x0b, 0x33 + .byte 0x2d, 0x02, 0x1a + .byte 0x2a, 0x35, 0x35 + .byte 0x16, 0x2f, 0x14 + .byte 0x11, 0x31, 0x33 + .byte 0x2c, 0x31, 0x1e + .byte 0x3c, 0x3a, 0x27 + .byte 0x3c, 0x2b, 0x12 + .byte 0x27, 0x1d, 0x12 + .byte 0x36, 0x2c, 0x2b + .byte 0x25, 0x3b, 0x35 + .byte 0x12, 0x3d, 0x27 + .byte 0x13, 0x23, 0x19 + .byte 0x33, 0x2c, 0x26 + .byte 0x09, 0x3c, 0x12 + .byte 0x15, 0x1a, 0x23 + .byte 0x21, 0x07, 0x1a + .byte 0x22, 0x25, 0x20 + .byte 0x19, 0x1b, 0x2c + .byte 0x3a, 0x19, 0x35 + .byte 0x05, 0x26, 0x1d + .byte 0x23, 0x22, 0x25 + .byte 0x0e, 0x1e, 0x11 + .byte 0x13, 0x30, 0x12 + .byte 0x2c, 0x22, 0x25 + .byte 0x0a, 0x1d, 0x18 + .byte 0x23, 0x3e, 0x1d + .byte 0x02, 0x28, 0x25 + .byte 0x21, 0x0e, 0x20 + .byte 0x21, 0x22, 0x37 + .byte 0x18, 0x33, 0x27 + .byte 0x23, 0x23, 0x31 + .byte 0x24, 0x1a, 0x1a + .byte 0x3e, 0x25, 0x24 + .byte 0x24, 0x01, 0x18 + .byte 0x34, 0x10, 0x22 + .byte 0x07, 0x00, 0x37 + .byte 0x06, 0x20, 0x20 + .byte 0x3a, 0x02, 0x2b + .byte 0x07, 0x2c, 0x2c + .byte 0x09, 0x2f, 0x2a + .byte 0x01, 0x32, 0x2c + .byte 0x00, 0x35, 0x13 + .byte 0x2b, 0x3c, 0x1f + .byte 0x36, 0x37, 0x1e + .byte 0x20, 0x35, 0x1d + .byte 0x0c, 0x07, 0x33 + .byte 0x16, 0x08, 0x12 + .byte 0x3f, 0x36, 0x11 + .byte 0x0b, 0x1f, 0x2d + .byte 0x21, 0x20, 0x33 + .byte 0x17, 0x1a, 0x2e + .byte 0x16, 0x01, 0x2f + .byte 0x2f, 0x1c, 0x34 + .byte 0x29, 0x31, 0x2e + .byte 0x3b, 0x38, 0x31 + .byte 0x0d, 0x16, 0x12 + .byte 0x07, 0x29, 0x24 + .byte 0x33, 0x3c, 0x34 + .byte 0x3e, 0x1e, 0x18 + .byte 0x30, 0x02, 0x34 + .byte 0x2a, 0x34, 0x1b + .byte 0x2e, 0x23, 0x18 + .byte 0x34, 0x00, 0x1f + .byte 0x20, 0x0e, 0x28 + .byte 0x15, 0x33, 0x37 + .byte 0x27, 0x35, 0x23 + .byte 0x37, 0x3e, 0x11 + .byte 0x32, 0x2e, 0x36 + .byte 0x3a, 0x02, 0x2b + .byte 0x00, 0x36, 0x1d + .byte 0x13, 0x29, 0x16 + .byte 0x08, 0x2b, 0x37 + .byte 0x08, 0x02, 0x27 + .byte 0x32, 0x2d, 0x34 + .byte 0x30, 0x36, 0x29 + .byte 0x2e, 0x10, 0x12 + .byte 0x3c, 0x2e, 0x2a + .byte 0x04, 0x33, 0x30 + .byte 0x3f, 0x01, 0x22 + .byte 0x37, 0x14, 0x1d + .byte 0x27, 0x00, 0x2f + .byte 0x0c, 0x39, 0x26 + .byte 0x27, 0x04, 0x21 + .byte 0x19, 0x08, 0x1d + .byte 0x01, 0x04, 0x1e + .byte 0x27, 0x1b, 0x2b + .byte 0x31, 0x17, 0x1f + .byte 0x07, 0x01, 0x2d + .byte 0x2e, 0x3b, 0x1f + .byte 0x34, 0x24, 0x31 + .byte 0x32, 0x2b, 0x24 + .byte 0x0e, 0x07, 0x1e + .byte 0x0f, 0x33, 0x10 + .byte 0x16, 0x21, 0x32 + .byte 0x39, 0x02, 0x1a + .byte 0x33, 0x3d, 0x22 + .byte 0x0c, 0x25, 0x1a + .byte 0x29, 0x29, 0x28 + .byte 0x3a, 0x32, 0x26 + .byte 0x0b, 0x13, 0x22 + .byte 0x1f, 0x0f, 0x1c + .byte 0x04, 0x2c, 0x20 + .byte 0x39, 0x1a, 0x1b + .byte 0x1a, 0x2a, 0x1f + .byte 0x24, 0x13, 0x1a + .byte 0x31, 0x3b, 0x33 + .byte 0x39, 0x23, 0x28 + .byte 0x31, 0x07, 0x31 + .byte 0x1f, 0x10, 0x20 + .byte 0x29, 0x17, 0x32 + .byte 0x26, 0x3b, 0x2d + .byte 0x02, 0x3c, 0x1c + .byte 0x0e, 0x00, 0x20 + .byte 0x14, 0x3e, 0x37 + .byte 0x01, 0x0f, 0x2d + .byte 0x06, 0x12, 0x27 + .byte 0x30, 0x13, 0x19 + .byte 0x00, 0x33, 0x2a + .byte 0x0c, 0x07, 0x27 + .byte 0x11, 0x3a, 0x1c + .byte 0x15, 0x0a, 0x13 + .byte 0x1f, 0x0d, 0x2a + .byte 0x37, 0x07, 0x2a + .byte 0x34, 0x35, 0x34 + .byte 0x28, 0x16, 0x27 + .byte 0x06, 0x02, 0x36 + .byte 0x09, 0x23, 0x30 + .byte 0x14, 0x02, 0x28 + .byte 0x39, 0x32, 0x34 + .byte 0x24, 0x35, 0x12 + .byte 0x12, 0x22, 0x26 + .byte 0x09, 0x07, 0x33 + .byte 0x0f, 0x3e, 0x1e + .byte 0x00, 0x3c, 0x33 + .byte 0x10, 0x37, 0x14 + .byte 0x3a, 0x03, 0x25 + .byte 0x2d, 0x1e, 0x24 + .byte 0x36, 0x36, 0x26 + .byte 0x1f, 0x3c, 0x1a + .byte 0x37, 0x33, 0x25 + .byte 0x23, 0x13, 0x1f + .byte 0x33, 0x0d, 0x13 + .byte 0x25, 0x30, 0x1e + .byte 0x17, 0x03, 0x18 + .byte 0x18, 0x18, 0x14 + .byte 0x30, 0x07, 0x22 + .byte 0x3e, 0x33, 0x21 + .byte 0x14, 0x37, 0x16 + .byte 0x16, 0x00, 0x12 + .byte 0x2c, 0x12, 0x2f + .byte 0x25, 0x3f, 0x1e + .byte 0x24, 0x19, 0x16 + .byte 0x16, 0x0f, 0x35 + .byte 0x2d, 0x10, 0x11 + .byte 0x24, 0x2a, 0x28 + .byte 0x19, 0x25, 0x2e + .byte 0x0c, 0x16, 0x1f + .byte 0x38, 0x21, 0x36 + .byte 0x3d, 0x1a, 0x2f + .byte 0x3b, 0x32, 0x12 + .byte 0x36, 0x13, 0x29 + .byte 0x0e, 0x30, 0x31 + .byte 0x19, 0x07, 0x2f + .byte 0x25, 0x23, 0x28 + .byte 0x20, 0x08, 0x29 + .byte 0x2a, 0x00, 0x30 + .byte 0x30, 0x38, 0x23 + .byte 0x1e, 0x0f, 0x1f + .byte 0x3b, 0x1b, 0x30 + .byte 0x3a, 0x37, 0x2f + .byte 0x39, 0x37, 0x35 + .byte 0x39, 0x2d, 0x2f + .byte 0x1f, 0x2e, 0x1e + .byte 0x1a, 0x2b, 0x1e + .byte 0x14, 0x17, 0x20 + .byte 0x2f, 0x03, 0x11 + .byte 0x1d, 0x00, 0x30 + .byte 0x17, 0x2b, 0x1d + .byte 0x35, 0x28, 0x25 + .byte 0x3b, 0x0f, 0x11 + .byte 0x09, 0x04, 0x2e + .byte 0x23, 0x11, 0x1e + .byte 0x13, 0x37, 0x1e + .byte 0x37, 0x37, 0x1e + .byte 0x07, 0x01, 0x32 + .byte 0x14, 0x06, 0x32 + .byte 0x11, 0x0c, 0x2e + .byte 0x36, 0x2e, 0x24 + .byte 0x15, 0x2a, 0x1c + .byte 0x22, 0x15, 0x34 + .byte 0x2c, 0x1e, 0x35 + .byte 0x22, 0x27, 0x33 + .byte 0x19, 0x3f, 0x2d + .byte 0x21, 0x33, 0x15 + .byte 0x26, 0x1a, 0x11 + .byte 0x16, 0x3e, 0x12 + .byte 0x2b, 0x24, 0x15 + .byte 0x3c, 0x0f, 0x2d + .byte 0x31, 0x15, 0x36 + .byte 0x3f, 0x24, 0x1d + .byte 0x25, 0x01, 0x37 + .byte 0x33, 0x16, 0x1a + .byte 0x1f, 0x0e, 0x10 + .byte 0x2f, 0x0b, 0x12 + .byte 0x2a, 0x1a, 0x25 + .byte 0x17, 0x0a, 0x35 + .byte 0x09, 0x28, 0x35 + .byte 0x02, 0x13, 0x36 + .byte 0x34, 0x2f, 0x17 + .byte 0x03, 0x04, 0x31 + .byte 0x3e, 0x26, 0x11 + .byte 0x35, 0x33, 0x31 + .byte 0x22, 0x17, 0x23 + .byte 0x1d, 0x05, 0x2b + .byte 0x2e, 0x27, 0x20 + .byte 0x03, 0x2b, 0x1d + .byte 0x01, 0x19, 0x1e + .byte 0x0e, 0x05, 0x18 + .byte 0x16, 0x25, 0x17 + .byte 0x02, 0x28, 0x18 + .byte 0x19, 0x0b, 0x24 + .byte 0x3e, 0x35, 0x16 + .byte 0x2e, 0x29, 0x25 + .byte 0x3e, 0x38, 0x1e + .byte 0x3a, 0x2f, 0x12 + .byte 0x14, 0x17, 0x2d + .byte 0x11, 0x12, 0x30 + .byte 0x15, 0x31, 0x18 + .byte 0x08, 0x0b, 0x29 + .byte 0x2d, 0x00, 0x33 + .byte 0x2c, 0x06, 0x1a + .byte 0x14, 0x1c, 0x2e + .byte 0x04, 0x08, 0x12 + .byte 0x1b, 0x2b, 0x2d + .byte 0x2a, 0x37, 0x33 + .byte 0x10, 0x27, 0x2c + .byte 0x1d, 0x0e, 0x34 + .byte 0x20, 0x02, 0x12 + .byte 0x1e, 0x1a, 0x2e + .byte 0x07, 0x0b, 0x10 + .byte 0x36, 0x1e, 0x33 + .byte 0x2b, 0x28, 0x1b + .byte 0x31, 0x25, 0x1f + .byte 0x38, 0x3a, 0x2f + .byte 0x39, 0x30, 0x2f + .byte 0x12, 0x09, 0x14 + .byte 0x0e, 0x08, 0x19 + .byte 0x00, 0x0d, 0x2c + .byte 0x1b, 0x0e, 0x34 + .byte 0x11, 0x25, 0x15 + .byte 0x0c, 0x2d, 0x26 + .byte 0x36, 0x2c, 0x16 + .byte 0x31, 0x31, 0x2c + .byte 0x03, 0x1a, 0x16 + .byte 0x1c, 0x32, 0x14 + .byte 0x0a, 0x3e, 0x36 + .byte 0x33, 0x1b, 0x27 + .byte 0x1f, 0x32, 0x18 + .byte 0x33, 0x26, 0x33 + .byte 0x1a, 0x13, 0x1a + .byte 0x0f, 0x34, 0x1c + .byte 0x35, 0x2c, 0x2f + .byte 0x38, 0x03, 0x18 + .byte 0x15, 0x0f, 0x27 + .byte 0x31, 0x29, 0x20 + .byte 0x28, 0x0e, 0x28 + .byte 0x31, 0x2c, 0x2e + .byte 0x15, 0x19, 0x1b + .byte 0x10, 0x03, 0x2f + .byte 0x2e, 0x2a, 0x32 + .byte 0x2a, 0x27, 0x1b + .byte 0x36, 0x04, 0x1e + .byte 0x3b, 0x04, 0x21 + .byte 0x07, 0x2f, 0x19 + .byte 0x27, 0x1d, 0x1d + .byte 0x3c, 0x3d, 0x2e + .byte 0x25, 0x08, 0x32 + .byte 0x3b, 0x34, 0x2a + .byte 0x0c, 0x10, 0x13 + .byte 0x25, 0x35, 0x1a + .byte 0x2f, 0x19, 0x28 + .byte 0x17, 0x00, 0x2b + .byte 0x0a, 0x1c, 0x17 + .byte 0x0a, 0x11, 0x1b + .byte 0x35, 0x13, 0x37 + .byte 0x29, 0x1c, 0x28 + .byte 0x0c, 0x31, 0x35 + .byte 0x3c, 0x10, 0x1a + .byte 0x1b, 0x3a, 0x2d + .byte 0x3a, 0x1c, 0x18 + .byte 0x22, 0x10, 0x2d + .byte 0x1c, 0x3c, 0x12 + .byte 0x17, 0x18, 0x2a + .byte 0x0b, 0x2b, 0x2f + .byte 0x2d, 0x04, 0x2e + .byte 0x3c, 0x13, 0x23 + .byte 0x01, 0x1c, 0x2e + .byte 0x14, 0x16, 0x22 + .byte 0x0c, 0x24, 0x13 + .byte 0x35, 0x37, 0x34 + .byte 0x1b, 0x30, 0x1e + .byte 0x3a, 0x1c, 0x20 + .byte 0x06, 0x06, 0x36 + .byte 0x09, 0x15, 0x1a + .byte 0x1b, 0x1a, 0x27 + .byte 0x0f, 0x33, 0x35 + .byte 0x37, 0x06, 0x23 + .byte 0x3a, 0x12, 0x1d + .byte 0x00, 0x16, 0x29 + .byte 0x0e, 0x1d, 0x35 + .byte 0x3f, 0x38, 0x16 + .byte 0x2a, 0x3c, 0x34 + .byte 0x13, 0x32, 0x10 + .byte 0x17, 0x2c, 0x37 + .byte 0x29, 0x2a, 0x1e + .byte 0x35, 0x2f, 0x2d + .byte 0x3c, 0x2a, 0x11 + .byte 0x28, 0x13, 0x21 + .byte 0x19, 0x1e, 0x34 + .byte 0x0c, 0x06, 0x2d + .byte 0x09, 0x04, 0x1c + .byte 0x1d, 0x2f, 0x26 + .byte 0x39, 0x07, 0x16 + .byte 0x14, 0x04, 0x2d + .byte 0x3a, 0x2f, 0x2e + .byte 0x29, 0x15, 0x35 + .byte 0x24, 0x02, 0x36 + .byte 0x3f, 0x02, 0x1a + .byte 0x0f, 0x18, 0x24 + .byte 0x16, 0x1d, 0x19 + .byte 0x14, 0x16, 0x10 + .byte 0x29, 0x1b, 0x13 + .byte 0x15, 0x0e, 0x19 + .byte 0x3a, 0x2e, 0x2b + .byte 0x08, 0x30, 0x15 + .byte 0x35, 0x16, 0x30 + .byte 0x2e, 0x18, 0x35 + .byte 0x3b, 0x0b, 0x1c + .byte 0x3a, 0x18, 0x13 + .byte 0x29, 0x13, 0x1e + .byte 0x20, 0x13, 0x27 + .byte 0x04, 0x1d, 0x34 + .byte 0x00, 0x38, 0x19 + .byte 0x08, 0x39, 0x32 + .byte 0x20, 0x10, 0x26 + .byte 0x08, 0x02, 0x28 + .byte 0x3f, 0x0f, 0x16 + .byte 0x30, 0x1f, 0x19 + .byte 0x20, 0x2d, 0x10 + .byte 0x38, 0x17, 0x1c + .byte 0x18, 0x31, 0x27 + .byte 0x33, 0x38, 0x30 + .byte 0x16, 0x33, 0x23 + .byte 0x00, 0x01, 0x36 + .byte 0x0d, 0x02, 0x23 + .byte 0x39, 0x04, 0x1f + .byte 0x0e, 0x30, 0x24 + .byte 0x06, 0x01, 0x2c + .byte 0x34, 0x33, 0x35 + .byte 0x16, 0x34, 0x2e + .byte 0x32, 0x16, 0x24 + .byte 0x26, 0x39, 0x34 + .byte 0x1f, 0x3c, 0x1d + .byte 0x28, 0x1d, 0x37 + .byte 0x17, 0x15, 0x2b + .byte 0x27, 0x39, 0x30 + .byte 0x0b, 0x1b, 0x18 + .byte 0x35, 0x20, 0x2d + .byte 0x0b, 0x35, 0x1c + .byte 0x03, 0x0e, 0x21 + .byte 0x06, 0x0c, 0x20 + .byte 0x02, 0x18, 0x34 + .byte 0x1e, 0x36, 0x2d + .byte 0x16, 0x0c, 0x19 + .byte 0x25, 0x09, 0x2c + .byte 0x37, 0x05, 0x2e + .byte 0x2e, 0x2b, 0x2c + .byte 0x24, 0x1a, 0x14 + .byte 0x27, 0x04, 0x10 + .byte 0x32, 0x38, 0x33 + .byte 0x37, 0x15, 0x35 + .byte 0x11, 0x3f, 0x1d + .byte 0x23, 0x23, 0x1f + .byte 0x29, 0x3f, 0x1d + .byte 0x1a, 0x3c, 0x2b + .byte 0x1b, 0x2c, 0x2c + .byte 0x38, 0x3b, 0x36 + .byte 0x04, 0x13, 0x33 + .byte 0x2c, 0x14, 0x12 + .byte 0x1a, 0x09, 0x1b + .byte 0x36, 0x11, 0x24 + .byte 0x3a, 0x3f, 0x11 + .byte 0x01, 0x0e, 0x2b + .byte 0x3b, 0x03, 0x2a + .byte 0x08, 0x0d, 0x2b + .byte 0x2b, 0x13, 0x27 + .byte 0x3a, 0x3c, 0x1c + .byte 0x3a, 0x15, 0x2a + .byte 0x24, 0x00, 0x17 + .byte 0x3e, 0x0a, 0x15 + .byte 0x0c, 0x29, 0x2d + .byte 0x1f, 0x15, 0x30 + .byte 0x35, 0x18, 0x19 + .byte 0x3d, 0x37, 0x37 + .byte 0x12, 0x38, 0x1b + .byte 0x3b, 0x02, 0x20 + .byte 0x08, 0x21, 0x19 + .byte 0x2e, 0x36, 0x1d + .byte 0x15, 0x3d, 0x24 + .byte 0x22, 0x0c, 0x27 + .byte 0x36, 0x3f, 0x33 + .byte 0x33, 0x12, 0x11 + .byte 0x1a, 0x19, 0x1f + .byte 0x2b, 0x24, 0x12 + .byte 0x11, 0x2a, 0x18 + .byte 0x25, 0x32, 0x2a + .byte 0x2c, 0x1a, 0x12 + .byte 0x26, 0x06, 0x10 + .byte 0x11, 0x29, 0x33 + .byte 0x2c, 0x09, 0x14 + .byte 0x2b, 0x12, 0x2b + .byte 0x1d, 0x03, 0x24 + .byte 0x00, 0x12, 0x15 + .byte 0x22, 0x3d, 0x26 + .byte 0x15, 0x37, 0x1a + .byte 0x0f, 0x12, 0x37 + .byte 0x24, 0x01, 0x18 + .byte 0x2a, 0x17, 0x13 + .byte 0x14, 0x3b, 0x29 + .byte 0x2a, 0x19, 0x32 + .byte 0x2d, 0x17, 0x17 + .byte 0x0b, 0x2c, 0x33 + .byte 0x07, 0x2d, 0x34 + .byte 0x07, 0x38, 0x1d + .byte 0x1f, 0x36, 0x22 + .byte 0x11, 0x0a, 0x17 + .byte 0x14, 0x11, 0x13 + .byte 0x2a, 0x17, 0x25 + .byte 0x01, 0x3a, 0x1c + .byte 0x26, 0x27, 0x30 + .byte 0x2d, 0x3b, 0x35 + .byte 0x3a, 0x30, 0x34 + .byte 0x06, 0x3a, 0x1c + .byte 0x2d, 0x05, 0x13 + .byte 0x21, 0x32, 0x12 + .byte 0x3e, 0x1e, 0x2c + .byte 0x3a, 0x3f, 0x2d + .byte 0x20, 0x2a, 0x34 + .byte 0x26, 0x03, 0x1a + .byte 0x19, 0x27, 0x2e + .byte 0x31, 0x04, 0x26 + .byte 0x2a, 0x3f, 0x30 + .byte 0x25, 0x23, 0x2a + .byte 0x08, 0x08, 0x35 + .byte 0x2c, 0x30, 0x1e + .byte 0x08, 0x05, 0x18 + .byte 0x06, 0x09, 0x2d + .byte 0x19, 0x00, 0x27 + .byte 0x0d, 0x10, 0x19 + .byte 0x1c, 0x00, 0x13 + .byte 0x3d, 0x0b, 0x24 + .byte 0x2e, 0x1f, 0x16 + .byte 0x3d, 0x18, 0x34 + .byte 0x12, 0x1e, 0x15 + .byte 0x15, 0x39, 0x25 + .byte 0x33, 0x0f, 0x17 + .byte 0x1a, 0x1c, 0x1b + .byte 0x37, 0x29, 0x1b + .byte 0x3b, 0x38, 0x12 + .byte 0x1d, 0x22, 0x34 + .byte 0x26, 0x0a, 0x31 + .byte 0x16, 0x2d, 0x13 + .byte 0x0d, 0x20, 0x27 + .byte 0x24, 0x1d, 0x16 + .byte 0x2e, 0x2b, 0x18 + .byte 0x16, 0x2a, 0x1b + .byte 0x24, 0x17, 0x36 + .byte 0x02, 0x05, 0x2b + .byte 0x37, 0x1a, 0x17 + .byte 0x11, 0x3d, 0x2c + .byte 0x1e, 0x2f, 0x22 + .byte 0x2c, 0x29, 0x1a + .byte 0x2f, 0x04, 0x25 + .byte 0x36, 0x0c, 0x35 + .byte 0x30, 0x3e, 0x12 + .byte 0x11, 0x30, 0x37 + .byte 0x12, 0x21, 0x2e + .byte 0x21, 0x30, 0x17 + .byte 0x2c, 0x3d, 0x24 + .byte 0x11, 0x23, 0x14 + .byte 0x1a, 0x32, 0x17 + .byte 0x39, 0x27, 0x18 + .byte 0x0f, 0x24, 0x19 + .byte 0x00, 0x3d, 0x37 + .byte 0x2c, 0x3c, 0x1c + .byte 0x0b, 0x39, 0x23 + .byte 0x0e, 0x04, 0x1f + .byte 0x1c, 0x31, 0x14 + .byte 0x00, 0x04, 0x15 + .byte 0x26, 0x2a, 0x2a + .byte 0x20, 0x25, 0x2a + .byte 0x0b, 0x3c, 0x33 + .byte 0x11, 0x0b, 0x2e + .byte 0x37, 0x22, 0x2e + .byte 0x0e, 0x22, 0x26 + .byte 0x18, 0x2d, 0x27 + .byte 0x06, 0x0c, 0x1c + .byte 0x26, 0x18, 0x2f + .byte 0x3a, 0x01, 0x2a + .byte 0x2f, 0x31, 0x34 + .byte 0x1f, 0x34, 0x1a + .byte 0x31, 0x05, 0x10 + .byte 0x2e, 0x17, 0x34 + .byte 0x18, 0x22, 0x23 + .byte 0x23, 0x21, 0x32 + .byte 0x07, 0x08, 0x22 + .byte 0x26, 0x1c, 0x22 + .byte 0x31, 0x12, 0x2f + .byte 0x08, 0x1f, 0x10 + .byte 0x27, 0x15, 0x2a + .byte 0x1f, 0x0b, 0x26 + .byte 0x2f, 0x14, 0x35 + .byte 0x24, 0x1f, 0x26 + .byte 0x3b, 0x23, 0x33 + .byte 0x20, 0x3e, 0x2d + .byte 0x17, 0x0c, 0x15 + .byte 0x13, 0x39, 0x1a + .byte 0x30, 0x14, 0x25 + .byte 0x09, 0x07, 0x17 + .byte 0x38, 0x38, 0x1f + .byte 0x29, 0x24, 0x27 + .byte 0x17, 0x27, 0x28 + .byte 0x1b, 0x12, 0x2a + .byte 0x2b, 0x3d, 0x2d + .byte 0x19, 0x34, 0x1c + .byte 0x01, 0x1d, 0x10 + .byte 0x08, 0x39, 0x11 + .byte 0x0e, 0x36, 0x1b + .byte 0x26, 0x13, 0x10 + .byte 0x16, 0x28, 0x1e + .byte 0x3c, 0x28, 0x17 + .byte 0x3e, 0x39, 0x34 + .byte 0x0a, 0x03, 0x2e + .byte 0x37, 0x1a, 0x13 + .byte 0x2b, 0x33, 0x26 + .byte 0x13, 0x2c, 0x21 + .byte 0x25, 0x14, 0x10 + .byte 0x16, 0x0b, 0x35 + .byte 0x1d, 0x35, 0x33 + .byte 0x21, 0x08, 0x33 + .byte 0x28, 0x21, 0x1a + .byte 0x12, 0x0c, 0x1b + .byte 0x36, 0x2a, 0x19 + .byte 0x2c, 0x2b, 0x23 + .byte 0x01, 0x0f, 0x26 + .byte 0x17, 0x0c, 0x18 + .byte 0x09, 0x0f, 0x11 + .byte 0x2b, 0x24, 0x1c + .byte 0x09, 0x09, 0x15 + .byte 0x36, 0x08, 0x13 + .byte 0x20, 0x39, 0x21 + .byte 0x00, 0x3a, 0x1f + .byte 0x2b, 0x36, 0x31 + .byte 0x02, 0x37, 0x13 + .byte 0x04, 0x34, 0x35 + .byte 0x37, 0x3d, 0x1a + .byte 0x17, 0x3d, 0x13 + .byte 0x2b, 0x36, 0x2f + .byte 0x13, 0x1e, 0x13 + .byte 0x3e, 0x11, 0x33 + .byte 0x27, 0x3a, 0x2d + .byte 0x1e, 0x31, 0x1a + .byte 0x03, 0x03, 0x2d + .byte 0x25, 0x37, 0x1f + .byte 0x11, 0x01, 0x22 + .byte 0x1c, 0x12, 0x17 + .byte 0x30, 0x3a, 0x30 + .byte 0x17, 0x1d, 0x29 + .byte 0x0e, 0x13, 0x27 + .byte 0x1a, 0x2e, 0x24 + .byte 0x2d, 0x00, 0x1c + .byte 0x17, 0x28, 0x1d + .byte 0x09, 0x1f, 0x2e + .byte 0x1a, 0x2d, 0x26 + .byte 0x0a, 0x13, 0x32 + .byte 0x3e, 0x00, 0x27 + .byte 0x0b, 0x3b, 0x30 + .byte 0x08, 0x3a, 0x2d + .byte 0x22, 0x12, 0x1e + .byte 0x34, 0x1d, 0x2b + .byte 0x26, 0x22, 0x35 + .byte 0x17, 0x2c, 0x17 + .byte 0x29, 0x13, 0x2d + .byte 0x2d, 0x10, 0x10 + .byte 0x20, 0x31, 0x23 + .byte 0x1e, 0x33, 0x18 + .byte 0x33, 0x06, 0x2d + .byte 0x26, 0x14, 0x27 + .byte 0x22, 0x1d, 0x2a + .byte 0x2d, 0x06, 0x18 + .byte 0x07, 0x09, 0x2e + .byte 0x21, 0x15, 0x2e + .byte 0x21, 0x38, 0x23 + .byte 0x35, 0x0b, 0x34 + .byte 0x24, 0x0b, 0x22 + .byte 0x1e, 0x01, 0x17 + .byte 0x0b, 0x24, 0x11 + .byte 0x17, 0x07, 0x20 + .byte 0x14, 0x25, 0x32 + .byte 0x1a, 0x0e, 0x2f + .byte 0x35, 0x17, 0x1f + .byte 0x0c, 0x08, 0x21 + .byte 0x30, 0x35, 0x1f + .byte 0x0c, 0x0b, 0x20 + .byte 0x04, 0x10, 0x11 + .byte 0x35, 0x11, 0x1e + .byte 0x33, 0x3d, 0x16 + .byte 0x1e, 0x2b, 0x1d + .byte 0x1a, 0x19, 0x10 + .byte 0x04, 0x06, 0x22 + .byte 0x03, 0x3d, 0x24 + .byte 0x2a, 0x0e, 0x35 + .byte 0x03, 0x3e, 0x17 + .byte 0x0b, 0x18, 0x36 + .byte 0x3d, 0x0d, 0x26 + .byte 0x35, 0x12, 0x20 + .byte 0x1f, 0x0d, 0x16 + .byte 0x23, 0x32, 0x1a + .byte 0x00, 0x3d, 0x26 + .byte 0x30, 0x19, 0x36 + .byte 0x12, 0x0e, 0x23 + .byte 0x01, 0x23, 0x28 + .byte 0x3b, 0x31, 0x11 + .byte 0x2d, 0x1c, 0x36 + .byte 0x2a, 0x05, 0x16 + .byte 0x14, 0x0e, 0x30 + .byte 0x3a, 0x37, 0x19 + .byte 0x1f, 0x30, 0x25 + .byte 0x10, 0x26, 0x2f + .byte 0x22, 0x11, 0x1f + .byte 0x2e, 0x2b, 0x1e + .byte 0x16, 0x16, 0x21 + .byte 0x32, 0x18, 0x35 + .byte 0x23, 0x32, 0x1a + .byte 0x3d, 0x0d, 0x19 + .byte 0x39, 0x09, 0x23 + .byte 0x30, 0x2e, 0x24 + .byte 0x1e, 0x0f, 0x24 + .byte 0x09, 0x21, 0x31 + .byte 0x05, 0x03, 0x11 + .byte 0x05, 0x22, 0x2a + .byte 0x03, 0x07, 0x37 + .byte 0x04, 0x08, 0x13 + .byte 0x05, 0x10, 0x34 + .byte 0x37, 0x14, 0x29 + .byte 0x0a, 0x24, 0x32 + .byte 0x34, 0x1e, 0x1b + .byte 0x12, 0x17, 0x2e + .byte 0x01, 0x02, 0x13 + .byte 0x0a, 0x0c, 0x11 + .byte 0x02, 0x14, 0x13 + .byte 0x0d, 0x25, 0x23 + .byte 0x00, 0x07, 0x1a + .byte 0x1c, 0x28, 0x35 + .byte 0x08, 0x0e, 0x2c + .byte 0x1b, 0x3c, 0x15 + .byte 0x1c, 0x19, 0x1d + .byte 0x32, 0x13, 0x1a + .byte 0x1c, 0x00, 0x37 + .byte 0x22, 0x1b, 0x35 + .byte 0x39, 0x3e, 0x14 + .byte 0x32, 0x06, 0x31 + .byte 0x17, 0x05, 0x2b + .byte 0x01, 0x0f, 0x20 + .byte 0x1e, 0x0f, 0x34 + .byte 0x18, 0x03, 0x1f + .byte 0x2b, 0x00, 0x14 + .byte 0x15, 0x3a, 0x30 + .byte 0x25, 0x30, 0x21 + .byte 0x0b, 0x00, 0x37 + .byte 0x24, 0x37, 0x1d + .byte 0x29, 0x21, 0x16 + .byte 0x24, 0x0f, 0x2c + .byte 0x3e, 0x15, 0x36 + .byte 0x3c, 0x2d, 0x23 + .byte 0x3d, 0x3c, 0x17 + .byte 0x1a, 0x1c, 0x13 + .byte 0x0a, 0x29, 0x22 + .byte 0x25, 0x3f, 0x26 + .byte 0x3b, 0x39, 0x2f + .byte 0x1d, 0x08, 0x16 + .byte 0x0b, 0x19, 0x14 + .byte 0x12, 0x01, 0x2c + .byte 0x35, 0x11, 0x2a + .byte 0x02, 0x00, 0x13 + .byte 0x39, 0x2a, 0x35 + .byte 0x07, 0x1a, 0x11 + .byte 0x24, 0x0e, 0x1e + .byte 0x0e, 0x2c, 0x15 + .byte 0x08, 0x31, 0x1b + .byte 0x21, 0x1d, 0x26 + .byte 0x1d, 0x1c, 0x2a + .byte 0x1d, 0x24, 0x13 + .byte 0x01, 0x00, 0x18 + .byte 0x28, 0x2a, 0x37 + .byte 0x15, 0x0f, 0x13 + .byte 0x10, 0x32, 0x36 + .byte 0x22, 0x13, 0x31 + .byte 0x13, 0x05, 0x1e + .byte 0x17, 0x35, 0x35 + .byte 0x3b, 0x0e, 0x24 + .byte 0x35, 0x3a, 0x1d + .byte 0x1b, 0x36, 0x1b + .byte 0x03, 0x1d, 0x24 + .byte 0x0f, 0x16, 0x30 + .byte 0x2d, 0x09, 0x25 + .byte 0x05, 0x21, 0x13 + .byte 0x0a, 0x27, 0x36 + .byte 0x04, 0x0d, 0x1c + .byte 0x06, 0x3e, 0x21 + .byte 0x2a, 0x27, 0x33 + .byte 0x28, 0x0e, 0x15 + .byte 0x0b, 0x17, 0x1d + .byte 0x1d, 0x32, 0x2d + .byte 0x08, 0x3d, 0x29 + .byte 0x21, 0x32, 0x17 + .byte 0x33, 0x31, 0x22 + .byte 0x0e, 0x03, 0x21 + .byte 0x0d, 0x0b, 0x16 + .byte 0x3e, 0x2a, 0x2e + .byte 0x19, 0x36, 0x2a + .byte 0x0d, 0x00, 0x14 + .byte 0x22, 0x07, 0x36 + .byte 0x0a, 0x09, 0x15 + .byte 0x14, 0x10, 0x22 + .byte 0x07, 0x16, 0x2c + .byte 0x36, 0x13, 0x15 + .byte 0x09, 0x2f, 0x1b + .byte 0x20, 0x3b, 0x2e + .byte 0x3a, 0x3a, 0x16 + .byte 0x0d, 0x15, 0x2a + .byte 0x39, 0x13, 0x2b + .byte 0x0b, 0x01, 0x2a + .byte 0x13, 0x17, 0x1e + .byte 0x08, 0x17, 0x1e + .byte 0x0c, 0x0f, 0x34 + .byte 0x1f, 0x31, 0x12 + .byte 0x07, 0x3a, 0x1d + .byte 0x35, 0x1e, 0x12 + .byte 0x24, 0x2c, 0x15 + .byte 0x0e, 0x21, 0x19 + .byte 0x34, 0x3b, 0x33 + .byte 0x19, 0x0f, 0x28 + .byte 0x10, 0x2f, 0x2e + .byte 0x23, 0x27, 0x31 + .byte 0x39, 0x2e, 0x18 + .byte 0x3c, 0x3f, 0x24 + .byte 0x07, 0x23, 0x30 + .byte 0x28, 0x13, 0x35 + .byte 0x13, 0x0a, 0x10 + .byte 0x35, 0x19, 0x33 + .byte 0x23, 0x28, 0x29 + .byte 0x13, 0x2f, 0x1a + .byte 0x3a, 0x19, 0x14 + .byte 0x37, 0x36, 0x26 + .byte 0x20, 0x3b, 0x15 + .byte 0x37, 0x39, 0x10 + .byte 0x3c, 0x21, 0x34 + .byte 0x1c, 0x38, 0x30 + .byte 0x15, 0x07, 0x26 + .byte 0x27, 0x21, 0x19 + .byte 0x18, 0x11, 0x23 + .byte 0x30, 0x28, 0x37 + .byte 0x32, 0x2d, 0x1f + .byte 0x2c, 0x3f, 0x30 + .byte 0x1d, 0x2f, 0x26 + .byte 0x01, 0x11, 0x1c + .byte 0x3b, 0x0f, 0x12 + .byte 0x2a, 0x17, 0x27 + .byte 0x05, 0x00, 0x1b + .byte 0x25, 0x1c, 0x32 + .byte 0x04, 0x22, 0x2d + .byte 0x10, 0x0f, 0x25 + .byte 0x0d, 0x39, 0x30 + .byte 0x0b, 0x2e, 0x27 + .byte 0x2d, 0x34, 0x15 + .byte 0x3e, 0x30, 0x36 + .byte 0x16, 0x26, 0x2a + .byte 0x05, 0x3f, 0x2b + .byte 0x20, 0x3b, 0x2e + .byte 0x3b, 0x1c, 0x2f + .byte 0x01, 0x18, 0x16 + .byte 0x16, 0x3d, 0x10 + .byte 0x0a, 0x1f, 0x18 + .byte 0x17, 0x0f, 0x22 + .byte 0x06, 0x13, 0x11 + .byte 0x38, 0x21, 0x17 + .byte 0x17, 0x0a, 0x37 + .byte 0x1c, 0x19, 0x30 + .byte 0x16, 0x38, 0x31 + .byte 0x30, 0x10, 0x36 + .byte 0x31, 0x2f, 0x26 + .byte 0x3c, 0x1b, 0x23 + .byte 0x33, 0x2f, 0x19 + .byte 0x16, 0x35, 0x25 + .byte 0x3a, 0x18, 0x1f + .byte 0x37, 0x01, 0x1e + .byte 0x0d, 0x18, 0x12 + .byte 0x1f, 0x1c, 0x1b + .byte 0x07, 0x34, 0x2d + .byte 0x0b, 0x3f, 0x33 + .byte 0x1e, 0x34, 0x1d + .byte 0x2c, 0x13, 0x2c + .byte 0x20, 0x20, 0x13 + .byte 0x20, 0x0f, 0x31 + .byte 0x08, 0x0f, 0x24 + .byte 0x18, 0x3d, 0x1c + .byte 0x36, 0x34, 0x27 + .byte 0x33, 0x2a, 0x25 + .byte 0x2d, 0x30, 0x26 + .byte 0x3d, 0x37, 0x26 + .byte 0x25, 0x11, 0x11 + .byte 0x03, 0x05, 0x18 + .byte 0x10, 0x04, 0x29 + .byte 0x07, 0x2e, 0x36 + .byte 0x2a, 0x29, 0x15 + .byte 0x3a, 0x0e, 0x33 + .byte 0x2a, 0x06, 0x29 + .byte 0x3d, 0x01, 0x29 + .byte 0x27, 0x0e, 0x16 + .byte 0x1d, 0x28, 0x1b + .byte 0x10, 0x33, 0x2b + .byte 0x0c, 0x14, 0x1d + .byte 0x15, 0x3f, 0x25 + .byte 0x37, 0x23, 0x1e + .byte 0x04, 0x2c, 0x1c + .byte 0x15, 0x34, 0x2a + .byte 0x09, 0x2f, 0x15 + .byte 0x02, 0x3f, 0x14 + .byte 0x19, 0x2c, 0x33 + .byte 0x39, 0x32, 0x20 + .byte 0x2a, 0x18, 0x32 + .byte 0x17, 0x23, 0x21 + .byte 0x0b, 0x2d, 0x25 + .byte 0x24, 0x3a, 0x2d + .byte 0x31, 0x3f, 0x34 + .byte 0x18, 0x19, 0x24 + .byte 0x1e, 0x15, 0x1a + .byte 0x17, 0x33, 0x2b + .byte 0x23, 0x09, 0x26 + .byte 0x1b, 0x0d, 0x15 + .byte 0x36, 0x26, 0x28 + .byte 0x3a, 0x1c, 0x14 + .byte 0x0c, 0x3e, 0x10 + .byte 0x18, 0x06, 0x35 + .byte 0x37, 0x26, 0x36 + .byte 0x21, 0x26, 0x17 + .byte 0x3d, 0x1c, 0x2c + .byte 0x16, 0x25, 0x1d + .byte 0x1e, 0x0b, 0x1e + .byte 0x1d, 0x0d, 0x32 + .byte 0x08, 0x1f, 0x1b + .byte 0x12, 0x1c, 0x12 + .byte 0x20, 0x2a, 0x28 + .byte 0x06, 0x3b, 0x35 + .byte 0x39, 0x0e, 0x1e + .byte 0x31, 0x30, 0x28 + .byte 0x02, 0x21, 0x14 + .byte 0x06, 0x1e, 0x29 + .byte 0x16, 0x09, 0x1c + .byte 0x27, 0x32, 0x2d + .byte 0x39, 0x03, 0x27 + .byte 0x29, 0x09, 0x1e + .byte 0x1b, 0x11, 0x1c + .byte 0x28, 0x3a, 0x2c + .byte 0x03, 0x03, 0x18 + .byte 0x23, 0x09, 0x2f + .byte 0x30, 0x17, 0x23 + .byte 0x0f, 0x25, 0x33 + .byte 0x06, 0x24, 0x37 + .byte 0x22, 0x09, 0x33 + .byte 0x2c, 0x09, 0x2a + .byte 0x0c, 0x12, 0x2a + .byte 0x28, 0x20, 0x10 + .byte 0x15, 0x29, 0x33 + .byte 0x0f, 0x1a, 0x13 + .byte 0x13, 0x18, 0x36 + .byte 0x2e, 0x16, 0x13 + .byte 0x3c, 0x1a, 0x15 + .byte 0x3a, 0x11, 0x32 + .byte 0x02, 0x0a, 0x2c + .byte 0x19, 0x39, 0x11 + .byte 0x31, 0x3e, 0x1d + .byte 0x32, 0x14, 0x32 + .byte 0x12, 0x2e, 0x34 + .byte 0x3e, 0x36, 0x23 + .byte 0x37, 0x3e, 0x15 + .byte 0x15, 0x35, 0x34 + .byte 0x01, 0x3a, 0x2c + .byte 0x26, 0x25, 0x22 + .byte 0x01, 0x2b, 0x37 + .byte 0x1c, 0x3d, 0x33 + .byte 0x3e, 0x10, 0x1c + .byte 0x26, 0x33, 0x19 + .byte 0x05, 0x19, 0x17 + .byte 0x12, 0x38, 0x1c + .byte 0x15, 0x3c, 0x32 + .byte 0x3f, 0x0f, 0x37 + .byte 0x02, 0x39, 0x32 + .byte 0x13, 0x00, 0x1d + .byte 0x1d, 0x2c, 0x10 + .byte 0x39, 0x13, 0x31 + .byte 0x0f, 0x37, 0x19 + .byte 0x09, 0x0d, 0x2a + .byte 0x20, 0x2f, 0x32 + .byte 0x3b, 0x34, 0x22 + .byte 0x26, 0x14, 0x10 + .byte 0x24, 0x3d, 0x22 + .byte 0x0b, 0x31, 0x23 + .byte 0x2f, 0x2d, 0x2a + .byte 0x30, 0x04, 0x35 + .byte 0x19, 0x20, 0x2a + .byte 0x16, 0x36, 0x37 + .byte 0x14, 0x28, 0x37 + .byte 0x11, 0x0b, 0x27 + .byte 0x1d, 0x06, 0x29 + .byte 0x35, 0x16, 0x2e + .byte 0x24, 0x2e, 0x29 + .byte 0x36, 0x14, 0x2a + .byte 0x21, 0x0c, 0x1f + .byte 0x3f, 0x39, 0x19 + .byte 0x27, 0x10, 0x2a + .byte 0x1e, 0x12, 0x34 + .byte 0x10, 0x24, 0x34 + .byte 0x1d, 0x13, 0x1d + .byte 0x17, 0x16, 0x37 + .byte 0x27, 0x1b, 0x27 + .byte 0x07, 0x24, 0x21 + .byte 0x37, 0x21, 0x11 + .byte 0x37, 0x28, 0x24 + .byte 0x19, 0x02, 0x1c + .byte 0x14, 0x12, 0x1d + .byte 0x1b, 0x24, 0x2e + .byte 0x2e, 0x3a, 0x15 + .byte 0x37, 0x34, 0x21 + .byte 0x33, 0x2d, 0x29 + .byte 0x2f, 0x1e, 0x34 + .byte 0x29, 0x3c, 0x12 + .byte 0x05, 0x15, 0x20 + .byte 0x05, 0x3e, 0x19 + .byte 0x18, 0x0b, 0x30 + .byte 0x2f, 0x02, 0x27 + .byte 0x14, 0x1c, 0x34 + .byte 0x12, 0x20, 0x30 + .byte 0x2b, 0x22, 0x1b + .byte 0x06, 0x31, 0x28 + .byte 0x15, 0x2d, 0x12 + .byte 0x01, 0x0e, 0x13 + .byte 0x13, 0x0c, 0x28 + .byte 0x07, 0x2a, 0x14 + .byte 0x1d, 0x36, 0x14 + .byte 0x15, 0x2b, 0x26 + .byte 0x03, 0x25, 0x15 + .byte 0x3e, 0x3b, 0x20 + .byte 0x35, 0x0c, 0x25 + .byte 0x2b, 0x16, 0x35 + .byte 0x1e, 0x31, 0x2c + .byte 0x06, 0x03, 0x29 + .byte 0x24, 0x07, 0x1f + .byte 0x32, 0x2f, 0x19 + .byte 0x25, 0x21, 0x31 + .byte 0x22, 0x26, 0x1d + .byte 0x00, 0x1b, 0x18 + .byte 0x2a, 0x24, 0x31 + .byte 0x20, 0x06, 0x2f + .byte 0x1e, 0x32, 0x26 + .byte 0x32, 0x39, 0x12 + .byte 0x20, 0x01, 0x19 + .byte 0x0f, 0x15, 0x15 + .byte 0x27, 0x10, 0x2e + .byte 0x09, 0x25, 0x19 + .byte 0x29, 0x37, 0x30 + .byte 0x13, 0x1c, 0x1d + .byte 0x29, 0x2d, 0x26 + .byte 0x02, 0x1a, 0x16 + .byte 0x1d, 0x2b, 0x1c + .byte 0x18, 0x04, 0x34 + .byte 0x28, 0x2a, 0x21 + .byte 0x15, 0x1b, 0x2e + .byte 0x16, 0x01, 0x10 + .byte 0x05, 0x09, 0x14 + .byte 0x22, 0x03, 0x22 + .byte 0x02, 0x1b, 0x34 + .byte 0x29, 0x2a, 0x23 + .byte 0x26, 0x36, 0x13 + .byte 0x23, 0x3d, 0x1a + .byte 0x1d, 0x10, 0x24 + .byte 0x25, 0x2b, 0x37 + .byte 0x19, 0x24, 0x26 + .byte 0x28, 0x13, 0x16 + .byte 0x17, 0x14, 0x19 + .byte 0x0b, 0x2f, 0x25 + .byte 0x37, 0x34, 0x37 + .byte 0x39, 0x21, 0x1b + .byte 0x0f, 0x3d, 0x2d + .byte 0x0d, 0x10, 0x20 + .byte 0x05, 0x0b, 0x2d + .byte 0x01, 0x12, 0x24 + .byte 0x18, 0x3d, 0x32 + .byte 0x09, 0x21, 0x26 + .byte 0x1a, 0x0e, 0x1f + .byte 0x30, 0x06, 0x1f + .byte 0x0b, 0x3c, 0x29 + .byte 0x07, 0x3e, 0x27 + .byte 0x13, 0x1e, 0x1a + .byte 0x13, 0x07, 0x23 + .byte 0x10, 0x34, 0x1e + .byte 0x32, 0x17, 0x23 + .byte 0x35, 0x16, 0x31 + .byte 0x32, 0x2e, 0x1b + .byte 0x28, 0x0e, 0x22 + .byte 0x14, 0x3a, 0x23 + .byte 0x22, 0x03, 0x29 + .byte 0x2a, 0x10, 0x20 + .byte 0x3e, 0x3c, 0x27 + .byte 0x16, 0x20, 0x12 + .byte 0x3f, 0x24, 0x31 + .byte 0x0d, 0x2e, 0x32 + .byte 0x2f, 0x17, 0x2d + .byte 0x36, 0x3b, 0x17 + .byte 0x24, 0x23, 0x18 + .byte 0x37, 0x1d, 0x13 + .byte 0x17, 0x3a, 0x1a + .byte 0x0a, 0x3d, 0x1e + .byte 0x05, 0x12, 0x16 + .byte 0x33, 0x32, 0x25 + .byte 0x1d, 0x1f, 0x29 + .byte 0x34, 0x2c, 0x26 + .byte 0x20, 0x29, 0x35 + .byte 0x0e, 0x32, 0x17 + .byte 0x01, 0x39, 0x2d + .byte 0x27, 0x24, 0x23 + .byte 0x28, 0x3f, 0x18 + .byte 0x39, 0x38, 0x25 + .byte 0x23, 0x11, 0x11 + .byte 0x19, 0x2c, 0x29 + .byte 0x30, 0x08, 0x28 + .byte 0x25, 0x27, 0x1d + .byte 0x17, 0x25, 0x21 + .byte 0x09, 0x3d, 0x16 + .byte 0x1b, 0x0f, 0x2c + .byte 0x1b, 0x12, 0x22 + .byte 0x28, 0x3e, 0x26 + .byte 0x34, 0x10, 0x1b + .byte 0x02, 0x34, 0x15 + .byte 0x1a, 0x29, 0x19 + .byte 0x29, 0x11, 0x31 + .byte 0x12, 0x27, 0x17 + .byte 0x27, 0x27, 0x2f + .byte 0x34, 0x27, 0x24 + .byte 0x03, 0x19, 0x36 + .byte 0x17, 0x1d, 0x33 + .byte 0x19, 0x25, 0x1a + .byte 0x2b, 0x39, 0x13 + .byte 0x3b, 0x33, 0x1d + .byte 0x27, 0x31, 0x34 + .byte 0x28, 0x33, 0x37 + .byte 0x09, 0x30, 0x1b + .byte 0x03, 0x3a, 0x27 + .byte 0x19, 0x11, 0x1f + .byte 0x0b, 0x1a, 0x34 + .byte 0x3d, 0x2a, 0x15 + .byte 0x04, 0x24, 0x36 + .byte 0x30, 0x23, 0x30 + .byte 0x0f, 0x22, 0x1b + .byte 0x3d, 0x3d, 0x24 + .byte 0x29, 0x1d, 0x12 + .byte 0x16, 0x19, 0x2e + .byte 0x03, 0x12, 0x17 + .byte 0x18, 0x25, 0x33 + .byte 0x2f, 0x23, 0x1a + .byte 0x1a, 0x35, 0x27 + .byte 0x21, 0x26, 0x19 + .byte 0x1b, 0x30, 0x18 + .byte 0x2b, 0x22, 0x2d + .byte 0x2c, 0x1a, 0x34 + .byte 0x3e, 0x12, 0x19 + .byte 0x28, 0x27, 0x15 + .byte 0x1b, 0x11, 0x12 + .byte 0x17, 0x15, 0x10 + .byte 0x34, 0x37, 0x25 + .byte 0x12, 0x3f, 0x15 + .byte 0x31, 0x0d, 0x37 + .byte 0x3e, 0x2a, 0x2d + .byte 0x0f, 0x24, 0x24 + .byte 0x3c, 0x3f, 0x1f + .byte 0x1d, 0x34, 0x17 + .byte 0x1a, 0x23, 0x1f + .byte 0x37, 0x0f, 0x10 + .byte 0x32, 0x34, 0x35 + .byte 0x19, 0x05, 0x22 + .byte 0x33, 0x16, 0x34 + .byte 0x1e, 0x14, 0x1e + .byte 0x08, 0x13, 0x29 + .byte 0x3a, 0x37, 0x30 + .byte 0x1d, 0x36, 0x15 + .byte 0x29, 0x2e, 0x1d + .byte 0x32, 0x2e, 0x23 + .byte 0x35, 0x17, 0x1c + .byte 0x36, 0x1d, 0x13 + .byte 0x23, 0x34, 0x34 + .byte 0x24, 0x1a, 0x37 + .byte 0x2f, 0x26, 0x2e + .byte 0x1e, 0x17, 0x1a + .byte 0x1f, 0x15, 0x1f + .byte 0x2b, 0x1f, 0x19 + .byte 0x0a, 0x33, 0x1a + .byte 0x35, 0x31, 0x24 + .byte 0x2d, 0x17, 0x2c + .byte 0x0c, 0x21, 0x36 + .byte 0x2c, 0x35, 0x35 + .byte 0x1b, 0x03, 0x27 + .byte 0x01, 0x0d, 0x1d + .byte 0x1c, 0x0e, 0x11 + .byte 0x11, 0x2b, 0x10 + .byte 0x25, 0x3b, 0x20 + .byte 0x1f, 0x17, 0x19 + .byte 0x20, 0x08, 0x36 + .byte 0x13, 0x38, 0x19 + .byte 0x1b, 0x2b, 0x24 + .byte 0x0b, 0x1f, 0x29 + .byte 0x27, 0x15, 0x2c + .byte 0x37, 0x39, 0x10 + .byte 0x3a, 0x15, 0x2e + .byte 0x2f, 0x11, 0x36 + .byte 0x24, 0x04, 0x20 + .byte 0x3b, 0x2a, 0x35 + .byte 0x27, 0x35, 0x34 + .byte 0x0d, 0x1b, 0x20 + .byte 0x10, 0x22, 0x37 + .byte 0x1f, 0x38, 0x27 + .byte 0x31, 0x0f, 0x28 + .byte 0x28, 0x25, 0x15 + .byte 0x00, 0x1d, 0x25 + .byte 0x31, 0x28, 0x28 + .byte 0x0b, 0x3a, 0x1d + .byte 0x2d, 0x13, 0x1b + .byte 0x03, 0x37, 0x2e + .byte 0x1d, 0x28, 0x19 + .byte 0x08, 0x2d, 0x22 + .byte 0x27, 0x39, 0x32 + .byte 0x3f, 0x2f, 0x1d + .byte 0x33, 0x34, 0x28 + .byte 0x18, 0x08, 0x31 + .byte 0x23, 0x1f, 0x13 + .byte 0x0d, 0x2c, 0x23 + .byte 0x3a, 0x2d, 0x1a + .byte 0x02, 0x25, 0x13 + .byte 0x20, 0x36, 0x34 + .byte 0x12, 0x2b, 0x2d + .byte 0x35, 0x35, 0x34 + .byte 0x23, 0x20, 0x21 + .byte 0x3a, 0x19, 0x1b + .byte 0x1f, 0x2b, 0x19 + .byte 0x35, 0x0e, 0x19 + .byte 0x26, 0x24, 0x37 + .byte 0x18, 0x08, 0x10 + .byte 0x0c, 0x16, 0x2d + .byte 0x1f, 0x34, 0x21 + .byte 0x05, 0x38, 0x19 + .byte 0x14, 0x21, 0x24 + .byte 0x11, 0x31, 0x14 + .byte 0x3e, 0x38, 0x29 + .byte 0x3f, 0x08, 0x25 + .byte 0x2a, 0x1f, 0x25 + .byte 0x25, 0x06, 0x28 + .byte 0x0b, 0x1e, 0x14 + .byte 0x1a, 0x38, 0x22 + .byte 0x24, 0x18, 0x29 + .byte 0x1a, 0x11, 0x20 + .byte 0x3b, 0x3a, 0x1e + .byte 0x1c, 0x26, 0x1a + .byte 0x05, 0x32, 0x19 + .byte 0x39, 0x2a, 0x31 + .byte 0x09, 0x07, 0x25 + .byte 0x05, 0x3e, 0x16 + .byte 0x34, 0x26, 0x14 + .byte 0x1b, 0x32, 0x26 + .byte 0x05, 0x08, 0x37 + .byte 0x0f, 0x03, 0x20 + .byte 0x2a, 0x39, 0x31 + .byte 0x08, 0x01, 0x1e + .byte 0x1d, 0x23, 0x31 + .byte 0x28, 0x1b, 0x28 + .byte 0x1e, 0x37, 0x14 + .byte 0x13, 0x0e, 0x28 + .byte 0x2a, 0x3b, 0x37 + .byte 0x2f, 0x1c, 0x28 + .byte 0x30, 0x30, 0x1a + .byte 0x36, 0x1f, 0x16 + .byte 0x3e, 0x0d, 0x15 + .byte 0x2e, 0x16, 0x18 + .byte 0x15, 0x37, 0x20 + .byte 0x2a, 0x33, 0x30 + .byte 0x2b, 0x0e, 0x25 + .byte 0x18, 0x20, 0x16 + .byte 0x02, 0x19, 0x25 + .byte 0x0a, 0x2e, 0x30 + .byte 0x16, 0x03, 0x11 + .byte 0x04, 0x27, 0x25 + .byte 0x1b, 0x1c, 0x21 + .byte 0x29, 0x04, 0x27 + .byte 0x3d, 0x20, 0x1e + .byte 0x28, 0x33, 0x31 + .byte 0x1e, 0x39, 0x10 + .byte 0x31, 0x29, 0x1e + .byte 0x06, 0x25, 0x28 + .byte 0x19, 0x3b, 0x12 + .byte 0x0b, 0x1b, 0x1c + .byte 0x3e, 0x37, 0x20 + .byte 0x0a, 0x37, 0x33 + .byte 0x02, 0x2c, 0x25 + .byte 0x15, 0x18, 0x14 + .byte 0x3b, 0x20, 0x1c + .byte 0x22, 0x3b, 0x1c + .byte 0x24, 0x34, 0x35 + .byte 0x0f, 0x2f, 0x31 + .byte 0x3b, 0x17, 0x35 + .byte 0x30, 0x39, 0x37 + .byte 0x0d, 0x15, 0x11 + .byte 0x10, 0x03, 0x1e + .byte 0x1a, 0x39, 0x33 + .byte 0x2f, 0x2e, 0x28 + .byte 0x1c, 0x28, 0x36 + .byte 0x28, 0x18, 0x1f + .byte 0x15, 0x01, 0x30 + .byte 0x3e, 0x32, 0x28 + .byte 0x34, 0x2f, 0x23 + .byte 0x07, 0x0c, 0x36 + .byte 0x28, 0x2c, 0x34 + .byte 0x2a, 0x0c, 0x1f + .byte 0x3f, 0x20, 0x13 + .byte 0x2b, 0x17, 0x27 + .byte 0x28, 0x29, 0x2a + .byte 0x3c, 0x13, 0x36 + .byte 0x26, 0x2d, 0x2a + .byte 0x0a, 0x06, 0x1e + .byte 0x20, 0x04, 0x1a + .byte 0x02, 0x07, 0x35 + .byte 0x0e, 0x18, 0x30 + .byte 0x00, 0x34, 0x34 + .byte 0x2f, 0x14, 0x37 + .byte 0x21, 0x30, 0x1f + .byte 0x15, 0x37, 0x1b + .byte 0x3a, 0x0b, 0x32 + .byte 0x22, 0x22, 0x21 + .byte 0x1b, 0x35, 0x23 + .byte 0x0d, 0x03, 0x1c + .byte 0x23, 0x3b, 0x13 + .byte 0x0e, 0x1d, 0x1f + .byte 0x1d, 0x3f, 0x2e + .byte 0x39, 0x27, 0x2e + .byte 0x0f, 0x38, 0x20 + .byte 0x31, 0x3c, 0x35 + .byte 0x0b, 0x0f, 0x2e + .byte 0x06, 0x06, 0x28 + .byte 0x25, 0x39, 0x23 + .byte 0x0a, 0x32, 0x15 + .byte 0x0f, 0x1d, 0x25 + .byte 0x0c, 0x0d, 0x34 + .byte 0x12, 0x2e, 0x21 + .byte 0x36, 0x18, 0x1f + .byte 0x1f, 0x34, 0x1b + .byte 0x05, 0x3a, 0x36 + .byte 0x2b, 0x01, 0x17 + .byte 0x0e, 0x16, 0x2b + .byte 0x0e, 0x0b, 0x26 + .byte 0x0d, 0x2d, 0x10 + .byte 0x21, 0x11, 0x27 + .byte 0x3d, 0x13, 0x32 + .byte 0x15, 0x25, 0x2a + .byte 0x1b, 0x2d, 0x35 + .byte 0x2c, 0x2b, 0x26 + .byte 0x26, 0x1f, 0x20 + .byte 0x22, 0x2b, 0x12 + .byte 0x3f, 0x3d, 0x27 + .byte 0x30, 0x0a, 0x36 + .byte 0x35, 0x1f, 0x17 + .byte 0x21, 0x08, 0x29 + .byte 0x1d, 0x20, 0x33 + .byte 0x34, 0x11, 0x16 + .byte 0x05, 0x38, 0x2d diff --git a/data/region_map.s b/data/region_map.s index 2cca09daf..14ea9c5f4 100644 --- a/data/region_map.s +++ b/data/region_map.s @@ -1222,3205 +1222,3 @@ gUnknown_83F2EE0:: @ 83F2EE0 .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - -gUnknown_83F3024:: @ 83F3024 - .byte 0x00, 0x1d, 0x1c - .byte 0x0e, 0x1e, 0x1b - .byte 0x00, 0x01, 0x32 - .byte 0x2e, 0x1e, 0x37 - .byte 0x0a, 0x22, 0x1f - .byte 0x05, 0x26, 0x2e - .byte 0x12, 0x17, 0x1e - .byte 0x1a, 0x03, 0x11 - .byte 0x05, 0x11, 0x18 - .byte 0x05, 0x27, 0x2f - .byte 0x1a, 0x3f, 0x12 - .byte 0x22, 0x3f, 0x16 - .byte 0x2b, 0x2f, 0x2e - .byte 0x11, 0x02, 0x2d - .byte 0x23, 0x0d, 0x28 - .byte 0x17, 0x0c, 0x19 - .byte 0x2f, 0x0e, 0x13 - .byte 0x30, 0x18, 0x20 - .byte 0x2d, 0x28, 0x22 - .byte 0x01, 0x03, 0x19 - .byte 0x0e, 0x2a, 0x2b - .byte 0x22, 0x15, 0x25 - .byte 0x22, 0x0a, 0x26 - .byte 0x39, 0x06, 0x23 - .byte 0x16, 0x07, 0x2f - .byte 0x22, 0x3a, 0x1b - .byte 0x3b, 0x36, 0x35 - .byte 0x0a, 0x2b, 0x24 - .byte 0x36, 0x09, 0x12 - .byte 0x1c, 0x2f, 0x23 - .byte 0x2e, 0x38, 0x2c - .byte 0x05, 0x2a, 0x20 - .byte 0x07, 0x14, 0x32 - .byte 0x31, 0x08, 0x17 - .byte 0x1a, 0x24, 0x2d - .byte 0x22, 0x0a, 0x16 - .byte 0x1b, 0x26, 0x2b - .byte 0x29, 0x16, 0x11 - .byte 0x35, 0x08, 0x14 - .byte 0x1e, 0x08, 0x14 - .byte 0x05, 0x31, 0x14 - .byte 0x38, 0x31, 0x17 - .byte 0x34, 0x33, 0x12 - .byte 0x11, 0x09, 0x1f - .byte 0x28, 0x3d, 0x32 - .byte 0x35, 0x03, 0x1e - .byte 0x3c, 0x2b, 0x2e - .byte 0x10, 0x01, 0x17 - .byte 0x03, 0x3e, 0x22 - .byte 0x17, 0x18, 0x34 - .byte 0x08, 0x29, 0x19 - .byte 0x03, 0x24, 0x28 - .byte 0x3d, 0x33, 0x2f - .byte 0x31, 0x24, 0x19 - .byte 0x1b, 0x18, 0x26 - .byte 0x07, 0x0d, 0x25 - .byte 0x2d, 0x3f, 0x12 - .byte 0x2f, 0x15, 0x25 - .byte 0x29, 0x0f, 0x12 - .byte 0x07, 0x2c, 0x12 - .byte 0x2c, 0x0b, 0x26 - .byte 0x12, 0x1a, 0x16 - .byte 0x00, 0x0b, 0x2f - .byte 0x16, 0x35, 0x24 - .byte 0x1f, 0x1c, 0x22 - .byte 0x29, 0x33, 0x27 - .byte 0x3b, 0x30, 0x17 - .byte 0x11, 0x06, 0x35 - .byte 0x3e, 0x31, 0x2f - .byte 0x11, 0x3a, 0x25 - .byte 0x2a, 0x02, 0x19 - .byte 0x33, 0x18, 0x35 - .byte 0x2a, 0x20, 0x21 - .byte 0x2e, 0x32, 0x1b - .byte 0x3b, 0x1f, 0x23 - .byte 0x39, 0x29, 0x2a - .byte 0x2e, 0x31, 0x29 - .byte 0x2a, 0x0e, 0x2d - .byte 0x2d, 0x00, 0x1f - .byte 0x38, 0x28, 0x1b - .byte 0x14, 0x3b, 0x2b - .byte 0x2e, 0x04, 0x26 - .byte 0x36, 0x30, 0x11 - .byte 0x3b, 0x21, 0x2d - .byte 0x2b, 0x3f, 0x1b - .byte 0x20, 0x13, 0x31 - .byte 0x33, 0x0c, 0x30 - .byte 0x22, 0x2b, 0x2b - .byte 0x16, 0x02, 0x1e - .byte 0x1c, 0x12, 0x1c - .byte 0x0f, 0x3c, 0x36 - .byte 0x38, 0x10, 0x2d - .byte 0x18, 0x2f, 0x2d - .byte 0x35, 0x3b, 0x11 - .byte 0x37, 0x31, 0x13 - .byte 0x13, 0x3d, 0x2f - .byte 0x1e, 0x2c, 0x33 - .byte 0x2e, 0x37, 0x12 - .byte 0x3c, 0x1f, 0x33 - .byte 0x32, 0x2a, 0x27 - .byte 0x0d, 0x3b, 0x1c - .byte 0x35, 0x2a, 0x27 - .byte 0x09, 0x3d, 0x27 - .byte 0x12, 0x0b, 0x18 - .byte 0x0c, 0x15, 0x1d - .byte 0x20, 0x01, 0x1c - .byte 0x08, 0x3b, 0x1c - .byte 0x12, 0x37, 0x33 - .byte 0x15, 0x03, 0x2c - .byte 0x2a, 0x3b, 0x31 - .byte 0x0f, 0x04, 0x35 - .byte 0x08, 0x17, 0x33 - .byte 0x38, 0x3d, 0x2a - .byte 0x2f, 0x35, 0x16 - .byte 0x10, 0x35, 0x16 - .byte 0x23, 0x13, 0x2c - .byte 0x2f, 0x06, 0x20 - .byte 0x27, 0x3a, 0x24 - .byte 0x00, 0x1c, 0x2a - .byte 0x03, 0x39, 0x1d - .byte 0x28, 0x07, 0x1a - .byte 0x20, 0x0a, 0x37 - .byte 0x07, 0x35, 0x2d - .byte 0x15, 0x2f, 0x2c - .byte 0x10, 0x2c, 0x23 - .byte 0x3f, 0x29, 0x14 - .byte 0x2a, 0x21, 0x36 - .byte 0x34, 0x1a, 0x2c - .byte 0x1c, 0x3d, 0x33 - .byte 0x38, 0x2b, 0x22 - .byte 0x35, 0x28, 0x1f - .byte 0x3d, 0x0f, 0x1c - .byte 0x1e, 0x3e, 0x1b - .byte 0x0c, 0x3e, 0x1f - .byte 0x2b, 0x31, 0x2c - .byte 0x32, 0x39, 0x11 - .byte 0x05, 0x09, 0x11 - .byte 0x04, 0x38, 0x2a - .byte 0x32, 0x00, 0x16 - .byte 0x13, 0x0b, 0x31 - .byte 0x34, 0x2a, 0x13 - .byte 0x2c, 0x22, 0x21 - .byte 0x39, 0x2f, 0x15 - .byte 0x37, 0x28, 0x1e - .byte 0x07, 0x3b, 0x2d - .byte 0x11, 0x03, 0x28 - .byte 0x2d, 0x30, 0x1e - .byte 0x31, 0x11, 0x11 - .byte 0x23, 0x01, 0x1e - .byte 0x3d, 0x31, 0x34 - .byte 0x1c, 0x02, 0x34 - .byte 0x21, 0x0e, 0x25 - .byte 0x3d, 0x07, 0x17 - .byte 0x33, 0x15, 0x10 - .byte 0x29, 0x32, 0x32 - .byte 0x18, 0x1f, 0x30 - .byte 0x2d, 0x3b, 0x30 - .byte 0x27, 0x3e, 0x16 - .byte 0x31, 0x15, 0x12 - .byte 0x30, 0x25, 0x17 - .byte 0x33, 0x06, 0x34 - .byte 0x00, 0x29, 0x18 - .byte 0x3c, 0x03, 0x12 - .byte 0x2c, 0x0c, 0x11 - .byte 0x09, 0x30, 0x30 - .byte 0x10, 0x0e, 0x11 - .byte 0x27, 0x16, 0x1b - .byte 0x0c, 0x3b, 0x2e - .byte 0x2b, 0x33, 0x1e - .byte 0x13, 0x2d, 0x2d - .byte 0x11, 0x24, 0x29 - .byte 0x34, 0x3e, 0x2b - .byte 0x24, 0x1e, 0x21 - .byte 0x27, 0x1a, 0x2d - .byte 0x04, 0x39, 0x16 - .byte 0x3e, 0x33, 0x26 - .byte 0x1b, 0x2e, 0x25 - .byte 0x0c, 0x06, 0x19 - .byte 0x25, 0x19, 0x18 - .byte 0x1d, 0x33, 0x33 - .byte 0x1d, 0x28, 0x2d - .byte 0x1c, 0x10, 0x2a - .byte 0x1f, 0x35, 0x1e - .byte 0x34, 0x02, 0x10 - .byte 0x2b, 0x3a, 0x14 - .byte 0x0d, 0x0b, 0x15 - .byte 0x0c, 0x2c, 0x10 - .byte 0x37, 0x3a, 0x19 - .byte 0x06, 0x13, 0x17 - .byte 0x24, 0x10, 0x25 - .byte 0x24, 0x04, 0x1e - .byte 0x00, 0x35, 0x34 - .byte 0x3a, 0x00, 0x37 - .byte 0x3c, 0x07, 0x1a - .byte 0x2b, 0x28, 0x36 - .byte 0x34, 0x39, 0x2f - .byte 0x28, 0x09, 0x1f - .byte 0x38, 0x31, 0x30 - .byte 0x16, 0x25, 0x31 - .byte 0x18, 0x28, 0x31 - .byte 0x18, 0x0c, 0x22 - .byte 0x06, 0x39, 0x2d - .byte 0x3d, 0x20, 0x24 - .byte 0x2e, 0x27, 0x21 - .byte 0x3e, 0x18, 0x18 - .byte 0x15, 0x3c, 0x24 - .byte 0x06, 0x1b, 0x26 - .byte 0x15, 0x0e, 0x22 - .byte 0x0a, 0x0d, 0x1f - .byte 0x18, 0x16, 0x34 - .byte 0x10, 0x28, 0x21 - .byte 0x20, 0x11, 0x11 - .byte 0x36, 0x32, 0x15 - .byte 0x3b, 0x2e, 0x24 - .byte 0x1f, 0x2d, 0x12 - .byte 0x36, 0x2e, 0x20 - .byte 0x0b, 0x17, 0x33 - .byte 0x26, 0x03, 0x1f - .byte 0x08, 0x19, 0x31 - .byte 0x2a, 0x18, 0x25 - .byte 0x35, 0x2d, 0x2d - .byte 0x30, 0x38, 0x18 - .byte 0x1c, 0x25, 0x14 - .byte 0x1c, 0x22, 0x28 - .byte 0x08, 0x23, 0x21 - .byte 0x26, 0x1e, 0x30 - .byte 0x19, 0x0f, 0x15 - .byte 0x10, 0x2f, 0x22 - .byte 0x12, 0x02, 0x25 - .byte 0x3c, 0x01, 0x1d - .byte 0x0e, 0x14, 0x18 - .byte 0x0d, 0x18, 0x17 - .byte 0x22, 0x0b, 0x31 - .byte 0x13, 0x34, 0x21 - .byte 0x0f, 0x2d, 0x36 - .byte 0x39, 0x1f, 0x25 - .byte 0x18, 0x10, 0x1f - .byte 0x2d, 0x20, 0x20 - .byte 0x19, 0x0b, 0x31 - .byte 0x33, 0x13, 0x14 - .byte 0x2e, 0x11, 0x21 - .byte 0x2d, 0x0a, 0x37 - .byte 0x07, 0x15, 0x1b - .byte 0x32, 0x04, 0x32 - .byte 0x06, 0x18, 0x1b - .byte 0x13, 0x24, 0x12 - .byte 0x36, 0x22, 0x16 - .byte 0x1d, 0x29, 0x1c - .byte 0x35, 0x17, 0x21 - .byte 0x36, 0x17, 0x2b - .byte 0x35, 0x32, 0x19 - .byte 0x2a, 0x0f, 0x2e - .byte 0x10, 0x00, 0x34 - .byte 0x02, 0x0e, 0x28 - .byte 0x31, 0x32, 0x32 - .byte 0x3b, 0x05, 0x20 - .byte 0x36, 0x26, 0x12 - .byte 0x34, 0x06, 0x34 - .byte 0x1e, 0x31, 0x32 - .byte 0x35, 0x05, 0x34 - .byte 0x1e, 0x13, 0x15 - .byte 0x15, 0x14, 0x2c - .byte 0x29, 0x1c, 0x18 - .byte 0x24, 0x24, 0x12 - .byte 0x22, 0x29, 0x18 - .byte 0x34, 0x36, 0x30 - .byte 0x1e, 0x01, 0x23 - .byte 0x0c, 0x3c, 0x24 - .byte 0x0a, 0x3d, 0x16 - .byte 0x27, 0x1e, 0x23 - .byte 0x15, 0x02, 0x12 - .byte 0x11, 0x19, 0x2a - .byte 0x1d, 0x31, 0x15 - .byte 0x03, 0x3b, 0x2a - .byte 0x21, 0x19, 0x2c - .byte 0x0a, 0x23, 0x11 - .byte 0x25, 0x11, 0x1a - .byte 0x1a, 0x0a, 0x34 - .byte 0x3b, 0x0b, 0x33 - .byte 0x21, 0x0b, 0x37 - .byte 0x01, 0x31, 0x28 - .byte 0x35, 0x1d, 0x27 - .byte 0x2c, 0x30, 0x31 - .byte 0x2e, 0x39, 0x2d - .byte 0x30, 0x05, 0x2c - .byte 0x12, 0x2a, 0x2b - .byte 0x39, 0x22, 0x20 - .byte 0x15, 0x34, 0x1c - .byte 0x1c, 0x01, 0x15 - .byte 0x20, 0x16, 0x22 - .byte 0x13, 0x04, 0x18 - .byte 0x1e, 0x13, 0x10 - .byte 0x25, 0x33, 0x15 - .byte 0x39, 0x03, 0x31 - .byte 0x3f, 0x36, 0x18 - .byte 0x14, 0x23, 0x10 - .byte 0x2f, 0x1e, 0x1f - .byte 0x1f, 0x17, 0x2c - .byte 0x02, 0x16, 0x31 - .byte 0x20, 0x18, 0x30 - .byte 0x2e, 0x18, 0x37 - .byte 0x3b, 0x0e, 0x30 - .byte 0x10, 0x39, 0x24 - .byte 0x26, 0x39, 0x1e - .byte 0x30, 0x26, 0x2e - .byte 0x12, 0x01, 0x14 - .byte 0x37, 0x2a, 0x2e - .byte 0x21, 0x06, 0x1d - .byte 0x2a, 0x16, 0x32 - .byte 0x09, 0x38, 0x1c - .byte 0x07, 0x22, 0x17 - .byte 0x3b, 0x2d, 0x15 - .byte 0x07, 0x1e, 0x2e - .byte 0x1b, 0x2e, 0x1d - .byte 0x04, 0x09, 0x30 - .byte 0x30, 0x2d, 0x37 - .byte 0x2d, 0x34, 0x24 - .byte 0x18, 0x24, 0x25 - .byte 0x0e, 0x2d, 0x26 - .byte 0x23, 0x0a, 0x16 - .byte 0x12, 0x2d, 0x11 - .byte 0x21, 0x28, 0x2e - .byte 0x0f, 0x01, 0x21 - .byte 0x01, 0x31, 0x12 - .byte 0x3f, 0x1b, 0x1e - .byte 0x21, 0x25, 0x2b - .byte 0x26, 0x18, 0x13 - .byte 0x15, 0x2d, 0x34 - .byte 0x23, 0x21, 0x36 - .byte 0x0e, 0x2e, 0x1c - .byte 0x14, 0x22, 0x1c - .byte 0x2c, 0x0b, 0x28 - .byte 0x1a, 0x18, 0x21 - .byte 0x21, 0x07, 0x1a - .byte 0x24, 0x26, 0x29 - .byte 0x2b, 0x0a, 0x34 - .byte 0x3e, 0x27, 0x33 - .byte 0x12, 0x34, 0x1b - .byte 0x1f, 0x01, 0x2a - .byte 0x2e, 0x06, 0x23 - .byte 0x2f, 0x1f, 0x14 - .byte 0x18, 0x06, 0x26 - .byte 0x31, 0x1f, 0x2b - .byte 0x22, 0x26, 0x2e - .byte 0x1e, 0x15, 0x16 - .byte 0x20, 0x22, 0x28 - .byte 0x15, 0x37, 0x12 - .byte 0x25, 0x04, 0x2c - .byte 0x1f, 0x04, 0x2e - .byte 0x0c, 0x13, 0x18 - .byte 0x07, 0x0b, 0x36 - .byte 0x1d, 0x1c, 0x2a - .byte 0x30, 0x22, 0x1c - .byte 0x2e, 0x12, 0x2f - .byte 0x2b, 0x21, 0x1e - .byte 0x16, 0x38, 0x30 - .byte 0x04, 0x02, 0x16 - .byte 0x05, 0x14, 0x20 - .byte 0x38, 0x3c, 0x33 - .byte 0x21, 0x1b, 0x2f - .byte 0x14, 0x2a, 0x27 - .byte 0x38, 0x14, 0x1b - .byte 0x2b, 0x1f, 0x2b - .byte 0x29, 0x2b, 0x25 - .byte 0x27, 0x36, 0x21 - .byte 0x11, 0x22, 0x1b - .byte 0x29, 0x03, 0x1b - .byte 0x18, 0x24, 0x28 - .byte 0x21, 0x2d, 0x36 - .byte 0x3c, 0x2c, 0x24 - .byte 0x33, 0x17, 0x1f - .byte 0x2a, 0x3a, 0x21 - .byte 0x0a, 0x23, 0x37 - .byte 0x00, 0x0b, 0x21 - .byte 0x11, 0x38, 0x19 - .byte 0x0f, 0x0e, 0x1c - .byte 0x1f, 0x0f, 0x37 - .byte 0x3c, 0x10, 0x37 - .byte 0x38, 0x31, 0x35 - .byte 0x07, 0x15, 0x28 - .byte 0x1e, 0x2e, 0x19 - .byte 0x26, 0x10, 0x33 - .byte 0x3d, 0x35, 0x2f - .byte 0x3a, 0x04, 0x34 - .byte 0x0d, 0x18, 0x1a - .byte 0x01, 0x2d, 0x15 - .byte 0x3d, 0x1a, 0x17 - .byte 0x17, 0x3f, 0x32 - .byte 0x0b, 0x21, 0x11 - .byte 0x1e, 0x26, 0x2b - .byte 0x0d, 0x19, 0x24 - .byte 0x2e, 0x04, 0x1b - .byte 0x1b, 0x33, 0x20 - .byte 0x15, 0x21, 0x1d - .byte 0x1f, 0x04, 0x21 - .byte 0x0f, 0x12, 0x1f - .byte 0x2d, 0x2a, 0x32 - .byte 0x03, 0x37, 0x1f - .byte 0x35, 0x07, 0x27 - .byte 0x24, 0x1f, 0x31 - .byte 0x2f, 0x30, 0x15 - .byte 0x06, 0x00, 0x24 - .byte 0x0b, 0x22, 0x1a - .byte 0x0c, 0x3b, 0x29 - .byte 0x14, 0x1a, 0x17 - .byte 0x37, 0x20, 0x25 - .byte 0x3f, 0x26, 0x37 - .byte 0x3a, 0x3e, 0x10 - .byte 0x22, 0x04, 0x11 - .byte 0x28, 0x12, 0x1c - .byte 0x03, 0x2e, 0x2e - .byte 0x0e, 0x38, 0x28 - .byte 0x01, 0x29, 0x22 - .byte 0x1e, 0x33, 0x19 - .byte 0x06, 0x21, 0x27 - .byte 0x33, 0x19, 0x1a - .byte 0x02, 0x05, 0x17 - .byte 0x11, 0x11, 0x2c - .byte 0x1f, 0x26, 0x1e - .byte 0x39, 0x1f, 0x28 - .byte 0x2e, 0x2f, 0x12 - .byte 0x22, 0x34, 0x13 - .byte 0x3b, 0x26, 0x2f - .byte 0x34, 0x00, 0x14 - .byte 0x10, 0x31, 0x11 - .byte 0x1d, 0x2d, 0x2a - .byte 0x08, 0x08, 0x37 - .byte 0x15, 0x18, 0x34 - .byte 0x04, 0x2b, 0x24 - .byte 0x2f, 0x1e, 0x27 - .byte 0x22, 0x2a, 0x24 - .byte 0x07, 0x14, 0x25 - .byte 0x01, 0x27, 0x19 - .byte 0x29, 0x0a, 0x29 - .byte 0x3d, 0x1c, 0x2f - .byte 0x0d, 0x1f, 0x1c - .byte 0x24, 0x3d, 0x32 - .byte 0x36, 0x1d, 0x24 - .byte 0x14, 0x21, 0x16 - .byte 0x1a, 0x0d, 0x29 - .byte 0x3f, 0x2b, 0x2a - .byte 0x1a, 0x3e, 0x35 - .byte 0x11, 0x28, 0x18 - .byte 0x32, 0x05, 0x15 - .byte 0x21, 0x2e, 0x34 - .byte 0x2d, 0x14, 0x2a - .byte 0x3c, 0x08, 0x37 - .byte 0x3f, 0x34, 0x1e - .byte 0x27, 0x24, 0x1c - .byte 0x16, 0x16, 0x33 - .byte 0x29, 0x3b, 0x19 - .byte 0x36, 0x2f, 0x1c - .byte 0x03, 0x25, 0x2c - .byte 0x0b, 0x16, 0x36 - .byte 0x1c, 0x1d, 0x1b - .byte 0x2c, 0x27, 0x1b - .byte 0x0b, 0x1f, 0x2b - .byte 0x08, 0x10, 0x27 - .byte 0x3f, 0x25, 0x2f - .byte 0x33, 0x13, 0x1f - .byte 0x04, 0x31, 0x37 - .byte 0x0e, 0x2f, 0x12 - .byte 0x08, 0x23, 0x20 - .byte 0x3a, 0x1a, 0x1e - .byte 0x2f, 0x0b, 0x1f - .byte 0x1e, 0x20, 0x19 - .byte 0x23, 0x3b, 0x14 - .byte 0x25, 0x00, 0x27 - .byte 0x14, 0x04, 0x25 - .byte 0x36, 0x1a, 0x2b - .byte 0x27, 0x21, 0x15 - .byte 0x28, 0x13, 0x2c - .byte 0x0e, 0x3c, 0x35 - .byte 0x0c, 0x2d, 0x2b - .byte 0x37, 0x16, 0x15 - .byte 0x29, 0x15, 0x1d - .byte 0x17, 0x34, 0x36 - .byte 0x09, 0x0a, 0x31 - .byte 0x37, 0x22, 0x28 - .byte 0x17, 0x2b, 0x35 - .byte 0x14, 0x2b, 0x12 - .byte 0x08, 0x13, 0x1f - .byte 0x31, 0x13, 0x28 - .byte 0x06, 0x07, 0x35 - .byte 0x23, 0x3a, 0x29 - .byte 0x0f, 0x24, 0x2e - .byte 0x07, 0x35, 0x26 - .byte 0x0e, 0x12, 0x15 - .byte 0x23, 0x33, 0x2c - .byte 0x0e, 0x21, 0x26 - .byte 0x1c, 0x12, 0x25 - .byte 0x23, 0x1d, 0x2f - .byte 0x04, 0x35, 0x33 - .byte 0x16, 0x01, 0x24 - .byte 0x3d, 0x2c, 0x2e - .byte 0x35, 0x0a, 0x25 - .byte 0x11, 0x13, 0x25 - .byte 0x1b, 0x1b, 0x15 - .byte 0x15, 0x39, 0x10 - .byte 0x0b, 0x35, 0x24 - .byte 0x3a, 0x27, 0x30 - .byte 0x2e, 0x2f, 0x15 - .byte 0x10, 0x1f, 0x35 - .byte 0x1b, 0x28, 0x35 - .byte 0x26, 0x30, 0x37 - .byte 0x34, 0x37, 0x2b - .byte 0x0f, 0x30, 0x29 - .byte 0x2e, 0x3f, 0x2b - .byte 0x38, 0x34, 0x2b - .byte 0x2b, 0x2f, 0x25 - .byte 0x0d, 0x28, 0x2a - .byte 0x33, 0x18, 0x10 - .byte 0x21, 0x12, 0x11 - .byte 0x1f, 0x22, 0x34 - .byte 0x11, 0x25, 0x23 - .byte 0x21, 0x3f, 0x11 - .byte 0x26, 0x27, 0x25 - .byte 0x28, 0x36, 0x12 - .byte 0x15, 0x26, 0x32 - .byte 0x11, 0x18, 0x24 - .byte 0x32, 0x25, 0x37 - .byte 0x27, 0x3a, 0x33 - .byte 0x35, 0x07, 0x1c - .byte 0x1a, 0x0e, 0x2a - .byte 0x1e, 0x2f, 0x1f - .byte 0x00, 0x2e, 0x21 - .byte 0x1b, 0x3c, 0x14 - .byte 0x2f, 0x3a, 0x2f - .byte 0x3e, 0x38, 0x15 - .byte 0x1a, 0x13, 0x2f - .byte 0x29, 0x0d, 0x2f - .byte 0x37, 0x17, 0x18 - .byte 0x30, 0x1c, 0x35 - .byte 0x15, 0x34, 0x14 - .byte 0x28, 0x11, 0x2c - .byte 0x2c, 0x25, 0x2a - .byte 0x20, 0x3f, 0x28 - .byte 0x0c, 0x34, 0x1b - .byte 0x30, 0x2e, 0x25 - .byte 0x37, 0x1c, 0x24 - .byte 0x1f, 0x25, 0x26 - .byte 0x0c, 0x19, 0x34 - .byte 0x18, 0x10, 0x35 - .byte 0x0a, 0x13, 0x11 - .byte 0x25, 0x13, 0x20 - .byte 0x13, 0x19, 0x11 - .byte 0x20, 0x28, 0x1d - .byte 0x3e, 0x30, 0x1b - .byte 0x23, 0x24, 0x21 - .byte 0x0d, 0x23, 0x23 - .byte 0x1d, 0x28, 0x2e - .byte 0x2d, 0x12, 0x1f - .byte 0x0e, 0x2e, 0x2b - .byte 0x0b, 0x31, 0x32 - .byte 0x24, 0x3c, 0x2c - .byte 0x13, 0x3c, 0x12 - .byte 0x28, 0x16, 0x2a - .byte 0x05, 0x0c, 0x32 - .byte 0x39, 0x0b, 0x32 - .byte 0x21, 0x04, 0x14 - .byte 0x10, 0x31, 0x32 - .byte 0x12, 0x1f, 0x23 - .byte 0x39, 0x2e, 0x2e - .byte 0x22, 0x3d, 0x27 - .byte 0x0c, 0x1e, 0x18 - .byte 0x25, 0x00, 0x17 - .byte 0x06, 0x31, 0x14 - .byte 0x13, 0x21, 0x1a - .byte 0x14, 0x20, 0x35 - .byte 0x0a, 0x3b, 0x25 - .byte 0x33, 0x08, 0x28 - .byte 0x3d, 0x02, 0x33 - .byte 0x23, 0x00, 0x13 - .byte 0x22, 0x21, 0x28 - .byte 0x30, 0x14, 0x2e - .byte 0x14, 0x32, 0x36 - .byte 0x39, 0x23, 0x1e - .byte 0x1c, 0x11, 0x30 - .byte 0x37, 0x16, 0x30 - .byte 0x15, 0x31, 0x1f - .byte 0x34, 0x28, 0x2c - .byte 0x35, 0x05, 0x29 - .byte 0x37, 0x33, 0x2a - .byte 0x1c, 0x17, 0x2e - .byte 0x10, 0x06, 0x16 - .byte 0x32, 0x1f, 0x2f - .byte 0x00, 0x29, 0x1e - .byte 0x04, 0x01, 0x16 - .byte 0x3b, 0x23, 0x1e - .byte 0x1b, 0x34, 0x2a - .byte 0x30, 0x11, 0x2b - .byte 0x03, 0x00, 0x1f - .byte 0x1d, 0x37, 0x1a - .byte 0x3a, 0x18, 0x25 - .byte 0x1c, 0x16, 0x2c - .byte 0x04, 0x3f, 0x33 - .byte 0x26, 0x23, 0x2d - .byte 0x15, 0x2c, 0x27 - .byte 0x02, 0x35, 0x27 - .byte 0x07, 0x35, 0x33 - .byte 0x1a, 0x0c, 0x10 - .byte 0x28, 0x26, 0x2c - .byte 0x2f, 0x36, 0x16 - .byte 0x37, 0x0b, 0x27 - .byte 0x1b, 0x3d, 0x18 - .byte 0x27, 0x1f, 0x20 - .byte 0x2b, 0x2a, 0x33 - .byte 0x0b, 0x0f, 0x20 - .byte 0x35, 0x3c, 0x2f - .byte 0x33, 0x21, 0x15 - .byte 0x2d, 0x26, 0x34 - .byte 0x1f, 0x1a, 0x21 - .byte 0x2f, 0x2c, 0x2a - .byte 0x1a, 0x32, 0x1a - .byte 0x3b, 0x3f, 0x21 - .byte 0x13, 0x3f, 0x13 - .byte 0x0f, 0x24, 0x22 - .byte 0x14, 0x1b, 0x10 - .byte 0x21, 0x06, 0x28 - .byte 0x25, 0x34, 0x10 - .byte 0x2e, 0x0e, 0x14 - .byte 0x3c, 0x3e, 0x25 - .byte 0x16, 0x06, 0x30 - .byte 0x0b, 0x04, 0x1f - .byte 0x3e, 0x02, 0x24 - .byte 0x0c, 0x17, 0x25 - .byte 0x2b, 0x3c, 0x2d - .byte 0x15, 0x36, 0x33 - .byte 0x18, 0x23, 0x2a - .byte 0x1d, 0x10, 0x2a - .byte 0x35, 0x17, 0x28 - .byte 0x00, 0x37, 0x24 - .byte 0x0a, 0x3b, 0x15 - .byte 0x1d, 0x0b, 0x1f - .byte 0x3c, 0x31, 0x25 - .byte 0x1d, 0x0f, 0x1d - .byte 0x20, 0x13, 0x34 - .byte 0x11, 0x2b, 0x2e - .byte 0x23, 0x0c, 0x2e - .byte 0x24, 0x02, 0x14 - .byte 0x31, 0x16, 0x19 - .byte 0x0e, 0x23, 0x35 - .byte 0x1a, 0x10, 0x16 - .byte 0x14, 0x04, 0x19 - .byte 0x2d, 0x27, 0x37 - .byte 0x33, 0x02, 0x31 - .byte 0x02, 0x04, 0x16 - .byte 0x0d, 0x22, 0x25 - .byte 0x25, 0x00, 0x16 - .byte 0x2a, 0x3f, 0x26 - .byte 0x20, 0x0c, 0x12 - .byte 0x2f, 0x2e, 0x35 - .byte 0x1b, 0x0d, 0x22 - .byte 0x1e, 0x01, 0x34 - .byte 0x05, 0x22, 0x21 - .byte 0x34, 0x2a, 0x32 - .byte 0x0b, 0x09, 0x1d - .byte 0x3f, 0x32, 0x2f - .byte 0x3d, 0x18, 0x2d - .byte 0x0b, 0x38, 0x36 - .byte 0x39, 0x17, 0x28 - .byte 0x34, 0x04, 0x24 - .byte 0x36, 0x0e, 0x2a - .byte 0x38, 0x01, 0x14 - .byte 0x3c, 0x24, 0x22 - .byte 0x21, 0x03, 0x18 - .byte 0x32, 0x2f, 0x12 - .byte 0x29, 0x24, 0x31 - .byte 0x0a, 0x3b, 0x12 - .byte 0x1a, 0x1c, 0x20 - .byte 0x30, 0x31, 0x1b - .byte 0x1a, 0x21, 0x10 - .byte 0x05, 0x29, 0x10 - .byte 0x26, 0x2d, 0x13 - .byte 0x16, 0x0c, 0x1d - .byte 0x2b, 0x06, 0x1b - .byte 0x06, 0x12, 0x14 - .byte 0x38, 0x0f, 0x35 - .byte 0x23, 0x3a, 0x2c - .byte 0x00, 0x19, 0x33 - .byte 0x29, 0x14, 0x2d - .byte 0x2a, 0x21, 0x29 - .byte 0x14, 0x31, 0x14 - .byte 0x1a, 0x06, 0x1e - .byte 0x18, 0x1b, 0x28 - .byte 0x3b, 0x16, 0x29 - .byte 0x15, 0x1e, 0x12 - .byte 0x34, 0x0a, 0x14 - .byte 0x1b, 0x05, 0x27 - .byte 0x0b, 0x01, 0x26 - .byte 0x2a, 0x22, 0x35 - .byte 0x21, 0x20, 0x18 - .byte 0x20, 0x37, 0x17 - .byte 0x14, 0x1f, 0x11 - .byte 0x1d, 0x11, 0x25 - .byte 0x24, 0x2b, 0x2f - .byte 0x07, 0x3f, 0x1f - .byte 0x2c, 0x25, 0x25 - .byte 0x2a, 0x29, 0x18 - .byte 0x11, 0x24, 0x28 - .byte 0x31, 0x2c, 0x2a - .byte 0x39, 0x0b, 0x26 - .byte 0x28, 0x10, 0x26 - .byte 0x22, 0x06, 0x16 - .byte 0x09, 0x2c, 0x13 - .byte 0x34, 0x19, 0x15 - .byte 0x3a, 0x12, 0x21 - .byte 0x1d, 0x38, 0x23 - .byte 0x12, 0x25, 0x24 - .byte 0x21, 0x30, 0x12 - .byte 0x37, 0x1a, 0x12 - .byte 0x24, 0x3b, 0x25 - .byte 0x32, 0x15, 0x23 - .byte 0x0d, 0x1a, 0x10 - .byte 0x16, 0x2e, 0x26 - .byte 0x1d, 0x14, 0x16 - .byte 0x3e, 0x2e, 0x1f - .byte 0x0a, 0x16, 0x10 - .byte 0x1d, 0x30, 0x2b - .byte 0x04, 0x3a, 0x19 - .byte 0x08, 0x2d, 0x2e - .byte 0x28, 0x1e, 0x33 - .byte 0x0a, 0x12, 0x2e - .byte 0x0d, 0x03, 0x2f - .byte 0x26, 0x3a, 0x1e - .byte 0x35, 0x3b, 0x2a - .byte 0x03, 0x1a, 0x18 - .byte 0x3f, 0x0b, 0x27 - .byte 0x04, 0x05, 0x34 - .byte 0x36, 0x0b, 0x27 - .byte 0x3b, 0x17, 0x11 - .byte 0x0d, 0x27, 0x26 - .byte 0x2c, 0x1f, 0x20 - .byte 0x26, 0x10, 0x20 - .byte 0x25, 0x23, 0x2d - .byte 0x37, 0x09, 0x13 - .byte 0x14, 0x17, 0x2d - .byte 0x2e, 0x3d, 0x23 - .byte 0x1d, 0x1a, 0x1f - .byte 0x21, 0x33, 0x2e - .byte 0x28, 0x17, 0x13 - .byte 0x26, 0x3c, 0x36 - .byte 0x14, 0x1a, 0x33 - .byte 0x32, 0x20, 0x2b - .byte 0x19, 0x3e, 0x20 - .byte 0x0c, 0x02, 0x2d - .byte 0x3c, 0x3c, 0x2a - .byte 0x30, 0x30, 0x28 - .byte 0x25, 0x3f, 0x1e - .byte 0x03, 0x17, 0x1e - .byte 0x35, 0x11, 0x1c - .byte 0x1b, 0x14, 0x2a - .byte 0x28, 0x3a, 0x23 - .byte 0x0e, 0x1f, 0x12 - .byte 0x36, 0x21, 0x20 - .byte 0x07, 0x3b, 0x10 - .byte 0x23, 0x19, 0x34 - .byte 0x0d, 0x2e, 0x18 - .byte 0x3f, 0x20, 0x25 - .byte 0x3e, 0x3b, 0x15 - .byte 0x0b, 0x2e, 0x12 - .byte 0x37, 0x0b, 0x23 - .byte 0x3d, 0x32, 0x1f - .byte 0x16, 0x03, 0x27 - .byte 0x14, 0x0c, 0x21 - .byte 0x18, 0x03, 0x30 - .byte 0x3e, 0x21, 0x13 - .byte 0x0f, 0x00, 0x32 - .byte 0x3f, 0x23, 0x16 - .byte 0x0e, 0x31, 0x1d - .byte 0x18, 0x1c, 0x1d - .byte 0x30, 0x0e, 0x1e - .byte 0x21, 0x20, 0x23 - .byte 0x3f, 0x0c, 0x1e - .byte 0x14, 0x33, 0x22 - .byte 0x22, 0x21, 0x15 - .byte 0x36, 0x05, 0x1e - .byte 0x1d, 0x31, 0x14 - .byte 0x20, 0x11, 0x37 - .byte 0x0d, 0x33, 0x19 - .byte 0x25, 0x05, 0x36 - .byte 0x1e, 0x31, 0x20 - .byte 0x35, 0x3a, 0x2f - .byte 0x32, 0x2f, 0x30 - .byte 0x14, 0x23, 0x2d - .byte 0x35, 0x1e, 0x29 - .byte 0x05, 0x05, 0x1b - .byte 0x09, 0x1f, 0x26 - .byte 0x2f, 0x0b, 0x15 - .byte 0x15, 0x11, 0x13 - .byte 0x29, 0x1b, 0x18 - .byte 0x1c, 0x13, 0x35 - .byte 0x34, 0x31, 0x23 - .byte 0x27, 0x3f, 0x2f - .byte 0x09, 0x30, 0x19 - .byte 0x23, 0x12, 0x34 - .byte 0x02, 0x2a, 0x21 - .byte 0x09, 0x3c, 0x1d - .byte 0x0c, 0x02, 0x10 - .byte 0x22, 0x05, 0x17 - .byte 0x22, 0x08, 0x1b - .byte 0x0a, 0x0f, 0x15 - .byte 0x02, 0x11, 0x13 - .byte 0x01, 0x21, 0x22 - .byte 0x16, 0x39, 0x33 - .byte 0x24, 0x38, 0x34 - .byte 0x0f, 0x1e, 0x2b - .byte 0x2b, 0x15, 0x15 - .byte 0x20, 0x22, 0x2e - .byte 0x3a, 0x3f, 0x31 - .byte 0x1a, 0x27, 0x2b - .byte 0x29, 0x34, 0x14 - .byte 0x16, 0x39, 0x2f - .byte 0x13, 0x3e, 0x16 - .byte 0x36, 0x21, 0x30 - .byte 0x00, 0x24, 0x2b - .byte 0x24, 0x21, 0x30 - .byte 0x15, 0x31, 0x13 - .byte 0x10, 0x37, 0x24 - .byte 0x08, 0x07, 0x23 - .byte 0x21, 0x09, 0x25 - .byte 0x05, 0x3c, 0x32 - .byte 0x19, 0x03, 0x25 - .byte 0x0f, 0x29, 0x2b - .byte 0x16, 0x07, 0x13 - .byte 0x3e, 0x3d, 0x25 - .byte 0x36, 0x0b, 0x28 - .byte 0x2e, 0x2b, 0x16 - .byte 0x0c, 0x31, 0x11 - .byte 0x30, 0x13, 0x2d - .byte 0x26, 0x3e, 0x37 - .byte 0x29, 0x2f, 0x2e - .byte 0x15, 0x3d, 0x17 - .byte 0x1c, 0x2e, 0x21 - .byte 0x33, 0x2f, 0x10 - .byte 0x0d, 0x05, 0x1d - .byte 0x1c, 0x1a, 0x12 - .byte 0x0e, 0x18, 0x37 - .byte 0x1b, 0x11, 0x14 - .byte 0x06, 0x14, 0x21 - .byte 0x31, 0x0e, 0x27 - .byte 0x1a, 0x03, 0x10 - .byte 0x00, 0x34, 0x31 - .byte 0x3f, 0x0b, 0x1d - .byte 0x0f, 0x12, 0x1f - .byte 0x1a, 0x15, 0x10 - .byte 0x0f, 0x00, 0x24 - .byte 0x3e, 0x0a, 0x2a - .byte 0x30, 0x2b, 0x24 - .byte 0x26, 0x31, 0x10 - .byte 0x2d, 0x2f, 0x2f - .byte 0x3f, 0x0c, 0x13 - .byte 0x12, 0x0b, 0x16 - .byte 0x15, 0x07, 0x1f - .byte 0x28, 0x10, 0x32 - .byte 0x0f, 0x17, 0x15 - .byte 0x0b, 0x27, 0x33 - .byte 0x34, 0x1d, 0x10 - .byte 0x1c, 0x3a, 0x12 - .byte 0x2c, 0x27, 0x37 - .byte 0x0a, 0x1a, 0x32 - .byte 0x05, 0x1f, 0x21 - .byte 0x24, 0x0d, 0x1f - .byte 0x1c, 0x17, 0x24 - .byte 0x2f, 0x3b, 0x32 - .byte 0x3b, 0x25, 0x10 - .byte 0x03, 0x2f, 0x21 - .byte 0x0c, 0x10, 0x23 - .byte 0x0e, 0x3a, 0x2c - .byte 0x33, 0x03, 0x2c - .byte 0x12, 0x06, 0x1c - .byte 0x2a, 0x37, 0x30 - .byte 0x3f, 0x01, 0x1e - .byte 0x35, 0x16, 0x37 - .byte 0x2c, 0x32, 0x35 - .byte 0x05, 0x11, 0x22 - .byte 0x29, 0x09, 0x20 - .byte 0x2b, 0x0d, 0x1f - .byte 0x18, 0x0d, 0x20 - .byte 0x23, 0x39, 0x16 - .byte 0x0f, 0x3a, 0x18 - .byte 0x21, 0x35, 0x2b - .byte 0x36, 0x26, 0x2b - .byte 0x23, 0x05, 0x2f - .byte 0x1b, 0x08, 0x17 - .byte 0x3e, 0x09, 0x16 - .byte 0x2d, 0x3a, 0x37 - .byte 0x15, 0x35, 0x35 - .byte 0x29, 0x0a, 0x12 - .byte 0x02, 0x39, 0x1f - .byte 0x14, 0x34, 0x33 - .byte 0x17, 0x1d, 0x18 - .byte 0x16, 0x1d, 0x1a - .byte 0x01, 0x39, 0x22 - .byte 0x1e, 0x27, 0x36 - .byte 0x32, 0x14, 0x26 - .byte 0x0a, 0x39, 0x36 - .byte 0x1f, 0x0d, 0x1e - .byte 0x0b, 0x0a, 0x19 - .byte 0x35, 0x1d, 0x34 - .byte 0x03, 0x12, 0x16 - .byte 0x0c, 0x13, 0x2e - .byte 0x0c, 0x34, 0x1e - .byte 0x10, 0x14, 0x1e - .byte 0x23, 0x32, 0x27 - .byte 0x02, 0x10, 0x29 - .byte 0x35, 0x18, 0x33 - .byte 0x33, 0x1d, 0x1a - .byte 0x3c, 0x15, 0x23 - .byte 0x3e, 0x3f, 0x22 - .byte 0x2a, 0x02, 0x2c - .byte 0x28, 0x0a, 0x2f - .byte 0x1a, 0x06, 0x35 - .byte 0x3c, 0x17, 0x2b - .byte 0x03, 0x12, 0x17 - .byte 0x2f, 0x0a, 0x26 - .byte 0x12, 0x38, 0x11 - .byte 0x36, 0x1b, 0x23 - .byte 0x01, 0x39, 0x35 - .byte 0x19, 0x19, 0x17 - .byte 0x09, 0x28, 0x22 - .byte 0x1e, 0x27, 0x2c - .byte 0x35, 0x33, 0x2c - .byte 0x27, 0x25, 0x31 - .byte 0x06, 0x31, 0x2d - .byte 0x1a, 0x39, 0x28 - .byte 0x2d, 0x04, 0x1e - .byte 0x24, 0x3e, 0x1c - .byte 0x3c, 0x30, 0x1b - .byte 0x3f, 0x3e, 0x37 - .byte 0x22, 0x36, 0x11 - .byte 0x00, 0x01, 0x1c - .byte 0x12, 0x1a, 0x10 - .byte 0x12, 0x1e, 0x2c - .byte 0x1f, 0x12, 0x2a - .byte 0x2f, 0x06, 0x19 - .byte 0x35, 0x1a, 0x18 - .byte 0x3b, 0x09, 0x36 - .byte 0x34, 0x1d, 0x13 - .byte 0x02, 0x07, 0x10 - .byte 0x20, 0x2f, 0x1d - .byte 0x0b, 0x03, 0x33 - .byte 0x1c, 0x16, 0x31 - .byte 0x05, 0x13, 0x1b - .byte 0x29, 0x06, 0x13 - .byte 0x30, 0x2d, 0x36 - .byte 0x2a, 0x2d, 0x2c - .byte 0x19, 0x34, 0x1c - .byte 0x0f, 0x15, 0x12 - .byte 0x36, 0x15, 0x2c - .byte 0x3a, 0x06, 0x1c - .byte 0x12, 0x1d, 0x26 - .byte 0x03, 0x38, 0x1d - .byte 0x01, 0x01, 0x2d - .byte 0x17, 0x2e, 0x10 - .byte 0x14, 0x17, 0x1c - .byte 0x34, 0x0f, 0x28 - .byte 0x09, 0x37, 0x1b - .byte 0x28, 0x1d, 0x26 - .byte 0x29, 0x2d, 0x36 - .byte 0x1e, 0x17, 0x28 - .byte 0x15, 0x0f, 0x1c - .byte 0x20, 0x2d, 0x10 - .byte 0x27, 0x16, 0x2e - .byte 0x14, 0x09, 0x12 - .byte 0x3b, 0x3d, 0x21 - .byte 0x25, 0x1a, 0x2c - .byte 0x00, 0x22, 0x36 - .byte 0x0d, 0x30, 0x10 - .byte 0x17, 0x19, 0x1b - .byte 0x00, 0x3b, 0x21 - .byte 0x2a, 0x28, 0x34 - .byte 0x2d, 0x0f, 0x16 - .byte 0x0a, 0x30, 0x28 - .byte 0x06, 0x00, 0x25 - .byte 0x31, 0x2e, 0x2a - .byte 0x14, 0x33, 0x28 - .byte 0x36, 0x10, 0x2e - .byte 0x05, 0x2e, 0x19 - .byte 0x19, 0x1a, 0x15 - .byte 0x2c, 0x14, 0x17 - .byte 0x37, 0x0f, 0x13 - .byte 0x32, 0x17, 0x1b - .byte 0x39, 0x18, 0x32 - .byte 0x2e, 0x32, 0x1e - .byte 0x24, 0x1d, 0x31 - .byte 0x12, 0x1d, 0x2b - .byte 0x14, 0x0c, 0x27 - .byte 0x36, 0x2e, 0x32 - .byte 0x06, 0x0a, 0x1a - .byte 0x28, 0x28, 0x20 - .byte 0x3a, 0x3a, 0x17 - .byte 0x08, 0x27, 0x36 - .byte 0x18, 0x1a, 0x10 - .byte 0x1e, 0x26, 0x1b - .byte 0x1f, 0x33, 0x1f - .byte 0x21, 0x17, 0x2f - .byte 0x01, 0x08, 0x20 - .byte 0x35, 0x03, 0x19 - .byte 0x3b, 0x02, 0x20 - .byte 0x02, 0x2d, 0x23 - .byte 0x0e, 0x17, 0x32 - .byte 0x31, 0x29, 0x11 - .byte 0x22, 0x17, 0x22 - .byte 0x3a, 0x2c, 0x23 - .byte 0x34, 0x20, 0x18 - .byte 0x00, 0x3a, 0x22 - .byte 0x25, 0x33, 0x21 - .byte 0x33, 0x04, 0x27 - .byte 0x04, 0x18, 0x32 - .byte 0x2c, 0x0c, 0x2f - .byte 0x28, 0x14, 0x2c - .byte 0x3f, 0x30, 0x2b - .byte 0x30, 0x21, 0x1d - .byte 0x01, 0x25, 0x32 - .byte 0x05, 0x23, 0x34 - .byte 0x24, 0x10, 0x30 - .byte 0x3d, 0x14, 0x1b - .byte 0x3f, 0x38, 0x2f - .byte 0x22, 0x1b, 0x32 - .byte 0x25, 0x07, 0x37 - .byte 0x0a, 0x0c, 0x1d - .byte 0x03, 0x1e, 0x1a - .byte 0x0f, 0x3c, 0x12 - .byte 0x11, 0x18, 0x1d - .byte 0x00, 0x35, 0x2f - .byte 0x32, 0x18, 0x14 - .byte 0x23, 0x30, 0x1b - .byte 0x11, 0x3d, 0x12 - .byte 0x1a, 0x16, 0x35 - .byte 0x28, 0x05, 0x24 - .byte 0x17, 0x3d, 0x37 - .byte 0x2e, 0x09, 0x2e - .byte 0x18, 0x1d, 0x17 - .byte 0x20, 0x1f, 0x18 - .byte 0x23, 0x2c, 0x2f - .byte 0x20, 0x3f, 0x16 - .byte 0x3f, 0x29, 0x2e - .byte 0x23, 0x3b, 0x29 - .byte 0x18, 0x39, 0x13 - .byte 0x1e, 0x32, 0x35 - .byte 0x14, 0x1d, 0x2a - .byte 0x35, 0x01, 0x1d - .byte 0x3e, 0x3b, 0x1e - .byte 0x22, 0x1e, 0x16 - .byte 0x18, 0x22, 0x12 - .byte 0x3e, 0x29, 0x33 - .byte 0x2f, 0x14, 0x19 - .byte 0x3b, 0x07, 0x15 - .byte 0x06, 0x3d, 0x29 - .byte 0x35, 0x37, 0x23 - .byte 0x34, 0x1d, 0x2d - .byte 0x18, 0x12, 0x1b - .byte 0x0b, 0x13, 0x24 - .byte 0x13, 0x38, 0x1c - .byte 0x1f, 0x0b, 0x1b - .byte 0x13, 0x21, 0x1c - .byte 0x06, 0x39, 0x32 - .byte 0x37, 0x3d, 0x26 - .byte 0x29, 0x26, 0x15 - .byte 0x3c, 0x33, 0x27 - .byte 0x00, 0x01, 0x2e - .byte 0x15, 0x18, 0x31 - .byte 0x0d, 0x2c, 0x13 - .byte 0x27, 0x3b, 0x20 - .byte 0x2d, 0x01, 0x26 - .byte 0x23, 0x15, 0x30 - .byte 0x24, 0x00, 0x17 - .byte 0x37, 0x3f, 0x33 - .byte 0x25, 0x24, 0x31 - .byte 0x06, 0x3b, 0x37 - .byte 0x03, 0x18, 0x1a - .byte 0x2c, 0x34, 0x14 - .byte 0x1d, 0x36, 0x18 - .byte 0x3a, 0x04, 0x23 - .byte 0x12, 0x26, 0x15 - .byte 0x2b, 0x19, 0x1a - .byte 0x29, 0x2c, 0x36 - .byte 0x01, 0x19, 0x1d - .byte 0x2f, 0x06, 0x2b - .byte 0x0c, 0x12, 0x26 - .byte 0x36, 0x32, 0x1d - .byte 0x0d, 0x12, 0x28 - .byte 0x03, 0x28, 0x13 - .byte 0x29, 0x06, 0x17 - .byte 0x03, 0x38, 0x21 - .byte 0x30, 0x2c, 0x10 - .byte 0x22, 0x00, 0x28 - .byte 0x24, 0x3b, 0x1c - .byte 0x20, 0x3e, 0x13 - .byte 0x02, 0x0c, 0x19 - .byte 0x29, 0x2c, 0x1a - .byte 0x39, 0x30, 0x22 - .byte 0x2a, 0x1f, 0x22 - .byte 0x14, 0x34, 0x2c - .byte 0x14, 0x25, 0x1b - .byte 0x06, 0x3b, 0x15 - .byte 0x06, 0x1c, 0x13 - .byte 0x15, 0x03, 0x18 - .byte 0x1e, 0x2a, 0x1b - .byte 0x17, 0x25, 0x2f - .byte 0x1c, 0x29, 0x2e - .byte 0x02, 0x32, 0x1e - .byte 0x1d, 0x28, 0x35 - .byte 0x36, 0x03, 0x34 - .byte 0x16, 0x3d, 0x2a - .byte 0x12, 0x0d, 0x13 - .byte 0x1d, 0x2d, 0x21 - .byte 0x32, 0x17, 0x2e - .byte 0x1a, 0x15, 0x26 - .byte 0x22, 0x2f, 0x15 - .byte 0x3c, 0x0e, 0x20 - .byte 0x2f, 0x27, 0x13 - .byte 0x04, 0x09, 0x32 - .byte 0x1e, 0x01, 0x34 - .byte 0x06, 0x16, 0x1e - .byte 0x2e, 0x1b, 0x1c - .byte 0x28, 0x13, 0x2a - .byte 0x30, 0x34, 0x12 - .byte 0x12, 0x32, 0x18 - .byte 0x1d, 0x1d, 0x35 - .byte 0x07, 0x1c, 0x16 - .byte 0x2d, 0x3d, 0x35 - .byte 0x1c, 0x1b, 0x24 - .byte 0x21, 0x2d, 0x1e - .byte 0x10, 0x09, 0x14 - .byte 0x3d, 0x11, 0x12 - .byte 0x25, 0x02, 0x26 - .byte 0x23, 0x02, 0x19 - .byte 0x19, 0x05, 0x14 - .byte 0x0b, 0x21, 0x1a - .byte 0x09, 0x02, 0x2c - .byte 0x18, 0x28, 0x2d - .byte 0x1e, 0x10, 0x12 - .byte 0x2e, 0x18, 0x2e - .byte 0x1f, 0x02, 0x2c - .byte 0x14, 0x17, 0x24 - .byte 0x39, 0x08, 0x32 - .byte 0x16, 0x14, 0x22 - .byte 0x16, 0x28, 0x21 - .byte 0x11, 0x10, 0x2c - .byte 0x23, 0x36, 0x2b - .byte 0x39, 0x21, 0x26 - .byte 0x0e, 0x06, 0x2d - .byte 0x3c, 0x3e, 0x26 - .byte 0x2a, 0x1b, 0x1f - .byte 0x00, 0x3c, 0x33 - .byte 0x35, 0x3f, 0x14 - .byte 0x00, 0x0b, 0x10 - .byte 0x34, 0x3c, 0x17 - .byte 0x2d, 0x07, 0x1f - .byte 0x24, 0x39, 0x27 - .byte 0x16, 0x00, 0x1d - .byte 0x33, 0x2b, 0x1e - .byte 0x0f, 0x08, 0x31 - .byte 0x3a, 0x09, 0x13 - .byte 0x0c, 0x21, 0x1c - .byte 0x2a, 0x17, 0x34 - .byte 0x29, 0x27, 0x10 - .byte 0x37, 0x1b, 0x18 - .byte 0x15, 0x08, 0x2f - .byte 0x1f, 0x16, 0x12 - .byte 0x1f, 0x28, 0x34 - .byte 0x1c, 0x20, 0x22 - .byte 0x12, 0x01, 0x12 - .byte 0x21, 0x31, 0x10 - .byte 0x22, 0x26, 0x1e - .byte 0x01, 0x3d, 0x11 - .byte 0x1e, 0x27, 0x25 - .byte 0x3d, 0x30, 0x24 - .byte 0x1d, 0x11, 0x22 - .byte 0x36, 0x30, 0x16 - .byte 0x1f, 0x3e, 0x2a - .byte 0x3c, 0x27, 0x1b - .byte 0x1f, 0x29, 0x10 - .byte 0x1e, 0x05, 0x2a - .byte 0x0a, 0x10, 0x14 - .byte 0x1f, 0x00, 0x2e - .byte 0x0b, 0x3b, 0x18 - .byte 0x0a, 0x39, 0x30 - .byte 0x37, 0x0b, 0x1f - .byte 0x1d, 0x0a, 0x29 - .byte 0x3e, 0x1c, 0x33 - .byte 0x13, 0x2e, 0x28 - .byte 0x27, 0x1b, 0x1e - .byte 0x1d, 0x02, 0x1c - .byte 0x01, 0x25, 0x14 - .byte 0x3a, 0x10, 0x1c - .byte 0x12, 0x05, 0x2a - .byte 0x30, 0x20, 0x26 - .byte 0x2f, 0x2e, 0x2e - .byte 0x03, 0x07, 0x24 - .byte 0x36, 0x04, 0x2b - .byte 0x11, 0x25, 0x2d - .byte 0x28, 0x0e, 0x2e - .byte 0x0f, 0x1d, 0x15 - .byte 0x1c, 0x28, 0x30 - .byte 0x1f, 0x23, 0x26 - .byte 0x36, 0x12, 0x37 - .byte 0x3a, 0x31, 0x10 - .byte 0x2c, 0x2c, 0x2f - .byte 0x1a, 0x0d, 0x15 - .byte 0x3f, 0x3c, 0x32 - .byte 0x35, 0x1c, 0x16 - .byte 0x33, 0x16, 0x28 - .byte 0x1d, 0x3f, 0x21 - .byte 0x2c, 0x3e, 0x2b - .byte 0x24, 0x23, 0x2f - .byte 0x32, 0x15, 0x2a - .byte 0x1b, 0x10, 0x35 - .byte 0x18, 0x37, 0x10 - .byte 0x3b, 0x1e, 0x11 - .byte 0x2b, 0x16, 0x24 - .byte 0x1d, 0x16, 0x26 - .byte 0x3c, 0x2d, 0x11 - .byte 0x15, 0x28, 0x28 - .byte 0x27, 0x27, 0x27 - .byte 0x3b, 0x3a, 0x16 - .byte 0x1a, 0x0c, 0x1a - .byte 0x15, 0x08, 0x25 - .byte 0x0b, 0x10, 0x22 - .byte 0x1a, 0x3e, 0x17 - .byte 0x28, 0x1f, 0x1e - .byte 0x01, 0x1e, 0x1e - .byte 0x1c, 0x2f, 0x10 - .byte 0x25, 0x0b, 0x34 - .byte 0x3e, 0x0c, 0x1a - .byte 0x1b, 0x10, 0x2a - .byte 0x0f, 0x14, 0x17 - .byte 0x0f, 0x3f, 0x17 - .byte 0x03, 0x15, 0x1f - .byte 0x02, 0x36, 0x17 - .byte 0x15, 0x1d, 0x18 - .byte 0x08, 0x36, 0x10 - .byte 0x14, 0x0d, 0x2b - .byte 0x0a, 0x05, 0x1d - .byte 0x26, 0x12, 0x1e - .byte 0x3e, 0x18, 0x19 - .byte 0x36, 0x18, 0x37 - .byte 0x17, 0x39, 0x2e - .byte 0x0d, 0x04, 0x19 - .byte 0x16, 0x22, 0x15 - .byte 0x3e, 0x26, 0x1f - .byte 0x00, 0x06, 0x17 - .byte 0x33, 0x22, 0x1d - .byte 0x2b, 0x39, 0x2b - .byte 0x3e, 0x31, 0x1c - .byte 0x22, 0x3f, 0x13 - .byte 0x30, 0x1c, 0x31 - .byte 0x07, 0x2b, 0x14 - .byte 0x32, 0x35, 0x1e - .byte 0x02, 0x07, 0x20 - .byte 0x0f, 0x3b, 0x11 - .byte 0x20, 0x07, 0x12 - .byte 0x2a, 0x30, 0x1d - .byte 0x28, 0x38, 0x36 - .byte 0x20, 0x01, 0x17 - .byte 0x15, 0x20, 0x21 - .byte 0x3a, 0x1b, 0x1e - .byte 0x38, 0x12, 0x24 - .byte 0x03, 0x3e, 0x1f - .byte 0x29, 0x1d, 0x13 - .byte 0x20, 0x27, 0x19 - .byte 0x12, 0x25, 0x20 - .byte 0x32, 0x33, 0x2b - .byte 0x3f, 0x05, 0x31 - .byte 0x35, 0x3c, 0x2d - .byte 0x2d, 0x02, 0x2e - .byte 0x10, 0x2a, 0x16 - .byte 0x17, 0x08, 0x31 - .byte 0x17, 0x2e, 0x2b - .byte 0x30, 0x1e, 0x15 - .byte 0x31, 0x15, 0x26 - .byte 0x08, 0x10, 0x33 - .byte 0x15, 0x01, 0x27 - .byte 0x12, 0x07, 0x2f - .byte 0x29, 0x27, 0x34 - .byte 0x3f, 0x08, 0x31 - .byte 0x1c, 0x20, 0x1a - .byte 0x33, 0x0c, 0x13 - .byte 0x18, 0x31, 0x24 - .byte 0x37, 0x2d, 0x2e - .byte 0x21, 0x18, 0x24 - .byte 0x3a, 0x27, 0x31 - .byte 0x35, 0x3e, 0x30 - .byte 0x3a, 0x14, 0x33 - .byte 0x0f, 0x1a, 0x2d - .byte 0x30, 0x2e, 0x11 - .byte 0x1a, 0x31, 0x1d - .byte 0x17, 0x3c, 0x18 - .byte 0x33, 0x31, 0x23 - .byte 0x1d, 0x39, 0x2d - .byte 0x10, 0x1d, 0x2f - .byte 0x24, 0x15, 0x1c - .byte 0x25, 0x01, 0x2b - .byte 0x22, 0x16, 0x2e - .byte 0x1b, 0x25, 0x35 - .byte 0x37, 0x10, 0x26 - .byte 0x39, 0x01, 0x36 - .byte 0x17, 0x2b, 0x14 - .byte 0x09, 0x16, 0x17 - .byte 0x20, 0x28, 0x23 - .byte 0x26, 0x3a, 0x26 - .byte 0x27, 0x2a, 0x24 - .byte 0x36, 0x02, 0x2c - .byte 0x29, 0x30, 0x35 - .byte 0x36, 0x01, 0x1f - .byte 0x28, 0x3b, 0x1d - .byte 0x23, 0x1e, 0x2d - .byte 0x11, 0x1e, 0x2c - .byte 0x2f, 0x32, 0x19 - .byte 0x3f, 0x26, 0x31 - .byte 0x38, 0x1e, 0x17 - .byte 0x05, 0x18, 0x2e - .byte 0x00, 0x2e, 0x12 - .byte 0x34, 0x3f, 0x34 - .byte 0x16, 0x10, 0x29 - .byte 0x20, 0x3d, 0x36 - .byte 0x2f, 0x16, 0x25 - .byte 0x12, 0x17, 0x10 - .byte 0x21, 0x37, 0x35 - .byte 0x25, 0x37, 0x2d - .byte 0x01, 0x08, 0x27 - .byte 0x03, 0x1f, 0x29 - .byte 0x0d, 0x2a, 0x16 - .byte 0x3a, 0x3f, 0x33 - .byte 0x2b, 0x19, 0x1d - .byte 0x2a, 0x1f, 0x29 - .byte 0x28, 0x2c, 0x10 - .byte 0x28, 0x30, 0x10 - .byte 0x39, 0x14, 0x1b - .byte 0x00, 0x18, 0x21 - .byte 0x28, 0x0c, 0x37 - .byte 0x11, 0x10, 0x11 - .byte 0x3c, 0x33, 0x32 - .byte 0x33, 0x36, 0x1a - .byte 0x36, 0x00, 0x1c - .byte 0x31, 0x1b, 0x1d - .byte 0x38, 0x1d, 0x10 - .byte 0x3c, 0x39, 0x27 - .byte 0x3a, 0x3f, 0x14 - .byte 0x19, 0x12, 0x14 - .byte 0x0d, 0x1f, 0x18 - .byte 0x00, 0x25, 0x18 - .byte 0x28, 0x1c, 0x32 - .byte 0x27, 0x03, 0x1a - .byte 0x26, 0x2d, 0x2a - .byte 0x29, 0x28, 0x27 - .byte 0x0a, 0x2a, 0x18 - .byte 0x0a, 0x1a, 0x30 - .byte 0x20, 0x1a, 0x2e - .byte 0x06, 0x0b, 0x1d - .byte 0x0f, 0x0c, 0x1c - .byte 0x35, 0x28, 0x1c - .byte 0x3d, 0x16, 0x23 - .byte 0x21, 0x1c, 0x31 - .byte 0x14, 0x1c, 0x2e - .byte 0x22, 0x32, 0x35 - .byte 0x09, 0x29, 0x30 - .byte 0x20, 0x1a, 0x10 - .byte 0x31, 0x3f, 0x2c - .byte 0x0a, 0x3d, 0x37 - .byte 0x0b, 0x2e, 0x2d - .byte 0x1f, 0x22, 0x31 - .byte 0x06, 0x07, 0x29 - .byte 0x22, 0x17, 0x2d - .byte 0x30, 0x11, 0x18 - .byte 0x0c, 0x19, 0x15 - .byte 0x07, 0x0a, 0x34 - .byte 0x18, 0x29, 0x27 - .byte 0x33, 0x0c, 0x30 - .byte 0x03, 0x1a, 0x37 - .byte 0x06, 0x01, 0x2d - .byte 0x0f, 0x3b, 0x2b - .byte 0x11, 0x1f, 0x37 - .byte 0x2b, 0x21, 0x36 - .byte 0x3f, 0x23, 0x17 - .byte 0x17, 0x07, 0x2b - .byte 0x2b, 0x0e, 0x30 - .byte 0x11, 0x39, 0x1d - .byte 0x29, 0x03, 0x33 - .byte 0x30, 0x03, 0x2f - .byte 0x3c, 0x20, 0x26 - .byte 0x03, 0x22, 0x14 - .byte 0x3a, 0x28, 0x35 - .byte 0x01, 0x28, 0x2b - .byte 0x3e, 0x15, 0x18 - .byte 0x30, 0x07, 0x17 - .byte 0x3b, 0x2c, 0x30 - .byte 0x15, 0x07, 0x2c - .byte 0x17, 0x27, 0x1d - .byte 0x3f, 0x1e, 0x33 - .byte 0x0d, 0x17, 0x10 - .byte 0x15, 0x0e, 0x30 - .byte 0x09, 0x05, 0x30 - .byte 0x2d, 0x20, 0x15 - .byte 0x3c, 0x3d, 0x30 - .byte 0x0c, 0x17, 0x1c - .byte 0x1a, 0x0d, 0x25 - .byte 0x2b, 0x2b, 0x2a - .byte 0x02, 0x16, 0x2d - .byte 0x17, 0x31, 0x17 - .byte 0x00, 0x08, 0x13 - .byte 0x37, 0x35, 0x21 - .byte 0x1e, 0x1c, 0x1f - .byte 0x2b, 0x32, 0x1c - .byte 0x10, 0x2a, 0x16 - .byte 0x3a, 0x33, 0x31 - .byte 0x17, 0x2b, 0x2a - .byte 0x0c, 0x3d, 0x11 - .byte 0x28, 0x0a, 0x30 - .byte 0x23, 0x0a, 0x26 - .byte 0x0a, 0x14, 0x24 - .byte 0x0b, 0x0f, 0x30 - .byte 0x1b, 0x1e, 0x29 - .byte 0x02, 0x35, 0x28 - .byte 0x3b, 0x02, 0x14 - .byte 0x00, 0x0f, 0x35 - .byte 0x1c, 0x3c, 0x2e - .byte 0x28, 0x38, 0x19 - .byte 0x1b, 0x11, 0x12 - .byte 0x09, 0x16, 0x10 - .byte 0x2e, 0x0d, 0x20 - .byte 0x3d, 0x04, 0x32 - .byte 0x16, 0x2c, 0x25 - .byte 0x02, 0x3d, 0x18 - .byte 0x0b, 0x13, 0x1c - .byte 0x22, 0x2a, 0x1c - .byte 0x20, 0x27, 0x22 - .byte 0x05, 0x26, 0x22 - .byte 0x12, 0x1d, 0x2c - .byte 0x08, 0x05, 0x2e - .byte 0x3f, 0x1c, 0x17 - .byte 0x24, 0x0d, 0x33 - .byte 0x36, 0x08, 0x24 - .byte 0x10, 0x22, 0x29 - .byte 0x1c, 0x0a, 0x11 - .byte 0x25, 0x0f, 0x10 - .byte 0x24, 0x38, 0x2f - .byte 0x25, 0x32, 0x1e - .byte 0x06, 0x2a, 0x29 - .byte 0x3e, 0x3a, 0x28 - .byte 0x34, 0x17, 0x33 - .byte 0x18, 0x33, 0x17 - .byte 0x07, 0x14, 0x1f - .byte 0x11, 0x17, 0x20 - .byte 0x13, 0x0e, 0x14 - .byte 0x3b, 0x1c, 0x12 - .byte 0x2a, 0x13, 0x37 - .byte 0x2a, 0x35, 0x32 - .byte 0x30, 0x02, 0x25 - .byte 0x00, 0x07, 0x1f - .byte 0x0c, 0x04, 0x2c - .byte 0x37, 0x37, 0x30 - .byte 0x25, 0x12, 0x25 - .byte 0x12, 0x22, 0x21 - .byte 0x22, 0x35, 0x33 - .byte 0x07, 0x20, 0x2d - .byte 0x27, 0x0e, 0x30 - .byte 0x34, 0x19, 0x1a - .byte 0x0a, 0x3c, 0x25 - .byte 0x07, 0x1d, 0x2b - .byte 0x31, 0x3a, 0x12 - .byte 0x1a, 0x3d, 0x37 - .byte 0x16, 0x15, 0x16 - .byte 0x39, 0x13, 0x15 - .byte 0x2d, 0x03, 0x2e - .byte 0x06, 0x39, 0x2c - .byte 0x16, 0x00, 0x13 - .byte 0x35, 0x2a, 0x35 - .byte 0x24, 0x01, 0x18 - .byte 0x24, 0x37, 0x28 - .byte 0x25, 0x1b, 0x34 - .byte 0x25, 0x19, 0x17 - .byte 0x27, 0x2f, 0x1b - .byte 0x27, 0x0d, 0x10 - .byte 0x36, 0x3c, 0x30 - .byte 0x3c, 0x33, 0x23 - .byte 0x3e, 0x27, 0x1e - .byte 0x25, 0x2d, 0x29 - .byte 0x1f, 0x12, 0x21 - .byte 0x37, 0x32, 0x1f - .byte 0x11, 0x21, 0x35 - .byte 0x30, 0x0c, 0x19 - .byte 0x25, 0x3d, 0x26 - .byte 0x17, 0x02, 0x1d - .byte 0x14, 0x2e, 0x11 - .byte 0x38, 0x13, 0x30 - .byte 0x0a, 0x2b, 0x20 - .byte 0x1e, 0x10, 0x15 - .byte 0x37, 0x30, 0x2e - .byte 0x1e, 0x04, 0x2c - .byte 0x14, 0x34, 0x19 - .byte 0x08, 0x14, 0x18 - .byte 0x0e, 0x1c, 0x30 - .byte 0x1a, 0x2e, 0x1b - .byte 0x1f, 0x39, 0x31 - .byte 0x0c, 0x1c, 0x28 - .byte 0x3e, 0x33, 0x23 - .byte 0x0f, 0x13, 0x16 - .byte 0x25, 0x39, 0x2f - .byte 0x14, 0x1b, 0x1a - .byte 0x28, 0x3e, 0x21 - .byte 0x2d, 0x19, 0x11 - .byte 0x0c, 0x34, 0x32 - .byte 0x39, 0x31, 0x19 - .byte 0x1a, 0x08, 0x34 - .byte 0x09, 0x2f, 0x11 - .byte 0x30, 0x04, 0x1c - .byte 0x02, 0x3b, 0x1b - .byte 0x33, 0x21, 0x33 - .byte 0x38, 0x02, 0x1a - .byte 0x31, 0x38, 0x32 - .byte 0x1f, 0x1d, 0x16 - .byte 0x17, 0x10, 0x1b - .byte 0x32, 0x20, 0x17 - .byte 0x00, 0x33, 0x12 - .byte 0x21, 0x0f, 0x27 - .byte 0x14, 0x19, 0x27 - .byte 0x24, 0x2c, 0x37 - .byte 0x25, 0x05, 0x2f - .byte 0x3d, 0x25, 0x11 - .byte 0x12, 0x30, 0x1a - .byte 0x16, 0x03, 0x1a - .byte 0x14, 0x09, 0x13 - .byte 0x02, 0x23, 0x22 - .byte 0x01, 0x3c, 0x10 - .byte 0x3f, 0x2d, 0x23 - .byte 0x31, 0x3f, 0x23 - .byte 0x17, 0x00, 0x33 - .byte 0x3f, 0x0f, 0x2f - .byte 0x26, 0x07, 0x15 - .byte 0x21, 0x2b, 0x2a - .byte 0x38, 0x39, 0x1e - .byte 0x09, 0x25, 0x2b - .byte 0x3b, 0x30, 0x25 - .byte 0x12, 0x2d, 0x13 - .byte 0x32, 0x19, 0x28 - .byte 0x24, 0x1c, 0x2d - .byte 0x35, 0x32, 0x26 - .byte 0x0d, 0x23, 0x1e - .byte 0x1d, 0x07, 0x21 - .byte 0x0b, 0x34, 0x17 - .byte 0x2d, 0x32, 0x32 - .byte 0x3a, 0x3c, 0x35 - .byte 0x1a, 0x10, 0x33 - .byte 0x1a, 0x07, 0x22 - .byte 0x3b, 0x1b, 0x2a - .byte 0x33, 0x1f, 0x26 - .byte 0x0e, 0x35, 0x1a - .byte 0x3b, 0x0a, 0x1c - .byte 0x11, 0x07, 0x11 - .byte 0x0d, 0x3c, 0x2d - .byte 0x1e, 0x37, 0x29 - .byte 0x11, 0x05, 0x12 - .byte 0x15, 0x2f, 0x1c - .byte 0x24, 0x31, 0x16 - .byte 0x2b, 0x21, 0x1b - .byte 0x23, 0x10, 0x31 - .byte 0x02, 0x14, 0x29 - .byte 0x26, 0x20, 0x16 - .byte 0x10, 0x17, 0x10 - .byte 0x0b, 0x0f, 0x33 - .byte 0x01, 0x2e, 0x14 - .byte 0x21, 0x0e, 0x37 - .byte 0x1a, 0x1d, 0x2f - .byte 0x1e, 0x30, 0x24 - .byte 0x04, 0x14, 0x2d - .byte 0x11, 0x00, 0x30 - .byte 0x08, 0x2a, 0x1d - .byte 0x1d, 0x22, 0x21 - .byte 0x24, 0x2c, 0x37 - .byte 0x24, 0x11, 0x12 - .byte 0x04, 0x2e, 0x28 - .byte 0x1d, 0x18, 0x23 - .byte 0x3c, 0x16, 0x16 - .byte 0x10, 0x17, 0x31 - .byte 0x20, 0x21, 0x12 - .byte 0x33, 0x3e, 0x34 - .byte 0x06, 0x13, 0x13 - .byte 0x17, 0x38, 0x2b - .byte 0x14, 0x0d, 0x15 - .byte 0x24, 0x3b, 0x2b - .byte 0x34, 0x3b, 0x1e - .byte 0x18, 0x07, 0x34 - .byte 0x37, 0x1d, 0x1f - .byte 0x0b, 0x29, 0x20 - .byte 0x12, 0x1e, 0x1d - .byte 0x1a, 0x24, 0x24 - .byte 0x3d, 0x28, 0x24 - .byte 0x0b, 0x12, 0x33 - .byte 0x1b, 0x3a, 0x22 - .byte 0x14, 0x13, 0x2a - .byte 0x31, 0x38, 0x15 - .byte 0x37, 0x2b, 0x2e - .byte 0x19, 0x1e, 0x2c - .byte 0x3f, 0x1b, 0x2a - .byte 0x33, 0x1f, 0x33 - .byte 0x3f, 0x15, 0x29 - .byte 0x01, 0x1e, 0x18 - .byte 0x1f, 0x22, 0x19 - .byte 0x33, 0x3c, 0x34 - .byte 0x1e, 0x12, 0x22 - .byte 0x0d, 0x37, 0x2c - .byte 0x0f, 0x08, 0x31 - .byte 0x2e, 0x09, 0x36 - .byte 0x01, 0x05, 0x1e - .byte 0x1c, 0x04, 0x1e - .byte 0x0c, 0x01, 0x1c - .byte 0x29, 0x28, 0x2f - .byte 0x39, 0x2d, 0x14 - .byte 0x09, 0x22, 0x36 - .byte 0x04, 0x37, 0x37 - .byte 0x2d, 0x2f, 0x35 - .byte 0x24, 0x23, 0x1b - .byte 0x08, 0x20, 0x32 - .byte 0x20, 0x1f, 0x34 - .byte 0x02, 0x31, 0x19 - .byte 0x18, 0x13, 0x36 - .byte 0x06, 0x2b, 0x1e - .byte 0x0e, 0x1b, 0x10 - .byte 0x2f, 0x0e, 0x1c - .byte 0x11, 0x38, 0x13 - .byte 0x01, 0x37, 0x19 - .byte 0x14, 0x11, 0x26 - .byte 0x31, 0x3d, 0x33 - .byte 0x1d, 0x1b, 0x34 - .byte 0x25, 0x31, 0x2f - .byte 0x11, 0x0a, 0x2f - .byte 0x39, 0x17, 0x1b - .byte 0x05, 0x0e, 0x13 - .byte 0x29, 0x25, 0x22 - .byte 0x15, 0x0d, 0x20 - .byte 0x2b, 0x27, 0x21 - .byte 0x3e, 0x24, 0x27 - .byte 0x2a, 0x2b, 0x16 - .byte 0x24, 0x3d, 0x15 - .byte 0x15, 0x30, 0x31 - .byte 0x0f, 0x33, 0x24 - .byte 0x06, 0x16, 0x13 - .byte 0x06, 0x31, 0x10 - .byte 0x2e, 0x3f, 0x10 - .byte 0x05, 0x0d, 0x2f - .byte 0x3c, 0x1f, 0x19 - .byte 0x12, 0x13, 0x24 - .byte 0x0f, 0x33, 0x36 - .byte 0x15, 0x3b, 0x33 - .byte 0x03, 0x0f, 0x2a - .byte 0x3b, 0x3c, 0x2c - .byte 0x36, 0x09, 0x29 - .byte 0x11, 0x3b, 0x27 - .byte 0x28, 0x2b, 0x31 - .byte 0x1a, 0x0e, 0x2f - .byte 0x39, 0x2c, 0x31 - .byte 0x0e, 0x3c, 0x35 - .byte 0x2c, 0x24, 0x33 - .byte 0x3d, 0x11, 0x2b - .byte 0x07, 0x3c, 0x37 - .byte 0x14, 0x18, 0x13 - .byte 0x1d, 0x3f, 0x2e - .byte 0x30, 0x12, 0x25 - .byte 0x26, 0x1d, 0x11 - .byte 0x07, 0x11, 0x1e - .byte 0x34, 0x01, 0x11 - .byte 0x0b, 0x39, 0x21 - .byte 0x29, 0x02, 0x29 - .byte 0x15, 0x10, 0x1a - .byte 0x30, 0x1f, 0x35 - .byte 0x3c, 0x2b, 0x2a - .byte 0x30, 0x3b, 0x36 - .byte 0x20, 0x1a, 0x23 - .byte 0x32, 0x24, 0x2b - .byte 0x15, 0x20, 0x1c - .byte 0x25, 0x3d, 0x36 - .byte 0x2d, 0x14, 0x31 - .byte 0x18, 0x23, 0x17 - .byte 0x18, 0x05, 0x13 - .byte 0x34, 0x30, 0x37 - .byte 0x0e, 0x39, 0x23 - .byte 0x1d, 0x1f, 0x17 - .byte 0x01, 0x15, 0x2f - .byte 0x0b, 0x3e, 0x1b - .byte 0x0d, 0x19, 0x2e - .byte 0x31, 0x38, 0x1c - .byte 0x15, 0x34, 0x15 - .byte 0x13, 0x19, 0x29 - .byte 0x19, 0x14, 0x27 - .byte 0x15, 0x18, 0x23 - .byte 0x29, 0x0c, 0x27 - .byte 0x2d, 0x0e, 0x17 - .byte 0x34, 0x18, 0x10 - .byte 0x3b, 0x1e, 0x29 - .byte 0x34, 0x2c, 0x22 - .byte 0x31, 0x08, 0x13 - .byte 0x1d, 0x18, 0x1a - .byte 0x1c, 0x0b, 0x2a - .byte 0x19, 0x1e, 0x1a - .byte 0x23, 0x27, 0x17 - .byte 0x3b, 0x0e, 0x37 - .byte 0x19, 0x2b, 0x16 - .byte 0x2f, 0x08, 0x21 - .byte 0x37, 0x02, 0x20 - .byte 0x0b, 0x32, 0x30 - .byte 0x16, 0x05, 0x30 - .byte 0x13, 0x05, 0x1a - .byte 0x07, 0x39, 0x19 - .byte 0x0c, 0x3b, 0x2a - .byte 0x15, 0x05, 0x30 - .byte 0x30, 0x05, 0x19 - .byte 0x13, 0x00, 0x12 - .byte 0x27, 0x16, 0x2a - .byte 0x0f, 0x28, 0x27 - .byte 0x0c, 0x23, 0x2f - .byte 0x39, 0x28, 0x2a - .byte 0x24, 0x25, 0x1f - .byte 0x18, 0x29, 0x14 - .byte 0x16, 0x05, 0x1a - .byte 0x35, 0x2f, 0x26 - .byte 0x0a, 0x3a, 0x29 - .byte 0x34, 0x2c, 0x36 - .byte 0x2e, 0x3a, 0x15 - .byte 0x1a, 0x0a, 0x2d - .byte 0x16, 0x14, 0x2e - .byte 0x35, 0x28, 0x2a - .byte 0x35, 0x0f, 0x11 - .byte 0x11, 0x32, 0x19 - .byte 0x20, 0x1a, 0x28 - .byte 0x17, 0x1a, 0x28 - .byte 0x16, 0x33, 0x25 - .byte 0x13, 0x2c, 0x29 - .byte 0x09, 0x16, 0x33 - .byte 0x1d, 0x27, 0x26 - .byte 0x15, 0x0c, 0x2f - .byte 0x22, 0x1c, 0x19 - .byte 0x29, 0x33, 0x10 - .byte 0x2d, 0x11, 0x1b - .byte 0x16, 0x19, 0x2e - .byte 0x0d, 0x0c, 0x28 - .byte 0x37, 0x3a, 0x34 - .byte 0x2a, 0x1d, 0x37 - .byte 0x30, 0x0a, 0x36 - .byte 0x24, 0x39, 0x1b - .byte 0x39, 0x0a, 0x32 - .byte 0x11, 0x03, 0x2d - .byte 0x32, 0x1d, 0x30 - .byte 0x38, 0x1e, 0x27 - .byte 0x2e, 0x17, 0x18 - .byte 0x16, 0x17, 0x2a - .byte 0x36, 0x3b, 0x31 - .byte 0x17, 0x04, 0x19 - .byte 0x3a, 0x25, 0x2d - .byte 0x00, 0x36, 0x27 - .byte 0x25, 0x12, 0x33 - .byte 0x06, 0x0a, 0x14 - .byte 0x11, 0x05, 0x2f - .byte 0x03, 0x35, 0x2f - .byte 0x0b, 0x34, 0x29 - .byte 0x00, 0x31, 0x13 - .byte 0x27, 0x0f, 0x1c - .byte 0x1d, 0x06, 0x2d - .byte 0x1c, 0x30, 0x27 - .byte 0x2f, 0x2a, 0x27 - .byte 0x16, 0x20, 0x31 - .byte 0x33, 0x2b, 0x2b - .byte 0x05, 0x30, 0x36 - .byte 0x29, 0x23, 0x35 - .byte 0x10, 0x16, 0x2f - .byte 0x2d, 0x20, 0x29 - .byte 0x37, 0x13, 0x24 - .byte 0x2d, 0x0e, 0x25 - .byte 0x08, 0x0a, 0x18 - .byte 0x0f, 0x03, 0x1b - .byte 0x31, 0x0c, 0x37 - .byte 0x1e, 0x34, 0x31 - .byte 0x1b, 0x0e, 0x25 - .byte 0x1a, 0x07, 0x34 - .byte 0x0d, 0x3c, 0x33 - .byte 0x00, 0x3a, 0x36 - .byte 0x04, 0x27, 0x12 - .byte 0x23, 0x18, 0x24 - .byte 0x0d, 0x0b, 0x18 - .byte 0x31, 0x32, 0x37 - .byte 0x00, 0x0d, 0x21 - .byte 0x32, 0x10, 0x12 - .byte 0x26, 0x0d, 0x19 - .byte 0x29, 0x24, 0x2b - .byte 0x3d, 0x21, 0x1f - .byte 0x1e, 0x1b, 0x28 - .byte 0x0d, 0x12, 0x28 - .byte 0x35, 0x1e, 0x23 - .byte 0x0a, 0x2e, 0x22 - .byte 0x27, 0x27, 0x35 - .byte 0x01, 0x0e, 0x20 - .byte 0x31, 0x39, 0x29 - .byte 0x3b, 0x24, 0x36 - .byte 0x14, 0x10, 0x33 - .byte 0x18, 0x2c, 0x26 - .byte 0x04, 0x2d, 0x15 - .byte 0x1a, 0x11, 0x37 - .byte 0x0f, 0x0b, 0x14 - .byte 0x0e, 0x2c, 0x2c - .byte 0x21, 0x17, 0x2c - .byte 0x16, 0x21, 0x35 - .byte 0x3e, 0x10, 0x10 - .byte 0x0a, 0x05, 0x1e - .byte 0x3b, 0x09, 0x13 - .byte 0x26, 0x18, 0x1e - .byte 0x23, 0x0c, 0x1a - .byte 0x33, 0x37, 0x1f - .byte 0x09, 0x12, 0x35 - .byte 0x3d, 0x0d, 0x15 - .byte 0x36, 0x06, 0x24 - .byte 0x33, 0x30, 0x29 - .byte 0x3b, 0x0f, 0x28 - .byte 0x34, 0x2a, 0x2c - .byte 0x02, 0x12, 0x35 - .byte 0x09, 0x22, 0x31 - .byte 0x3b, 0x31, 0x1c - .byte 0x33, 0x22, 0x27 - .byte 0x3d, 0x34, 0x15 - .byte 0x14, 0x22, 0x28 - .byte 0x28, 0x10, 0x1e - .byte 0x21, 0x31, 0x10 - .byte 0x2d, 0x16, 0x21 - .byte 0x1e, 0x05, 0x33 - .byte 0x0f, 0x30, 0x31 - .byte 0x0e, 0x1a, 0x35 - .byte 0x38, 0x2e, 0x28 - .byte 0x26, 0x37, 0x1e - .byte 0x2b, 0x13, 0x33 - .byte 0x1f, 0x1e, 0x37 - .byte 0x0a, 0x28, 0x24 - .byte 0x32, 0x1c, 0x1a - .byte 0x1f, 0x3f, 0x19 - .byte 0x39, 0x39, 0x29 - .byte 0x2c, 0x1b, 0x14 - .byte 0x15, 0x2a, 0x17 - .byte 0x32, 0x0f, 0x21 - .byte 0x30, 0x21, 0x18 - .byte 0x23, 0x2a, 0x27 - .byte 0x3d, 0x07, 0x10 - .byte 0x0b, 0x3f, 0x2f - .byte 0x31, 0x02, 0x2e - .byte 0x08, 0x39, 0x2f - .byte 0x3f, 0x20, 0x18 - .byte 0x2d, 0x34, 0x11 - .byte 0x2e, 0x34, 0x10 - .byte 0x26, 0x12, 0x23 - .byte 0x25, 0x0a, 0x37 - .byte 0x34, 0x09, 0x25 - .byte 0x0a, 0x3e, 0x16 - .byte 0x1a, 0x17, 0x11 - .byte 0x38, 0x1c, 0x20 - .byte 0x11, 0x21, 0x26 - .byte 0x05, 0x0f, 0x18 - .byte 0x26, 0x2b, 0x32 - .byte 0x0a, 0x0c, 0x16 - .byte 0x03, 0x29, 0x1d - .byte 0x29, 0x3b, 0x23 - .byte 0x16, 0x1b, 0x29 - .byte 0x07, 0x09, 0x17 - .byte 0x17, 0x2c, 0x1c - .byte 0x35, 0x33, 0x30 - .byte 0x17, 0x12, 0x1e - .byte 0x3d, 0x1a, 0x2b - .byte 0x21, 0x1d, 0x10 - .byte 0x0a, 0x08, 0x17 - .byte 0x14, 0x3c, 0x36 - .byte 0x28, 0x36, 0x36 - .byte 0x3b, 0x20, 0x1b - .byte 0x13, 0x22, 0x1d - .byte 0x13, 0x3a, 0x15 - .byte 0x02, 0x23, 0x2c - .byte 0x3e, 0x19, 0x14 - .byte 0x39, 0x3c, 0x1a - .byte 0x10, 0x08, 0x1e - .byte 0x0a, 0x13, 0x29 - .byte 0x3f, 0x38, 0x2c - .byte 0x07, 0x23, 0x1f - .byte 0x19, 0x2a, 0x24 - .byte 0x14, 0x3c, 0x1f - .byte 0x0d, 0x04, 0x37 - .byte 0x1a, 0x2f, 0x28 - .byte 0x2a, 0x1d, 0x1e - .byte 0x11, 0x37, 0x29 - .byte 0x28, 0x27, 0x12 - .byte 0x0d, 0x00, 0x26 - .byte 0x0a, 0x3c, 0x26 - .byte 0x1f, 0x1c, 0x33 - .byte 0x04, 0x3a, 0x2c - .byte 0x24, 0x3d, 0x2b - .byte 0x26, 0x31, 0x2f - .byte 0x13, 0x1c, 0x21 - .byte 0x3e, 0x12, 0x23 - .byte 0x36, 0x0a, 0x1a - .byte 0x2d, 0x1e, 0x19 - .byte 0x05, 0x1f, 0x1b - .byte 0x1e, 0x0a, 0x1f - .byte 0x20, 0x08, 0x24 - .byte 0x2c, 0x0c, 0x33 - .byte 0x1d, 0x1f, 0x11 - .byte 0x0e, 0x12, 0x10 - .byte 0x27, 0x12, 0x19 - .byte 0x2a, 0x13, 0x31 - .byte 0x1c, 0x04, 0x30 - .byte 0x1a, 0x38, 0x1f - .byte 0x2c, 0x35, 0x25 - .byte 0x07, 0x0b, 0x33 - .byte 0x2d, 0x02, 0x1a - .byte 0x2a, 0x35, 0x35 - .byte 0x16, 0x2f, 0x14 - .byte 0x11, 0x31, 0x33 - .byte 0x2c, 0x31, 0x1e - .byte 0x3c, 0x3a, 0x27 - .byte 0x3c, 0x2b, 0x12 - .byte 0x27, 0x1d, 0x12 - .byte 0x36, 0x2c, 0x2b - .byte 0x25, 0x3b, 0x35 - .byte 0x12, 0x3d, 0x27 - .byte 0x13, 0x23, 0x19 - .byte 0x33, 0x2c, 0x26 - .byte 0x09, 0x3c, 0x12 - .byte 0x15, 0x1a, 0x23 - .byte 0x21, 0x07, 0x1a - .byte 0x22, 0x25, 0x20 - .byte 0x19, 0x1b, 0x2c - .byte 0x3a, 0x19, 0x35 - .byte 0x05, 0x26, 0x1d - .byte 0x23, 0x22, 0x25 - .byte 0x0e, 0x1e, 0x11 - .byte 0x13, 0x30, 0x12 - .byte 0x2c, 0x22, 0x25 - .byte 0x0a, 0x1d, 0x18 - .byte 0x23, 0x3e, 0x1d - .byte 0x02, 0x28, 0x25 - .byte 0x21, 0x0e, 0x20 - .byte 0x21, 0x22, 0x37 - .byte 0x18, 0x33, 0x27 - .byte 0x23, 0x23, 0x31 - .byte 0x24, 0x1a, 0x1a - .byte 0x3e, 0x25, 0x24 - .byte 0x24, 0x01, 0x18 - .byte 0x34, 0x10, 0x22 - .byte 0x07, 0x00, 0x37 - .byte 0x06, 0x20, 0x20 - .byte 0x3a, 0x02, 0x2b - .byte 0x07, 0x2c, 0x2c - .byte 0x09, 0x2f, 0x2a - .byte 0x01, 0x32, 0x2c - .byte 0x00, 0x35, 0x13 - .byte 0x2b, 0x3c, 0x1f - .byte 0x36, 0x37, 0x1e - .byte 0x20, 0x35, 0x1d - .byte 0x0c, 0x07, 0x33 - .byte 0x16, 0x08, 0x12 - .byte 0x3f, 0x36, 0x11 - .byte 0x0b, 0x1f, 0x2d - .byte 0x21, 0x20, 0x33 - .byte 0x17, 0x1a, 0x2e - .byte 0x16, 0x01, 0x2f - .byte 0x2f, 0x1c, 0x34 - .byte 0x29, 0x31, 0x2e - .byte 0x3b, 0x38, 0x31 - .byte 0x0d, 0x16, 0x12 - .byte 0x07, 0x29, 0x24 - .byte 0x33, 0x3c, 0x34 - .byte 0x3e, 0x1e, 0x18 - .byte 0x30, 0x02, 0x34 - .byte 0x2a, 0x34, 0x1b - .byte 0x2e, 0x23, 0x18 - .byte 0x34, 0x00, 0x1f - .byte 0x20, 0x0e, 0x28 - .byte 0x15, 0x33, 0x37 - .byte 0x27, 0x35, 0x23 - .byte 0x37, 0x3e, 0x11 - .byte 0x32, 0x2e, 0x36 - .byte 0x3a, 0x02, 0x2b - .byte 0x00, 0x36, 0x1d - .byte 0x13, 0x29, 0x16 - .byte 0x08, 0x2b, 0x37 - .byte 0x08, 0x02, 0x27 - .byte 0x32, 0x2d, 0x34 - .byte 0x30, 0x36, 0x29 - .byte 0x2e, 0x10, 0x12 - .byte 0x3c, 0x2e, 0x2a - .byte 0x04, 0x33, 0x30 - .byte 0x3f, 0x01, 0x22 - .byte 0x37, 0x14, 0x1d - .byte 0x27, 0x00, 0x2f - .byte 0x0c, 0x39, 0x26 - .byte 0x27, 0x04, 0x21 - .byte 0x19, 0x08, 0x1d - .byte 0x01, 0x04, 0x1e - .byte 0x27, 0x1b, 0x2b - .byte 0x31, 0x17, 0x1f - .byte 0x07, 0x01, 0x2d - .byte 0x2e, 0x3b, 0x1f - .byte 0x34, 0x24, 0x31 - .byte 0x32, 0x2b, 0x24 - .byte 0x0e, 0x07, 0x1e - .byte 0x0f, 0x33, 0x10 - .byte 0x16, 0x21, 0x32 - .byte 0x39, 0x02, 0x1a - .byte 0x33, 0x3d, 0x22 - .byte 0x0c, 0x25, 0x1a - .byte 0x29, 0x29, 0x28 - .byte 0x3a, 0x32, 0x26 - .byte 0x0b, 0x13, 0x22 - .byte 0x1f, 0x0f, 0x1c - .byte 0x04, 0x2c, 0x20 - .byte 0x39, 0x1a, 0x1b - .byte 0x1a, 0x2a, 0x1f - .byte 0x24, 0x13, 0x1a - .byte 0x31, 0x3b, 0x33 - .byte 0x39, 0x23, 0x28 - .byte 0x31, 0x07, 0x31 - .byte 0x1f, 0x10, 0x20 - .byte 0x29, 0x17, 0x32 - .byte 0x26, 0x3b, 0x2d - .byte 0x02, 0x3c, 0x1c - .byte 0x0e, 0x00, 0x20 - .byte 0x14, 0x3e, 0x37 - .byte 0x01, 0x0f, 0x2d - .byte 0x06, 0x12, 0x27 - .byte 0x30, 0x13, 0x19 - .byte 0x00, 0x33, 0x2a - .byte 0x0c, 0x07, 0x27 - .byte 0x11, 0x3a, 0x1c - .byte 0x15, 0x0a, 0x13 - .byte 0x1f, 0x0d, 0x2a - .byte 0x37, 0x07, 0x2a - .byte 0x34, 0x35, 0x34 - .byte 0x28, 0x16, 0x27 - .byte 0x06, 0x02, 0x36 - .byte 0x09, 0x23, 0x30 - .byte 0x14, 0x02, 0x28 - .byte 0x39, 0x32, 0x34 - .byte 0x24, 0x35, 0x12 - .byte 0x12, 0x22, 0x26 - .byte 0x09, 0x07, 0x33 - .byte 0x0f, 0x3e, 0x1e - .byte 0x00, 0x3c, 0x33 - .byte 0x10, 0x37, 0x14 - .byte 0x3a, 0x03, 0x25 - .byte 0x2d, 0x1e, 0x24 - .byte 0x36, 0x36, 0x26 - .byte 0x1f, 0x3c, 0x1a - .byte 0x37, 0x33, 0x25 - .byte 0x23, 0x13, 0x1f - .byte 0x33, 0x0d, 0x13 - .byte 0x25, 0x30, 0x1e - .byte 0x17, 0x03, 0x18 - .byte 0x18, 0x18, 0x14 - .byte 0x30, 0x07, 0x22 - .byte 0x3e, 0x33, 0x21 - .byte 0x14, 0x37, 0x16 - .byte 0x16, 0x00, 0x12 - .byte 0x2c, 0x12, 0x2f - .byte 0x25, 0x3f, 0x1e - .byte 0x24, 0x19, 0x16 - .byte 0x16, 0x0f, 0x35 - .byte 0x2d, 0x10, 0x11 - .byte 0x24, 0x2a, 0x28 - .byte 0x19, 0x25, 0x2e - .byte 0x0c, 0x16, 0x1f - .byte 0x38, 0x21, 0x36 - .byte 0x3d, 0x1a, 0x2f - .byte 0x3b, 0x32, 0x12 - .byte 0x36, 0x13, 0x29 - .byte 0x0e, 0x30, 0x31 - .byte 0x19, 0x07, 0x2f - .byte 0x25, 0x23, 0x28 - .byte 0x20, 0x08, 0x29 - .byte 0x2a, 0x00, 0x30 - .byte 0x30, 0x38, 0x23 - .byte 0x1e, 0x0f, 0x1f - .byte 0x3b, 0x1b, 0x30 - .byte 0x3a, 0x37, 0x2f - .byte 0x39, 0x37, 0x35 - .byte 0x39, 0x2d, 0x2f - .byte 0x1f, 0x2e, 0x1e - .byte 0x1a, 0x2b, 0x1e - .byte 0x14, 0x17, 0x20 - .byte 0x2f, 0x03, 0x11 - .byte 0x1d, 0x00, 0x30 - .byte 0x17, 0x2b, 0x1d - .byte 0x35, 0x28, 0x25 - .byte 0x3b, 0x0f, 0x11 - .byte 0x09, 0x04, 0x2e - .byte 0x23, 0x11, 0x1e - .byte 0x13, 0x37, 0x1e - .byte 0x37, 0x37, 0x1e - .byte 0x07, 0x01, 0x32 - .byte 0x14, 0x06, 0x32 - .byte 0x11, 0x0c, 0x2e - .byte 0x36, 0x2e, 0x24 - .byte 0x15, 0x2a, 0x1c - .byte 0x22, 0x15, 0x34 - .byte 0x2c, 0x1e, 0x35 - .byte 0x22, 0x27, 0x33 - .byte 0x19, 0x3f, 0x2d - .byte 0x21, 0x33, 0x15 - .byte 0x26, 0x1a, 0x11 - .byte 0x16, 0x3e, 0x12 - .byte 0x2b, 0x24, 0x15 - .byte 0x3c, 0x0f, 0x2d - .byte 0x31, 0x15, 0x36 - .byte 0x3f, 0x24, 0x1d - .byte 0x25, 0x01, 0x37 - .byte 0x33, 0x16, 0x1a - .byte 0x1f, 0x0e, 0x10 - .byte 0x2f, 0x0b, 0x12 - .byte 0x2a, 0x1a, 0x25 - .byte 0x17, 0x0a, 0x35 - .byte 0x09, 0x28, 0x35 - .byte 0x02, 0x13, 0x36 - .byte 0x34, 0x2f, 0x17 - .byte 0x03, 0x04, 0x31 - .byte 0x3e, 0x26, 0x11 - .byte 0x35, 0x33, 0x31 - .byte 0x22, 0x17, 0x23 - .byte 0x1d, 0x05, 0x2b - .byte 0x2e, 0x27, 0x20 - .byte 0x03, 0x2b, 0x1d - .byte 0x01, 0x19, 0x1e - .byte 0x0e, 0x05, 0x18 - .byte 0x16, 0x25, 0x17 - .byte 0x02, 0x28, 0x18 - .byte 0x19, 0x0b, 0x24 - .byte 0x3e, 0x35, 0x16 - .byte 0x2e, 0x29, 0x25 - .byte 0x3e, 0x38, 0x1e - .byte 0x3a, 0x2f, 0x12 - .byte 0x14, 0x17, 0x2d - .byte 0x11, 0x12, 0x30 - .byte 0x15, 0x31, 0x18 - .byte 0x08, 0x0b, 0x29 - .byte 0x2d, 0x00, 0x33 - .byte 0x2c, 0x06, 0x1a - .byte 0x14, 0x1c, 0x2e - .byte 0x04, 0x08, 0x12 - .byte 0x1b, 0x2b, 0x2d - .byte 0x2a, 0x37, 0x33 - .byte 0x10, 0x27, 0x2c - .byte 0x1d, 0x0e, 0x34 - .byte 0x20, 0x02, 0x12 - .byte 0x1e, 0x1a, 0x2e - .byte 0x07, 0x0b, 0x10 - .byte 0x36, 0x1e, 0x33 - .byte 0x2b, 0x28, 0x1b - .byte 0x31, 0x25, 0x1f - .byte 0x38, 0x3a, 0x2f - .byte 0x39, 0x30, 0x2f - .byte 0x12, 0x09, 0x14 - .byte 0x0e, 0x08, 0x19 - .byte 0x00, 0x0d, 0x2c - .byte 0x1b, 0x0e, 0x34 - .byte 0x11, 0x25, 0x15 - .byte 0x0c, 0x2d, 0x26 - .byte 0x36, 0x2c, 0x16 - .byte 0x31, 0x31, 0x2c - .byte 0x03, 0x1a, 0x16 - .byte 0x1c, 0x32, 0x14 - .byte 0x0a, 0x3e, 0x36 - .byte 0x33, 0x1b, 0x27 - .byte 0x1f, 0x32, 0x18 - .byte 0x33, 0x26, 0x33 - .byte 0x1a, 0x13, 0x1a - .byte 0x0f, 0x34, 0x1c - .byte 0x35, 0x2c, 0x2f - .byte 0x38, 0x03, 0x18 - .byte 0x15, 0x0f, 0x27 - .byte 0x31, 0x29, 0x20 - .byte 0x28, 0x0e, 0x28 - .byte 0x31, 0x2c, 0x2e - .byte 0x15, 0x19, 0x1b - .byte 0x10, 0x03, 0x2f - .byte 0x2e, 0x2a, 0x32 - .byte 0x2a, 0x27, 0x1b - .byte 0x36, 0x04, 0x1e - .byte 0x3b, 0x04, 0x21 - .byte 0x07, 0x2f, 0x19 - .byte 0x27, 0x1d, 0x1d - .byte 0x3c, 0x3d, 0x2e - .byte 0x25, 0x08, 0x32 - .byte 0x3b, 0x34, 0x2a - .byte 0x0c, 0x10, 0x13 - .byte 0x25, 0x35, 0x1a - .byte 0x2f, 0x19, 0x28 - .byte 0x17, 0x00, 0x2b - .byte 0x0a, 0x1c, 0x17 - .byte 0x0a, 0x11, 0x1b - .byte 0x35, 0x13, 0x37 - .byte 0x29, 0x1c, 0x28 - .byte 0x0c, 0x31, 0x35 - .byte 0x3c, 0x10, 0x1a - .byte 0x1b, 0x3a, 0x2d - .byte 0x3a, 0x1c, 0x18 - .byte 0x22, 0x10, 0x2d - .byte 0x1c, 0x3c, 0x12 - .byte 0x17, 0x18, 0x2a - .byte 0x0b, 0x2b, 0x2f - .byte 0x2d, 0x04, 0x2e - .byte 0x3c, 0x13, 0x23 - .byte 0x01, 0x1c, 0x2e - .byte 0x14, 0x16, 0x22 - .byte 0x0c, 0x24, 0x13 - .byte 0x35, 0x37, 0x34 - .byte 0x1b, 0x30, 0x1e - .byte 0x3a, 0x1c, 0x20 - .byte 0x06, 0x06, 0x36 - .byte 0x09, 0x15, 0x1a - .byte 0x1b, 0x1a, 0x27 - .byte 0x0f, 0x33, 0x35 - .byte 0x37, 0x06, 0x23 - .byte 0x3a, 0x12, 0x1d - .byte 0x00, 0x16, 0x29 - .byte 0x0e, 0x1d, 0x35 - .byte 0x3f, 0x38, 0x16 - .byte 0x2a, 0x3c, 0x34 - .byte 0x13, 0x32, 0x10 - .byte 0x17, 0x2c, 0x37 - .byte 0x29, 0x2a, 0x1e - .byte 0x35, 0x2f, 0x2d - .byte 0x3c, 0x2a, 0x11 - .byte 0x28, 0x13, 0x21 - .byte 0x19, 0x1e, 0x34 - .byte 0x0c, 0x06, 0x2d - .byte 0x09, 0x04, 0x1c - .byte 0x1d, 0x2f, 0x26 - .byte 0x39, 0x07, 0x16 - .byte 0x14, 0x04, 0x2d - .byte 0x3a, 0x2f, 0x2e - .byte 0x29, 0x15, 0x35 - .byte 0x24, 0x02, 0x36 - .byte 0x3f, 0x02, 0x1a - .byte 0x0f, 0x18, 0x24 - .byte 0x16, 0x1d, 0x19 - .byte 0x14, 0x16, 0x10 - .byte 0x29, 0x1b, 0x13 - .byte 0x15, 0x0e, 0x19 - .byte 0x3a, 0x2e, 0x2b - .byte 0x08, 0x30, 0x15 - .byte 0x35, 0x16, 0x30 - .byte 0x2e, 0x18, 0x35 - .byte 0x3b, 0x0b, 0x1c - .byte 0x3a, 0x18, 0x13 - .byte 0x29, 0x13, 0x1e - .byte 0x20, 0x13, 0x27 - .byte 0x04, 0x1d, 0x34 - .byte 0x00, 0x38, 0x19 - .byte 0x08, 0x39, 0x32 - .byte 0x20, 0x10, 0x26 - .byte 0x08, 0x02, 0x28 - .byte 0x3f, 0x0f, 0x16 - .byte 0x30, 0x1f, 0x19 - .byte 0x20, 0x2d, 0x10 - .byte 0x38, 0x17, 0x1c - .byte 0x18, 0x31, 0x27 - .byte 0x33, 0x38, 0x30 - .byte 0x16, 0x33, 0x23 - .byte 0x00, 0x01, 0x36 - .byte 0x0d, 0x02, 0x23 - .byte 0x39, 0x04, 0x1f - .byte 0x0e, 0x30, 0x24 - .byte 0x06, 0x01, 0x2c - .byte 0x34, 0x33, 0x35 - .byte 0x16, 0x34, 0x2e - .byte 0x32, 0x16, 0x24 - .byte 0x26, 0x39, 0x34 - .byte 0x1f, 0x3c, 0x1d - .byte 0x28, 0x1d, 0x37 - .byte 0x17, 0x15, 0x2b - .byte 0x27, 0x39, 0x30 - .byte 0x0b, 0x1b, 0x18 - .byte 0x35, 0x20, 0x2d - .byte 0x0b, 0x35, 0x1c - .byte 0x03, 0x0e, 0x21 - .byte 0x06, 0x0c, 0x20 - .byte 0x02, 0x18, 0x34 - .byte 0x1e, 0x36, 0x2d - .byte 0x16, 0x0c, 0x19 - .byte 0x25, 0x09, 0x2c - .byte 0x37, 0x05, 0x2e - .byte 0x2e, 0x2b, 0x2c - .byte 0x24, 0x1a, 0x14 - .byte 0x27, 0x04, 0x10 - .byte 0x32, 0x38, 0x33 - .byte 0x37, 0x15, 0x35 - .byte 0x11, 0x3f, 0x1d - .byte 0x23, 0x23, 0x1f - .byte 0x29, 0x3f, 0x1d - .byte 0x1a, 0x3c, 0x2b - .byte 0x1b, 0x2c, 0x2c - .byte 0x38, 0x3b, 0x36 - .byte 0x04, 0x13, 0x33 - .byte 0x2c, 0x14, 0x12 - .byte 0x1a, 0x09, 0x1b - .byte 0x36, 0x11, 0x24 - .byte 0x3a, 0x3f, 0x11 - .byte 0x01, 0x0e, 0x2b - .byte 0x3b, 0x03, 0x2a - .byte 0x08, 0x0d, 0x2b - .byte 0x2b, 0x13, 0x27 - .byte 0x3a, 0x3c, 0x1c - .byte 0x3a, 0x15, 0x2a - .byte 0x24, 0x00, 0x17 - .byte 0x3e, 0x0a, 0x15 - .byte 0x0c, 0x29, 0x2d - .byte 0x1f, 0x15, 0x30 - .byte 0x35, 0x18, 0x19 - .byte 0x3d, 0x37, 0x37 - .byte 0x12, 0x38, 0x1b - .byte 0x3b, 0x02, 0x20 - .byte 0x08, 0x21, 0x19 - .byte 0x2e, 0x36, 0x1d - .byte 0x15, 0x3d, 0x24 - .byte 0x22, 0x0c, 0x27 - .byte 0x36, 0x3f, 0x33 - .byte 0x33, 0x12, 0x11 - .byte 0x1a, 0x19, 0x1f - .byte 0x2b, 0x24, 0x12 - .byte 0x11, 0x2a, 0x18 - .byte 0x25, 0x32, 0x2a - .byte 0x2c, 0x1a, 0x12 - .byte 0x26, 0x06, 0x10 - .byte 0x11, 0x29, 0x33 - .byte 0x2c, 0x09, 0x14 - .byte 0x2b, 0x12, 0x2b - .byte 0x1d, 0x03, 0x24 - .byte 0x00, 0x12, 0x15 - .byte 0x22, 0x3d, 0x26 - .byte 0x15, 0x37, 0x1a - .byte 0x0f, 0x12, 0x37 - .byte 0x24, 0x01, 0x18 - .byte 0x2a, 0x17, 0x13 - .byte 0x14, 0x3b, 0x29 - .byte 0x2a, 0x19, 0x32 - .byte 0x2d, 0x17, 0x17 - .byte 0x0b, 0x2c, 0x33 - .byte 0x07, 0x2d, 0x34 - .byte 0x07, 0x38, 0x1d - .byte 0x1f, 0x36, 0x22 - .byte 0x11, 0x0a, 0x17 - .byte 0x14, 0x11, 0x13 - .byte 0x2a, 0x17, 0x25 - .byte 0x01, 0x3a, 0x1c - .byte 0x26, 0x27, 0x30 - .byte 0x2d, 0x3b, 0x35 - .byte 0x3a, 0x30, 0x34 - .byte 0x06, 0x3a, 0x1c - .byte 0x2d, 0x05, 0x13 - .byte 0x21, 0x32, 0x12 - .byte 0x3e, 0x1e, 0x2c - .byte 0x3a, 0x3f, 0x2d - .byte 0x20, 0x2a, 0x34 - .byte 0x26, 0x03, 0x1a - .byte 0x19, 0x27, 0x2e - .byte 0x31, 0x04, 0x26 - .byte 0x2a, 0x3f, 0x30 - .byte 0x25, 0x23, 0x2a - .byte 0x08, 0x08, 0x35 - .byte 0x2c, 0x30, 0x1e - .byte 0x08, 0x05, 0x18 - .byte 0x06, 0x09, 0x2d - .byte 0x19, 0x00, 0x27 - .byte 0x0d, 0x10, 0x19 - .byte 0x1c, 0x00, 0x13 - .byte 0x3d, 0x0b, 0x24 - .byte 0x2e, 0x1f, 0x16 - .byte 0x3d, 0x18, 0x34 - .byte 0x12, 0x1e, 0x15 - .byte 0x15, 0x39, 0x25 - .byte 0x33, 0x0f, 0x17 - .byte 0x1a, 0x1c, 0x1b - .byte 0x37, 0x29, 0x1b - .byte 0x3b, 0x38, 0x12 - .byte 0x1d, 0x22, 0x34 - .byte 0x26, 0x0a, 0x31 - .byte 0x16, 0x2d, 0x13 - .byte 0x0d, 0x20, 0x27 - .byte 0x24, 0x1d, 0x16 - .byte 0x2e, 0x2b, 0x18 - .byte 0x16, 0x2a, 0x1b - .byte 0x24, 0x17, 0x36 - .byte 0x02, 0x05, 0x2b - .byte 0x37, 0x1a, 0x17 - .byte 0x11, 0x3d, 0x2c - .byte 0x1e, 0x2f, 0x22 - .byte 0x2c, 0x29, 0x1a - .byte 0x2f, 0x04, 0x25 - .byte 0x36, 0x0c, 0x35 - .byte 0x30, 0x3e, 0x12 - .byte 0x11, 0x30, 0x37 - .byte 0x12, 0x21, 0x2e - .byte 0x21, 0x30, 0x17 - .byte 0x2c, 0x3d, 0x24 - .byte 0x11, 0x23, 0x14 - .byte 0x1a, 0x32, 0x17 - .byte 0x39, 0x27, 0x18 - .byte 0x0f, 0x24, 0x19 - .byte 0x00, 0x3d, 0x37 - .byte 0x2c, 0x3c, 0x1c - .byte 0x0b, 0x39, 0x23 - .byte 0x0e, 0x04, 0x1f - .byte 0x1c, 0x31, 0x14 - .byte 0x00, 0x04, 0x15 - .byte 0x26, 0x2a, 0x2a - .byte 0x20, 0x25, 0x2a - .byte 0x0b, 0x3c, 0x33 - .byte 0x11, 0x0b, 0x2e - .byte 0x37, 0x22, 0x2e - .byte 0x0e, 0x22, 0x26 - .byte 0x18, 0x2d, 0x27 - .byte 0x06, 0x0c, 0x1c - .byte 0x26, 0x18, 0x2f - .byte 0x3a, 0x01, 0x2a - .byte 0x2f, 0x31, 0x34 - .byte 0x1f, 0x34, 0x1a - .byte 0x31, 0x05, 0x10 - .byte 0x2e, 0x17, 0x34 - .byte 0x18, 0x22, 0x23 - .byte 0x23, 0x21, 0x32 - .byte 0x07, 0x08, 0x22 - .byte 0x26, 0x1c, 0x22 - .byte 0x31, 0x12, 0x2f - .byte 0x08, 0x1f, 0x10 - .byte 0x27, 0x15, 0x2a - .byte 0x1f, 0x0b, 0x26 - .byte 0x2f, 0x14, 0x35 - .byte 0x24, 0x1f, 0x26 - .byte 0x3b, 0x23, 0x33 - .byte 0x20, 0x3e, 0x2d - .byte 0x17, 0x0c, 0x15 - .byte 0x13, 0x39, 0x1a - .byte 0x30, 0x14, 0x25 - .byte 0x09, 0x07, 0x17 - .byte 0x38, 0x38, 0x1f - .byte 0x29, 0x24, 0x27 - .byte 0x17, 0x27, 0x28 - .byte 0x1b, 0x12, 0x2a - .byte 0x2b, 0x3d, 0x2d - .byte 0x19, 0x34, 0x1c - .byte 0x01, 0x1d, 0x10 - .byte 0x08, 0x39, 0x11 - .byte 0x0e, 0x36, 0x1b - .byte 0x26, 0x13, 0x10 - .byte 0x16, 0x28, 0x1e - .byte 0x3c, 0x28, 0x17 - .byte 0x3e, 0x39, 0x34 - .byte 0x0a, 0x03, 0x2e - .byte 0x37, 0x1a, 0x13 - .byte 0x2b, 0x33, 0x26 - .byte 0x13, 0x2c, 0x21 - .byte 0x25, 0x14, 0x10 - .byte 0x16, 0x0b, 0x35 - .byte 0x1d, 0x35, 0x33 - .byte 0x21, 0x08, 0x33 - .byte 0x28, 0x21, 0x1a - .byte 0x12, 0x0c, 0x1b - .byte 0x36, 0x2a, 0x19 - .byte 0x2c, 0x2b, 0x23 - .byte 0x01, 0x0f, 0x26 - .byte 0x17, 0x0c, 0x18 - .byte 0x09, 0x0f, 0x11 - .byte 0x2b, 0x24, 0x1c - .byte 0x09, 0x09, 0x15 - .byte 0x36, 0x08, 0x13 - .byte 0x20, 0x39, 0x21 - .byte 0x00, 0x3a, 0x1f - .byte 0x2b, 0x36, 0x31 - .byte 0x02, 0x37, 0x13 - .byte 0x04, 0x34, 0x35 - .byte 0x37, 0x3d, 0x1a - .byte 0x17, 0x3d, 0x13 - .byte 0x2b, 0x36, 0x2f - .byte 0x13, 0x1e, 0x13 - .byte 0x3e, 0x11, 0x33 - .byte 0x27, 0x3a, 0x2d - .byte 0x1e, 0x31, 0x1a - .byte 0x03, 0x03, 0x2d - .byte 0x25, 0x37, 0x1f - .byte 0x11, 0x01, 0x22 - .byte 0x1c, 0x12, 0x17 - .byte 0x30, 0x3a, 0x30 - .byte 0x17, 0x1d, 0x29 - .byte 0x0e, 0x13, 0x27 - .byte 0x1a, 0x2e, 0x24 - .byte 0x2d, 0x00, 0x1c - .byte 0x17, 0x28, 0x1d - .byte 0x09, 0x1f, 0x2e - .byte 0x1a, 0x2d, 0x26 - .byte 0x0a, 0x13, 0x32 - .byte 0x3e, 0x00, 0x27 - .byte 0x0b, 0x3b, 0x30 - .byte 0x08, 0x3a, 0x2d - .byte 0x22, 0x12, 0x1e - .byte 0x34, 0x1d, 0x2b - .byte 0x26, 0x22, 0x35 - .byte 0x17, 0x2c, 0x17 - .byte 0x29, 0x13, 0x2d - .byte 0x2d, 0x10, 0x10 - .byte 0x20, 0x31, 0x23 - .byte 0x1e, 0x33, 0x18 - .byte 0x33, 0x06, 0x2d - .byte 0x26, 0x14, 0x27 - .byte 0x22, 0x1d, 0x2a - .byte 0x2d, 0x06, 0x18 - .byte 0x07, 0x09, 0x2e - .byte 0x21, 0x15, 0x2e - .byte 0x21, 0x38, 0x23 - .byte 0x35, 0x0b, 0x34 - .byte 0x24, 0x0b, 0x22 - .byte 0x1e, 0x01, 0x17 - .byte 0x0b, 0x24, 0x11 - .byte 0x17, 0x07, 0x20 - .byte 0x14, 0x25, 0x32 - .byte 0x1a, 0x0e, 0x2f - .byte 0x35, 0x17, 0x1f - .byte 0x0c, 0x08, 0x21 - .byte 0x30, 0x35, 0x1f - .byte 0x0c, 0x0b, 0x20 - .byte 0x04, 0x10, 0x11 - .byte 0x35, 0x11, 0x1e - .byte 0x33, 0x3d, 0x16 - .byte 0x1e, 0x2b, 0x1d - .byte 0x1a, 0x19, 0x10 - .byte 0x04, 0x06, 0x22 - .byte 0x03, 0x3d, 0x24 - .byte 0x2a, 0x0e, 0x35 - .byte 0x03, 0x3e, 0x17 - .byte 0x0b, 0x18, 0x36 - .byte 0x3d, 0x0d, 0x26 - .byte 0x35, 0x12, 0x20 - .byte 0x1f, 0x0d, 0x16 - .byte 0x23, 0x32, 0x1a - .byte 0x00, 0x3d, 0x26 - .byte 0x30, 0x19, 0x36 - .byte 0x12, 0x0e, 0x23 - .byte 0x01, 0x23, 0x28 - .byte 0x3b, 0x31, 0x11 - .byte 0x2d, 0x1c, 0x36 - .byte 0x2a, 0x05, 0x16 - .byte 0x14, 0x0e, 0x30 - .byte 0x3a, 0x37, 0x19 - .byte 0x1f, 0x30, 0x25 - .byte 0x10, 0x26, 0x2f - .byte 0x22, 0x11, 0x1f - .byte 0x2e, 0x2b, 0x1e - .byte 0x16, 0x16, 0x21 - .byte 0x32, 0x18, 0x35 - .byte 0x23, 0x32, 0x1a - .byte 0x3d, 0x0d, 0x19 - .byte 0x39, 0x09, 0x23 - .byte 0x30, 0x2e, 0x24 - .byte 0x1e, 0x0f, 0x24 - .byte 0x09, 0x21, 0x31 - .byte 0x05, 0x03, 0x11 - .byte 0x05, 0x22, 0x2a - .byte 0x03, 0x07, 0x37 - .byte 0x04, 0x08, 0x13 - .byte 0x05, 0x10, 0x34 - .byte 0x37, 0x14, 0x29 - .byte 0x0a, 0x24, 0x32 - .byte 0x34, 0x1e, 0x1b - .byte 0x12, 0x17, 0x2e - .byte 0x01, 0x02, 0x13 - .byte 0x0a, 0x0c, 0x11 - .byte 0x02, 0x14, 0x13 - .byte 0x0d, 0x25, 0x23 - .byte 0x00, 0x07, 0x1a - .byte 0x1c, 0x28, 0x35 - .byte 0x08, 0x0e, 0x2c - .byte 0x1b, 0x3c, 0x15 - .byte 0x1c, 0x19, 0x1d - .byte 0x32, 0x13, 0x1a - .byte 0x1c, 0x00, 0x37 - .byte 0x22, 0x1b, 0x35 - .byte 0x39, 0x3e, 0x14 - .byte 0x32, 0x06, 0x31 - .byte 0x17, 0x05, 0x2b - .byte 0x01, 0x0f, 0x20 - .byte 0x1e, 0x0f, 0x34 - .byte 0x18, 0x03, 0x1f - .byte 0x2b, 0x00, 0x14 - .byte 0x15, 0x3a, 0x30 - .byte 0x25, 0x30, 0x21 - .byte 0x0b, 0x00, 0x37 - .byte 0x24, 0x37, 0x1d - .byte 0x29, 0x21, 0x16 - .byte 0x24, 0x0f, 0x2c - .byte 0x3e, 0x15, 0x36 - .byte 0x3c, 0x2d, 0x23 - .byte 0x3d, 0x3c, 0x17 - .byte 0x1a, 0x1c, 0x13 - .byte 0x0a, 0x29, 0x22 - .byte 0x25, 0x3f, 0x26 - .byte 0x3b, 0x39, 0x2f - .byte 0x1d, 0x08, 0x16 - .byte 0x0b, 0x19, 0x14 - .byte 0x12, 0x01, 0x2c - .byte 0x35, 0x11, 0x2a - .byte 0x02, 0x00, 0x13 - .byte 0x39, 0x2a, 0x35 - .byte 0x07, 0x1a, 0x11 - .byte 0x24, 0x0e, 0x1e - .byte 0x0e, 0x2c, 0x15 - .byte 0x08, 0x31, 0x1b - .byte 0x21, 0x1d, 0x26 - .byte 0x1d, 0x1c, 0x2a - .byte 0x1d, 0x24, 0x13 - .byte 0x01, 0x00, 0x18 - .byte 0x28, 0x2a, 0x37 - .byte 0x15, 0x0f, 0x13 - .byte 0x10, 0x32, 0x36 - .byte 0x22, 0x13, 0x31 - .byte 0x13, 0x05, 0x1e - .byte 0x17, 0x35, 0x35 - .byte 0x3b, 0x0e, 0x24 - .byte 0x35, 0x3a, 0x1d - .byte 0x1b, 0x36, 0x1b - .byte 0x03, 0x1d, 0x24 - .byte 0x0f, 0x16, 0x30 - .byte 0x2d, 0x09, 0x25 - .byte 0x05, 0x21, 0x13 - .byte 0x0a, 0x27, 0x36 - .byte 0x04, 0x0d, 0x1c - .byte 0x06, 0x3e, 0x21 - .byte 0x2a, 0x27, 0x33 - .byte 0x28, 0x0e, 0x15 - .byte 0x0b, 0x17, 0x1d - .byte 0x1d, 0x32, 0x2d - .byte 0x08, 0x3d, 0x29 - .byte 0x21, 0x32, 0x17 - .byte 0x33, 0x31, 0x22 - .byte 0x0e, 0x03, 0x21 - .byte 0x0d, 0x0b, 0x16 - .byte 0x3e, 0x2a, 0x2e - .byte 0x19, 0x36, 0x2a - .byte 0x0d, 0x00, 0x14 - .byte 0x22, 0x07, 0x36 - .byte 0x0a, 0x09, 0x15 - .byte 0x14, 0x10, 0x22 - .byte 0x07, 0x16, 0x2c - .byte 0x36, 0x13, 0x15 - .byte 0x09, 0x2f, 0x1b - .byte 0x20, 0x3b, 0x2e - .byte 0x3a, 0x3a, 0x16 - .byte 0x0d, 0x15, 0x2a - .byte 0x39, 0x13, 0x2b - .byte 0x0b, 0x01, 0x2a - .byte 0x13, 0x17, 0x1e - .byte 0x08, 0x17, 0x1e - .byte 0x0c, 0x0f, 0x34 - .byte 0x1f, 0x31, 0x12 - .byte 0x07, 0x3a, 0x1d - .byte 0x35, 0x1e, 0x12 - .byte 0x24, 0x2c, 0x15 - .byte 0x0e, 0x21, 0x19 - .byte 0x34, 0x3b, 0x33 - .byte 0x19, 0x0f, 0x28 - .byte 0x10, 0x2f, 0x2e - .byte 0x23, 0x27, 0x31 - .byte 0x39, 0x2e, 0x18 - .byte 0x3c, 0x3f, 0x24 - .byte 0x07, 0x23, 0x30 - .byte 0x28, 0x13, 0x35 - .byte 0x13, 0x0a, 0x10 - .byte 0x35, 0x19, 0x33 - .byte 0x23, 0x28, 0x29 - .byte 0x13, 0x2f, 0x1a - .byte 0x3a, 0x19, 0x14 - .byte 0x37, 0x36, 0x26 - .byte 0x20, 0x3b, 0x15 - .byte 0x37, 0x39, 0x10 - .byte 0x3c, 0x21, 0x34 - .byte 0x1c, 0x38, 0x30 - .byte 0x15, 0x07, 0x26 - .byte 0x27, 0x21, 0x19 - .byte 0x18, 0x11, 0x23 - .byte 0x30, 0x28, 0x37 - .byte 0x32, 0x2d, 0x1f - .byte 0x2c, 0x3f, 0x30 - .byte 0x1d, 0x2f, 0x26 - .byte 0x01, 0x11, 0x1c - .byte 0x3b, 0x0f, 0x12 - .byte 0x2a, 0x17, 0x27 - .byte 0x05, 0x00, 0x1b - .byte 0x25, 0x1c, 0x32 - .byte 0x04, 0x22, 0x2d - .byte 0x10, 0x0f, 0x25 - .byte 0x0d, 0x39, 0x30 - .byte 0x0b, 0x2e, 0x27 - .byte 0x2d, 0x34, 0x15 - .byte 0x3e, 0x30, 0x36 - .byte 0x16, 0x26, 0x2a - .byte 0x05, 0x3f, 0x2b - .byte 0x20, 0x3b, 0x2e - .byte 0x3b, 0x1c, 0x2f - .byte 0x01, 0x18, 0x16 - .byte 0x16, 0x3d, 0x10 - .byte 0x0a, 0x1f, 0x18 - .byte 0x17, 0x0f, 0x22 - .byte 0x06, 0x13, 0x11 - .byte 0x38, 0x21, 0x17 - .byte 0x17, 0x0a, 0x37 - .byte 0x1c, 0x19, 0x30 - .byte 0x16, 0x38, 0x31 - .byte 0x30, 0x10, 0x36 - .byte 0x31, 0x2f, 0x26 - .byte 0x3c, 0x1b, 0x23 - .byte 0x33, 0x2f, 0x19 - .byte 0x16, 0x35, 0x25 - .byte 0x3a, 0x18, 0x1f - .byte 0x37, 0x01, 0x1e - .byte 0x0d, 0x18, 0x12 - .byte 0x1f, 0x1c, 0x1b - .byte 0x07, 0x34, 0x2d - .byte 0x0b, 0x3f, 0x33 - .byte 0x1e, 0x34, 0x1d - .byte 0x2c, 0x13, 0x2c - .byte 0x20, 0x20, 0x13 - .byte 0x20, 0x0f, 0x31 - .byte 0x08, 0x0f, 0x24 - .byte 0x18, 0x3d, 0x1c - .byte 0x36, 0x34, 0x27 - .byte 0x33, 0x2a, 0x25 - .byte 0x2d, 0x30, 0x26 - .byte 0x3d, 0x37, 0x26 - .byte 0x25, 0x11, 0x11 - .byte 0x03, 0x05, 0x18 - .byte 0x10, 0x04, 0x29 - .byte 0x07, 0x2e, 0x36 - .byte 0x2a, 0x29, 0x15 - .byte 0x3a, 0x0e, 0x33 - .byte 0x2a, 0x06, 0x29 - .byte 0x3d, 0x01, 0x29 - .byte 0x27, 0x0e, 0x16 - .byte 0x1d, 0x28, 0x1b - .byte 0x10, 0x33, 0x2b - .byte 0x0c, 0x14, 0x1d - .byte 0x15, 0x3f, 0x25 - .byte 0x37, 0x23, 0x1e - .byte 0x04, 0x2c, 0x1c - .byte 0x15, 0x34, 0x2a - .byte 0x09, 0x2f, 0x15 - .byte 0x02, 0x3f, 0x14 - .byte 0x19, 0x2c, 0x33 - .byte 0x39, 0x32, 0x20 - .byte 0x2a, 0x18, 0x32 - .byte 0x17, 0x23, 0x21 - .byte 0x0b, 0x2d, 0x25 - .byte 0x24, 0x3a, 0x2d - .byte 0x31, 0x3f, 0x34 - .byte 0x18, 0x19, 0x24 - .byte 0x1e, 0x15, 0x1a - .byte 0x17, 0x33, 0x2b - .byte 0x23, 0x09, 0x26 - .byte 0x1b, 0x0d, 0x15 - .byte 0x36, 0x26, 0x28 - .byte 0x3a, 0x1c, 0x14 - .byte 0x0c, 0x3e, 0x10 - .byte 0x18, 0x06, 0x35 - .byte 0x37, 0x26, 0x36 - .byte 0x21, 0x26, 0x17 - .byte 0x3d, 0x1c, 0x2c - .byte 0x16, 0x25, 0x1d - .byte 0x1e, 0x0b, 0x1e - .byte 0x1d, 0x0d, 0x32 - .byte 0x08, 0x1f, 0x1b - .byte 0x12, 0x1c, 0x12 - .byte 0x20, 0x2a, 0x28 - .byte 0x06, 0x3b, 0x35 - .byte 0x39, 0x0e, 0x1e - .byte 0x31, 0x30, 0x28 - .byte 0x02, 0x21, 0x14 - .byte 0x06, 0x1e, 0x29 - .byte 0x16, 0x09, 0x1c - .byte 0x27, 0x32, 0x2d - .byte 0x39, 0x03, 0x27 - .byte 0x29, 0x09, 0x1e - .byte 0x1b, 0x11, 0x1c - .byte 0x28, 0x3a, 0x2c - .byte 0x03, 0x03, 0x18 - .byte 0x23, 0x09, 0x2f - .byte 0x30, 0x17, 0x23 - .byte 0x0f, 0x25, 0x33 - .byte 0x06, 0x24, 0x37 - .byte 0x22, 0x09, 0x33 - .byte 0x2c, 0x09, 0x2a - .byte 0x0c, 0x12, 0x2a - .byte 0x28, 0x20, 0x10 - .byte 0x15, 0x29, 0x33 - .byte 0x0f, 0x1a, 0x13 - .byte 0x13, 0x18, 0x36 - .byte 0x2e, 0x16, 0x13 - .byte 0x3c, 0x1a, 0x15 - .byte 0x3a, 0x11, 0x32 - .byte 0x02, 0x0a, 0x2c - .byte 0x19, 0x39, 0x11 - .byte 0x31, 0x3e, 0x1d - .byte 0x32, 0x14, 0x32 - .byte 0x12, 0x2e, 0x34 - .byte 0x3e, 0x36, 0x23 - .byte 0x37, 0x3e, 0x15 - .byte 0x15, 0x35, 0x34 - .byte 0x01, 0x3a, 0x2c - .byte 0x26, 0x25, 0x22 - .byte 0x01, 0x2b, 0x37 - .byte 0x1c, 0x3d, 0x33 - .byte 0x3e, 0x10, 0x1c - .byte 0x26, 0x33, 0x19 - .byte 0x05, 0x19, 0x17 - .byte 0x12, 0x38, 0x1c - .byte 0x15, 0x3c, 0x32 - .byte 0x3f, 0x0f, 0x37 - .byte 0x02, 0x39, 0x32 - .byte 0x13, 0x00, 0x1d - .byte 0x1d, 0x2c, 0x10 - .byte 0x39, 0x13, 0x31 - .byte 0x0f, 0x37, 0x19 - .byte 0x09, 0x0d, 0x2a - .byte 0x20, 0x2f, 0x32 - .byte 0x3b, 0x34, 0x22 - .byte 0x26, 0x14, 0x10 - .byte 0x24, 0x3d, 0x22 - .byte 0x0b, 0x31, 0x23 - .byte 0x2f, 0x2d, 0x2a - .byte 0x30, 0x04, 0x35 - .byte 0x19, 0x20, 0x2a - .byte 0x16, 0x36, 0x37 - .byte 0x14, 0x28, 0x37 - .byte 0x11, 0x0b, 0x27 - .byte 0x1d, 0x06, 0x29 - .byte 0x35, 0x16, 0x2e - .byte 0x24, 0x2e, 0x29 - .byte 0x36, 0x14, 0x2a - .byte 0x21, 0x0c, 0x1f - .byte 0x3f, 0x39, 0x19 - .byte 0x27, 0x10, 0x2a - .byte 0x1e, 0x12, 0x34 - .byte 0x10, 0x24, 0x34 - .byte 0x1d, 0x13, 0x1d - .byte 0x17, 0x16, 0x37 - .byte 0x27, 0x1b, 0x27 - .byte 0x07, 0x24, 0x21 - .byte 0x37, 0x21, 0x11 - .byte 0x37, 0x28, 0x24 - .byte 0x19, 0x02, 0x1c - .byte 0x14, 0x12, 0x1d - .byte 0x1b, 0x24, 0x2e - .byte 0x2e, 0x3a, 0x15 - .byte 0x37, 0x34, 0x21 - .byte 0x33, 0x2d, 0x29 - .byte 0x2f, 0x1e, 0x34 - .byte 0x29, 0x3c, 0x12 - .byte 0x05, 0x15, 0x20 - .byte 0x05, 0x3e, 0x19 - .byte 0x18, 0x0b, 0x30 - .byte 0x2f, 0x02, 0x27 - .byte 0x14, 0x1c, 0x34 - .byte 0x12, 0x20, 0x30 - .byte 0x2b, 0x22, 0x1b - .byte 0x06, 0x31, 0x28 - .byte 0x15, 0x2d, 0x12 - .byte 0x01, 0x0e, 0x13 - .byte 0x13, 0x0c, 0x28 - .byte 0x07, 0x2a, 0x14 - .byte 0x1d, 0x36, 0x14 - .byte 0x15, 0x2b, 0x26 - .byte 0x03, 0x25, 0x15 - .byte 0x3e, 0x3b, 0x20 - .byte 0x35, 0x0c, 0x25 - .byte 0x2b, 0x16, 0x35 - .byte 0x1e, 0x31, 0x2c - .byte 0x06, 0x03, 0x29 - .byte 0x24, 0x07, 0x1f - .byte 0x32, 0x2f, 0x19 - .byte 0x25, 0x21, 0x31 - .byte 0x22, 0x26, 0x1d - .byte 0x00, 0x1b, 0x18 - .byte 0x2a, 0x24, 0x31 - .byte 0x20, 0x06, 0x2f - .byte 0x1e, 0x32, 0x26 - .byte 0x32, 0x39, 0x12 - .byte 0x20, 0x01, 0x19 - .byte 0x0f, 0x15, 0x15 - .byte 0x27, 0x10, 0x2e - .byte 0x09, 0x25, 0x19 - .byte 0x29, 0x37, 0x30 - .byte 0x13, 0x1c, 0x1d - .byte 0x29, 0x2d, 0x26 - .byte 0x02, 0x1a, 0x16 - .byte 0x1d, 0x2b, 0x1c - .byte 0x18, 0x04, 0x34 - .byte 0x28, 0x2a, 0x21 - .byte 0x15, 0x1b, 0x2e - .byte 0x16, 0x01, 0x10 - .byte 0x05, 0x09, 0x14 - .byte 0x22, 0x03, 0x22 - .byte 0x02, 0x1b, 0x34 - .byte 0x29, 0x2a, 0x23 - .byte 0x26, 0x36, 0x13 - .byte 0x23, 0x3d, 0x1a - .byte 0x1d, 0x10, 0x24 - .byte 0x25, 0x2b, 0x37 - .byte 0x19, 0x24, 0x26 - .byte 0x28, 0x13, 0x16 - .byte 0x17, 0x14, 0x19 - .byte 0x0b, 0x2f, 0x25 - .byte 0x37, 0x34, 0x37 - .byte 0x39, 0x21, 0x1b - .byte 0x0f, 0x3d, 0x2d - .byte 0x0d, 0x10, 0x20 - .byte 0x05, 0x0b, 0x2d - .byte 0x01, 0x12, 0x24 - .byte 0x18, 0x3d, 0x32 - .byte 0x09, 0x21, 0x26 - .byte 0x1a, 0x0e, 0x1f - .byte 0x30, 0x06, 0x1f - .byte 0x0b, 0x3c, 0x29 - .byte 0x07, 0x3e, 0x27 - .byte 0x13, 0x1e, 0x1a - .byte 0x13, 0x07, 0x23 - .byte 0x10, 0x34, 0x1e - .byte 0x32, 0x17, 0x23 - .byte 0x35, 0x16, 0x31 - .byte 0x32, 0x2e, 0x1b - .byte 0x28, 0x0e, 0x22 - .byte 0x14, 0x3a, 0x23 - .byte 0x22, 0x03, 0x29 - .byte 0x2a, 0x10, 0x20 - .byte 0x3e, 0x3c, 0x27 - .byte 0x16, 0x20, 0x12 - .byte 0x3f, 0x24, 0x31 - .byte 0x0d, 0x2e, 0x32 - .byte 0x2f, 0x17, 0x2d - .byte 0x36, 0x3b, 0x17 - .byte 0x24, 0x23, 0x18 - .byte 0x37, 0x1d, 0x13 - .byte 0x17, 0x3a, 0x1a - .byte 0x0a, 0x3d, 0x1e - .byte 0x05, 0x12, 0x16 - .byte 0x33, 0x32, 0x25 - .byte 0x1d, 0x1f, 0x29 - .byte 0x34, 0x2c, 0x26 - .byte 0x20, 0x29, 0x35 - .byte 0x0e, 0x32, 0x17 - .byte 0x01, 0x39, 0x2d - .byte 0x27, 0x24, 0x23 - .byte 0x28, 0x3f, 0x18 - .byte 0x39, 0x38, 0x25 - .byte 0x23, 0x11, 0x11 - .byte 0x19, 0x2c, 0x29 - .byte 0x30, 0x08, 0x28 - .byte 0x25, 0x27, 0x1d - .byte 0x17, 0x25, 0x21 - .byte 0x09, 0x3d, 0x16 - .byte 0x1b, 0x0f, 0x2c - .byte 0x1b, 0x12, 0x22 - .byte 0x28, 0x3e, 0x26 - .byte 0x34, 0x10, 0x1b - .byte 0x02, 0x34, 0x15 - .byte 0x1a, 0x29, 0x19 - .byte 0x29, 0x11, 0x31 - .byte 0x12, 0x27, 0x17 - .byte 0x27, 0x27, 0x2f - .byte 0x34, 0x27, 0x24 - .byte 0x03, 0x19, 0x36 - .byte 0x17, 0x1d, 0x33 - .byte 0x19, 0x25, 0x1a - .byte 0x2b, 0x39, 0x13 - .byte 0x3b, 0x33, 0x1d - .byte 0x27, 0x31, 0x34 - .byte 0x28, 0x33, 0x37 - .byte 0x09, 0x30, 0x1b - .byte 0x03, 0x3a, 0x27 - .byte 0x19, 0x11, 0x1f - .byte 0x0b, 0x1a, 0x34 - .byte 0x3d, 0x2a, 0x15 - .byte 0x04, 0x24, 0x36 - .byte 0x30, 0x23, 0x30 - .byte 0x0f, 0x22, 0x1b - .byte 0x3d, 0x3d, 0x24 - .byte 0x29, 0x1d, 0x12 - .byte 0x16, 0x19, 0x2e - .byte 0x03, 0x12, 0x17 - .byte 0x18, 0x25, 0x33 - .byte 0x2f, 0x23, 0x1a - .byte 0x1a, 0x35, 0x27 - .byte 0x21, 0x26, 0x19 - .byte 0x1b, 0x30, 0x18 - .byte 0x2b, 0x22, 0x2d - .byte 0x2c, 0x1a, 0x34 - .byte 0x3e, 0x12, 0x19 - .byte 0x28, 0x27, 0x15 - .byte 0x1b, 0x11, 0x12 - .byte 0x17, 0x15, 0x10 - .byte 0x34, 0x37, 0x25 - .byte 0x12, 0x3f, 0x15 - .byte 0x31, 0x0d, 0x37 - .byte 0x3e, 0x2a, 0x2d - .byte 0x0f, 0x24, 0x24 - .byte 0x3c, 0x3f, 0x1f - .byte 0x1d, 0x34, 0x17 - .byte 0x1a, 0x23, 0x1f - .byte 0x37, 0x0f, 0x10 - .byte 0x32, 0x34, 0x35 - .byte 0x19, 0x05, 0x22 - .byte 0x33, 0x16, 0x34 - .byte 0x1e, 0x14, 0x1e - .byte 0x08, 0x13, 0x29 - .byte 0x3a, 0x37, 0x30 - .byte 0x1d, 0x36, 0x15 - .byte 0x29, 0x2e, 0x1d - .byte 0x32, 0x2e, 0x23 - .byte 0x35, 0x17, 0x1c - .byte 0x36, 0x1d, 0x13 - .byte 0x23, 0x34, 0x34 - .byte 0x24, 0x1a, 0x37 - .byte 0x2f, 0x26, 0x2e - .byte 0x1e, 0x17, 0x1a - .byte 0x1f, 0x15, 0x1f - .byte 0x2b, 0x1f, 0x19 - .byte 0x0a, 0x33, 0x1a - .byte 0x35, 0x31, 0x24 - .byte 0x2d, 0x17, 0x2c - .byte 0x0c, 0x21, 0x36 - .byte 0x2c, 0x35, 0x35 - .byte 0x1b, 0x03, 0x27 - .byte 0x01, 0x0d, 0x1d - .byte 0x1c, 0x0e, 0x11 - .byte 0x11, 0x2b, 0x10 - .byte 0x25, 0x3b, 0x20 - .byte 0x1f, 0x17, 0x19 - .byte 0x20, 0x08, 0x36 - .byte 0x13, 0x38, 0x19 - .byte 0x1b, 0x2b, 0x24 - .byte 0x0b, 0x1f, 0x29 - .byte 0x27, 0x15, 0x2c - .byte 0x37, 0x39, 0x10 - .byte 0x3a, 0x15, 0x2e - .byte 0x2f, 0x11, 0x36 - .byte 0x24, 0x04, 0x20 - .byte 0x3b, 0x2a, 0x35 - .byte 0x27, 0x35, 0x34 - .byte 0x0d, 0x1b, 0x20 - .byte 0x10, 0x22, 0x37 - .byte 0x1f, 0x38, 0x27 - .byte 0x31, 0x0f, 0x28 - .byte 0x28, 0x25, 0x15 - .byte 0x00, 0x1d, 0x25 - .byte 0x31, 0x28, 0x28 - .byte 0x0b, 0x3a, 0x1d - .byte 0x2d, 0x13, 0x1b - .byte 0x03, 0x37, 0x2e - .byte 0x1d, 0x28, 0x19 - .byte 0x08, 0x2d, 0x22 - .byte 0x27, 0x39, 0x32 - .byte 0x3f, 0x2f, 0x1d - .byte 0x33, 0x34, 0x28 - .byte 0x18, 0x08, 0x31 - .byte 0x23, 0x1f, 0x13 - .byte 0x0d, 0x2c, 0x23 - .byte 0x3a, 0x2d, 0x1a - .byte 0x02, 0x25, 0x13 - .byte 0x20, 0x36, 0x34 - .byte 0x12, 0x2b, 0x2d - .byte 0x35, 0x35, 0x34 - .byte 0x23, 0x20, 0x21 - .byte 0x3a, 0x19, 0x1b - .byte 0x1f, 0x2b, 0x19 - .byte 0x35, 0x0e, 0x19 - .byte 0x26, 0x24, 0x37 - .byte 0x18, 0x08, 0x10 - .byte 0x0c, 0x16, 0x2d - .byte 0x1f, 0x34, 0x21 - .byte 0x05, 0x38, 0x19 - .byte 0x14, 0x21, 0x24 - .byte 0x11, 0x31, 0x14 - .byte 0x3e, 0x38, 0x29 - .byte 0x3f, 0x08, 0x25 - .byte 0x2a, 0x1f, 0x25 - .byte 0x25, 0x06, 0x28 - .byte 0x0b, 0x1e, 0x14 - .byte 0x1a, 0x38, 0x22 - .byte 0x24, 0x18, 0x29 - .byte 0x1a, 0x11, 0x20 - .byte 0x3b, 0x3a, 0x1e - .byte 0x1c, 0x26, 0x1a - .byte 0x05, 0x32, 0x19 - .byte 0x39, 0x2a, 0x31 - .byte 0x09, 0x07, 0x25 - .byte 0x05, 0x3e, 0x16 - .byte 0x34, 0x26, 0x14 - .byte 0x1b, 0x32, 0x26 - .byte 0x05, 0x08, 0x37 - .byte 0x0f, 0x03, 0x20 - .byte 0x2a, 0x39, 0x31 - .byte 0x08, 0x01, 0x1e - .byte 0x1d, 0x23, 0x31 - .byte 0x28, 0x1b, 0x28 - .byte 0x1e, 0x37, 0x14 - .byte 0x13, 0x0e, 0x28 - .byte 0x2a, 0x3b, 0x37 - .byte 0x2f, 0x1c, 0x28 - .byte 0x30, 0x30, 0x1a - .byte 0x36, 0x1f, 0x16 - .byte 0x3e, 0x0d, 0x15 - .byte 0x2e, 0x16, 0x18 - .byte 0x15, 0x37, 0x20 - .byte 0x2a, 0x33, 0x30 - .byte 0x2b, 0x0e, 0x25 - .byte 0x18, 0x20, 0x16 - .byte 0x02, 0x19, 0x25 - .byte 0x0a, 0x2e, 0x30 - .byte 0x16, 0x03, 0x11 - .byte 0x04, 0x27, 0x25 - .byte 0x1b, 0x1c, 0x21 - .byte 0x29, 0x04, 0x27 - .byte 0x3d, 0x20, 0x1e - .byte 0x28, 0x33, 0x31 - .byte 0x1e, 0x39, 0x10 - .byte 0x31, 0x29, 0x1e - .byte 0x06, 0x25, 0x28 - .byte 0x19, 0x3b, 0x12 - .byte 0x0b, 0x1b, 0x1c - .byte 0x3e, 0x37, 0x20 - .byte 0x0a, 0x37, 0x33 - .byte 0x02, 0x2c, 0x25 - .byte 0x15, 0x18, 0x14 - .byte 0x3b, 0x20, 0x1c - .byte 0x22, 0x3b, 0x1c - .byte 0x24, 0x34, 0x35 - .byte 0x0f, 0x2f, 0x31 - .byte 0x3b, 0x17, 0x35 - .byte 0x30, 0x39, 0x37 - .byte 0x0d, 0x15, 0x11 - .byte 0x10, 0x03, 0x1e - .byte 0x1a, 0x39, 0x33 - .byte 0x2f, 0x2e, 0x28 - .byte 0x1c, 0x28, 0x36 - .byte 0x28, 0x18, 0x1f - .byte 0x15, 0x01, 0x30 - .byte 0x3e, 0x32, 0x28 - .byte 0x34, 0x2f, 0x23 - .byte 0x07, 0x0c, 0x36 - .byte 0x28, 0x2c, 0x34 - .byte 0x2a, 0x0c, 0x1f - .byte 0x3f, 0x20, 0x13 - .byte 0x2b, 0x17, 0x27 - .byte 0x28, 0x29, 0x2a - .byte 0x3c, 0x13, 0x36 - .byte 0x26, 0x2d, 0x2a - .byte 0x0a, 0x06, 0x1e - .byte 0x20, 0x04, 0x1a - .byte 0x02, 0x07, 0x35 - .byte 0x0e, 0x18, 0x30 - .byte 0x00, 0x34, 0x34 - .byte 0x2f, 0x14, 0x37 - .byte 0x21, 0x30, 0x1f - .byte 0x15, 0x37, 0x1b - .byte 0x3a, 0x0b, 0x32 - .byte 0x22, 0x22, 0x21 - .byte 0x1b, 0x35, 0x23 - .byte 0x0d, 0x03, 0x1c - .byte 0x23, 0x3b, 0x13 - .byte 0x0e, 0x1d, 0x1f - .byte 0x1d, 0x3f, 0x2e - .byte 0x39, 0x27, 0x2e - .byte 0x0f, 0x38, 0x20 - .byte 0x31, 0x3c, 0x35 - .byte 0x0b, 0x0f, 0x2e - .byte 0x06, 0x06, 0x28 - .byte 0x25, 0x39, 0x23 - .byte 0x0a, 0x32, 0x15 - .byte 0x0f, 0x1d, 0x25 - .byte 0x0c, 0x0d, 0x34 - .byte 0x12, 0x2e, 0x21 - .byte 0x36, 0x18, 0x1f - .byte 0x1f, 0x34, 0x1b - .byte 0x05, 0x3a, 0x36 - .byte 0x2b, 0x01, 0x17 - .byte 0x0e, 0x16, 0x2b - .byte 0x0e, 0x0b, 0x26 - .byte 0x0d, 0x2d, 0x10 - .byte 0x21, 0x11, 0x27 - .byte 0x3d, 0x13, 0x32 - .byte 0x15, 0x25, 0x2a - .byte 0x1b, 0x2d, 0x35 - .byte 0x2c, 0x2b, 0x26 - .byte 0x26, 0x1f, 0x20 - .byte 0x22, 0x2b, 0x12 - .byte 0x3f, 0x3d, 0x27 - .byte 0x30, 0x0a, 0x36 - .byte 0x35, 0x1f, 0x17 - .byte 0x21, 0x08, 0x29 - .byte 0x1d, 0x20, 0x33 - .byte 0x34, 0x11, 0x16 - .byte 0x05, 0x38, 0x2d diff --git a/ld_script.txt b/ld_script.txt index 01bc181a6..838aebcac 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,7 +181,7 @@ SECTIONS { asm/script_pokemon_util_80BF8FC.o(.text); src/heal_location.o(.text); src/region_map.o(.text); - asm/region_map.o(.text); + asm/image_processing_effects.o(.text); src/battle_ai_script_commands.o(.text); src/fldeff_rocksmash.o(.text); src/fldeff_dig.o(.text); @@ -480,6 +480,7 @@ SECTIONS { src/heal_location.o(.rodata); src/region_map.o(.rodata); data/region_map.o(.rodata); + data/image_processing_effects.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/fldeff_flash.o(.rodata); src/field_specials.o(.rodata); -- cgit v1.2.3 From 4cde8cf0e136b6a0eddc97cf51b5aeebc4b8f016 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 17:03:36 -0500 Subject: Port image_processing_effects from Emerald --- asm/image_processing_effects.s | 3486 --------------------------------------- data/image_processing_effects.s | 2 +- ld_script.txt | 2 +- src/image_processing_effects.c | 1224 ++++++++++++++ sym_common.txt | 33 +- 5 files changed, 1228 insertions(+), 3519 deletions(-) delete mode 100644 asm/image_processing_effects.s create mode 100644 src/image_processing_effects.c diff --git a/asm/image_processing_effects.s b/asm/image_processing_effects.s deleted file mode 100644 index 1f63bde6c..000000000 --- a/asm/image_processing_effects.s +++ /dev/null @@ -1,3486 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80C52D0 -sub_80C52D0: @ 80C52D0 - push {lr} - ldr r2, _080C5318 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C531C @ =gUnknown_3005348 - ldrb r1, [r0, 0x1F] - strb r1, [r2] - ldr r2, _080C5320 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C5324 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C5328 @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C532C @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C5330 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C5334 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrb r0, [r0] - subs r0, 0x2 - cmp r0, 0x22 - bls _080C530C - b _080C5458 -_080C530C: - lsls r0, 2 - ldr r1, _080C5338 @ =_080C533C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5318: .4byte gUnknown_3005334 -_080C531C: .4byte gUnknown_3005348 -_080C5320: .4byte gUnknown_3005330 -_080C5324: .4byte gUnknown_3005344 -_080C5328: .4byte gUnknown_3005340 -_080C532C: .4byte gUnknown_3005338 -_080C5330: .4byte gUnknown_300534C -_080C5334: .4byte gUnknown_300533C -_080C5338: .4byte _080C533C - .align 2, 0 -_080C533C: - .4byte _080C53C8 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5428 - .4byte _080C5458 - .4byte _080C53CE - .4byte _080C53D4 - .4byte _080C53E8 - .4byte _080C53FA - .4byte _080C5458 - .4byte _080C5410 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5416 - .4byte _080C53F4 - .4byte _080C541C - .4byte _080C5422 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5434 -_080C53C8: - bl sub_80C55D4 - b _080C5458 -_080C53CE: - bl sub_80C568C - b _080C5458 -_080C53D4: - bl sub_80C5884 - ldr r0, _080C53E4 @ =gUnknown_3005348 - ldrb r0, [r0] - bl sub_80C5748 - b _080C5458 - .align 2, 0 -_080C53E4: .4byte gUnknown_3005348 -_080C53E8: - bl sub_80C5884 - bl sub_80C59D4 - bl sub_80C57EC -_080C53F4: - bl sub_80C59D4 - b _080C5458 -_080C53FA: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - b _080C5458 -_080C5410: - bl sub_80C5A6C - b _080C5458 -_080C5416: - bl sub_80C5884 - b _080C5458 -_080C541C: - bl sub_80C5B9C - b _080C5458 -_080C5422: - bl sub_80C5C44 - b _080C5458 -_080C5428: - bl sub_80C55F4 - movs r0, 0x3 - bl sub_80C545C - b _080C5458 -_080C5434: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - bl sub_80C568C - bl sub_80C568C - movs r0, 0x2 - bl sub_80C545C - movs r0, 0x4 - bl sub_80C5514 -_080C5458: - pop {r0} - bx r0 - thumb_func_end sub_80C52D0 - - thumb_func_start sub_80C545C -sub_80C545C: @ 80C545C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0 - ldr r0, _080C54FC @ =gUnknown_3005338 - mov r8, r0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C54EE - ldr r1, _080C5500 @ =gUnknown_3005340 - mov r12, r1 - ldr r3, _080C5504 @ =gUnknown_300534C - mov r10, r3 - ldr r0, _080C5508 @ =gUnknown_3005330 - mov r9, r0 -_080C5482: - ldr r1, _080C550C @ =gUnknown_3005344 - ldrb r0, [r1] - adds r0, r2 - mov r3, r10 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C5510 @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r4, 0 - adds r5, r2, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r4, r0 - bcs _080C54E2 - movs r6, 0x80 - lsls r6, 8 -_080C54AE: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080C54D2 - movs r0, 0x1F - ands r0, r1 - adds r0, r7 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080C54C8 - movs r2, 0x1F -_080C54C8: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C54D2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, 0x2 - mov r1, r12 - ldrb r1, [r1] - cmp r4, r1 - bcc _080C54AE -_080C54E2: - lsls r0, r5, 24 - lsrs r2, r0, 24 - mov r3, r8 - ldrb r3, [r3] - cmp r2, r3 - bcc _080C5482 -_080C54EE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C54FC: .4byte gUnknown_3005338 -_080C5500: .4byte gUnknown_3005340 -_080C5504: .4byte gUnknown_300534C -_080C5508: .4byte gUnknown_3005330 -_080C550C: .4byte gUnknown_3005344 -_080C5510: .4byte gUnknown_3005334 - thumb_func_end sub_80C545C - - thumb_func_start sub_80C5514 -sub_80C5514: @ 80C5514 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C55BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C55AC - ldr r1, _080C55C0 @ =gUnknown_3005340 - mov r10, r1 -_080C5532: - ldr r3, _080C55C4 @ =gUnknown_3005344 - ldrb r0, [r3] - adds r0, r2 - ldr r3, _080C55C8 @ =gUnknown_300534C - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C55CC @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - ldr r3, _080C55D0 @ =gUnknown_3005330 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r5, 0 - adds r7, r2, 0x1 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C55A0 - movs r1, 0x80 - lsls r1, 8 - mov r9, r1 - movs r0, 0x1F - mov r12, r0 - mov r1, r8 - subs r6, r0, r1 -_080C5568: - ldrh r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080C5590 - movs r4, 0x1F - mov r2, r12 - ands r2, r1 - cmp r2, r6 - ble _080C5586 - mov r1, r8 - lsrs r0, r1, 1 - subs r0, r4, r0 - lsls r0, 24 - lsrs r2, r0, 24 -_080C5586: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C5590: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, 0x2 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C5568 -_080C55A0: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r1, _080C55BC @ =gUnknown_3005338 - ldrb r1, [r1] - cmp r2, r1 - bcc _080C5532 -_080C55AC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C55BC: .4byte gUnknown_3005338 -_080C55C0: .4byte gUnknown_3005340 -_080C55C4: .4byte gUnknown_3005344 -_080C55C8: .4byte gUnknown_300534C -_080C55CC: .4byte gUnknown_3005334 -_080C55D0: .4byte gUnknown_3005330 - thumb_func_end sub_80C5514 - - thumb_func_start sub_80C55D4 -sub_80C55D4: @ 80C55D4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080C55F0 @ =0x00000c7f -_080C55DA: - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_80C5CF8 - adds r4, 0x1 - cmp r4, r5 - bls _080C55DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C55F0: .4byte 0x00000c7f - thumb_func_end sub_80C55D4 - - thumb_func_start sub_80C55F4 -sub_80C55F4: @ 80C55F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5666 - ldr r0, _080C5678 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C567C @ =gUnknown_3005340 -_080C560C: - ldr r0, _080C5680 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5684 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5688 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C565A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5638: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C564C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C5ECC - strh r0, [r4] - ldr r3, [sp] -_080C564C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5638 -_080C565A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C560C -_080C5666: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5674: .4byte gUnknown_3005338 -_080C5678: .4byte gUnknown_3005334 -_080C567C: .4byte gUnknown_3005340 -_080C5680: .4byte gUnknown_3005344 -_080C5684: .4byte gUnknown_300534C -_080C5688: .4byte gUnknown_3005330 - thumb_func_end sub_80C55F4 - - thumb_func_start sub_80C568C -sub_80C568C: @ 80C568C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5722 - ldr r0, _080C5734 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5738 @ =gUnknown_300534C -_080C56A4: - ldr r0, _080C573C @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r3] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5740 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r3] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, r2, 0x1 - cmp r5, r0 - bge _080C5716 - ldr r6, _080C5738 @ =gUnknown_300534C -_080C56DA: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5700 - ldrb r2, [r6] - lsls r2, 1 - adds r2, r4, r2 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C61BC - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r3, [sp, 0x4] -_080C5700: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C56DA -_080C5716: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C56A4 -_080C5722: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5730: .4byte gUnknown_3005340 -_080C5734: .4byte gUnknown_3005334 -_080C5738: .4byte gUnknown_300534C -_080C573C: .4byte gUnknown_3005344 -_080C5740: .4byte gUnknown_3005330 -_080C5744: .4byte gUnknown_3005338 - thumb_func_end sub_80C568C - - thumb_func_start sub_80C5748 -sub_80C5748: @ 80C5748 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C57C4 - ldr r0, _080C57D8 @ =gUnknown_3005334 - mov r9, r0 - ldr r3, _080C57DC @ =gUnknown_3005340 -_080C5768: - ldr r0, _080C57E0 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C57E4 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r9 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C57E8 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C57B8 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5794: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C57AA - adds r0, r4, 0 - mov r1, r8 - str r3, [sp] - bl sub_80C5F00 - strh r0, [r4] - ldr r3, [sp] -_080C57AA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5794 -_080C57B8: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5768 -_080C57C4: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C57D4: .4byte gUnknown_3005338 -_080C57D8: .4byte gUnknown_3005334 -_080C57DC: .4byte gUnknown_3005340 -_080C57E0: .4byte gUnknown_3005344 -_080C57E4: .4byte gUnknown_300534C -_080C57E8: .4byte gUnknown_3005330 - thumb_func_end sub_80C5748 - - thumb_func_start sub_80C57EC -sub_80C57EC: @ 80C57EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C585E - ldr r0, _080C5870 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5874 @ =gUnknown_3005340 -_080C5804: - ldr r0, _080C5878 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C587C @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5880 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5852 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5830: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5844 - adds r0, r4, 0 - str r3, [sp] - bl sub_80C600C - strh r0, [r4] - ldr r3, [sp] -_080C5844: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5830 -_080C5852: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5804 -_080C585E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C586C: .4byte gUnknown_3005338 -_080C5870: .4byte gUnknown_3005334 -_080C5874: .4byte gUnknown_3005340 -_080C5878: .4byte gUnknown_3005344 -_080C587C: .4byte gUnknown_300534C -_080C5880: .4byte gUnknown_3005330 - thumb_func_end sub_80C57EC - - thumb_func_start sub_80C5884 -sub_80C5884: @ 80C5884 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r7, 0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcs _080C5910 - ldr r0, _080C59C0 @ =gUnknown_3005334 - mov r8, r0 -_080C589A: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r7 - ldr r0, _080C59C8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r2, r8 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r5, r1, r0 - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - movs r6, 0x1 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, 0x1 - cmp r6, r0 - bge _080C58FA -_080C58D2: - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r6, r0 - blt _080C58D2 -_080C58FA: - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r7, 24 - lsrs r7, r0, 24 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcc _080C589A -_080C5910: - movs r6, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcs _080C59B0 - ldr r3, _080C59C0 @ =gUnknown_3005334 - mov r9, r3 - ldr r0, _080C59C8 @ =gUnknown_300534C - mov r8, r0 -_080C5922: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r0, [r0] - mov r2, r8 - ldrb r1, [r2] - muls r0, r1 - lsls r0, 1 - mov r3, r9 - ldr r2, [r3] - adds r2, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r6 - lsls r0, 1 - adds r5, r2, r0 - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - movs r7, 0x1 - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, 0x1 - cmp r7, r0 - bge _080C5994 - ldr r4, _080C59C8 @ =gUnknown_300534C -_080C5962: - ldrb r1, [r4] - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - ldrb r1, [r4] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r7, r0 - blt _080C5962 -_080C5994: - mov r2, r8 - ldrb r1, [r2] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r6, 24 - lsrs r6, r0, 24 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcc _080C5922 -_080C59B0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C59BC: .4byte gUnknown_3005338 -_080C59C0: .4byte gUnknown_3005334 -_080C59C4: .4byte gUnknown_3005344 -_080C59C8: .4byte gUnknown_300534C -_080C59CC: .4byte gUnknown_3005330 -_080C59D0: .4byte gUnknown_3005340 - thumb_func_end sub_80C5884 - - thumb_func_start sub_80C59D4 -sub_80C59D4: @ 80C59D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5A46 - ldr r0, _080C5A58 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5A5C @ =gUnknown_3005340 -_080C59EC: - ldr r0, _080C5A60 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5A64 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5A68 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5A3A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5A18: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5A2C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C606C - strh r0, [r4] - ldr r3, [sp] -_080C5A2C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5A18 -_080C5A3A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C59EC -_080C5A46: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5A54: .4byte gUnknown_3005338 -_080C5A58: .4byte gUnknown_3005334 -_080C5A5C: .4byte gUnknown_3005340 -_080C5A60: .4byte gUnknown_3005344 -_080C5A64: .4byte gUnknown_300534C -_080C5A68: .4byte gUnknown_3005330 - thumb_func_end sub_80C59D4 - - thumb_func_start sub_80C5A6C -sub_80C5A6C: @ 80C5A6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - adds r5, r0, 0 -_080C5A84: - movs r7, 0 -_080C5A86: - ldrh r0, [r4] - ands r0, r5 - cmp r0, 0 - bne _080C5A96 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5A96: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5A86 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5A84 - movs r7, 0 - ldr r1, _080C5B98 @ =gUnknown_3005334 - mov r10, r1 - mov r3, sp - movs r2, 0x80 - lsls r2, 8 - mov r9, r2 -_080C5ABA: - lsls r0, r7, 1 - mov r2, r10 - ldr r1, [r2] - adds r4, r1, r0 - ldrh r1, [r4] - strh r1, [r3] - mov r1, r9 - strh r1, [r4] - movs r6, 0x1 - adds r4, 0x80 - adds r5, r0, 0 -_080C5AD0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - ands r0, r2 - cmp r0, 0 - bne _080C5AF0 - adds r2, r4, 0 - adds r2, 0x80 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5AF0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x80 - cmp r6, 0x3E - bls _080C5AD0 - mov r0, r9 - strh r0, [r4] - mov r1, r10 - ldr r0, [r1] - adds r4, r0, r5 - ldrh r0, [r4] - strh r0, [r3] - mov r2, r9 - strh r2, [r4] - movs r6, 0x1 - adds r4, 0x80 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B18: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - adds r5, r4, 0 - adds r5, 0x80 - cmp r0, 0 - bne _080C5B38 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5B38: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r5, 0 - cmp r6, 0x3E - bls _080C5B18 - mov r2, r9 - strh r2, [r4] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3F - bls _080C5ABA - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B5E: - movs r7, 0 - adds r5, r6, 0x1 -_080C5B62: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _080C5B74 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5B74: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5B62 - lsls r0, r5, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5B5E - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5B98: .4byte gUnknown_3005334 - thumb_func_end sub_80C5A6C - - thumb_func_start sub_80C5B9C -sub_80C5B9C: @ 80C5B9C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5C1E - ldr r0, _080C5C30 @ =gUnknown_3005334 - mov r8, r0 -_080C5BB2: - ldr r0, _080C5C34 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5C38 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5C3C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5C12 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5BEA: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5C00 - mov r0, sp - adds r1, r4, 0 - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] -_080C5C00: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5BEA -_080C5C12: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5BB2 -_080C5C1E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5C2C: .4byte gUnknown_3005338 -_080C5C30: .4byte gUnknown_3005334 -_080C5C34: .4byte gUnknown_3005344 -_080C5C38: .4byte gUnknown_300534C -_080C5C3C: .4byte gUnknown_3005330 -_080C5C40: .4byte gUnknown_3005340 - thumb_func_end sub_80C5B9C - - thumb_func_start sub_80C5C44 -sub_80C5C44: @ 80C5C44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5CD2 - ldr r0, _080C5CE4 @ =gUnknown_3005334 - mov r8, r0 - ldr r7, _080C5CE8 @ =gUnknown_300534C -_080C5C5C: - ldr r0, _080C5CEC @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r7] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5CF0 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5CC6 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C5C96: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - bne _080C5CB0 - mov r0, sp - adds r1, r4, 0 - str r2, [sp, 0x4] - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r2, [sp, 0x4] -_080C5CB0: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5C96 -_080C5CC6: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5C5C -_080C5CD2: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5CE0: .4byte gUnknown_3005340 -_080C5CE4: .4byte gUnknown_3005334 -_080C5CE8: .4byte gUnknown_300534C -_080C5CEC: .4byte gUnknown_3005344 -_080C5CF0: .4byte gUnknown_3005330 -_080C5CF4: .4byte gUnknown_3005338 - thumb_func_end sub_80C5C44 - - thumb_func_start sub_80C5CF8 -sub_80C5CF8: @ 80C5CF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - mov r2, sp - ldr r3, _080C5D64 @ =gUnknown_83F3024 - lsls r1, r0, 1 - add r1, r10 - adds r0, r1, r3 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r2, 0x1] - mov r5, sp - adds r0, r3, 0x2 - adds r1, r0 - ldrb r4, [r1] - lsls r2, r4, 24 - lsrs r1, r2, 27 - movs r0, 0x7 - ands r1, r0 - strh r1, [r5, 0x2] - lsrs r2, 25 - mov r9, r2 - movs r0, 0x3 - ands r2, r0 - mov r9, r2 - movs r5, 0x1 - ands r5, r4 - movs r4, 0x1 - mov r8, r4 - cmp r8, r1 - bcs _080C5DAA - mov r3, sp -_080C5D4A: - cmp r5, 0 - bne _080C5D68 - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - mov r4, r8 - subs r0, r4 - strb r0, [r1] - ldrb r0, [r3, 0x1] - add r0, r8 - b _080C5D7A - .align 2, 0 -_080C5D64: .4byte gUnknown_83F3024 -_080C5D68: - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r3, 0x1] - subs r0, 0x1 -_080C5D7A: - strb r0, [r1, 0x1] - add r2, sp - ldrb r0, [r2] - cmp r0, 0x3F - bhi _080C5D8A - ldrb r0, [r2, 0x1] - cmp r0, 0x3F - bls _080C5D92 -_080C5D8A: - mov r0, r8 - subs r0, 0x1 - strh r0, [r3, 0x2] - b _080C5DAA -_080C5D92: - ldrh r0, [r3, 0x2] - mov r1, r8 - subs r0, r1 - strh r0, [r2, 0x2] - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrh r0, [r3, 0x2] - cmp r8, r0 - bcc _080C5D4A -_080C5DAA: - movs r2, 0 - mov r8, r2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcc _080C5DB8 - b _080C5EBA -_080C5DB8: - movs r3, 0x1F -_080C5DBA: - ldr r1, _080C5E18 @ =gUnknown_3005334 - mov r4, r8 - lsls r0, r4, 2 - mov r2, sp - adds r6, r2, r0 - ldrb r0, [r6, 0x1] - lsls r0, 7 - ldr r1, [r1] - adds r1, r0 - ldrb r0, [r6] - lsls r0, 1 - adds r2, r1, r0 - ldrh r1, [r2] - movs r4, 0x80 - lsls r4, 8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5EA6 - movs r7, 0x1F - ands r7, r1 - lsls r0, r1, 16 - lsrs r5, r0, 21 - ands r5, r3 - lsrs r4, r0, 26 - ands r4, r3 - mov r0, r9 - cmp r0, 0 - blt _080C5E9C - cmp r0, 0x1 - ble _080C5E1C - cmp r0, 0x3 - bgt _080C5E9C - ldrh r0, [r6, 0x2] - adds r1, r7, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r1, r5, r0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r7, 0x1F - bls _080C5E90 - movs r7, 0x1F - b _080C5E90 - .align 2, 0 -_080C5E18: .4byte gUnknown_3005334 -_080C5E1C: - mov r1, r10 - lsls r0, r1, 1 - add r0, r10 - ldr r1, _080C5E50 @ =gUnknown_83F3024 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsrs r0, 3 - movs r1, 0x7 - ands r0, r1 - movs r1, 0x3 - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - cmp r0, 0x1 - beq _080C5E6C - cmp r0, 0x1 - bgt _080C5E54 - cmp r0, 0 - beq _080C5E5A - b _080C5E9C - .align 2, 0 -_080C5E50: .4byte gUnknown_83F3024 -_080C5E54: - cmp r0, 0x2 - beq _080C5E7E - b _080C5E9C -_080C5E5A: - ldrh r0, [r6, 0x2] - cmp r7, r0 - bcc _080C5E68 - subs r0, r7, r0 - lsls r0, 16 - lsrs r7, r0, 16 - b _080C5E9C -_080C5E68: - movs r7, 0 - b _080C5E9C -_080C5E6C: - ldrh r0, [r6, 0x2] - cmp r5, r0 - bcc _080C5E7A - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - b _080C5E9C -_080C5E7A: - movs r5, 0 - b _080C5E9C -_080C5E7E: - ldrh r0, [r6, 0x2] - cmp r4, r0 - bcc _080C5E8C - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - b _080C5E9C -_080C5E8C: - movs r4, 0 - b _080C5E9C -_080C5E90: - cmp r5, 0x1F - bls _080C5E96 - movs r5, 0x1F -_080C5E96: - cmp r4, 0x1F - bls _080C5E9C - movs r4, 0x1F -_080C5E9C: - lsls r0, r4, 10 - lsls r1, r5, 5 - orrs r0, r1 - orrs r7, r0 - strh r7, [r2] -_080C5EA6: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcs _080C5EBA - b _080C5DBA -_080C5EBA: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C5CF8 - - thumb_func_start sub_80C5ECC -sub_80C5ECC: @ 80C5ECC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 10 - lsls r2, r1, 5 - orrs r0, r2 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C5ECC - - thumb_func_start sub_80C5F00 -sub_80C5F00: @ 80C5F00 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C5F30 - cmp r3, 0x10 - bhi _080C5F30 - cmp r0, 0x10 - bhi _080C5F30 - adds r0, r4, 0 - bl sub_80C5F3C - lsls r0, 16 - lsrs r0, 16 - b _080C5F32 -_080C5F30: - ldr r0, _080C5F38 @ =0x00007fff -_080C5F32: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C5F38: .4byte 0x00007fff - thumb_func_end sub_80C5F00 - - thumb_func_start sub_80C5F3C -sub_80C5F3C: @ 80C5F3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - mov r8, r0 - movs r6, 0 - movs r7, 0 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _080C5FF4 - lsls r0, 2 - ldr r1, _080C5F80 @ =_080C5F84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5F80: .4byte _080C5F84 - .align 2, 0 -_080C5F84: - .4byte _080C5F9C - .4byte _080C5FAC - .4byte _080C5FBC - .4byte _080C5FCA - .4byte _080C5FD8 - .4byte _080C5FE6 -_080C5F9C: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r6, 0 - movs r1, 0 - mov r8, r1 - b _080C5FF4 -_080C5FAC: - movs r7, 0 - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r6, r8 - b _080C5FF4 -_080C5FBC: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r7 - b _080C5FF4 -_080C5FCA: - movs r7, 0 - movs r6, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - b _080C5FF2 -_080C5FD8: - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r6 - b _080C5FF4 -_080C5FE6: - movs r7, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 -_080C5FF2: - mov r8, r0 -_080C5FF4: - lsls r0, r7, 10 - lsls r1, r6, 5 - orrs r0, r1 - mov r1, r8 - orrs r1, r0 - lsls r0, r1, 16 - lsrs r0, 16 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C5F3C - - thumb_func_start sub_80C600C -sub_80C600C: @ 80C600C - push {lr} - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C6030 - cmp r3, 0x10 - bhi _080C6030 - cmp r0, 0x10 - bhi _080C6030 - movs r0, 0 - b _080C6032 -_080C6030: - ldr r0, _080C6038 @ =0x00007fff -_080C6032: - pop {r1} - bx r1 - .align 2, 0 -_080C6038: .4byte 0x00007fff - thumb_func_end sub_80C600C - - thumb_func_start sub_80C603C -sub_80C603C: @ 80C603C - push {r4,lr} - adds r4, r0, 0 - ldrh r3, [r4] - cmp r3, 0 - beq _080C6064 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _080C6056 - adds r0, r2, 0 - b _080C6066 -_080C6056: - ldrh r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C6064 - ldrh r0, [r4] - b _080C6066 -_080C6064: - movs r0, 0 -_080C6066: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C603C - - thumb_func_start sub_80C606C -sub_80C606C: @ 80C606C - push {r4,lr} - ldrh r1, [r0] - movs r0, 0x1F - movs r3, 0x1F - ands r3, r1 - lsls r1, 16 - lsrs r2, r1, 21 - lsrs r1, 26 - subs r3, r0, r3 - adds r4, r0, 0 - bics r4, r2 - adds r2, r4, 0 - bics r0, r1 - lsls r0, 10 - lsls r2, 5 - orrs r0, r2 - orrs r0, r3 - lsls r0, 16 - lsrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C606C - - thumb_func_start sub_80C6098 -sub_80C6098: @ 80C6098 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r1, 0 - ldrh r4, [r0] - ldrh r5, [r7] - lsls r6, r4, 16 - lsls r0, r5, 16 - mov r12, r0 - cmp r4, r5 - beq _080C610A - mov r2, sp - movs r3, 0x1F - movs r1, 0x1F - adds r0, r1, 0 - ands r0, r4 - strh r0, [r2] - lsrs r0, r6, 21 - ands r0, r3 - strh r0, [r2, 0x2] - lsrs r0, r6, 26 - ands r0, r3 - strh r0, [r2, 0x4] - mov r0, sp - ands r1, r5 - strh r1, [r0, 0x6] - mov r1, sp - mov r2, r12 - lsrs r0, r2, 21 - ands r0, r3 - strh r0, [r1, 0x8] - lsrs r0, r2, 26 - ands r0, r3 - strh r0, [r1, 0xA] - mov r0, sp - ldrh r0, [r0] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x4] - cmp r0, 0x19 - bhi _080C610A -_080C60F2: - mov r0, sp - ldrh r0, [r0, 0x6] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0x8] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0xA] - cmp r0, 0x19 - bls _080C610E -_080C610A: - ldrh r0, [r7] - b _080C61B4 -_080C610E: - movs r4, 0 - add r6, sp, 0xC - mov r7, sp - adds r7, 0x6 - adds r5, r6, 0 -_080C6118: - lsls r2, r4, 1 - mov r1, sp - adds r0, r1, r2 - adds r1, r7, r2 - ldrh r3, [r0] - ldrh r0, [r1] - cmp r3, r0 - bls _080C612E - adds r1, r5, r2 - subs r0, r3, r0 - b _080C6132 -_080C612E: - adds r1, r5, r2 - subs r0, r3 -_080C6132: - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6118 - adds r1, r6, 0 - ldrh r0, [r1, 0x2] - ldrh r3, [r1] - cmp r3, r0 - bcc _080C6158 - ldrh r2, [r1, 0x4] - cmp r3, r2 - bcc _080C6152 - adds r2, r3, 0 - b _080C616C -_080C6152: - cmp r0, r2 - bcs _080C615E - b _080C6166 -_080C6158: - ldrh r2, [r1, 0x4] - cmp r0, r2 - bcc _080C6162 -_080C615E: - ldrh r2, [r1, 0x2] - b _080C616C -_080C6162: - cmp r2, r3 - bcc _080C616A -_080C6166: - ldrh r2, [r1, 0x4] - b _080C616C -_080C616A: - ldrh r2, [r6] -_080C616C: - mov r0, sp - ldrh r1, [r0, 0x6] - lsrs r0, r2, 1 - movs r6, 0x1F - subs r6, r0 - adds r0, r1, 0 - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, sp - ldrh r0, [r0, 0x8] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - ldrh r0, [r0, 0xA] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - lsls r4, 5 - orrs r0, r4 - orrs r5, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r5, 0 -_080C61B4: - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C6098 - - thumb_func_start sub_80C61BC -sub_80C61BC: @ 80C61BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C61E4 - ldrh r0, [r2] - cmp r0, r1 - bne _080C61E4 - mov r1, r10 - ldrh r0, [r1] - b _080C62CC -_080C61E4: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6266 - cmp r1, r6 - bne _080C6266 - mov r3, r10 - ldrh r0, [r3] - b _080C62CC -_080C6266: - cmp r7, r6 - bls _080C626E - subs r0, r7, r6 - b _080C6270 -_080C626E: - subs r0, r6, r7 -_080C6270: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C627C - subs r0, r1, r6 - b _080C627E -_080C627C: - subs r0, r6, r1 -_080C627E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C6288 - adds r0, r2, 0 -_080C6288: - lsrs r0, 1 - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C62CC: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C61BC - - thumb_func_start sub_80C62DC -sub_80C62DC: @ 80C62DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C6304 - ldrh r0, [r2] - cmp r0, r1 - bne _080C6304 - mov r1, r10 - ldrh r0, [r1] - b _080C63EA -_080C6304: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6386 - cmp r1, r6 - bne _080C6386 - mov r3, r10 - ldrh r0, [r3] - b _080C63EA -_080C6386: - cmp r7, r6 - bls _080C638E - subs r0, r7, r6 - b _080C6390 -_080C638E: - subs r0, r6, r7 -_080C6390: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C639C - subs r0, r1, r6 - b _080C639E -_080C639C: - subs r0, r6, r1 -_080C639E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C63A8 - adds r0, r2, 0 -_080C63A8: - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C63EA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C62DC - - thumb_func_start sub_80C63FC -sub_80C63FC: @ 80C63FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldrb r1, [r0, 0x1D] - lsrs r5, r1, 3 - ldrb r1, [r0, 0x1E] - lsrs r1, 3 - str r1, [sp, 0x8] - ldr r1, [r0, 0x4] - str r1, [sp] - ldr r2, [r0, 0x10] - str r2, [sp, 0x4] - ldrh r0, [r0, 0x16] - cmp r0, 0x2 - bne _080C64AC - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcc _080C642A - b _080C6538 -_080C642A: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C649E - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C643E: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 6 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C644E: - lsls r0, r4, 3 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r0, [r2, 0x2] - lsls r0, 8 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0x6] - lsls r0, 8 - ldrh r1, [r2, 0x4] - orrs r0, r1 - strh r0, [r3, 0x2] - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0x8] - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r2, 0xE] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r3, 0x6] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C644E - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C643E -_080C649E: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C642A - b _080C6538 -_080C64AC: - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcs _080C6538 -_080C64B4: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C652C - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C64C8: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 5 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C64D8: - lsls r0, r4, 2 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r1, [r2, 0x2] - lsls r1, 4 - ldrh r0, [r2] - orrs r1, r0 - ldrh r0, [r2, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0x6] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3] - ldrh r1, [r2, 0xA] - lsls r1, 4 - ldrh r0, [r2, 0x8] - orrs r1, r0 - ldrh r0, [r2, 0xC] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0xE] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3, 0x2] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C64D8 - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C64C8 -_080C652C: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C64B4 -_080C6538: - 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_80C63FC - - thumb_func_start sub_80C6548 -sub_80C6548: @ 80C6548 - push {lr} - ldr r2, _080C6598 @ =gUnknown_3005354 - ldrb r1, [r0, 0x18] - lsls r1, 4 - strh r1, [r2] - ldr r3, _080C659C @ =gUnknown_3005350 - ldrh r2, [r2] - lsls r2, 1 - ldr r1, [r0, 0x8] - adds r1, r2 - str r1, [r3] - ldr r2, _080C65A0 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C65A4 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C65A8 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C65AC @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C65B0 @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C65B4 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C65B8 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrh r0, [r0, 0x14] - cmp r0, 0x5 - bhi _080C660E - lsls r0, 2 - ldr r1, _080C65BC @ =_080C65C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C6598: .4byte gUnknown_3005354 -_080C659C: .4byte gUnknown_3005350 -_080C65A0: .4byte gUnknown_3005334 -_080C65A4: .4byte gUnknown_3005330 -_080C65A8: .4byte gUnknown_3005344 -_080C65AC: .4byte gUnknown_3005340 -_080C65B0: .4byte gUnknown_3005338 -_080C65B4: .4byte gUnknown_300534C -_080C65B8: .4byte gUnknown_300533C -_080C65BC: .4byte _080C65C0 - .align 2, 0 -_080C65C0: - .4byte _080C65D8 - .4byte _080C65E0 - .4byte _080C65E8 - .4byte _080C65F2 - .4byte _080C65FC - .4byte _080C6606 -_080C65D8: - movs r0, 0 - bl sub_80C6748 - b _080C660E -_080C65E0: - movs r0, 0x1 - bl sub_80C6748 - b _080C660E -_080C65E8: - bl sub_80C6614 - bl sub_80C6AB8 - b _080C660E -_080C65F2: - bl sub_80C6714 - bl sub_80C6A08 - b _080C660E -_080C65FC: - bl sub_80C66D8 - bl sub_80C6958 - b _080C660E -_080C6606: - bl sub_80C66BC - bl sub_80C68A0 -_080C660E: - pop {r0} - bx r0 - thumb_func_end sub_80C6548 - - thumb_func_start sub_80C6614 -sub_80C6614: @ 80C6614 - ldr r2, _080C667C @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - ldr r0, [r2] - ldr r2, _080C6680 @ =0x000018c6 - adds r1, r2, 0 - strh r1, [r0, 0x2] - ldr r2, _080C6684 @ =0x000077bd - adds r1, r2, 0 - strh r1, [r0, 0x4] - ldr r2, _080C6688 @ =0x00002d6b - adds r1, r2, 0 - strh r1, [r0, 0x6] - ldr r2, _080C668C @ =0x000018dd - adds r1, r2, 0 - strh r1, [r0, 0x8] - ldr r2, _080C6690 @ =0x00001ba6 - adds r1, r2, 0 - strh r1, [r0, 0xA] - ldr r2, _080C6694 @ =0x000074c6 - adds r1, r2, 0 - strh r1, [r0, 0xC] - ldr r2, _080C6698 @ =0x00001bbd - adds r1, r2, 0 - strh r1, [r0, 0xE] - ldr r2, _080C669C @ =0x000074dd - adds r1, r2, 0 - strh r1, [r0, 0x10] - ldr r2, _080C66A0 @ =0x000077a6 - adds r1, r2, 0 - strh r1, [r0, 0x12] - ldr r2, _080C66A4 @ =0x0000197d - adds r1, r2, 0 - strh r1, [r0, 0x14] - ldr r2, _080C66A8 @ =0x00001bab - adds r1, r2, 0 - strh r1, [r0, 0x16] - ldr r2, _080C66AC @ =0x00007566 - adds r1, r2, 0 - strh r1, [r0, 0x18] - ldr r2, _080C66B0 @ =0x00002cdd - adds r1, r2, 0 - strh r1, [r0, 0x1A] - ldr r2, _080C66B4 @ =0x00002fa6 - adds r1, r2, 0 - strh r1, [r0, 0x1C] - ldr r2, _080C66B8 @ =0x000074cb - adds r1, r2, 0 - strh r1, [r0, 0x1E] - bx lr - .align 2, 0 -_080C667C: .4byte gUnknown_3005350 -_080C6680: .4byte 0x000018c6 -_080C6684: .4byte 0x000077bd -_080C6688: .4byte 0x00002d6b -_080C668C: .4byte 0x000018dd -_080C6690: .4byte 0x00001ba6 -_080C6694: .4byte 0x000074c6 -_080C6698: .4byte 0x00001bbd -_080C669C: .4byte 0x000074dd -_080C66A0: .4byte 0x000077a6 -_080C66A4: .4byte 0x0000197d -_080C66A8: .4byte 0x00001bab -_080C66AC: .4byte 0x00007566 -_080C66B0: .4byte 0x00002cdd -_080C66B4: .4byte 0x00002fa6 -_080C66B8: .4byte 0x000074cb - thumb_func_end sub_80C6614 - - thumb_func_start sub_80C66BC -sub_80C66BC: @ 80C66BC - ldr r2, _080C66D0 @ =gUnknown_3005350 - ldr r0, [r2] - movs r1, 0 - strh r1, [r0] - ldr r2, [r2] - strh r1, [r2, 0x2] - ldr r1, _080C66D4 @ =0x00007fff - adds r0, r1, 0 - strh r0, [r2, 0x4] - bx lr - .align 2, 0 -_080C66D0: .4byte gUnknown_3005350 -_080C66D4: .4byte 0x00007fff - thumb_func_end sub_80C66BC - - thumb_func_start sub_80C66D8 -sub_80C66D8: @ 80C66D8 - push {r4,r5,lr} - ldr r1, _080C6710 @ =gUnknown_3005350 - ldr r0, [r1] - movs r2, 0 - strh r2, [r0] - ldr r0, [r1] - strh r2, [r0, 0x2] - movs r4, 0 - adds r5, r1, 0 -_080C66EA: - ldr r0, [r5] - lsls r2, r4, 1 - adds r2, r0 - adds r0, r4, 0x2 - lsls r3, r0, 1 - lsls r1, r0, 11 - lsls r0, 6 - orrs r1, r0 - orrs r1, r3 - strh r1, [r2, 0x4] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xD - bls _080C66EA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C6710: .4byte gUnknown_3005350 - thumb_func_end sub_80C66D8 - - thumb_func_start sub_80C6714 -sub_80C6714: @ 80C6714 - push {r4,lr} - ldr r2, _080C6744 @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - movs r3, 0 - adds r4, r2, 0 -_080C6722: - ldr r0, [r4] - lsls r2, r3, 1 - adds r2, r0 - lsls r0, r3, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r0, r3 - strh r0, [r2, 0x2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _080C6722 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C6744: .4byte gUnknown_3005350 - thumb_func_end sub_80C6714 - - thumb_func_start sub_80C6748 -sub_80C6748: @ 80C6748 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - movs r1, 0xDF - mov r9, r1 - cmp r0, 0 - bne _080C6760 - movs r2, 0xFF - mov r9, r2 -_080C6760: - movs r6, 0 - ldr r3, _080C67E4 @ =gUnknown_3005350 - mov r12, r3 - mov r0, r9 - lsls r4, r0, 1 - ldr r5, _080C67E8 @ =gUnknown_3005338 - cmp r6, r9 - bcs _080C6784 - movs r2, 0 -_080C6772: - ldr r0, [r3] - lsls r1, r6, 1 - adds r1, r0 - strh r2, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r9 - bcc _080C6772 -_080C6784: - mov r1, r12 - ldr r0, [r1] - adds r0, r4, r0 - ldr r2, _080C67EC @ =0x00003def - adds r1, r2, 0 - strh r1, [r0] - movs r3, 0 - ldrb r5, [r5] - cmp r3, r5 - bcs _080C6888 -_080C6798: - ldr r2, _080C67F0 @ =gUnknown_3005334 - ldr r0, _080C67F4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r3 - ldr r0, _080C67F8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C67FC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6800 @ =gUnknown_3005340 - adds r2, r0, 0 - adds r3, 0x1 - mov r10, r3 - ldrb r3, [r2] - cmp r6, r3 - bcs _080C687A - ldr r0, _080C6804 @ =gUnknown_3005354 - mov r8, r0 -_080C67C8: - ldrh r0, [r4] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6808 - mov r1, r8 - ldrh r0, [r1] - strh r0, [r4] - adds r6, 0x1 - adds r7, r4, 0x2 - b _080C686E - .align 2, 0 -_080C67E4: .4byte gUnknown_3005350 -_080C67E8: .4byte gUnknown_3005338 -_080C67EC: .4byte 0x00003def -_080C67F0: .4byte gUnknown_3005334 -_080C67F4: .4byte gUnknown_3005344 -_080C67F8: .4byte gUnknown_300534C -_080C67FC: .4byte gUnknown_3005330 -_080C6800: .4byte gUnknown_3005340 -_080C6804: .4byte gUnknown_3005354 -_080C6808: - adds r0, r4, 0 - bl sub_80C6B68 - lsls r0, 16 - lsrs r5, r0, 16 - movs r3, 0x1 - adds r6, 0x1 - adds r7, r4, 0x2 - cmp r3, r9 - bcs _080C6864 - ldr r0, _080C6834 @ =gUnknown_3005350 - ldr r2, [r0] - ldrh r1, [r2, 0x2] - mov r12, r0 - cmp r1, 0 - bne _080C6838 - strh r5, [r2, 0x2] - mov r2, r8 - ldrh r0, [r2] - adds r0, 0x1 - b _080C6862 - .align 2, 0 -_080C6834: .4byte gUnknown_3005350 -_080C6838: - mov r2, r12 - ldr r1, [r2] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080C685C - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r9 - bcs _080C6864 - lsls r0, r3, 1 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - bne _080C6838 - strh r5, [r1] -_080C685C: - mov r1, r8 - ldrh r0, [r1] - adds r0, r3 -_080C6862: - strh r0, [r4] -_080C6864: - ldr r2, _080C6898 @ =gUnknown_3005340 - cmp r3, r9 - bne _080C686E - mov r3, r9 - strh r3, [r4] -_080C686E: - lsls r0, r6, 24 - lsrs r6, r0, 24 - adds r4, r7, 0 - ldrb r0, [r2] - cmp r6, r0 - bcc _080C67C8 -_080C687A: - mov r1, r10 - lsls r0, r1, 24 - lsrs r3, r0, 24 - ldr r0, _080C689C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r3, r0 - bcc _080C6798 -_080C6888: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6898: .4byte gUnknown_3005340 -_080C689C: .4byte gUnknown_3005338 - thumb_func_end sub_80C6748 - - thumb_func_start sub_80C68A0 -sub_80C68A0: @ 80C68A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r2, 0 - ldr r0, _080C68F4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6944 - ldr r0, _080C68F8 @ =gUnknown_3005334 - mov r8, r0 -_080C68B4: - ldr r0, _080C68FC @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6900 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6904 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6908 @ =gUnknown_3005340 - adds r3, r0, 0 - adds r7, r2, 0x1 - ldrb r0, [r3] - cmp r6, r0 - bcs _080C6938 - ldr r5, _080C690C @ =gUnknown_3005354 -_080C68E0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6910 - ldrh r0, [r5] - strh r0, [r4] - b _080C692A - .align 2, 0 -_080C68F4: .4byte gUnknown_3005338 -_080C68F8: .4byte gUnknown_3005334 -_080C68FC: .4byte gUnknown_3005344 -_080C6900: .4byte gUnknown_300534C -_080C6904: .4byte gUnknown_3005330 -_080C6908: .4byte gUnknown_3005340 -_080C690C: .4byte gUnknown_3005354 -_080C6910: - adds r0, r4, 0 - bl sub_80C600C - lsls r0, 16 - cmp r0, 0 - bne _080C6922 - ldrh r0, [r5] - adds r0, 0x1 - b _080C6926 -_080C6922: - ldrh r0, [r5] - adds r0, 0x2 -_080C6926: - strh r0, [r4] - ldr r3, _080C6950 @ =gUnknown_3005340 -_080C692A: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r6, r0 - bcc _080C68E0 -_080C6938: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6954 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C68B4 -_080C6944: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6950: .4byte gUnknown_3005340 -_080C6954: .4byte gUnknown_3005338 - thumb_func_end sub_80C68A0 - - thumb_func_start sub_80C6958 -sub_80C6958: @ 80C6958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C69AC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C69F4 - ldr r0, _080C69B0 @ =gUnknown_3005334 - mov r8, r0 -_080C696E: - ldr r0, _080C69B4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C69B8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C69BC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C69C0 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C69E8 - ldr r6, _080C69C4 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C699E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C69C8 - ldrh r0, [r6] - strh r0, [r4] - b _080C69D8 - .align 2, 0 -_080C69AC: .4byte gUnknown_3005338 -_080C69B0: .4byte gUnknown_3005334 -_080C69B4: .4byte gUnknown_3005344 -_080C69B8: .4byte gUnknown_300534C -_080C69BC: .4byte gUnknown_3005330 -_080C69C0: .4byte gUnknown_3005340 -_080C69C4: .4byte gUnknown_3005354 -_080C69C8: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CAC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C69D8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6A00 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C699E -_080C69E8: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6A04 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C696E -_080C69F4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6A00: .4byte gUnknown_3005340 -_080C6A04: .4byte gUnknown_3005338 - thumb_func_end sub_80C6958 - - thumb_func_start sub_80C6A08 -sub_80C6A08: @ 80C6A08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6A5C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6AA4 - ldr r0, _080C6A60 @ =gUnknown_3005334 - mov r8, r0 -_080C6A1E: - ldr r0, _080C6A64 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6A68 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6A6C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6A70 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6A98 - ldr r6, _080C6A74 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6A4E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6A78 - ldrh r0, [r6] - strh r0, [r4] - b _080C6A88 - .align 2, 0 -_080C6A5C: .4byte gUnknown_3005338 -_080C6A60: .4byte gUnknown_3005334 -_080C6A64: .4byte gUnknown_3005344 -_080C6A68: .4byte gUnknown_300534C -_080C6A6C: .4byte gUnknown_3005330 -_080C6A70: .4byte gUnknown_3005340 -_080C6A74: .4byte gUnknown_3005354 -_080C6A78: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CE0 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6A88: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6AB0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6A4E -_080C6A98: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6AB4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6A1E -_080C6AA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6AB0: .4byte gUnknown_3005340 -_080C6AB4: .4byte gUnknown_3005338 - thumb_func_end sub_80C6A08 - - thumb_func_start sub_80C6AB8 -sub_80C6AB8: @ 80C6AB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6B0C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6B54 - ldr r0, _080C6B10 @ =gUnknown_3005334 - mov r8, r0 -_080C6ACE: - ldr r0, _080C6B14 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6B18 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6B1C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6B20 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6B48 - ldr r6, _080C6B24 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6AFE: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6B28 - ldrh r0, [r6] - strh r0, [r4] - b _080C6B38 - .align 2, 0 -_080C6B0C: .4byte gUnknown_3005338 -_080C6B10: .4byte gUnknown_3005334 -_080C6B14: .4byte gUnknown_3005344 -_080C6B18: .4byte gUnknown_300534C -_080C6B1C: .4byte gUnknown_3005330 -_080C6B20: .4byte gUnknown_3005340 -_080C6B24: .4byte gUnknown_3005354 -_080C6B28: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6BDC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6B38: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6B60 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6AFE -_080C6B48: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6B64 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6ACE -_080C6B54: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6B60: .4byte gUnknown_3005340 -_080C6B64: .4byte gUnknown_3005338 - thumb_func_end sub_80C6AB8 - - thumb_func_start sub_80C6B68 -sub_80C6B68: @ 80C6B68 - push {r4,lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r4, 0x1F - ands r4, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r1 - lsrs r2, r0, 26 - ands r2, r1 - movs r1, 0x3 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B8C - movs r0, 0x1C - ands r0, r4 - adds r4, r0, 0x4 -_080C6B8C: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B9A - movs r0, 0x1C - ands r0, r3 - adds r3, r0, 0x4 -_080C6B9A: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6BA8 - movs r0, 0x1C - ands r0, r2 - adds r2, r0, 0x4 -_080C6BA8: - cmp r4, 0x5 - bhi _080C6BAE - movs r4, 0x6 -_080C6BAE: - cmp r4, 0x1E - bls _080C6BB4 - movs r4, 0x1E -_080C6BB4: - cmp r3, 0x5 - bhi _080C6BBA - movs r3, 0x6 -_080C6BBA: - cmp r3, 0x1E - bls _080C6BC0 - movs r3, 0x1E -_080C6BC0: - cmp r2, 0x5 - bhi _080C6BC6 - movs r2, 0x6 -_080C6BC6: - cmp r2, 0x1E - bls _080C6BCC - movs r2, 0x1E -_080C6BCC: - lsls r0, r2, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r4, r0 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C6B68 - - thumb_func_start sub_80C6BDC -sub_80C6BDC: @ 80C6BDC - push {lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r3, 0x1F - ands r3, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r1 - lsrs r0, 26 - ands r0, r1 - cmp r3, 0xB - bhi _080C6C00 - cmp r2, 0xA - bhi _080C6C00 - cmp r0, 0xA - bhi _080C6C00 - movs r0, 0x1 - b _080C6CA6 -_080C6C00: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C0C - cmp r0, 0x13 - bhi _080C6C30 -_080C6C0C: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C1A - cmp r0, 0xE - bhi _080C6C30 - b _080C6C68 -_080C6C1A: - cmp r0, 0x13 - bls _080C6C24 - cmp r2, 0xE - bhi _080C6C30 - b _080C6C44 -_080C6C24: - cmp r2, 0x13 - bls _080C6C34 - cmp r0, 0x13 - bls _080C6C34 - cmp r3, 0xE - bls _080C6C8C -_080C6C30: - movs r0, 0x2 - b _080C6CA6 -_080C6C34: - cmp r3, 0x13 - bls _080C6C58 - cmp r2, 0xB - bls _080C6C4C - cmp r0, 0xB - bls _080C6C48 - cmp r2, r0 - bcs _080C6C68 -_080C6C44: - movs r0, 0x8 - b _080C6CA6 -_080C6C48: - movs r0, 0xA - b _080C6CA6 -_080C6C4C: - cmp r0, 0xB - bls _080C6C54 - movs r0, 0xD - b _080C6CA6 -_080C6C54: - movs r0, 0x4 - b _080C6CA6 -_080C6C58: - cmp r2, 0x13 - bls _080C6C7C - cmp r3, 0xB - bls _080C6C70 - cmp r0, 0xB - bls _080C6C6C - cmp r3, r0 - bcc _080C6C8C -_080C6C68: - movs r0, 0x7 - b _080C6CA6 -_080C6C6C: - movs r0, 0xB - b _080C6CA6 -_080C6C70: - cmp r0, 0xB - bls _080C6C78 - movs r0, 0xE - b _080C6CA6 -_080C6C78: - movs r0, 0x5 - b _080C6CA6 -_080C6C7C: - cmp r0, 0x13 - bls _080C6CA4 - cmp r3, 0xB - bls _080C6C90 - cmp r2, 0xB - bls _080C6C98 - cmp r3, r2 - bcs _080C6C44 -_080C6C8C: - movs r0, 0x9 - b _080C6CA6 -_080C6C90: - cmp r2, 0xB - bls _080C6C98 - movs r0, 0xC - b _080C6CA6 -_080C6C98: - cmp r0, 0xB - bls _080C6CA0 - movs r0, 0xF - b _080C6CA6 -_080C6CA0: - movs r0, 0x6 - b _080C6CA6 -_080C6CA4: - movs r0, 0x3 -_080C6CA6: - pop {r1} - bx r1 - thumb_func_end sub_80C6BDC - - thumb_func_start sub_80C6CAC -sub_80C6CAC: @ 80C6CAC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - movs r1, 0x1E - ands r0, r1 - lsls r0, 16 - cmp r0, 0 - beq _080C6CD8 - lsrs r0, 17 - b _080C6CDA -_080C6CD8: - movs r0, 0x1 -_080C6CDA: - pop {r1} - bx r1 - thumb_func_end sub_80C6CAC - - thumb_func_start sub_80C6CE0 -sub_80C6CE0: @ 80C6CE0 - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C6CE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/image_processing_effects.s b/data/image_processing_effects.s index df83b2d54..d5585410c 100644 --- a/data/image_processing_effects.s +++ b/data/image_processing_effects.s @@ -1,7 +1,7 @@ .section .rodata .align 2, 0 -gUnknown_83F3024:: @ 83F3024 +gPointillismPoints:: @ 83F3024 .byte 0x00, 0x1d, 0x1c .byte 0x0e, 0x1e, 0x1b .byte 0x00, 0x01, 0x32 diff --git a/ld_script.txt b/ld_script.txt index 838aebcac..0b12b1187 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,7 +181,7 @@ SECTIONS { asm/script_pokemon_util_80BF8FC.o(.text); src/heal_location.o(.text); src/region_map.o(.text); - asm/image_processing_effects.o(.text); + src/image_processing_effects.o(.text); src/battle_ai_script_commands.o(.text); src/fldeff_rocksmash.o(.text); src/fldeff_dig.o(.text); diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c new file mode 100644 index 000000000..c9ca4b16b --- /dev/null +++ b/src/image_processing_effects.c @@ -0,0 +1,1224 @@ +#include "global.h" +#include "image_processing_effects.h" + +// IWRAM common +u8 gCanvasColumnStart; +u16 (*gCanvasPixels)[][32]; +u8 gCanvasRowEnd; +u8 gCanvasHeight; +u8 gCanvasColumnEnd; +u8 gCanvasRowStart; +u8 gCanvasMonPersonality; +u8 gCanvasWidth; +u16 *gCanvasPalette; +u16 gCanvasPaletteStart; + +static void ApplyImageEffect_Pointillism(void); +static void ApplyImageEffect_Blur(void); +static void ApplyImageEffect_BlackOutline(void); +static void ApplyImageEffect_Invert(void); +static void ApplyImageEffect_BlackAndWhite(void); +static void ApplyImageEffect_BlurRight(void); +static void ApplyImageEffect_BlurDown(void); +static void ApplyImageEffect_Shimmer(void); +static void ApplyImageEffect_Grayscale(void); +static void ApplyImageEffect_PersonalityColor(u8); +static void ApplyImageEffect_RedChannelGrayscale(u8); +static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8); +static void AddPointillismPoints(u16); +static u16 ConvertColorToGrayscale(u16*); +static u16 QuantizePixel_Blur(u16*, u16*, u16*); +static u16 QuantizePixel_PersonalityColor(u16*, u8); +static u16 QuantizePixel_BlackAndWhite(u16*); +static u16 QuantizePixel_BlackOutline(u16*, u16*); +static u16 QuantizePixel_Invert(u16*); +static u16 QuantizePixel_BlurHard(u16*, u16*, u16*); +static u16 QuantizePixel_MotionBlur(u16*, u16*); +static u16 GetColorFromPersonality(u8); +static void QuantizePalette_Standard(bool8); +static void SetPresetPalette_PrimaryColors(void); +static void QuantizePalette_PrimaryColors(void); +static void SetPresetPalette_Grayscale(void); +static void QuantizePalette_Grayscale(void); +static void SetPresetPalette_GrayscaleSmall(void); +static void QuantizePalette_GrayscaleSmall(void); +static void SetPresetPalette_BlackAndWhite(void); +static void QuantizePalette_BlackAndWhite(void); +static u16 QuantizePixel_Standard(u16*); +static u16 QuantizePixel_GrayscaleSmall(u16*); +static u16 QuantizePixel_Grayscale(u16*); +static u16 QuantizePixel_PrimaryColors(u16*); + +extern const u8 gPointillismPoints[][3]; + +void ApplyImageProcessingEffects(struct ImageProcessingContext *context) +{ + gCanvasPixels = context->canvasPixels; + gCanvasMonPersonality = context->personality; + gCanvasColumnStart = context->columnStart; + gCanvasRowStart = context->rowStart; + gCanvasColumnEnd = context->columnEnd; + gCanvasRowEnd = context->rowEnd; + gCanvasWidth = context->canvasWidth; + gCanvasHeight = context->canvasHeight; + + switch (context->effect) + { + case IMAGE_EFFECT_POINTILLISM: + ApplyImageEffect_Pointillism(); + break; + case IMAGE_EFFECT_BLUR: + ApplyImageEffect_Blur(); + break; + case IMAGE_EFFECT_OUTLINE_COLORED: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_PersonalityColor(gCanvasMonPersonality); + break; + case IMAGE_EFFECT_INVERT_BLACK_WHITE: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_Invert(); + ApplyImageEffect_BlackAndWhite(); + case IMAGE_EFFECT_INVERT: + ApplyImageEffect_Invert(); + break; + case IMAGE_EFFECT_THICK_BLACK_WHITE: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurDown(); + ApplyImageEffect_BlackAndWhite(); + break; + case IMAGE_EFFECT_SHIMMER: + ApplyImageEffect_Shimmer(); + break; + case IMAGE_EFFECT_OUTLINE: + ApplyImageEffect_BlackOutline(); + break; + case IMAGE_EFFECT_BLUR_RIGHT: + ApplyImageEffect_BlurRight(); + break; + case IMAGE_EFFECT_BLUR_DOWN: + ApplyImageEffect_BlurDown(); + break; + case IMAGE_EFFECT_GRAYSCALE_LIGHT: + ApplyImageEffect_Grayscale(); + ApplyImageEffect_RedChannelGrayscale(3); + break; + case IMAGE_EFFECT_CHARCOAL: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurDown(); + ApplyImageEffect_BlackAndWhite(); + ApplyImageEffect_Blur(); + ApplyImageEffect_Blur(); + ApplyImageEffect_RedChannelGrayscale(2); + ApplyImageEffect_RedChannelGrayscaleHighlight(4); + break; + } +} + +static void ApplyImageEffect_RedChannelGrayscale(u8 delta) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + // Gets the grayscale value, based on the pixel's red channel. + // Also adds a delta to skew lighter or darker. + u8 grayValue = (31 & *pixel); + grayValue += delta; + if (grayValue > 31) + grayValue = 31; + + *pixel = RGB2(grayValue, grayValue, grayValue); + } + } + } +} + +static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8 highlight) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + u8 grayValue = (31 & *pixel); + if (grayValue > 31 - highlight) + grayValue = 31 - (highlight >> 1); + + *pixel = RGB2(grayValue, grayValue, grayValue); + } + } + } +} + +static void ApplyImageEffect_Pointillism(void) +{ + u32 i; + for (i = 0; i < 3200; i++) + AddPointillismPoints(i); +} + +static void ApplyImageEffect_Grayscale(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = ConvertColorToGrayscale(pixel); + } + } +} + +static void ApplyImageEffect_Blur(void) +{ + u8 i, j; + + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart + i]; + u16 prevPixel = *pixel; + + j = 1; + pixel += gCanvasWidth; + while (j < gCanvasRowEnd - 1) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_Blur(&prevPixel, pixel, pixel + gCanvasWidth); + prevPixel = *pixel; + } + + j++; + pixel += gCanvasWidth; + } + } +} + +static void ApplyImageEffect_PersonalityColor(u8 personality) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_PersonalityColor(pixel, personality); + } + } +} + +static void ApplyImageEffect_BlackAndWhite(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_BlackAndWhite(pixel); + } + } +} + +static void ApplyImageEffect_BlackOutline(void) +{ + u8 i, j; + u16 *pixel; + + // Handle top row of pixels first. + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + pixel = &pixelRow[gCanvasColumnStart]; + *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1); + for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++) + { + *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1); + *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1); + } + + *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1); + } + + // Handle each column from left to right. + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + pixel = &pixelRow[gCanvasColumnStart + i]; + *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth); + for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth) + { + *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth); + *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth); + } + + *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth); + } +} + +static void ApplyImageEffect_Invert(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } +} + +static void ApplyImageEffect_Shimmer(void) +{ + u8 i, j; + u16 *pixel; + u16 prevPixel; + + // First, invert all of the colors. + pixel = (*gCanvasPixels)[0]; + for (i = 0; i < 64; i++) + { + for (j = 0; j < 64; j++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } + + // Blur the pixels twice. + for (j = 0; j < 64; j++) + { + pixel = &(*gCanvasPixels)[0][j]; + prevPixel = *pixel; + *pixel = 0x8000; + for (i = 1, pixel += 64; i < 63; i++, pixel += 64) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64); + prevPixel = *pixel; + } + } + + *pixel = 0x8000; + pixel = &(*gCanvasPixels)[0][j]; + prevPixel = *pixel; + *pixel = 0x8000; + for (i = 1, pixel += 64; i < 63; i++, pixel += 64) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64); + prevPixel = *pixel; + } + } + + *pixel = 0x8000; + } + + // Finally, invert colors back to the original color space. + // The above blur causes the outline areas to darken, which makes + // this inversion give the effect of light outlines. + pixel = (*gCanvasPixels)[0]; + for (i = 0; i < 64; i++) + { + for (j = 0; j < 64; j++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } +} + +static void ApplyImageEffect_BlurRight(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + u16 prevPixel = *pixel; + for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel); + prevPixel = *pixel; + } + } + } +} + +static void ApplyImageEffect_BlurDown(void) +{ + u8 i, j; + + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart + i]; + u16 prevPixel = *pixel; + for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel); + prevPixel = *pixel; + } + } + } +} + +struct PointillismPoint +{ + u8 column; + u8 row; + u16 delta; +}; + +static void AddPointillismPoints(u16 arg0) +{ + u8 i; + bool8 offsetDownLeft; + u8 colorType; + struct PointillismPoint points[6]; + + points[0].column = gPointillismPoints[arg0][0]; + points[0].row = gPointillismPoints[arg0][1]; + points[0].delta = (gPointillismPoints[arg0][2] >> 3) & 7; + + colorType = (gPointillismPoints[arg0][2] >> 1) & 3; + offsetDownLeft = gPointillismPoints[arg0][2] & 1; + for (i = 1; i < points[0].delta; i++) + { + if (!offsetDownLeft) + { + points[i].column = points[0].column - i; + points[i].row = points[0].row + i; + } + else + { + points[i].column = points[0].column + 1; + points[i].row = points[0].row - 1; + } + + if (points[i].column > 63 || points[i].row > 63) + { + points[0].delta = i - 1; + break; + } + + points[i].delta = points[0].delta - i; + } + + for (i = 0; i < points[0].delta; i++) + { + u16 *pixel = &(*gCanvasPixels)[points[i].row * 2][points[i].column]; + + if (!(0x8000 & *pixel)) + { + u16 red = (*pixel) & 0x1F; + u16 green = (*pixel >> 5) & 0x1F; + u16 blue = (*pixel >> 10) & 0x1F; + + switch (colorType) + { + case 0: + case 1: + switch (((gPointillismPoints[arg0][2] >> 3) & 7) % 3) + { + case 0: + if (red >= points[i].delta) + red -= points[i].delta; + else + red = 0; + break; + case 1: + if (green >= points[i].delta) + green -= points[i].delta; + else + green = 0; + break; + case 2: + if (blue >= points[i].delta) + blue -= points[i].delta; + else + blue = 0; + break; + } + break; + case 2: + case 3: + red += points[i].delta; + green += points[i].delta; + blue += points[i].delta; + if (red > 31) + red = 31; + if (green > 31) + green = 31; + if (blue > 31) + blue = 31; + break; + } + + *pixel = RGB2(red, green, blue); + } + } +} + +static u16 ConvertColorToGrayscale(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + u16 gray = (red + green + blue) / 3; + return RGB2(gray, gray, gray); +} + +// The dark colors are the colored edges of the Cool painting effect. +// Everything else is white. +static u16 QuantizePixel_PersonalityColor(u16 *color, u8 personality) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 17 && green < 17 && blue < 17) + return GetColorFromPersonality(personality); + else + return RGB_WHITE; +} + +// Based on the given value, which comes from the first 8 bits of +// the mon's personality value, return a color. +static u16 GetColorFromPersonality(u8 personality) +{ + u16 red = 0; + u16 green = 0; + u16 blue = 0; + u8 strength = (personality / 6) % 3; + u8 colorType = personality % 6; + + switch (colorType) + { + case 0: + // Teal color + green = 21 - strength; + blue = green; + red = 0; + break; + case 1: + // Yellow color + blue = 0; + red = 21 - strength; + green = red; + break; + case 2: + // Purple color + blue = 21 - strength; + green = 0; + red = blue; + break; + case 3: + // Red color + blue = 0; + green = 0; + red = 23 - strength; + break; + case 4: + // Blue color + blue = 23 - strength; + green = 0; + red = 0; + break; + case 5: + // Green color + blue = 0; + green = 23 - strength; + red = 0; + break; + } + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_BlackAndWhite(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 17 && green < 17 && blue < 17) + return RGB_BLACK; + else + return RGB_WHITE; +} + +static u16 QuantizePixel_BlackOutline(u16 *pixelA, u16 *pixelB) +{ + if (*pixelA != RGB_BLACK) + { + if (*pixelA & 0x8000) + return 0x8000; + if (*pixelB & 0x8000) + return RGB_BLACK; + + return *pixelA; + } + + return RGB_BLACK; +} + +static u16 QuantizePixel_Invert(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + red = 31 - red; + green = 31 - green; + blue = 31 - blue; + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_MotionBlur(u16 *prevPixel, u16 *curPixel) +{ + u16 pixelChannels[2][3]; + u16 diffs[3]; + u8 i; + u16 largestDiff; + u16 red, green, blue; + + if (*prevPixel == *curPixel) + return *curPixel; + + pixelChannels[0][0] = (*prevPixel >> 0) & 0x1F; + pixelChannels[0][1] = (*prevPixel >> 5) & 0x1F; + pixelChannels[0][2] = (*prevPixel >> 10) & 0x1F; + pixelChannels[1][0] = (*curPixel >> 0) & 0x1F; + pixelChannels[1][1] = (*curPixel >> 5) & 0x1F; + pixelChannels[1][2] = (*curPixel >> 10) & 0x1F; + + // Don't blur light colors. + if (pixelChannels[0][0] > 25 && pixelChannels[0][1] > 25 && pixelChannels[0][2] > 25) + return *curPixel; + if (pixelChannels[1][0] > 25 && pixelChannels[1][1] > 25 && pixelChannels[1][2] > 25) + return *curPixel; + + for (i = 0; i < 3; i++) + { + if (pixelChannels[0][i] > pixelChannels[1][i]) + diffs[i] = pixelChannels[0][i] - pixelChannels[1][i]; + else + diffs[i] = pixelChannels[1][i] - pixelChannels[0][i]; + } + + // Find the largest diff of any of the color channels. + if (diffs[0] >= diffs[1]) + { + if (diffs[0] >= diffs[2]) + largestDiff = diffs[0]; + else if (diffs[1] >= diffs[2]) + largestDiff = diffs[1]; + else + largestDiff = diffs[2]; + } + else + { + if (diffs[1] >= diffs[2]) + largestDiff = diffs[1]; + else if (diffs[2] >= diffs[0]) + largestDiff = diffs[2]; + else + largestDiff = diffs[0]; + } + + red = (pixelChannels[1][0] * (31 - largestDiff / 2)) / 31; + green = (pixelChannels[1][1] * (31 - largestDiff / 2)) / 31; + blue = (pixelChannels[1][2] * (31 - largestDiff / 2)) / 31; + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_Blur(u16 *prevPixel, u16 *curPixel, u16 *nextPixel) +{ + u16 red, green, blue; + u16 prevAvg, curAvg, nextAvg; + u16 prevDiff, nextDiff; + u32 diff; + u16 factor; + + if (*prevPixel == *curPixel && *nextPixel == *curPixel) + return *curPixel; + + red = (*curPixel >> 0) & 0x1F; + green = (*curPixel >> 5) & 0x1F; + blue = (*curPixel >> 10) & 0x1F; + + prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3; + curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3; + nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3; + + if (prevAvg == curAvg && nextAvg == curAvg) + return *curPixel; + + if (prevAvg > curAvg) + prevDiff = prevAvg - curAvg; + else + prevDiff = curAvg - prevAvg; + + if (nextAvg > curAvg) + nextDiff = nextAvg - curAvg; + else + nextDiff = curAvg - nextAvg; + + if (prevDiff >= nextDiff) + diff = prevDiff; + else + diff = nextDiff; + + factor = 31 - diff / 2; + red = (red * factor) / 31; + green = (green * factor) / 31; + blue = (blue * factor) / 31; + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_BlurHard(u16 *prevPixel, u16 *curPixel, u16 *nextPixel) +{ + u16 red, green, blue; + u16 prevAvg, curAvg, nextAvg; + u16 prevDiff, nextDiff; + u32 diff; + u16 factor; + + if (*prevPixel == *curPixel && *nextPixel == *curPixel) + return *curPixel; + + red = (*curPixel >> 0) & 0x1F; + green = (*curPixel >> 5) & 0x1F; + blue = (*curPixel >> 10) & 0x1F; + + prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3; + curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3; + nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3; + + if (prevAvg == curAvg && nextAvg == curAvg) + return *curPixel; + + if (prevAvg > curAvg) + prevDiff = prevAvg - curAvg; + else + prevDiff = curAvg - prevAvg; + + if (nextAvg > curAvg) + nextDiff = nextAvg - curAvg; + else + nextDiff = curAvg - nextAvg; + + if (prevDiff >= nextDiff) + diff = prevDiff; + else + diff = nextDiff; + + factor = 31 - diff; + red = (red * factor) / 31; + green = (green * factor) / 31; + blue = (blue * factor) / 31; + return RGB2(red, green, blue); +} + +void ConvertImageProcessingToGBA(struct ImageProcessingContext *context) +{ + u16 i, j, k; + u16 *src, *dest, *src_, *dest_; + u16 width, height; + + width = context->canvasWidth >> 3; + height = context->canvasHeight >> 3; + src_ = context->canvasPixels; + dest_ = context->dest; + + if (context->var_16 == 2) + { + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + for (k = 0; k < 8; k++) + { + dest = dest_ + ((i * width + j) << 5) + (k << 2); + src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3); + + dest[0] = src[0] | (src[1] << 8); + dest[1] = src[2] | (src[3] << 8); + dest[2] = src[4] | (src[5] << 8); + dest[3] = src[6] | (src[7] << 8); + } + } + } + } + else + { + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + for (k = 0; k < 8; k++) + { + dest = dest_ + ((i * width + j) << 4) + (k << 1); + src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3); + + dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 0xC); + dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 0xC); + } + } + } + } +} + +void ApplyImageProcessingQuantization(struct ImageProcessingContext *context) +{ + gCanvasPaletteStart = context->paletteStart * 16; + gCanvasPalette = &context->canvasPalette[gCanvasPaletteStart]; + gCanvasPixels = context->canvasPixels; + gCanvasColumnStart = context->columnStart; + gCanvasRowStart = context->rowStart; + gCanvasColumnEnd = context->columnEnd; + gCanvasRowEnd = context->rowEnd; + gCanvasWidth = context->canvasWidth; + gCanvasHeight = context->canvasHeight; + + switch (context->quantizeEffect) + { + case QUANTIZE_EFFECT_STANDARD: + QuantizePalette_Standard(FALSE); + break; + case QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS: + QuantizePalette_Standard(TRUE); + break; + case QUANTIZE_EFFECT_PRIMARY_COLORS: + SetPresetPalette_PrimaryColors(); + QuantizePalette_PrimaryColors(); + break; + case QUANTIZE_EFFECT_GRAYSCALE: + SetPresetPalette_Grayscale(); + QuantizePalette_Grayscale(); + break; + case QUANTIZE_EFFECT_GRAYSCALE_SMALL: + SetPresetPalette_GrayscaleSmall(); + QuantizePalette_GrayscaleSmall(); + break; + case QUANTIZE_EFFECT_BLACK_WHITE: + SetPresetPalette_BlackAndWhite(); + QuantizePalette_BlackAndWhite(); + break; + } +} + +static void SetPresetPalette_PrimaryColors(void) +{ + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(6, 6, 6); + gCanvasPalette[2] = RGB2(29, 29, 29); + gCanvasPalette[3] = RGB2(11, 11, 11); + gCanvasPalette[4] = RGB2(29, 6, 6); + gCanvasPalette[5] = RGB2(6, 29, 6); + gCanvasPalette[6] = RGB2(6, 6, 29); + gCanvasPalette[7] = RGB2(29, 29, 6); + gCanvasPalette[8] = RGB2(29, 6, 29); + gCanvasPalette[9] = RGB2(6, 29, 29); + gCanvasPalette[10] = RGB2(29, 11, 6); + gCanvasPalette[11] = RGB2(11, 29, 6); + gCanvasPalette[12] = RGB2(6, 11, 29); + gCanvasPalette[13] = RGB2(29, 6, 11); + gCanvasPalette[14] = RGB2(6, 29, 11); + gCanvasPalette[15] = RGB2(11, 6, 29); +} + +static void SetPresetPalette_BlackAndWhite(void) +{ + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(0, 0, 0); + gCanvasPalette[2] = RGB2(31, 31, 31); +} + +static void SetPresetPalette_GrayscaleSmall(void) +{ + u8 i; + + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(0, 0, 0); + for (i = 0; i < 14; i++) + gCanvasPalette[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2)); +} + +static void SetPresetPalette_Grayscale(void) +{ + u8 i; + + gCanvasPalette[0] = RGB2(0, 0, 0); + for (i = 0; i < 32; i++) + gCanvasPalette[i + 1] = RGB2(i, i, i); +} + +static void QuantizePalette_Standard(bool8 useLimitedPalette) +{ + u8 i, j; + u16 maxIndex; + + maxIndex = 0xDF; + if (!useLimitedPalette) + maxIndex = 0xFF; + + for (i = 0; i < maxIndex; i++) + gCanvasPalette[i] = RGB_BLACK; + + gCanvasPalette[maxIndex] = RGB2(15, 15, 15); + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + { + *pixel = gCanvasPaletteStart; + } + else + { + u16 quantizedColor = QuantizePixel_Standard(pixel); + u8 curIndex = 1; + if (curIndex < maxIndex) + { + if (gCanvasPalette[curIndex] == RGB_BLACK) + { + // The quantized color does not match any existing color in the + // palette, so we add it to the palette. + // This if block seems pointless because the below while loop handles + // this same logic. + gCanvasPalette[curIndex] = quantizedColor; + *pixel = gCanvasPaletteStart + curIndex; + } + else + { + while (curIndex < maxIndex) + { + if (gCanvasPalette[curIndex] == RGB_BLACK) + { + // The quantized color does not match any existing color in the + // palette, so we add it to the palette. + gCanvasPalette[curIndex] = quantizedColor; + *pixel = gCanvasPaletteStart + curIndex; + break; + } + + if (gCanvasPalette[curIndex] == quantizedColor) + { + // The quantized color matches this existing color in the + // palette, so we use this existing color for the pixel. + *pixel = gCanvasPaletteStart + curIndex; + break; + } + + curIndex++; + } + } + } + + if (curIndex == maxIndex) + { + // The entire palette's colors are already in use, which means + // the base image has too many colors to handle. This error is handled + // by marking such pixels as gray color. + curIndex = maxIndex; + *pixel = curIndex; + } + } + } + } +} + +static void QuantizePalette_BlackAndWhite(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + { + *pixel = gCanvasPaletteStart; + } + else + { + if (QuantizePixel_BlackAndWhite(pixel) == RGB_BLACK) + { + // Black is the first color in the quantized palette. + *pixel = gCanvasPaletteStart + 1; + } + else + { + // White is the second color in the quantized palette. + *pixel = gCanvasPaletteStart + 2; + } + } + } + } +} + +static void QuantizePalette_GrayscaleSmall(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_GrayscaleSmall(pixel) + gCanvasPaletteStart; + } + } +} + +static void QuantizePalette_Grayscale(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_Grayscale(pixel) + gCanvasPaletteStart; + } + } +} + +static void QuantizePalette_PrimaryColors(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_PrimaryColors(pixel) + gCanvasPaletteStart; + } + } +} + +// Quantizes the pixel's color channels to nearest multiple of 4, and clamps to [6, 30]. +static u16 QuantizePixel_Standard(u16 *pixel) +{ + u16 red = *pixel & 0x1F; + u16 green = (*pixel >> 5) & 0x1F; + u16 blue = (*pixel >> 10) & 0x1F; + + // Quantize color channels to muliples of 4, rounding up. + if (red & 3) + red = (red & 0x1C) + 4; + if (green & 3) + green = (green & 0x1C) + 4; + if (blue & 3) + blue = (blue & 0x1C) + 4; + + // Clamp channels to [6, 30]. + if (red < 6) + red = 6; + if (red > 30) + red = 30; + if (green < 6) + green = 6; + if (green > 30) + green = 30; + if (blue < 6) + blue = 6; + if (blue > 30) + blue = 30; + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_PrimaryColors(u16* color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 12 && green < 11 && blue < 11) + return 1; + + if (red > 19 && green > 19 && blue > 19) + return 2; + + if (red > 19) + { + if (green > 19) + { + if (blue > 14) + return 2; + else + return 7; + } + else if (blue > 19) + { + if (green > 14) + return 2; + else + return 8; + } + } + + if (green > 19 && blue > 19) + { + if (red > 14) + return 2; + else + return 9; + } + + if (red > 19) + { + if (green > 11) + { + if (blue > 11) + { + if (green < blue) + return 8; + else + return 7; + } + else + { + return 10; + } + } + else if (blue > 11) + { + return 13; + } + else + { + return 4; + } + } + + if (green > 19) + { + if (red > 11) + { + if (blue > 11) + { + if (red < blue) + return 9; + else + return 7; + } + else + { + return 11; + } + } + else + { + if (blue > 11) + return 14; + else + return 5; + } + } + + if (blue > 19) + { + if (red > 11) + { + if (green > 11) + { + if (red < green) + return 9; + else + return 8; + } + } + else if (green > 11) + { + return 12; + } + + if (blue > 11) + return 15; + else + return 6; + } + + return 3; +} + +static u16 QuantizePixel_GrayscaleSmall(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + u16 average = ((red + green + blue) / 3) & 0x1E; + if (average == 0) + return 1; + else + return average / 2; +} + +static u16 QuantizePixel_Grayscale(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + u16 average = (red + green + blue) / 3; + return average + 1; +} diff --git a/sym_common.txt b/sym_common.txt index 17f0cd306..b41ec5ff2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -61,37 +61,8 @@ gUnknown_3005078: @ 3005078 @ what is this? .space 0x20 - -gUnknown_3005330: @ 3005330 - .space 0x4 - -gUnknown_3005334: @ 3005334 - .space 0x4 - -gUnknown_3005338: @ 3005338 - .space 0x4 - -gUnknown_300533C: @ 300533C - .space 0x4 - -gUnknown_3005340: @ 3005340 - .space 0x4 - -gUnknown_3005344: @ 3005344 - .space 0x4 - -gUnknown_3005348: @ 3005348 - .space 0x4 - -gUnknown_300534C: @ 300534C - .space 0x4 - -gUnknown_3005350: @ 3005350 - .space 0x4 - -gUnknown_3005354: @ 3005354 - .space 0xC - + .align 2 + .include "image_processing_effects.o" .align 2 .include "field_specials.o" .align 2 -- cgit v1.2.3 From b3bb58267b2f3406c8c6d795ec8466107eef133e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 17:03:36 -0500 Subject: Port image_processing_effects from Emerald --- asm/image_processing_effects.s | 3486 ------------------------------ common_syms/image_processing_effects.txt | 10 + data/image_processing_effects.s | 2 +- include/image_processing_effects.h | 53 + ld_script.txt | 2 +- src/image_processing_effects.c | 1224 +++++++++++ sym_common.txt | 33 +- 7 files changed, 1291 insertions(+), 3519 deletions(-) delete mode 100644 asm/image_processing_effects.s create mode 100644 common_syms/image_processing_effects.txt create mode 100644 include/image_processing_effects.h create mode 100644 src/image_processing_effects.c diff --git a/asm/image_processing_effects.s b/asm/image_processing_effects.s deleted file mode 100644 index 1f63bde6c..000000000 --- a/asm/image_processing_effects.s +++ /dev/null @@ -1,3486 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80C52D0 -sub_80C52D0: @ 80C52D0 - push {lr} - ldr r2, _080C5318 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C531C @ =gUnknown_3005348 - ldrb r1, [r0, 0x1F] - strb r1, [r2] - ldr r2, _080C5320 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C5324 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C5328 @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C532C @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C5330 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C5334 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrb r0, [r0] - subs r0, 0x2 - cmp r0, 0x22 - bls _080C530C - b _080C5458 -_080C530C: - lsls r0, 2 - ldr r1, _080C5338 @ =_080C533C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5318: .4byte gUnknown_3005334 -_080C531C: .4byte gUnknown_3005348 -_080C5320: .4byte gUnknown_3005330 -_080C5324: .4byte gUnknown_3005344 -_080C5328: .4byte gUnknown_3005340 -_080C532C: .4byte gUnknown_3005338 -_080C5330: .4byte gUnknown_300534C -_080C5334: .4byte gUnknown_300533C -_080C5338: .4byte _080C533C - .align 2, 0 -_080C533C: - .4byte _080C53C8 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5428 - .4byte _080C5458 - .4byte _080C53CE - .4byte _080C53D4 - .4byte _080C53E8 - .4byte _080C53FA - .4byte _080C5458 - .4byte _080C5410 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5416 - .4byte _080C53F4 - .4byte _080C541C - .4byte _080C5422 - .4byte _080C5458 - .4byte _080C5458 - .4byte _080C5434 -_080C53C8: - bl sub_80C55D4 - b _080C5458 -_080C53CE: - bl sub_80C568C - b _080C5458 -_080C53D4: - bl sub_80C5884 - ldr r0, _080C53E4 @ =gUnknown_3005348 - ldrb r0, [r0] - bl sub_80C5748 - b _080C5458 - .align 2, 0 -_080C53E4: .4byte gUnknown_3005348 -_080C53E8: - bl sub_80C5884 - bl sub_80C59D4 - bl sub_80C57EC -_080C53F4: - bl sub_80C59D4 - b _080C5458 -_080C53FA: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - b _080C5458 -_080C5410: - bl sub_80C5A6C - b _080C5458 -_080C5416: - bl sub_80C5884 - b _080C5458 -_080C541C: - bl sub_80C5B9C - b _080C5458 -_080C5422: - bl sub_80C5C44 - b _080C5458 -_080C5428: - bl sub_80C55F4 - movs r0, 0x3 - bl sub_80C545C - b _080C5458 -_080C5434: - bl sub_80C5884 - bl sub_80C5B9C - bl sub_80C5C44 - bl sub_80C57EC - bl sub_80C568C - bl sub_80C568C - movs r0, 0x2 - bl sub_80C545C - movs r0, 0x4 - bl sub_80C5514 -_080C5458: - pop {r0} - bx r0 - thumb_func_end sub_80C52D0 - - thumb_func_start sub_80C545C -sub_80C545C: @ 80C545C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0 - ldr r0, _080C54FC @ =gUnknown_3005338 - mov r8, r0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C54EE - ldr r1, _080C5500 @ =gUnknown_3005340 - mov r12, r1 - ldr r3, _080C5504 @ =gUnknown_300534C - mov r10, r3 - ldr r0, _080C5508 @ =gUnknown_3005330 - mov r9, r0 -_080C5482: - ldr r1, _080C550C @ =gUnknown_3005344 - ldrb r0, [r1] - adds r0, r2 - mov r3, r10 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C5510 @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r4, 0 - adds r5, r2, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r4, r0 - bcs _080C54E2 - movs r6, 0x80 - lsls r6, 8 -_080C54AE: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080C54D2 - movs r0, 0x1F - ands r0, r1 - adds r0, r7 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080C54C8 - movs r2, 0x1F -_080C54C8: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C54D2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, 0x2 - mov r1, r12 - ldrb r1, [r1] - cmp r4, r1 - bcc _080C54AE -_080C54E2: - lsls r0, r5, 24 - lsrs r2, r0, 24 - mov r3, r8 - ldrb r3, [r3] - cmp r2, r3 - bcc _080C5482 -_080C54EE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C54FC: .4byte gUnknown_3005338 -_080C5500: .4byte gUnknown_3005340 -_080C5504: .4byte gUnknown_300534C -_080C5508: .4byte gUnknown_3005330 -_080C550C: .4byte gUnknown_3005344 -_080C5510: .4byte gUnknown_3005334 - thumb_func_end sub_80C545C - - thumb_func_start sub_80C5514 -sub_80C5514: @ 80C5514 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C55BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C55AC - ldr r1, _080C55C0 @ =gUnknown_3005340 - mov r10, r1 -_080C5532: - ldr r3, _080C55C4 @ =gUnknown_3005344 - ldrb r0, [r3] - adds r0, r2 - ldr r3, _080C55C8 @ =gUnknown_300534C - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080C55CC @ =gUnknown_3005334 - ldr r1, [r3] - adds r1, r0 - ldr r3, _080C55D0 @ =gUnknown_3005330 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r5, 0 - adds r7, r2, 0x1 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C55A0 - movs r1, 0x80 - lsls r1, 8 - mov r9, r1 - movs r0, 0x1F - mov r12, r0 - mov r1, r8 - subs r6, r0, r1 -_080C5568: - ldrh r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080C5590 - movs r4, 0x1F - mov r2, r12 - ands r2, r1 - cmp r2, r6 - ble _080C5586 - mov r1, r8 - lsrs r0, r1, 1 - subs r0, r4, r0 - lsls r0, 24 - lsrs r2, r0, 24 -_080C5586: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080C5590: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, 0x2 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C5568 -_080C55A0: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r1, _080C55BC @ =gUnknown_3005338 - ldrb r1, [r1] - cmp r2, r1 - bcc _080C5532 -_080C55AC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C55BC: .4byte gUnknown_3005338 -_080C55C0: .4byte gUnknown_3005340 -_080C55C4: .4byte gUnknown_3005344 -_080C55C8: .4byte gUnknown_300534C -_080C55CC: .4byte gUnknown_3005334 -_080C55D0: .4byte gUnknown_3005330 - thumb_func_end sub_80C5514 - - thumb_func_start sub_80C55D4 -sub_80C55D4: @ 80C55D4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080C55F0 @ =0x00000c7f -_080C55DA: - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_80C5CF8 - adds r4, 0x1 - cmp r4, r5 - bls _080C55DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C55F0: .4byte 0x00000c7f - thumb_func_end sub_80C55D4 - - thumb_func_start sub_80C55F4 -sub_80C55F4: @ 80C55F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5666 - ldr r0, _080C5678 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C567C @ =gUnknown_3005340 -_080C560C: - ldr r0, _080C5680 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5684 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5688 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C565A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5638: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C564C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C5ECC - strh r0, [r4] - ldr r3, [sp] -_080C564C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5638 -_080C565A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5674 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C560C -_080C5666: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5674: .4byte gUnknown_3005338 -_080C5678: .4byte gUnknown_3005334 -_080C567C: .4byte gUnknown_3005340 -_080C5680: .4byte gUnknown_3005344 -_080C5684: .4byte gUnknown_300534C -_080C5688: .4byte gUnknown_3005330 - thumb_func_end sub_80C55F4 - - thumb_func_start sub_80C568C -sub_80C568C: @ 80C568C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5722 - ldr r0, _080C5734 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5738 @ =gUnknown_300534C -_080C56A4: - ldr r0, _080C573C @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r3] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5740 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r3] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, r2, 0x1 - cmp r5, r0 - bge _080C5716 - ldr r6, _080C5738 @ =gUnknown_300534C -_080C56DA: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5700 - ldrb r2, [r6] - lsls r2, 1 - adds r2, r4, r2 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C61BC - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r3, [sp, 0x4] -_080C5700: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5744 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C56DA -_080C5716: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C5730 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C56A4 -_080C5722: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5730: .4byte gUnknown_3005340 -_080C5734: .4byte gUnknown_3005334 -_080C5738: .4byte gUnknown_300534C -_080C573C: .4byte gUnknown_3005344 -_080C5740: .4byte gUnknown_3005330 -_080C5744: .4byte gUnknown_3005338 - thumb_func_end sub_80C568C - - thumb_func_start sub_80C5748 -sub_80C5748: @ 80C5748 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C57C4 - ldr r0, _080C57D8 @ =gUnknown_3005334 - mov r9, r0 - ldr r3, _080C57DC @ =gUnknown_3005340 -_080C5768: - ldr r0, _080C57E0 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C57E4 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r9 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C57E8 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C57B8 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5794: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C57AA - adds r0, r4, 0 - mov r1, r8 - str r3, [sp] - bl sub_80C5F00 - strh r0, [r4] - ldr r3, [sp] -_080C57AA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5794 -_080C57B8: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C57D4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5768 -_080C57C4: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C57D4: .4byte gUnknown_3005338 -_080C57D8: .4byte gUnknown_3005334 -_080C57DC: .4byte gUnknown_3005340 -_080C57E0: .4byte gUnknown_3005344 -_080C57E4: .4byte gUnknown_300534C -_080C57E8: .4byte gUnknown_3005330 - thumb_func_end sub_80C5748 - - thumb_func_start sub_80C57EC -sub_80C57EC: @ 80C57EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C585E - ldr r0, _080C5870 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5874 @ =gUnknown_3005340 -_080C5804: - ldr r0, _080C5878 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C587C @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5880 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5852 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5830: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5844 - adds r0, r4, 0 - str r3, [sp] - bl sub_80C600C - strh r0, [r4] - ldr r3, [sp] -_080C5844: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5830 -_080C5852: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C586C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5804 -_080C585E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C586C: .4byte gUnknown_3005338 -_080C5870: .4byte gUnknown_3005334 -_080C5874: .4byte gUnknown_3005340 -_080C5878: .4byte gUnknown_3005344 -_080C587C: .4byte gUnknown_300534C -_080C5880: .4byte gUnknown_3005330 - thumb_func_end sub_80C57EC - - thumb_func_start sub_80C5884 -sub_80C5884: @ 80C5884 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r7, 0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcs _080C5910 - ldr r0, _080C59C0 @ =gUnknown_3005334 - mov r8, r0 -_080C589A: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r7 - ldr r0, _080C59C8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r2, r8 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r5, r1, r0 - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - movs r6, 0x1 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r7, 0x1 - cmp r6, r0 - bge _080C58FA -_080C58D2: - adds r4, r5, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80C603C - strh r0, [r5] - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r5, r4, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r6, r0 - blt _080C58D2 -_080C58FA: - subs r1, r5, 0x2 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r7, 24 - lsrs r7, r0, 24 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r7, r0 - bcc _080C589A -_080C5910: - movs r6, 0 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcs _080C59B0 - ldr r3, _080C59C0 @ =gUnknown_3005334 - mov r9, r3 - ldr r0, _080C59C8 @ =gUnknown_300534C - mov r8, r0 -_080C5922: - ldr r0, _080C59C4 @ =gUnknown_3005344 - ldrb r0, [r0] - mov r2, r8 - ldrb r1, [r2] - muls r0, r1 - lsls r0, 1 - mov r3, r9 - ldr r2, [r3] - adds r2, r0 - ldr r0, _080C59CC @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r6 - lsls r0, 1 - adds r5, r2, r0 - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - movs r7, 0x1 - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, 0x1 - cmp r7, r0 - bge _080C5994 - ldr r4, _080C59C8 @ =gUnknown_300534C -_080C5962: - ldrb r1, [r4] - lsls r1, 1 - adds r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - ldrb r1, [r4] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] - lsls r0, 1 - adds r5, r0 - ldr r0, _080C59BC @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r7, r0 - blt _080C5962 -_080C5994: - mov r2, r8 - ldrb r1, [r2] - lsls r1, 1 - subs r1, r5, r1 - adds r0, r5, 0 - bl sub_80C603C - strh r0, [r5] - lsls r0, r6, 24 - lsrs r6, r0, 24 - ldr r0, _080C59D0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r6, r0 - bcc _080C5922 -_080C59B0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C59BC: .4byte gUnknown_3005338 -_080C59C0: .4byte gUnknown_3005334 -_080C59C4: .4byte gUnknown_3005344 -_080C59C8: .4byte gUnknown_300534C -_080C59CC: .4byte gUnknown_3005330 -_080C59D0: .4byte gUnknown_3005340 - thumb_func_end sub_80C5884 - - thumb_func_start sub_80C59D4 -sub_80C59D4: @ 80C59D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5A46 - ldr r0, _080C5A58 @ =gUnknown_3005334 - mov r8, r0 - ldr r3, _080C5A5C @ =gUnknown_3005340 -_080C59EC: - ldr r0, _080C5A60 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5A64 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080C5A68 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080C5A3A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5A18: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5A2C - adds r0, r4, 0 - str r3, [sp] - bl sub_80C606C - strh r0, [r4] - ldr r3, [sp] -_080C5A2C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080C5A18 -_080C5A3A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5A54 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C59EC -_080C5A46: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5A54: .4byte gUnknown_3005338 -_080C5A58: .4byte gUnknown_3005334 -_080C5A5C: .4byte gUnknown_3005340 -_080C5A60: .4byte gUnknown_3005344 -_080C5A64: .4byte gUnknown_300534C -_080C5A68: .4byte gUnknown_3005330 - thumb_func_end sub_80C59D4 - - thumb_func_start sub_80C5A6C -sub_80C5A6C: @ 80C5A6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - adds r5, r0, 0 -_080C5A84: - movs r7, 0 -_080C5A86: - ldrh r0, [r4] - ands r0, r5 - cmp r0, 0 - bne _080C5A96 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5A96: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5A86 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5A84 - movs r7, 0 - ldr r1, _080C5B98 @ =gUnknown_3005334 - mov r10, r1 - mov r3, sp - movs r2, 0x80 - lsls r2, 8 - mov r9, r2 -_080C5ABA: - lsls r0, r7, 1 - mov r2, r10 - ldr r1, [r2] - adds r4, r1, r0 - ldrh r1, [r4] - strh r1, [r3] - mov r1, r9 - strh r1, [r4] - movs r6, 0x1 - adds r4, 0x80 - adds r5, r0, 0 -_080C5AD0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - ands r0, r2 - cmp r0, 0 - bne _080C5AF0 - adds r2, r4, 0 - adds r2, 0x80 - mov r0, sp - adds r1, r4, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5AF0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x80 - cmp r6, 0x3E - bls _080C5AD0 - mov r0, r9 - strh r0, [r4] - mov r1, r10 - ldr r0, [r1] - adds r4, r0, r5 - ldrh r0, [r4] - strh r0, [r3] - mov r2, r9 - strh r2, [r4] - movs r6, 0x1 - adds r4, 0x80 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B18: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - adds r5, r4, 0 - adds r5, 0x80 - cmp r0, 0 - bne _080C5B38 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - str r3, [sp, 0x4] - bl sub_80C62DC - strh r0, [r4] - ldr r3, [sp, 0x4] - strh r0, [r3] -_080C5B38: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r5, 0 - cmp r6, 0x3E - bls _080C5B18 - mov r2, r9 - strh r2, [r4] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3F - bls _080C5ABA - ldr r0, _080C5B98 @ =gUnknown_3005334 - ldr r4, [r0] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - mov r8, r0 -_080C5B5E: - movs r7, 0 - adds r5, r6, 0x1 -_080C5B62: - ldrh r0, [r4] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _080C5B74 - adds r0, r4, 0 - bl sub_80C606C - strh r0, [r4] -_080C5B74: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, 0x2 - cmp r7, 0x3F - bls _080C5B62 - lsls r0, r5, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080C5B5E - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5B98: .4byte gUnknown_3005334 - thumb_func_end sub_80C5A6C - - thumb_func_start sub_80C5B9C -sub_80C5B9C: @ 80C5B9C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5C1E - ldr r0, _080C5C30 @ =gUnknown_3005334 - mov r8, r0 -_080C5BB2: - ldr r0, _080C5C34 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C5C38 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5C3C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5C12 - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080C5BEA: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080C5C00 - mov r0, sp - adds r1, r4, 0 - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] -_080C5C00: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C5C40 @ =gUnknown_3005340 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5BEA -_080C5C12: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5C2C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5BB2 -_080C5C1E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5C2C: .4byte gUnknown_3005338 -_080C5C30: .4byte gUnknown_3005334 -_080C5C34: .4byte gUnknown_3005344 -_080C5C38: .4byte gUnknown_300534C -_080C5C3C: .4byte gUnknown_3005330 -_080C5C40: .4byte gUnknown_3005340 - thumb_func_end sub_80C5B9C - - thumb_func_start sub_80C5C44 -sub_80C5C44: @ 80C5C44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r2, 0 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C5CD2 - ldr r0, _080C5CE4 @ =gUnknown_3005334 - mov r8, r0 - ldr r7, _080C5CE8 @ =gUnknown_300534C -_080C5C5C: - ldr r0, _080C5CEC @ =gUnknown_3005344 - ldrb r1, [r0] - ldrb r0, [r7] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C5CF0 @ =gUnknown_3005330 - ldrb r0, [r0] - adds r0, r2 - lsls r0, 1 - adds r4, r1, r0 - ldrh r1, [r4] - mov r0, sp - strh r1, [r0] - movs r5, 0x1 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - adds r6, r2, 0x1 - cmp r5, r0 - bge _080C5CC6 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C5C96: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - bne _080C5CB0 - mov r0, sp - adds r1, r4, 0 - str r2, [sp, 0x4] - bl sub_80C6098 - strh r0, [r4] - mov r1, sp - strh r0, [r1] - ldr r2, [sp, 0x4] -_080C5CB0: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r7] - lsls r0, 1 - adds r4, r0 - ldr r0, _080C5CF4 @ =gUnknown_3005338 - ldrb r0, [r0] - subs r0, 0x1 - cmp r5, r0 - blt _080C5C96 -_080C5CC6: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080C5CE0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C5C5C -_080C5CD2: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C5CE0: .4byte gUnknown_3005340 -_080C5CE4: .4byte gUnknown_3005334 -_080C5CE8: .4byte gUnknown_300534C -_080C5CEC: .4byte gUnknown_3005344 -_080C5CF0: .4byte gUnknown_3005330 -_080C5CF4: .4byte gUnknown_3005338 - thumb_func_end sub_80C5C44 - - thumb_func_start sub_80C5CF8 -sub_80C5CF8: @ 80C5CF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - mov r2, sp - ldr r3, _080C5D64 @ =gUnknown_83F3024 - lsls r1, r0, 1 - add r1, r10 - adds r0, r1, r3 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r2, 0x1] - mov r5, sp - adds r0, r3, 0x2 - adds r1, r0 - ldrb r4, [r1] - lsls r2, r4, 24 - lsrs r1, r2, 27 - movs r0, 0x7 - ands r1, r0 - strh r1, [r5, 0x2] - lsrs r2, 25 - mov r9, r2 - movs r0, 0x3 - ands r2, r0 - mov r9, r2 - movs r5, 0x1 - ands r5, r4 - movs r4, 0x1 - mov r8, r4 - cmp r8, r1 - bcs _080C5DAA - mov r3, sp -_080C5D4A: - cmp r5, 0 - bne _080C5D68 - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - mov r4, r8 - subs r0, r4 - strb r0, [r1] - ldrb r0, [r3, 0x1] - add r0, r8 - b _080C5D7A - .align 2, 0 -_080C5D64: .4byte gUnknown_83F3024 -_080C5D68: - mov r0, r8 - lsls r2, r0, 2 - mov r4, sp - adds r1, r4, r2 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r3, 0x1] - subs r0, 0x1 -_080C5D7A: - strb r0, [r1, 0x1] - add r2, sp - ldrb r0, [r2] - cmp r0, 0x3F - bhi _080C5D8A - ldrb r0, [r2, 0x1] - cmp r0, 0x3F - bls _080C5D92 -_080C5D8A: - mov r0, r8 - subs r0, 0x1 - strh r0, [r3, 0x2] - b _080C5DAA -_080C5D92: - ldrh r0, [r3, 0x2] - mov r1, r8 - subs r0, r1 - strh r0, [r2, 0x2] - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrh r0, [r3, 0x2] - cmp r8, r0 - bcc _080C5D4A -_080C5DAA: - movs r2, 0 - mov r8, r2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcc _080C5DB8 - b _080C5EBA -_080C5DB8: - movs r3, 0x1F -_080C5DBA: - ldr r1, _080C5E18 @ =gUnknown_3005334 - mov r4, r8 - lsls r0, r4, 2 - mov r2, sp - adds r6, r2, r0 - ldrb r0, [r6, 0x1] - lsls r0, 7 - ldr r1, [r1] - adds r1, r0 - ldrb r0, [r6] - lsls r0, 1 - adds r2, r1, r0 - ldrh r1, [r2] - movs r4, 0x80 - lsls r4, 8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080C5EA6 - movs r7, 0x1F - ands r7, r1 - lsls r0, r1, 16 - lsrs r5, r0, 21 - ands r5, r3 - lsrs r4, r0, 26 - ands r4, r3 - mov r0, r9 - cmp r0, 0 - blt _080C5E9C - cmp r0, 0x1 - ble _080C5E1C - cmp r0, 0x3 - bgt _080C5E9C - ldrh r0, [r6, 0x2] - adds r1, r7, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r1, r5, r0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r7, 0x1F - bls _080C5E90 - movs r7, 0x1F - b _080C5E90 - .align 2, 0 -_080C5E18: .4byte gUnknown_3005334 -_080C5E1C: - mov r1, r10 - lsls r0, r1, 1 - add r0, r10 - ldr r1, _080C5E50 @ =gUnknown_83F3024 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsrs r0, 3 - movs r1, 0x7 - ands r0, r1 - movs r1, 0x3 - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - cmp r0, 0x1 - beq _080C5E6C - cmp r0, 0x1 - bgt _080C5E54 - cmp r0, 0 - beq _080C5E5A - b _080C5E9C - .align 2, 0 -_080C5E50: .4byte gUnknown_83F3024 -_080C5E54: - cmp r0, 0x2 - beq _080C5E7E - b _080C5E9C -_080C5E5A: - ldrh r0, [r6, 0x2] - cmp r7, r0 - bcc _080C5E68 - subs r0, r7, r0 - lsls r0, 16 - lsrs r7, r0, 16 - b _080C5E9C -_080C5E68: - movs r7, 0 - b _080C5E9C -_080C5E6C: - ldrh r0, [r6, 0x2] - cmp r5, r0 - bcc _080C5E7A - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - b _080C5E9C -_080C5E7A: - movs r5, 0 - b _080C5E9C -_080C5E7E: - ldrh r0, [r6, 0x2] - cmp r4, r0 - bcc _080C5E8C - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - b _080C5E9C -_080C5E8C: - movs r4, 0 - b _080C5E9C -_080C5E90: - cmp r5, 0x1F - bls _080C5E96 - movs r5, 0x1F -_080C5E96: - cmp r4, 0x1F - bls _080C5E9C - movs r4, 0x1F -_080C5E9C: - lsls r0, r4, 10 - lsls r1, r5, 5 - orrs r0, r1 - orrs r7, r0 - strh r7, [r2] -_080C5EA6: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r8, r0 - bcs _080C5EBA - b _080C5DBA -_080C5EBA: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C5CF8 - - thumb_func_start sub_80C5ECC -sub_80C5ECC: @ 80C5ECC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 10 - lsls r2, r1, 5 - orrs r0, r2 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C5ECC - - thumb_func_start sub_80C5F00 -sub_80C5F00: @ 80C5F00 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C5F30 - cmp r3, 0x10 - bhi _080C5F30 - cmp r0, 0x10 - bhi _080C5F30 - adds r0, r4, 0 - bl sub_80C5F3C - lsls r0, 16 - lsrs r0, 16 - b _080C5F32 -_080C5F30: - ldr r0, _080C5F38 @ =0x00007fff -_080C5F32: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080C5F38: .4byte 0x00007fff - thumb_func_end sub_80C5F00 - - thumb_func_start sub_80C5F3C -sub_80C5F3C: @ 80C5F3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - mov r8, r0 - movs r6, 0 - movs r7, 0 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _080C5FF4 - lsls r0, 2 - ldr r1, _080C5F80 @ =_080C5F84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5F80: .4byte _080C5F84 - .align 2, 0 -_080C5F84: - .4byte _080C5F9C - .4byte _080C5FAC - .4byte _080C5FBC - .4byte _080C5FCA - .4byte _080C5FD8 - .4byte _080C5FE6 -_080C5F9C: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r6, 0 - movs r1, 0 - mov r8, r1 - b _080C5FF4 -_080C5FAC: - movs r7, 0 - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r6, r8 - b _080C5FF4 -_080C5FBC: - movs r0, 0x15 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r7 - b _080C5FF4 -_080C5FCA: - movs r7, 0 - movs r6, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r0, 16 - b _080C5FF2 -_080C5FD8: - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - mov r8, r6 - b _080C5FF4 -_080C5FE6: - movs r7, 0 - movs r0, 0x17 - subs r0, r5 - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 -_080C5FF2: - mov r8, r0 -_080C5FF4: - lsls r0, r7, 10 - lsls r1, r6, 5 - orrs r0, r1 - mov r1, r8 - orrs r1, r0 - lsls r0, r1, 16 - lsrs r0, 16 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C5F3C - - thumb_func_start sub_80C600C -sub_80C600C: @ 80C600C - push {lr} - ldrh r0, [r0] - movs r2, 0x1F - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r2 - lsrs r0, 26 - ands r0, r2 - cmp r1, 0x10 - bhi _080C6030 - cmp r3, 0x10 - bhi _080C6030 - cmp r0, 0x10 - bhi _080C6030 - movs r0, 0 - b _080C6032 -_080C6030: - ldr r0, _080C6038 @ =0x00007fff -_080C6032: - pop {r1} - bx r1 - .align 2, 0 -_080C6038: .4byte 0x00007fff - thumb_func_end sub_80C600C - - thumb_func_start sub_80C603C -sub_80C603C: @ 80C603C - push {r4,lr} - adds r4, r0, 0 - ldrh r3, [r4] - cmp r3, 0 - beq _080C6064 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _080C6056 - adds r0, r2, 0 - b _080C6066 -_080C6056: - ldrh r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080C6064 - ldrh r0, [r4] - b _080C6066 -_080C6064: - movs r0, 0 -_080C6066: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C603C - - thumb_func_start sub_80C606C -sub_80C606C: @ 80C606C - push {r4,lr} - ldrh r1, [r0] - movs r0, 0x1F - movs r3, 0x1F - ands r3, r1 - lsls r1, 16 - lsrs r2, r1, 21 - lsrs r1, 26 - subs r3, r0, r3 - adds r4, r0, 0 - bics r4, r2 - adds r2, r4, 0 - bics r0, r1 - lsls r0, 10 - lsls r2, 5 - orrs r0, r2 - orrs r0, r3 - lsls r0, 16 - lsrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C606C - - thumb_func_start sub_80C6098 -sub_80C6098: @ 80C6098 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r1, 0 - ldrh r4, [r0] - ldrh r5, [r7] - lsls r6, r4, 16 - lsls r0, r5, 16 - mov r12, r0 - cmp r4, r5 - beq _080C610A - mov r2, sp - movs r3, 0x1F - movs r1, 0x1F - adds r0, r1, 0 - ands r0, r4 - strh r0, [r2] - lsrs r0, r6, 21 - ands r0, r3 - strh r0, [r2, 0x2] - lsrs r0, r6, 26 - ands r0, r3 - strh r0, [r2, 0x4] - mov r0, sp - ands r1, r5 - strh r1, [r0, 0x6] - mov r1, sp - mov r2, r12 - lsrs r0, r2, 21 - ands r0, r3 - strh r0, [r1, 0x8] - lsrs r0, r2, 26 - ands r0, r3 - strh r0, [r1, 0xA] - mov r0, sp - ldrh r0, [r0] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r0, 0x19 - bls _080C60F2 - mov r0, sp - ldrh r0, [r0, 0x4] - cmp r0, 0x19 - bhi _080C610A -_080C60F2: - mov r0, sp - ldrh r0, [r0, 0x6] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0x8] - cmp r0, 0x19 - bls _080C610E - mov r0, sp - ldrh r0, [r0, 0xA] - cmp r0, 0x19 - bls _080C610E -_080C610A: - ldrh r0, [r7] - b _080C61B4 -_080C610E: - movs r4, 0 - add r6, sp, 0xC - mov r7, sp - adds r7, 0x6 - adds r5, r6, 0 -_080C6118: - lsls r2, r4, 1 - mov r1, sp - adds r0, r1, r2 - adds r1, r7, r2 - ldrh r3, [r0] - ldrh r0, [r1] - cmp r3, r0 - bls _080C612E - adds r1, r5, r2 - subs r0, r3, r0 - b _080C6132 -_080C612E: - adds r1, r5, r2 - subs r0, r3 -_080C6132: - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6118 - adds r1, r6, 0 - ldrh r0, [r1, 0x2] - ldrh r3, [r1] - cmp r3, r0 - bcc _080C6158 - ldrh r2, [r1, 0x4] - cmp r3, r2 - bcc _080C6152 - adds r2, r3, 0 - b _080C616C -_080C6152: - cmp r0, r2 - bcs _080C615E - b _080C6166 -_080C6158: - ldrh r2, [r1, 0x4] - cmp r0, r2 - bcc _080C6162 -_080C615E: - ldrh r2, [r1, 0x2] - b _080C616C -_080C6162: - cmp r2, r3 - bcc _080C616A -_080C6166: - ldrh r2, [r1, 0x4] - b _080C616C -_080C616A: - ldrh r2, [r6] -_080C616C: - mov r0, sp - ldrh r1, [r0, 0x6] - lsrs r0, r2, 1 - movs r6, 0x1F - subs r6, r0 - adds r0, r1, 0 - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, sp - ldrh r0, [r0, 0x8] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - ldrh r0, [r0, 0xA] - muls r0, r6 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - lsls r4, 5 - orrs r0, r4 - orrs r5, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r5, 0 -_080C61B4: - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C6098 - - thumb_func_start sub_80C61BC -sub_80C61BC: @ 80C61BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C61E4 - ldrh r0, [r2] - cmp r0, r1 - bne _080C61E4 - mov r1, r10 - ldrh r0, [r1] - b _080C62CC -_080C61E4: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6266 - cmp r1, r6 - bne _080C6266 - mov r3, r10 - ldrh r0, [r3] - b _080C62CC -_080C6266: - cmp r7, r6 - bls _080C626E - subs r0, r7, r6 - b _080C6270 -_080C626E: - subs r0, r6, r7 -_080C6270: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C627C - subs r0, r1, r6 - b _080C627E -_080C627C: - subs r0, r6, r1 -_080C627E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C6288 - adds r0, r2, 0 -_080C6288: - lsrs r0, 1 - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C62CC: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C61BC - - thumb_func_start sub_80C62DC -sub_80C62DC: @ 80C62DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - mov r10, r1 - str r2, [sp] - ldrh r1, [r3] - mov r0, r10 - ldrh r0, [r0] - cmp r1, r0 - bne _080C6304 - ldrh r0, [r2] - cmp r0, r1 - bne _080C6304 - mov r1, r10 - ldrh r0, [r1] - b _080C63EA -_080C6304: - mov r2, r10 - ldrh r0, [r2] - movs r1, 0x1F - mov r9, r1 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - lsls r0, 16 - lsrs r2, r0, 21 - mov r1, r9 - ands r1, r2 - mov r8, r1 - lsrs r0, 26 - mov r2, r9 - ands r2, r0 - str r2, [sp, 0x4] - ldrh r2, [r3] - adds r0, r4, 0 - ands r0, r2 - lsls r2, 16 - lsrs r1, r2, 21 - mov r3, r9 - ands r1, r3 - adds r0, r1 - lsrs r2, 26 - ands r2, r3 - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r1, r8 - adds r0, r5, r1 - ldr r2, [sp, 0x4] - adds r0, r2 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - ldrh r1, [r3] - ands r4, r1 - lsls r1, 16 - lsrs r0, r1, 21 - mov r2, r9 - ands r0, r2 - adds r4, r0 - lsrs r1, 26 - ands r1, r2 - adds r4, r1 - adds r0, r4, 0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r7, r6 - bne _080C6386 - cmp r1, r6 - bne _080C6386 - mov r3, r10 - ldrh r0, [r3] - b _080C63EA -_080C6386: - cmp r7, r6 - bls _080C638E - subs r0, r7, r6 - b _080C6390 -_080C638E: - subs r0, r6, r7 -_080C6390: - lsls r0, 16 - lsrs r2, r0, 16 - cmp r1, r6 - bls _080C639C - subs r0, r1, r6 - b _080C639E -_080C639C: - subs r0, r6, r1 -_080C639E: - lsls r0, 16 - lsrs r0, 16 - cmp r2, r0 - bcc _080C63A8 - adds r0, r2, 0 -_080C63A8: - movs r4, 0x1F - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0x4] - adds r0, r1, 0 - muls r0, r4 - movs r1, 0x1F - bl __divsi3 - lsls r0, 16 - lsrs r0, 6 - mov r2, r8 - lsls r1, r2, 5 - orrs r0, r1 - orrs r5, r0 - lsls r0, r5, 16 - lsrs r0, 16 -_080C63EA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C62DC - - thumb_func_start sub_80C63FC -sub_80C63FC: @ 80C63FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldrb r1, [r0, 0x1D] - lsrs r5, r1, 3 - ldrb r1, [r0, 0x1E] - lsrs r1, 3 - str r1, [sp, 0x8] - ldr r1, [r0, 0x4] - str r1, [sp] - ldr r2, [r0, 0x10] - str r2, [sp, 0x4] - ldrh r0, [r0, 0x16] - cmp r0, 0x2 - bne _080C64AC - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcc _080C642A - b _080C6538 -_080C642A: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C649E - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C643E: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 6 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C644E: - lsls r0, r4, 3 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r0, [r2, 0x2] - lsls r0, 8 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0x6] - lsls r0, 8 - ldrh r1, [r2, 0x4] - orrs r0, r1 - strh r0, [r3, 0x2] - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0x8] - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r2, 0xE] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r3, 0x6] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C644E - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C643E -_080C649E: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C642A - b _080C6538 -_080C64AC: - movs r1, 0 - ldr r0, [sp, 0x8] - cmp r1, r0 - bcs _080C6538 -_080C64B4: - movs r0, 0 - adds r2, r1, 0x1 - mov r10, r2 - cmp r0, r5 - bcs _080C652C - adds r2, r1, 0 - muls r2, r5 - mov r9, r2 - lsls r1, 3 - mov r8, r1 -_080C64C8: - movs r4, 0 - lsls r6, r0, 4 - adds r7, r0, 0x1 - add r0, r9 - lsls r0, 5 - ldr r1, [sp, 0x4] - adds r1, r0 - mov r12, r1 -_080C64D8: - lsls r0, r4, 2 - mov r2, r12 - adds r3, r2, r0 - mov r1, r8 - adds r0, r1, r4 - lsls r0, 3 - muls r0, r5 - lsls r0, 1 - ldr r2, [sp] - adds r0, r2, r0 - adds r2, r0, r6 - ldrh r1, [r2, 0x2] - lsls r1, 4 - ldrh r0, [r2] - orrs r1, r0 - ldrh r0, [r2, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0x6] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3] - ldrh r1, [r2, 0xA] - lsls r1, 4 - ldrh r0, [r2, 0x8] - orrs r1, r0 - ldrh r0, [r2, 0xC] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2, 0xE] - lsls r0, 12 - orrs r1, r0 - strh r1, [r3, 0x2] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x7 - bls _080C64D8 - lsls r0, r7, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080C64C8 -_080C652C: - mov r1, r10 - lsls r0, r1, 16 - lsrs r1, r0, 16 - ldr r2, [sp, 0x8] - cmp r1, r2 - bcc _080C64B4 -_080C6538: - 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_80C63FC - - thumb_func_start sub_80C6548 -sub_80C6548: @ 80C6548 - push {lr} - ldr r2, _080C6598 @ =gUnknown_3005354 - ldrb r1, [r0, 0x18] - lsls r1, 4 - strh r1, [r2] - ldr r3, _080C659C @ =gUnknown_3005350 - ldrh r2, [r2] - lsls r2, 1 - ldr r1, [r0, 0x8] - adds r1, r2 - str r1, [r3] - ldr r2, _080C65A0 @ =gUnknown_3005334 - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080C65A4 @ =gUnknown_3005330 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080C65A8 @ =gUnknown_3005344 - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080C65AC @ =gUnknown_3005340 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080C65B0 @ =gUnknown_3005338 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080C65B4 @ =gUnknown_300534C - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080C65B8 @ =gUnknown_300533C - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrh r0, [r0, 0x14] - cmp r0, 0x5 - bhi _080C660E - lsls r0, 2 - ldr r1, _080C65BC @ =_080C65C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C6598: .4byte gUnknown_3005354 -_080C659C: .4byte gUnknown_3005350 -_080C65A0: .4byte gUnknown_3005334 -_080C65A4: .4byte gUnknown_3005330 -_080C65A8: .4byte gUnknown_3005344 -_080C65AC: .4byte gUnknown_3005340 -_080C65B0: .4byte gUnknown_3005338 -_080C65B4: .4byte gUnknown_300534C -_080C65B8: .4byte gUnknown_300533C -_080C65BC: .4byte _080C65C0 - .align 2, 0 -_080C65C0: - .4byte _080C65D8 - .4byte _080C65E0 - .4byte _080C65E8 - .4byte _080C65F2 - .4byte _080C65FC - .4byte _080C6606 -_080C65D8: - movs r0, 0 - bl sub_80C6748 - b _080C660E -_080C65E0: - movs r0, 0x1 - bl sub_80C6748 - b _080C660E -_080C65E8: - bl sub_80C6614 - bl sub_80C6AB8 - b _080C660E -_080C65F2: - bl sub_80C6714 - bl sub_80C6A08 - b _080C660E -_080C65FC: - bl sub_80C66D8 - bl sub_80C6958 - b _080C660E -_080C6606: - bl sub_80C66BC - bl sub_80C68A0 -_080C660E: - pop {r0} - bx r0 - thumb_func_end sub_80C6548 - - thumb_func_start sub_80C6614 -sub_80C6614: @ 80C6614 - ldr r2, _080C667C @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - ldr r0, [r2] - ldr r2, _080C6680 @ =0x000018c6 - adds r1, r2, 0 - strh r1, [r0, 0x2] - ldr r2, _080C6684 @ =0x000077bd - adds r1, r2, 0 - strh r1, [r0, 0x4] - ldr r2, _080C6688 @ =0x00002d6b - adds r1, r2, 0 - strh r1, [r0, 0x6] - ldr r2, _080C668C @ =0x000018dd - adds r1, r2, 0 - strh r1, [r0, 0x8] - ldr r2, _080C6690 @ =0x00001ba6 - adds r1, r2, 0 - strh r1, [r0, 0xA] - ldr r2, _080C6694 @ =0x000074c6 - adds r1, r2, 0 - strh r1, [r0, 0xC] - ldr r2, _080C6698 @ =0x00001bbd - adds r1, r2, 0 - strh r1, [r0, 0xE] - ldr r2, _080C669C @ =0x000074dd - adds r1, r2, 0 - strh r1, [r0, 0x10] - ldr r2, _080C66A0 @ =0x000077a6 - adds r1, r2, 0 - strh r1, [r0, 0x12] - ldr r2, _080C66A4 @ =0x0000197d - adds r1, r2, 0 - strh r1, [r0, 0x14] - ldr r2, _080C66A8 @ =0x00001bab - adds r1, r2, 0 - strh r1, [r0, 0x16] - ldr r2, _080C66AC @ =0x00007566 - adds r1, r2, 0 - strh r1, [r0, 0x18] - ldr r2, _080C66B0 @ =0x00002cdd - adds r1, r2, 0 - strh r1, [r0, 0x1A] - ldr r2, _080C66B4 @ =0x00002fa6 - adds r1, r2, 0 - strh r1, [r0, 0x1C] - ldr r2, _080C66B8 @ =0x000074cb - adds r1, r2, 0 - strh r1, [r0, 0x1E] - bx lr - .align 2, 0 -_080C667C: .4byte gUnknown_3005350 -_080C6680: .4byte 0x000018c6 -_080C6684: .4byte 0x000077bd -_080C6688: .4byte 0x00002d6b -_080C668C: .4byte 0x000018dd -_080C6690: .4byte 0x00001ba6 -_080C6694: .4byte 0x000074c6 -_080C6698: .4byte 0x00001bbd -_080C669C: .4byte 0x000074dd -_080C66A0: .4byte 0x000077a6 -_080C66A4: .4byte 0x0000197d -_080C66A8: .4byte 0x00001bab -_080C66AC: .4byte 0x00007566 -_080C66B0: .4byte 0x00002cdd -_080C66B4: .4byte 0x00002fa6 -_080C66B8: .4byte 0x000074cb - thumb_func_end sub_80C6614 - - thumb_func_start sub_80C66BC -sub_80C66BC: @ 80C66BC - ldr r2, _080C66D0 @ =gUnknown_3005350 - ldr r0, [r2] - movs r1, 0 - strh r1, [r0] - ldr r2, [r2] - strh r1, [r2, 0x2] - ldr r1, _080C66D4 @ =0x00007fff - adds r0, r1, 0 - strh r0, [r2, 0x4] - bx lr - .align 2, 0 -_080C66D0: .4byte gUnknown_3005350 -_080C66D4: .4byte 0x00007fff - thumb_func_end sub_80C66BC - - thumb_func_start sub_80C66D8 -sub_80C66D8: @ 80C66D8 - push {r4,r5,lr} - ldr r1, _080C6710 @ =gUnknown_3005350 - ldr r0, [r1] - movs r2, 0 - strh r2, [r0] - ldr r0, [r1] - strh r2, [r0, 0x2] - movs r4, 0 - adds r5, r1, 0 -_080C66EA: - ldr r0, [r5] - lsls r2, r4, 1 - adds r2, r0 - adds r0, r4, 0x2 - lsls r3, r0, 1 - lsls r1, r0, 11 - lsls r0, 6 - orrs r1, r0 - orrs r1, r3 - strh r1, [r2, 0x4] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xD - bls _080C66EA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C6710: .4byte gUnknown_3005350 - thumb_func_end sub_80C66D8 - - thumb_func_start sub_80C6714 -sub_80C6714: @ 80C6714 - push {r4,lr} - ldr r2, _080C6744 @ =gUnknown_3005350 - ldr r1, [r2] - movs r0, 0 - strh r0, [r1] - movs r3, 0 - adds r4, r2, 0 -_080C6722: - ldr r0, [r4] - lsls r2, r3, 1 - adds r2, r0 - lsls r0, r3, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r0, r3 - strh r0, [r2, 0x2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _080C6722 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C6744: .4byte gUnknown_3005350 - thumb_func_end sub_80C6714 - - thumb_func_start sub_80C6748 -sub_80C6748: @ 80C6748 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - movs r1, 0xDF - mov r9, r1 - cmp r0, 0 - bne _080C6760 - movs r2, 0xFF - mov r9, r2 -_080C6760: - movs r6, 0 - ldr r3, _080C67E4 @ =gUnknown_3005350 - mov r12, r3 - mov r0, r9 - lsls r4, r0, 1 - ldr r5, _080C67E8 @ =gUnknown_3005338 - cmp r6, r9 - bcs _080C6784 - movs r2, 0 -_080C6772: - ldr r0, [r3] - lsls r1, r6, 1 - adds r1, r0 - strh r2, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r9 - bcc _080C6772 -_080C6784: - mov r1, r12 - ldr r0, [r1] - adds r0, r4, r0 - ldr r2, _080C67EC @ =0x00003def - adds r1, r2, 0 - strh r1, [r0] - movs r3, 0 - ldrb r5, [r5] - cmp r3, r5 - bcs _080C6888 -_080C6798: - ldr r2, _080C67F0 @ =gUnknown_3005334 - ldr r0, _080C67F4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r3 - ldr r0, _080C67F8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - ldr r1, [r2] - adds r1, r0 - ldr r0, _080C67FC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6800 @ =gUnknown_3005340 - adds r2, r0, 0 - adds r3, 0x1 - mov r10, r3 - ldrb r3, [r2] - cmp r6, r3 - bcs _080C687A - ldr r0, _080C6804 @ =gUnknown_3005354 - mov r8, r0 -_080C67C8: - ldrh r0, [r4] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6808 - mov r1, r8 - ldrh r0, [r1] - strh r0, [r4] - adds r6, 0x1 - adds r7, r4, 0x2 - b _080C686E - .align 2, 0 -_080C67E4: .4byte gUnknown_3005350 -_080C67E8: .4byte gUnknown_3005338 -_080C67EC: .4byte 0x00003def -_080C67F0: .4byte gUnknown_3005334 -_080C67F4: .4byte gUnknown_3005344 -_080C67F8: .4byte gUnknown_300534C -_080C67FC: .4byte gUnknown_3005330 -_080C6800: .4byte gUnknown_3005340 -_080C6804: .4byte gUnknown_3005354 -_080C6808: - adds r0, r4, 0 - bl sub_80C6B68 - lsls r0, 16 - lsrs r5, r0, 16 - movs r3, 0x1 - adds r6, 0x1 - adds r7, r4, 0x2 - cmp r3, r9 - bcs _080C6864 - ldr r0, _080C6834 @ =gUnknown_3005350 - ldr r2, [r0] - ldrh r1, [r2, 0x2] - mov r12, r0 - cmp r1, 0 - bne _080C6838 - strh r5, [r2, 0x2] - mov r2, r8 - ldrh r0, [r2] - adds r0, 0x1 - b _080C6862 - .align 2, 0 -_080C6834: .4byte gUnknown_3005350 -_080C6838: - mov r2, r12 - ldr r1, [r2] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080C685C - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r9 - bcs _080C6864 - lsls r0, r3, 1 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - bne _080C6838 - strh r5, [r1] -_080C685C: - mov r1, r8 - ldrh r0, [r1] - adds r0, r3 -_080C6862: - strh r0, [r4] -_080C6864: - ldr r2, _080C6898 @ =gUnknown_3005340 - cmp r3, r9 - bne _080C686E - mov r3, r9 - strh r3, [r4] -_080C686E: - lsls r0, r6, 24 - lsrs r6, r0, 24 - adds r4, r7, 0 - ldrb r0, [r2] - cmp r6, r0 - bcc _080C67C8 -_080C687A: - mov r1, r10 - lsls r0, r1, 24 - lsrs r3, r0, 24 - ldr r0, _080C689C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r3, r0 - bcc _080C6798 -_080C6888: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6898: .4byte gUnknown_3005340 -_080C689C: .4byte gUnknown_3005338 - thumb_func_end sub_80C6748 - - thumb_func_start sub_80C68A0 -sub_80C68A0: @ 80C68A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r2, 0 - ldr r0, _080C68F4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6944 - ldr r0, _080C68F8 @ =gUnknown_3005334 - mov r8, r0 -_080C68B4: - ldr r0, _080C68FC @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6900 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6904 @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r6, 0 - ldr r0, _080C6908 @ =gUnknown_3005340 - adds r3, r0, 0 - adds r7, r2, 0x1 - ldrb r0, [r3] - cmp r6, r0 - bcs _080C6938 - ldr r5, _080C690C @ =gUnknown_3005354 -_080C68E0: - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6910 - ldrh r0, [r5] - strh r0, [r4] - b _080C692A - .align 2, 0 -_080C68F4: .4byte gUnknown_3005338 -_080C68F8: .4byte gUnknown_3005334 -_080C68FC: .4byte gUnknown_3005344 -_080C6900: .4byte gUnknown_300534C -_080C6904: .4byte gUnknown_3005330 -_080C6908: .4byte gUnknown_3005340 -_080C690C: .4byte gUnknown_3005354 -_080C6910: - adds r0, r4, 0 - bl sub_80C600C - lsls r0, 16 - cmp r0, 0 - bne _080C6922 - ldrh r0, [r5] - adds r0, 0x1 - b _080C6926 -_080C6922: - ldrh r0, [r5] - adds r0, 0x2 -_080C6926: - strh r0, [r4] - ldr r3, _080C6950 @ =gUnknown_3005340 -_080C692A: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r6, r0 - bcc _080C68E0 -_080C6938: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6954 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C68B4 -_080C6944: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6950: .4byte gUnknown_3005340 -_080C6954: .4byte gUnknown_3005338 - thumb_func_end sub_80C68A0 - - thumb_func_start sub_80C6958 -sub_80C6958: @ 80C6958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C69AC @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C69F4 - ldr r0, _080C69B0 @ =gUnknown_3005334 - mov r8, r0 -_080C696E: - ldr r0, _080C69B4 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C69B8 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C69BC @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C69C0 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C69E8 - ldr r6, _080C69C4 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C699E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C69C8 - ldrh r0, [r6] - strh r0, [r4] - b _080C69D8 - .align 2, 0 -_080C69AC: .4byte gUnknown_3005338 -_080C69B0: .4byte gUnknown_3005334 -_080C69B4: .4byte gUnknown_3005344 -_080C69B8: .4byte gUnknown_300534C -_080C69BC: .4byte gUnknown_3005330 -_080C69C0: .4byte gUnknown_3005340 -_080C69C4: .4byte gUnknown_3005354 -_080C69C8: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CAC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C69D8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6A00 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C699E -_080C69E8: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6A04 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C696E -_080C69F4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6A00: .4byte gUnknown_3005340 -_080C6A04: .4byte gUnknown_3005338 - thumb_func_end sub_80C6958 - - thumb_func_start sub_80C6A08 -sub_80C6A08: @ 80C6A08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6A5C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6AA4 - ldr r0, _080C6A60 @ =gUnknown_3005334 - mov r8, r0 -_080C6A1E: - ldr r0, _080C6A64 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6A68 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6A6C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6A70 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6A98 - ldr r6, _080C6A74 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6A4E: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6A78 - ldrh r0, [r6] - strh r0, [r4] - b _080C6A88 - .align 2, 0 -_080C6A5C: .4byte gUnknown_3005338 -_080C6A60: .4byte gUnknown_3005334 -_080C6A64: .4byte gUnknown_3005344 -_080C6A68: .4byte gUnknown_300534C -_080C6A6C: .4byte gUnknown_3005330 -_080C6A70: .4byte gUnknown_3005340 -_080C6A74: .4byte gUnknown_3005354 -_080C6A78: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6CE0 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6A88: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6AB0 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6A4E -_080C6A98: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6AB4 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6A1E -_080C6AA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6AB0: .4byte gUnknown_3005340 -_080C6AB4: .4byte gUnknown_3005338 - thumb_func_end sub_80C6A08 - - thumb_func_start sub_80C6AB8 -sub_80C6AB8: @ 80C6AB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080C6B0C @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcs _080C6B54 - ldr r0, _080C6B10 @ =gUnknown_3005334 - mov r8, r0 -_080C6ACE: - ldr r0, _080C6B14 @ =gUnknown_3005344 - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080C6B18 @ =gUnknown_300534C - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r3, r8 - ldr r1, [r3] - adds r1, r0 - ldr r0, _080C6B1C @ =gUnknown_3005330 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - ldr r0, _080C6B20 @ =gUnknown_3005340 - adds r7, r2, 0x1 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C6B48 - ldr r6, _080C6B24 @ =gUnknown_3005354 - movs r0, 0x80 - lsls r0, 8 - adds r2, r0, 0 -_080C6AFE: - ldrh r0, [r4] - ands r0, r2 - cmp r0, 0 - beq _080C6B28 - ldrh r0, [r6] - strh r0, [r4] - b _080C6B38 - .align 2, 0 -_080C6B0C: .4byte gUnknown_3005338 -_080C6B10: .4byte gUnknown_3005334 -_080C6B14: .4byte gUnknown_3005344 -_080C6B18: .4byte gUnknown_300534C -_080C6B1C: .4byte gUnknown_3005330 -_080C6B20: .4byte gUnknown_3005340 -_080C6B24: .4byte gUnknown_3005354 -_080C6B28: - adds r0, r4, 0 - str r2, [sp] - bl sub_80C6BDC - ldrh r1, [r6] - adds r0, r1 - strh r0, [r4] - ldr r2, [sp] -_080C6B38: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldr r0, _080C6B60 @ =gUnknown_3005340 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C6AFE -_080C6B48: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r0, _080C6B64 @ =gUnknown_3005338 - ldrb r0, [r0] - cmp r2, r0 - bcc _080C6ACE -_080C6B54: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C6B60: .4byte gUnknown_3005340 -_080C6B64: .4byte gUnknown_3005338 - thumb_func_end sub_80C6AB8 - - thumb_func_start sub_80C6B68 -sub_80C6B68: @ 80C6B68 - push {r4,lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r4, 0x1F - ands r4, r0 - lsls r0, 16 - lsrs r3, r0, 21 - ands r3, r1 - lsrs r2, r0, 26 - ands r2, r1 - movs r1, 0x3 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B8C - movs r0, 0x1C - ands r0, r4 - adds r4, r0, 0x4 -_080C6B8C: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6B9A - movs r0, 0x1C - ands r0, r3 - adds r3, r0, 0x4 -_080C6B9A: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6BA8 - movs r0, 0x1C - ands r0, r2 - adds r2, r0, 0x4 -_080C6BA8: - cmp r4, 0x5 - bhi _080C6BAE - movs r4, 0x6 -_080C6BAE: - cmp r4, 0x1E - bls _080C6BB4 - movs r4, 0x1E -_080C6BB4: - cmp r3, 0x5 - bhi _080C6BBA - movs r3, 0x6 -_080C6BBA: - cmp r3, 0x1E - bls _080C6BC0 - movs r3, 0x1E -_080C6BC0: - cmp r2, 0x5 - bhi _080C6BC6 - movs r2, 0x6 -_080C6BC6: - cmp r2, 0x1E - bls _080C6BCC - movs r2, 0x1E -_080C6BCC: - lsls r0, r2, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r4, r0 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C6B68 - - thumb_func_start sub_80C6BDC -sub_80C6BDC: @ 80C6BDC - push {lr} - ldrh r0, [r0] - movs r1, 0x1F - movs r3, 0x1F - ands r3, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r1 - lsrs r0, 26 - ands r0, r1 - cmp r3, 0xB - bhi _080C6C00 - cmp r2, 0xA - bhi _080C6C00 - cmp r0, 0xA - bhi _080C6C00 - movs r0, 0x1 - b _080C6CA6 -_080C6C00: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C0C - cmp r0, 0x13 - bhi _080C6C30 -_080C6C0C: - cmp r3, 0x13 - bls _080C6C24 - cmp r2, 0x13 - bls _080C6C1A - cmp r0, 0xE - bhi _080C6C30 - b _080C6C68 -_080C6C1A: - cmp r0, 0x13 - bls _080C6C24 - cmp r2, 0xE - bhi _080C6C30 - b _080C6C44 -_080C6C24: - cmp r2, 0x13 - bls _080C6C34 - cmp r0, 0x13 - bls _080C6C34 - cmp r3, 0xE - bls _080C6C8C -_080C6C30: - movs r0, 0x2 - b _080C6CA6 -_080C6C34: - cmp r3, 0x13 - bls _080C6C58 - cmp r2, 0xB - bls _080C6C4C - cmp r0, 0xB - bls _080C6C48 - cmp r2, r0 - bcs _080C6C68 -_080C6C44: - movs r0, 0x8 - b _080C6CA6 -_080C6C48: - movs r0, 0xA - b _080C6CA6 -_080C6C4C: - cmp r0, 0xB - bls _080C6C54 - movs r0, 0xD - b _080C6CA6 -_080C6C54: - movs r0, 0x4 - b _080C6CA6 -_080C6C58: - cmp r2, 0x13 - bls _080C6C7C - cmp r3, 0xB - bls _080C6C70 - cmp r0, 0xB - bls _080C6C6C - cmp r3, r0 - bcc _080C6C8C -_080C6C68: - movs r0, 0x7 - b _080C6CA6 -_080C6C6C: - movs r0, 0xB - b _080C6CA6 -_080C6C70: - cmp r0, 0xB - bls _080C6C78 - movs r0, 0xE - b _080C6CA6 -_080C6C78: - movs r0, 0x5 - b _080C6CA6 -_080C6C7C: - cmp r0, 0x13 - bls _080C6CA4 - cmp r3, 0xB - bls _080C6C90 - cmp r2, 0xB - bls _080C6C98 - cmp r3, r2 - bcs _080C6C44 -_080C6C8C: - movs r0, 0x9 - b _080C6CA6 -_080C6C90: - cmp r2, 0xB - bls _080C6C98 - movs r0, 0xC - b _080C6CA6 -_080C6C98: - cmp r0, 0xB - bls _080C6CA0 - movs r0, 0xF - b _080C6CA6 -_080C6CA0: - movs r0, 0x6 - b _080C6CA6 -_080C6CA4: - movs r0, 0x3 -_080C6CA6: - pop {r1} - bx r1 - thumb_func_end sub_80C6BDC - - thumb_func_start sub_80C6CAC -sub_80C6CAC: @ 80C6CAC - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - movs r1, 0x1E - ands r0, r1 - lsls r0, 16 - cmp r0, 0 - beq _080C6CD8 - lsrs r0, 17 - b _080C6CDA -_080C6CD8: - movs r0, 0x1 -_080C6CDA: - pop {r1} - bx r1 - thumb_func_end sub_80C6CAC - - thumb_func_start sub_80C6CE0 -sub_80C6CE0: @ 80C6CE0 - push {lr} - ldrh r1, [r0] - movs r3, 0x1F - movs r0, 0x1F - ands r0, r1 - lsls r1, 16 - lsrs r2, r1, 21 - ands r2, r3 - lsrs r1, 26 - ands r1, r3 - adds r0, r2 - adds r0, r1 - movs r1, 0x3 - bl __divsi3 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80C6CE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/image_processing_effects.txt b/common_syms/image_processing_effects.txt new file mode 100644 index 000000000..134f7e88b --- /dev/null +++ b/common_syms/image_processing_effects.txt @@ -0,0 +1,10 @@ +gCanvasColumnStart +gCanvasPixels +gCanvasRowEnd +gCanvasHeight +gCanvasColumnEnd +gCanvasRowStart +gCanvasMonPersonality +gCanvasWidth +gCanvasPalette +gCanvasPaletteStart diff --git a/data/image_processing_effects.s b/data/image_processing_effects.s index df83b2d54..d5585410c 100644 --- a/data/image_processing_effects.s +++ b/data/image_processing_effects.s @@ -1,7 +1,7 @@ .section .rodata .align 2, 0 -gUnknown_83F3024:: @ 83F3024 +gPointillismPoints:: @ 83F3024 .byte 0x00, 0x1d, 0x1c .byte 0x0e, 0x1e, 0x1b .byte 0x00, 0x01, 0x32 diff --git a/include/image_processing_effects.h b/include/image_processing_effects.h new file mode 100644 index 000000000..7f726707c --- /dev/null +++ b/include/image_processing_effects.h @@ -0,0 +1,53 @@ +#ifndef GUARD_IMAGE_PROCESSING_EFFECTS_H +#define GUARD_IMAGE_PROCESSING_EFFECTS_H + +enum +{ + IMAGE_EFFECT_POINTILLISM = 2, + IMAGE_EFFECT_GRAYSCALE_LIGHT = 6, + IMAGE_EFFECT_BLUR = 8, + IMAGE_EFFECT_OUTLINE_COLORED = 9, + IMAGE_EFFECT_INVERT_BLACK_WHITE = 10, + IMAGE_EFFECT_THICK_BLACK_WHITE = 11, + IMAGE_EFFECT_SHIMMER = 13, + IMAGE_EFFECT_OUTLINE = 30, + IMAGE_EFFECT_INVERT = 31, + IMAGE_EFFECT_BLUR_RIGHT = 32, + IMAGE_EFFECT_BLUR_DOWN = 33, + IMAGE_EFFECT_CHARCOAL = 36, +}; + +enum +{ + QUANTIZE_EFFECT_STANDARD, + QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS, + QUANTIZE_EFFECT_PRIMARY_COLORS, + QUANTIZE_EFFECT_GRAYSCALE, + QUANTIZE_EFFECT_GRAYSCALE_SMALL, + QUANTIZE_EFFECT_BLACK_WHITE, +}; + +struct ImageProcessingContext +{ + u8 effect; + void *canvasPixels; + u16 *canvasPalette; + u8 fillerC[0x4]; + void *dest; + u16 quantizeEffect; + u16 var_16; + u8 paletteStart; + u8 columnStart; + u8 rowStart; + u8 columnEnd; + u8 rowEnd; + u8 canvasWidth; + u8 canvasHeight; + u8 personality; +}; + +void ApplyImageProcessingEffects(struct ImageProcessingContext *); +void ApplyImageProcessingQuantization(struct ImageProcessingContext *); +void ConvertImageProcessingToGBA(struct ImageProcessingContext *); + +#endif diff --git a/ld_script.txt b/ld_script.txt index 838aebcac..0b12b1187 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,7 +181,7 @@ SECTIONS { asm/script_pokemon_util_80BF8FC.o(.text); src/heal_location.o(.text); src/region_map.o(.text); - asm/image_processing_effects.o(.text); + src/image_processing_effects.o(.text); src/battle_ai_script_commands.o(.text); src/fldeff_rocksmash.o(.text); src/fldeff_dig.o(.text); diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c new file mode 100644 index 000000000..c9ca4b16b --- /dev/null +++ b/src/image_processing_effects.c @@ -0,0 +1,1224 @@ +#include "global.h" +#include "image_processing_effects.h" + +// IWRAM common +u8 gCanvasColumnStart; +u16 (*gCanvasPixels)[][32]; +u8 gCanvasRowEnd; +u8 gCanvasHeight; +u8 gCanvasColumnEnd; +u8 gCanvasRowStart; +u8 gCanvasMonPersonality; +u8 gCanvasWidth; +u16 *gCanvasPalette; +u16 gCanvasPaletteStart; + +static void ApplyImageEffect_Pointillism(void); +static void ApplyImageEffect_Blur(void); +static void ApplyImageEffect_BlackOutline(void); +static void ApplyImageEffect_Invert(void); +static void ApplyImageEffect_BlackAndWhite(void); +static void ApplyImageEffect_BlurRight(void); +static void ApplyImageEffect_BlurDown(void); +static void ApplyImageEffect_Shimmer(void); +static void ApplyImageEffect_Grayscale(void); +static void ApplyImageEffect_PersonalityColor(u8); +static void ApplyImageEffect_RedChannelGrayscale(u8); +static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8); +static void AddPointillismPoints(u16); +static u16 ConvertColorToGrayscale(u16*); +static u16 QuantizePixel_Blur(u16*, u16*, u16*); +static u16 QuantizePixel_PersonalityColor(u16*, u8); +static u16 QuantizePixel_BlackAndWhite(u16*); +static u16 QuantizePixel_BlackOutline(u16*, u16*); +static u16 QuantizePixel_Invert(u16*); +static u16 QuantizePixel_BlurHard(u16*, u16*, u16*); +static u16 QuantizePixel_MotionBlur(u16*, u16*); +static u16 GetColorFromPersonality(u8); +static void QuantizePalette_Standard(bool8); +static void SetPresetPalette_PrimaryColors(void); +static void QuantizePalette_PrimaryColors(void); +static void SetPresetPalette_Grayscale(void); +static void QuantizePalette_Grayscale(void); +static void SetPresetPalette_GrayscaleSmall(void); +static void QuantizePalette_GrayscaleSmall(void); +static void SetPresetPalette_BlackAndWhite(void); +static void QuantizePalette_BlackAndWhite(void); +static u16 QuantizePixel_Standard(u16*); +static u16 QuantizePixel_GrayscaleSmall(u16*); +static u16 QuantizePixel_Grayscale(u16*); +static u16 QuantizePixel_PrimaryColors(u16*); + +extern const u8 gPointillismPoints[][3]; + +void ApplyImageProcessingEffects(struct ImageProcessingContext *context) +{ + gCanvasPixels = context->canvasPixels; + gCanvasMonPersonality = context->personality; + gCanvasColumnStart = context->columnStart; + gCanvasRowStart = context->rowStart; + gCanvasColumnEnd = context->columnEnd; + gCanvasRowEnd = context->rowEnd; + gCanvasWidth = context->canvasWidth; + gCanvasHeight = context->canvasHeight; + + switch (context->effect) + { + case IMAGE_EFFECT_POINTILLISM: + ApplyImageEffect_Pointillism(); + break; + case IMAGE_EFFECT_BLUR: + ApplyImageEffect_Blur(); + break; + case IMAGE_EFFECT_OUTLINE_COLORED: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_PersonalityColor(gCanvasMonPersonality); + break; + case IMAGE_EFFECT_INVERT_BLACK_WHITE: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_Invert(); + ApplyImageEffect_BlackAndWhite(); + case IMAGE_EFFECT_INVERT: + ApplyImageEffect_Invert(); + break; + case IMAGE_EFFECT_THICK_BLACK_WHITE: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurDown(); + ApplyImageEffect_BlackAndWhite(); + break; + case IMAGE_EFFECT_SHIMMER: + ApplyImageEffect_Shimmer(); + break; + case IMAGE_EFFECT_OUTLINE: + ApplyImageEffect_BlackOutline(); + break; + case IMAGE_EFFECT_BLUR_RIGHT: + ApplyImageEffect_BlurRight(); + break; + case IMAGE_EFFECT_BLUR_DOWN: + ApplyImageEffect_BlurDown(); + break; + case IMAGE_EFFECT_GRAYSCALE_LIGHT: + ApplyImageEffect_Grayscale(); + ApplyImageEffect_RedChannelGrayscale(3); + break; + case IMAGE_EFFECT_CHARCOAL: + ApplyImageEffect_BlackOutline(); + ApplyImageEffect_BlurRight(); + ApplyImageEffect_BlurDown(); + ApplyImageEffect_BlackAndWhite(); + ApplyImageEffect_Blur(); + ApplyImageEffect_Blur(); + ApplyImageEffect_RedChannelGrayscale(2); + ApplyImageEffect_RedChannelGrayscaleHighlight(4); + break; + } +} + +static void ApplyImageEffect_RedChannelGrayscale(u8 delta) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + // Gets the grayscale value, based on the pixel's red channel. + // Also adds a delta to skew lighter or darker. + u8 grayValue = (31 & *pixel); + grayValue += delta; + if (grayValue > 31) + grayValue = 31; + + *pixel = RGB2(grayValue, grayValue, grayValue); + } + } + } +} + +static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8 highlight) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + u8 grayValue = (31 & *pixel); + if (grayValue > 31 - highlight) + grayValue = 31 - (highlight >> 1); + + *pixel = RGB2(grayValue, grayValue, grayValue); + } + } + } +} + +static void ApplyImageEffect_Pointillism(void) +{ + u32 i; + for (i = 0; i < 3200; i++) + AddPointillismPoints(i); +} + +static void ApplyImageEffect_Grayscale(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = ConvertColorToGrayscale(pixel); + } + } +} + +static void ApplyImageEffect_Blur(void) +{ + u8 i, j; + + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart + i]; + u16 prevPixel = *pixel; + + j = 1; + pixel += gCanvasWidth; + while (j < gCanvasRowEnd - 1) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_Blur(&prevPixel, pixel, pixel + gCanvasWidth); + prevPixel = *pixel; + } + + j++; + pixel += gCanvasWidth; + } + } +} + +static void ApplyImageEffect_PersonalityColor(u8 personality) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_PersonalityColor(pixel, personality); + } + } +} + +static void ApplyImageEffect_BlackAndWhite(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_BlackAndWhite(pixel); + } + } +} + +static void ApplyImageEffect_BlackOutline(void) +{ + u8 i, j; + u16 *pixel; + + // Handle top row of pixels first. + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + pixel = &pixelRow[gCanvasColumnStart]; + *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1); + for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++) + { + *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1); + *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1); + } + + *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1); + } + + // Handle each column from left to right. + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + pixel = &pixelRow[gCanvasColumnStart + i]; + *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth); + for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth) + { + *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth); + *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth); + } + + *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth); + } +} + +static void ApplyImageEffect_Invert(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } +} + +static void ApplyImageEffect_Shimmer(void) +{ + u8 i, j; + u16 *pixel; + u16 prevPixel; + + // First, invert all of the colors. + pixel = (*gCanvasPixels)[0]; + for (i = 0; i < 64; i++) + { + for (j = 0; j < 64; j++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } + + // Blur the pixels twice. + for (j = 0; j < 64; j++) + { + pixel = &(*gCanvasPixels)[0][j]; + prevPixel = *pixel; + *pixel = 0x8000; + for (i = 1, pixel += 64; i < 63; i++, pixel += 64) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64); + prevPixel = *pixel; + } + } + + *pixel = 0x8000; + pixel = &(*gCanvasPixels)[0][j]; + prevPixel = *pixel; + *pixel = 0x8000; + for (i = 1, pixel += 64; i < 63; i++, pixel += 64) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64); + prevPixel = *pixel; + } + } + + *pixel = 0x8000; + } + + // Finally, invert colors back to the original color space. + // The above blur causes the outline areas to darken, which makes + // this inversion give the effect of light outlines. + pixel = (*gCanvasPixels)[0]; + for (i = 0; i < 64; i++) + { + for (j = 0; j < 64; j++, pixel++) + { + if (!(0x8000 & *pixel)) + *pixel = QuantizePixel_Invert(pixel); + } + } +} + +static void ApplyImageEffect_BlurRight(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + u16 prevPixel = *pixel; + for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel); + prevPixel = *pixel; + } + } + } +} + +static void ApplyImageEffect_BlurDown(void) +{ + u8 i, j; + + for (i = 0; i < gCanvasColumnEnd; i++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart + i]; + u16 prevPixel = *pixel; + for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth) + { + if (!(0x8000 & *pixel)) + { + *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel); + prevPixel = *pixel; + } + } + } +} + +struct PointillismPoint +{ + u8 column; + u8 row; + u16 delta; +}; + +static void AddPointillismPoints(u16 arg0) +{ + u8 i; + bool8 offsetDownLeft; + u8 colorType; + struct PointillismPoint points[6]; + + points[0].column = gPointillismPoints[arg0][0]; + points[0].row = gPointillismPoints[arg0][1]; + points[0].delta = (gPointillismPoints[arg0][2] >> 3) & 7; + + colorType = (gPointillismPoints[arg0][2] >> 1) & 3; + offsetDownLeft = gPointillismPoints[arg0][2] & 1; + for (i = 1; i < points[0].delta; i++) + { + if (!offsetDownLeft) + { + points[i].column = points[0].column - i; + points[i].row = points[0].row + i; + } + else + { + points[i].column = points[0].column + 1; + points[i].row = points[0].row - 1; + } + + if (points[i].column > 63 || points[i].row > 63) + { + points[0].delta = i - 1; + break; + } + + points[i].delta = points[0].delta - i; + } + + for (i = 0; i < points[0].delta; i++) + { + u16 *pixel = &(*gCanvasPixels)[points[i].row * 2][points[i].column]; + + if (!(0x8000 & *pixel)) + { + u16 red = (*pixel) & 0x1F; + u16 green = (*pixel >> 5) & 0x1F; + u16 blue = (*pixel >> 10) & 0x1F; + + switch (colorType) + { + case 0: + case 1: + switch (((gPointillismPoints[arg0][2] >> 3) & 7) % 3) + { + case 0: + if (red >= points[i].delta) + red -= points[i].delta; + else + red = 0; + break; + case 1: + if (green >= points[i].delta) + green -= points[i].delta; + else + green = 0; + break; + case 2: + if (blue >= points[i].delta) + blue -= points[i].delta; + else + blue = 0; + break; + } + break; + case 2: + case 3: + red += points[i].delta; + green += points[i].delta; + blue += points[i].delta; + if (red > 31) + red = 31; + if (green > 31) + green = 31; + if (blue > 31) + blue = 31; + break; + } + + *pixel = RGB2(red, green, blue); + } + } +} + +static u16 ConvertColorToGrayscale(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + u16 gray = (red + green + blue) / 3; + return RGB2(gray, gray, gray); +} + +// The dark colors are the colored edges of the Cool painting effect. +// Everything else is white. +static u16 QuantizePixel_PersonalityColor(u16 *color, u8 personality) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 17 && green < 17 && blue < 17) + return GetColorFromPersonality(personality); + else + return RGB_WHITE; +} + +// Based on the given value, which comes from the first 8 bits of +// the mon's personality value, return a color. +static u16 GetColorFromPersonality(u8 personality) +{ + u16 red = 0; + u16 green = 0; + u16 blue = 0; + u8 strength = (personality / 6) % 3; + u8 colorType = personality % 6; + + switch (colorType) + { + case 0: + // Teal color + green = 21 - strength; + blue = green; + red = 0; + break; + case 1: + // Yellow color + blue = 0; + red = 21 - strength; + green = red; + break; + case 2: + // Purple color + blue = 21 - strength; + green = 0; + red = blue; + break; + case 3: + // Red color + blue = 0; + green = 0; + red = 23 - strength; + break; + case 4: + // Blue color + blue = 23 - strength; + green = 0; + red = 0; + break; + case 5: + // Green color + blue = 0; + green = 23 - strength; + red = 0; + break; + } + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_BlackAndWhite(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 17 && green < 17 && blue < 17) + return RGB_BLACK; + else + return RGB_WHITE; +} + +static u16 QuantizePixel_BlackOutline(u16 *pixelA, u16 *pixelB) +{ + if (*pixelA != RGB_BLACK) + { + if (*pixelA & 0x8000) + return 0x8000; + if (*pixelB & 0x8000) + return RGB_BLACK; + + return *pixelA; + } + + return RGB_BLACK; +} + +static u16 QuantizePixel_Invert(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + red = 31 - red; + green = 31 - green; + blue = 31 - blue; + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_MotionBlur(u16 *prevPixel, u16 *curPixel) +{ + u16 pixelChannels[2][3]; + u16 diffs[3]; + u8 i; + u16 largestDiff; + u16 red, green, blue; + + if (*prevPixel == *curPixel) + return *curPixel; + + pixelChannels[0][0] = (*prevPixel >> 0) & 0x1F; + pixelChannels[0][1] = (*prevPixel >> 5) & 0x1F; + pixelChannels[0][2] = (*prevPixel >> 10) & 0x1F; + pixelChannels[1][0] = (*curPixel >> 0) & 0x1F; + pixelChannels[1][1] = (*curPixel >> 5) & 0x1F; + pixelChannels[1][2] = (*curPixel >> 10) & 0x1F; + + // Don't blur light colors. + if (pixelChannels[0][0] > 25 && pixelChannels[0][1] > 25 && pixelChannels[0][2] > 25) + return *curPixel; + if (pixelChannels[1][0] > 25 && pixelChannels[1][1] > 25 && pixelChannels[1][2] > 25) + return *curPixel; + + for (i = 0; i < 3; i++) + { + if (pixelChannels[0][i] > pixelChannels[1][i]) + diffs[i] = pixelChannels[0][i] - pixelChannels[1][i]; + else + diffs[i] = pixelChannels[1][i] - pixelChannels[0][i]; + } + + // Find the largest diff of any of the color channels. + if (diffs[0] >= diffs[1]) + { + if (diffs[0] >= diffs[2]) + largestDiff = diffs[0]; + else if (diffs[1] >= diffs[2]) + largestDiff = diffs[1]; + else + largestDiff = diffs[2]; + } + else + { + if (diffs[1] >= diffs[2]) + largestDiff = diffs[1]; + else if (diffs[2] >= diffs[0]) + largestDiff = diffs[2]; + else + largestDiff = diffs[0]; + } + + red = (pixelChannels[1][0] * (31 - largestDiff / 2)) / 31; + green = (pixelChannels[1][1] * (31 - largestDiff / 2)) / 31; + blue = (pixelChannels[1][2] * (31 - largestDiff / 2)) / 31; + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_Blur(u16 *prevPixel, u16 *curPixel, u16 *nextPixel) +{ + u16 red, green, blue; + u16 prevAvg, curAvg, nextAvg; + u16 prevDiff, nextDiff; + u32 diff; + u16 factor; + + if (*prevPixel == *curPixel && *nextPixel == *curPixel) + return *curPixel; + + red = (*curPixel >> 0) & 0x1F; + green = (*curPixel >> 5) & 0x1F; + blue = (*curPixel >> 10) & 0x1F; + + prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3; + curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3; + nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3; + + if (prevAvg == curAvg && nextAvg == curAvg) + return *curPixel; + + if (prevAvg > curAvg) + prevDiff = prevAvg - curAvg; + else + prevDiff = curAvg - prevAvg; + + if (nextAvg > curAvg) + nextDiff = nextAvg - curAvg; + else + nextDiff = curAvg - nextAvg; + + if (prevDiff >= nextDiff) + diff = prevDiff; + else + diff = nextDiff; + + factor = 31 - diff / 2; + red = (red * factor) / 31; + green = (green * factor) / 31; + blue = (blue * factor) / 31; + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_BlurHard(u16 *prevPixel, u16 *curPixel, u16 *nextPixel) +{ + u16 red, green, blue; + u16 prevAvg, curAvg, nextAvg; + u16 prevDiff, nextDiff; + u32 diff; + u16 factor; + + if (*prevPixel == *curPixel && *nextPixel == *curPixel) + return *curPixel; + + red = (*curPixel >> 0) & 0x1F; + green = (*curPixel >> 5) & 0x1F; + blue = (*curPixel >> 10) & 0x1F; + + prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3; + curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3; + nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3; + + if (prevAvg == curAvg && nextAvg == curAvg) + return *curPixel; + + if (prevAvg > curAvg) + prevDiff = prevAvg - curAvg; + else + prevDiff = curAvg - prevAvg; + + if (nextAvg > curAvg) + nextDiff = nextAvg - curAvg; + else + nextDiff = curAvg - nextAvg; + + if (prevDiff >= nextDiff) + diff = prevDiff; + else + diff = nextDiff; + + factor = 31 - diff; + red = (red * factor) / 31; + green = (green * factor) / 31; + blue = (blue * factor) / 31; + return RGB2(red, green, blue); +} + +void ConvertImageProcessingToGBA(struct ImageProcessingContext *context) +{ + u16 i, j, k; + u16 *src, *dest, *src_, *dest_; + u16 width, height; + + width = context->canvasWidth >> 3; + height = context->canvasHeight >> 3; + src_ = context->canvasPixels; + dest_ = context->dest; + + if (context->var_16 == 2) + { + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + for (k = 0; k < 8; k++) + { + dest = dest_ + ((i * width + j) << 5) + (k << 2); + src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3); + + dest[0] = src[0] | (src[1] << 8); + dest[1] = src[2] | (src[3] << 8); + dest[2] = src[4] | (src[5] << 8); + dest[3] = src[6] | (src[7] << 8); + } + } + } + } + else + { + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + for (k = 0; k < 8; k++) + { + dest = dest_ + ((i * width + j) << 4) + (k << 1); + src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3); + + dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 0xC); + dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 0xC); + } + } + } + } +} + +void ApplyImageProcessingQuantization(struct ImageProcessingContext *context) +{ + gCanvasPaletteStart = context->paletteStart * 16; + gCanvasPalette = &context->canvasPalette[gCanvasPaletteStart]; + gCanvasPixels = context->canvasPixels; + gCanvasColumnStart = context->columnStart; + gCanvasRowStart = context->rowStart; + gCanvasColumnEnd = context->columnEnd; + gCanvasRowEnd = context->rowEnd; + gCanvasWidth = context->canvasWidth; + gCanvasHeight = context->canvasHeight; + + switch (context->quantizeEffect) + { + case QUANTIZE_EFFECT_STANDARD: + QuantizePalette_Standard(FALSE); + break; + case QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS: + QuantizePalette_Standard(TRUE); + break; + case QUANTIZE_EFFECT_PRIMARY_COLORS: + SetPresetPalette_PrimaryColors(); + QuantizePalette_PrimaryColors(); + break; + case QUANTIZE_EFFECT_GRAYSCALE: + SetPresetPalette_Grayscale(); + QuantizePalette_Grayscale(); + break; + case QUANTIZE_EFFECT_GRAYSCALE_SMALL: + SetPresetPalette_GrayscaleSmall(); + QuantizePalette_GrayscaleSmall(); + break; + case QUANTIZE_EFFECT_BLACK_WHITE: + SetPresetPalette_BlackAndWhite(); + QuantizePalette_BlackAndWhite(); + break; + } +} + +static void SetPresetPalette_PrimaryColors(void) +{ + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(6, 6, 6); + gCanvasPalette[2] = RGB2(29, 29, 29); + gCanvasPalette[3] = RGB2(11, 11, 11); + gCanvasPalette[4] = RGB2(29, 6, 6); + gCanvasPalette[5] = RGB2(6, 29, 6); + gCanvasPalette[6] = RGB2(6, 6, 29); + gCanvasPalette[7] = RGB2(29, 29, 6); + gCanvasPalette[8] = RGB2(29, 6, 29); + gCanvasPalette[9] = RGB2(6, 29, 29); + gCanvasPalette[10] = RGB2(29, 11, 6); + gCanvasPalette[11] = RGB2(11, 29, 6); + gCanvasPalette[12] = RGB2(6, 11, 29); + gCanvasPalette[13] = RGB2(29, 6, 11); + gCanvasPalette[14] = RGB2(6, 29, 11); + gCanvasPalette[15] = RGB2(11, 6, 29); +} + +static void SetPresetPalette_BlackAndWhite(void) +{ + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(0, 0, 0); + gCanvasPalette[2] = RGB2(31, 31, 31); +} + +static void SetPresetPalette_GrayscaleSmall(void) +{ + u8 i; + + gCanvasPalette[0] = RGB2(0, 0, 0); + gCanvasPalette[1] = RGB2(0, 0, 0); + for (i = 0; i < 14; i++) + gCanvasPalette[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2)); +} + +static void SetPresetPalette_Grayscale(void) +{ + u8 i; + + gCanvasPalette[0] = RGB2(0, 0, 0); + for (i = 0; i < 32; i++) + gCanvasPalette[i + 1] = RGB2(i, i, i); +} + +static void QuantizePalette_Standard(bool8 useLimitedPalette) +{ + u8 i, j; + u16 maxIndex; + + maxIndex = 0xDF; + if (!useLimitedPalette) + maxIndex = 0xFF; + + for (i = 0; i < maxIndex; i++) + gCanvasPalette[i] = RGB_BLACK; + + gCanvasPalette[maxIndex] = RGB2(15, 15, 15); + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + { + *pixel = gCanvasPaletteStart; + } + else + { + u16 quantizedColor = QuantizePixel_Standard(pixel); + u8 curIndex = 1; + if (curIndex < maxIndex) + { + if (gCanvasPalette[curIndex] == RGB_BLACK) + { + // The quantized color does not match any existing color in the + // palette, so we add it to the palette. + // This if block seems pointless because the below while loop handles + // this same logic. + gCanvasPalette[curIndex] = quantizedColor; + *pixel = gCanvasPaletteStart + curIndex; + } + else + { + while (curIndex < maxIndex) + { + if (gCanvasPalette[curIndex] == RGB_BLACK) + { + // The quantized color does not match any existing color in the + // palette, so we add it to the palette. + gCanvasPalette[curIndex] = quantizedColor; + *pixel = gCanvasPaletteStart + curIndex; + break; + } + + if (gCanvasPalette[curIndex] == quantizedColor) + { + // The quantized color matches this existing color in the + // palette, so we use this existing color for the pixel. + *pixel = gCanvasPaletteStart + curIndex; + break; + } + + curIndex++; + } + } + } + + if (curIndex == maxIndex) + { + // The entire palette's colors are already in use, which means + // the base image has too many colors to handle. This error is handled + // by marking such pixels as gray color. + curIndex = maxIndex; + *pixel = curIndex; + } + } + } + } +} + +static void QuantizePalette_BlackAndWhite(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + { + *pixel = gCanvasPaletteStart; + } + else + { + if (QuantizePixel_BlackAndWhite(pixel) == RGB_BLACK) + { + // Black is the first color in the quantized palette. + *pixel = gCanvasPaletteStart + 1; + } + else + { + // White is the second color in the quantized palette. + *pixel = gCanvasPaletteStart + 2; + } + } + } + } +} + +static void QuantizePalette_GrayscaleSmall(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_GrayscaleSmall(pixel) + gCanvasPaletteStart; + } + } +} + +static void QuantizePalette_Grayscale(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_Grayscale(pixel) + gCanvasPaletteStart; + } + } +} + +static void QuantizePalette_PrimaryColors(void) +{ + u8 i, j; + + for (j = 0; j < gCanvasRowEnd; j++) + { + u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth]; + u16 *pixel = &pixelRow[gCanvasColumnStart]; + for (i = 0; i < gCanvasColumnEnd; i++, pixel++) + { + if (*pixel & 0x8000) + *pixel = gCanvasPaletteStart; + else + *pixel = QuantizePixel_PrimaryColors(pixel) + gCanvasPaletteStart; + } + } +} + +// Quantizes the pixel's color channels to nearest multiple of 4, and clamps to [6, 30]. +static u16 QuantizePixel_Standard(u16 *pixel) +{ + u16 red = *pixel & 0x1F; + u16 green = (*pixel >> 5) & 0x1F; + u16 blue = (*pixel >> 10) & 0x1F; + + // Quantize color channels to muliples of 4, rounding up. + if (red & 3) + red = (red & 0x1C) + 4; + if (green & 3) + green = (green & 0x1C) + 4; + if (blue & 3) + blue = (blue & 0x1C) + 4; + + // Clamp channels to [6, 30]. + if (red < 6) + red = 6; + if (red > 30) + red = 30; + if (green < 6) + green = 6; + if (green > 30) + green = 30; + if (blue < 6) + blue = 6; + if (blue > 30) + blue = 30; + + return RGB2(red, green, blue); +} + +static u16 QuantizePixel_PrimaryColors(u16* color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + + if (red < 12 && green < 11 && blue < 11) + return 1; + + if (red > 19 && green > 19 && blue > 19) + return 2; + + if (red > 19) + { + if (green > 19) + { + if (blue > 14) + return 2; + else + return 7; + } + else if (blue > 19) + { + if (green > 14) + return 2; + else + return 8; + } + } + + if (green > 19 && blue > 19) + { + if (red > 14) + return 2; + else + return 9; + } + + if (red > 19) + { + if (green > 11) + { + if (blue > 11) + { + if (green < blue) + return 8; + else + return 7; + } + else + { + return 10; + } + } + else if (blue > 11) + { + return 13; + } + else + { + return 4; + } + } + + if (green > 19) + { + if (red > 11) + { + if (blue > 11) + { + if (red < blue) + return 9; + else + return 7; + } + else + { + return 11; + } + } + else + { + if (blue > 11) + return 14; + else + return 5; + } + } + + if (blue > 19) + { + if (red > 11) + { + if (green > 11) + { + if (red < green) + return 9; + else + return 8; + } + } + else if (green > 11) + { + return 12; + } + + if (blue > 11) + return 15; + else + return 6; + } + + return 3; +} + +static u16 QuantizePixel_GrayscaleSmall(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + u16 average = ((red + green + blue) / 3) & 0x1E; + if (average == 0) + return 1; + else + return average / 2; +} + +static u16 QuantizePixel_Grayscale(u16 *color) +{ + u16 red = *color & 0x1F; + u16 green = (*color >> 5) & 0x1F; + u16 blue = (*color >> 10) & 0x1F; + u16 average = (red + green + blue) / 3; + return average + 1; +} diff --git a/sym_common.txt b/sym_common.txt index 17f0cd306..b41ec5ff2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -61,37 +61,8 @@ gUnknown_3005078: @ 3005078 @ what is this? .space 0x20 - -gUnknown_3005330: @ 3005330 - .space 0x4 - -gUnknown_3005334: @ 3005334 - .space 0x4 - -gUnknown_3005338: @ 3005338 - .space 0x4 - -gUnknown_300533C: @ 300533C - .space 0x4 - -gUnknown_3005340: @ 3005340 - .space 0x4 - -gUnknown_3005344: @ 3005344 - .space 0x4 - -gUnknown_3005348: @ 3005348 - .space 0x4 - -gUnknown_300534C: @ 300534C - .space 0x4 - -gUnknown_3005350: @ 3005350 - .space 0x4 - -gUnknown_3005354: @ 3005354 - .space 0xC - + .align 2 + .include "image_processing_effects.o" .align 2 .include "field_specials.o" .align 2 -- cgit v1.2.3 From f257e2006afa37f5b2b96be93abc198363bc1c0a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 20:51:12 -0500 Subject: Port region_map rodata to C --- data/region_map.s | 1224 ----------------------------------------------------- include/strings.h | 19 + ld_script.txt | 1 - src/region_map.c | 1056 ++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 1006 insertions(+), 1294 deletions(-) delete mode 100644 data/region_map.s diff --git a/data/region_map.s b/data/region_map.s deleted file mode 100644 index 14ea9c5f4..000000000 --- a/data/region_map.s +++ /dev/null @@ -1,1224 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" -#include "constants/region_map.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83EF23C:: @ 83EF23C gbapal - .incbin "graphics/region_map/unk_83EF23C.gbapal" - -gUnknown_83EF25C:: @ 83EF25C gbapal - .incbin "graphics/region_map/unk_83EF25C.gbapal" - -gUnknown_83EF27C:: @ 83EF27C gbapal - .incbin "graphics/region_map/unk_83EF27C.gbapal" - -gUnknown_83EF29C:: @ 83EF29C gbapal - .incbin "graphics/region_map/unk_83EF29C.gbapal" - -gUnknown_83EF2BC:: @ 83EF2BC gbapal - .incbin "graphics/region_map/unk_83EF2BC.gbapal" - -gUnknown_83EF2DC:: @ 83EF2DC gbapal - .incbin "graphics/region_map/unk_83EF2DC.gbapal" - - .2byte 0x7c00, 0x7d80, 0x7fff, 0x7fff - -gUnknown_83EF384:: @ 83EF384 gbapal - .incbin "graphics/region_map/unk_83EF384.gbapal" - -gUnknown_83EF3A4:: @ 83EF3A4 gbapal - .incbin "graphics/region_map/unk_83EF3A4.gbapal" - -gUnknown_83EF3C4:: @ 83EF3C4 pal=gUnknown_83EF384 - .incbin "graphics/region_map/unk_83EF3C4.4bpp.lz" - -gUnknown_83EF450:: @ 83EF450 pal=gUnknown_83EF384 - .incbin "graphics/region_map/unk_83EF450.4bpp.lz" - -gUnknown_83EF4E0:: @ 83EF4E0 pal=gUnknown_83EF25C - .incbin "graphics/region_map/unk_83EF4E0.4bpp.lz" - -gUnknown_83EF524:: @ 83EF524 pal=gUnknown_83EF27C - .incbin "graphics/region_map/unk_83EF524.4bpp.lz" - -gUnknown_83EF59C:: @ 83EF59C pal=gUnknown_83EF29C - .incbin "graphics/region_map/unk_83EF59C.4bpp.lz" - -gUnknown_83EF61C:: @ 83EF61C - .incbin "graphics/region_map/unk_83EF61C.4bpp.lz" - -gUnknown_83F0330:: @ 83F0330 - .incbin "graphics/region_map/unk_83F0330.4bpp.lz" - -gUnknown_83F0580:: @ 83F0580 - .incbin "graphics/region_map/unk_83F0580.bin.lz" - -gUnknown_83F089C:: @ 83F089C - .incbin "graphics/region_map/unk_83F089C.bin.lz" - -gUnknown_83F0AFC:: @ 83F0AFC - .incbin "graphics/region_map/unk_83F0AFC.bin.lz" - -gUnknown_83F0C0C:: @ 83F0C0C - .incbin "graphics/region_map/unk_83F0C0C.bin.lz" - -gUnknown_83F0CF0:: @ 83F0CF0 - .incbin "graphics/region_map/unk_83F0CF0.bin.lz" - -gUnknown_83F0E0C:: @ 83F0E0C - .incbin "graphics/region_map/unk_83F0E0C.bin.lz" - -gUnknown_83F0F1C:: @ 83F0F1C - .incbin "graphics/region_map/unk_83F0F1C.bin.lz" - -gUnknown_83F1084:: @ 83F1084 - .incbin "graphics/region_map/unk_83F1084.bin.lz" - -gUnknown_83F1190:: @ 83F1190 - .incbin "graphics/region_map/unk_83F1190.bin.lz" - -gUnknown_83F12CC:: @ 83F12CC pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F12CC.4bpp.lz" - -gUnknown_83F13EC:: @ 83F13EC pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F13EC.4bpp.lz" - -gUnknown_83F1550:: @ 83F1550 pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F1550.4bpp.lz" - -gUnknown_83F1640:: @ 83F1640 pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F1640.4bpp.lz" - -gUnknown_83F1738:: @ 83F1738 pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F1738.4bpp.lz" - -gUnknown_83F1804:: @ 83F1804 pal=gUnknown_83EF3A4 - .incbin "graphics/region_map/unk_83F1804.4bpp.lz" - -gUnknown_83F18D8:: @ 83F18D8 pal=gUnknown_83EF2BC - .incbin "graphics/region_map/unk_83F18D8.4bpp.lz" - -gUnknown_83F1908:: @ 83F1908 pal=gUnknown_83EF2BC - .incbin "graphics/region_map/unk_83F1908.4bpp.lz" - -gUnknown_83F1978:: @ 83F1978 - .incbin "graphics/region_map/unk_83F1978.4bpp.lz" - -gUnknown_83F19A0:: @ 83F19A0 - .incbin "graphics/region_map/unk_83F19A0.bin.lz" - -gUnknown_83F1A50:: @ 83F1A50 - .4byte 0x000021e0 - @ { - @ .bg = 0, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 30, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000030f5 - @ { - @ .bg = 1, - @ .charBaseIndex = 1, - @ .mapBaseIndex = 15, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - .4byte 0x0000117a - @ { - @ .bg = 2, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 23, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x000001ff - @ { - @ .bg = 3, - @ .charBaseIndex = 3, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - -gUnknown_83F1A60:: @ 83F1A60 - .byte 3, 3, 2, 15, 2, 12 - .2byte 0x0001 - @ { - @ .bg = 3, - @ .tilemapLeft = 3, - @ .tilemapTop = 2, - @ .width = 15, - @ .height = 2, - @ .paletteNum = 12, - @ .baseBlock = 0x0001 - @ } - .byte 3, 3, 4, 15, 2, 12 - .2byte 0x001f - @ { - @ .bg = 3, - @ .tilemapLeft = 3, - @ .tilemapTop = 4, - @ .width = 15, - @ .height = 2, - @ .paletteNum = 12, - @ .baseBlock = 0x001f - @ } - .byte 3, 3, 6, 25, 11, 12 - .2byte 0x003d - @ { - @ .bg = 3, - @ .tilemapLeft = 3, - @ .tilemapTop = 6, - @ .width = 25, - @ .height = 11, - @ .paletteNum = 12, - @ .baseBlock = 0x003d - @ } - .byte 3, 18, 0, 5, 2, 12 - .2byte 0x0150 - @ { - @ .bg = 3, - @ .tilemapLeft = 18, - @ .tilemapTop = 0, - @ .width = 5, - @ .height = 2, - @ .paletteNum = 12, - @ .baseBlock = 0x0150 - @ } - .byte 3, 24, 0, 5, 2, 12 - .2byte 0x015a - @ { - @ .bg = 3, - @ .tilemapLeft = 24, - @ .tilemapTop = 0, - @ .width = 5, - @ .height = 2, - @ .paletteNum = 12, - @ .baseBlock = 0x015a - @ } - .byte 255, 0, 0, 0, 0, 0 - .2byte 0x0000 - @ { - @ .bg = 255, - @ .tilemapLeft = 0, - @ .tilemapTop = 0, - @ .width = 0, - @ .height = 0, - @ .paletteNum = 0, - @ .baseBlock = 0x0000 - @ } - -gUnknown_83F1A90:: @ 83F1A90 - .byte 0, 1, 2 - - .align 2 -gUnknown_83F1A94:: @ 83F1A94 - .byte 0, 7, 2 - - .align 2 -gUnknown_83F1A98:: @ 83F1A98 - .byte 0, 10, 2 - - .align 2 -gUnknown_83F1A9C:: @ 83F1A9C - .4byte gUnknown_83F1A94 - .4byte gUnknown_83F1A98 - -sSeviiMapsecs:: @ 83F1AA4 - .byte MAPSEC_ONE_ISLAND - .byte MAPSEC_TWO_ISLAND - .byte MAPSEC_THREE_ISLAND - .byte MAPSEC_KINDLE_ROAD - .byte MAPSEC_TREASURE_BEACH - .byte MAPSEC_CAPE_BRINK - .byte MAPSEC_BOND_BRIDGE - .byte MAPSEC_THREE_ISLE_PORT - .byte MAPSEC_MT_EMBER - .byte MAPSEC_BERRY_FOREST - .byte MAPSEC_THREE_ISLE_PATH - .byte MAPSEC_EMBER_SPA - .byte MAPSEC_NONE - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .byte MAPSEC_FOUR_ISLAND - .byte MAPSEC_FIVE_ISLAND - .byte MAPSEC_SEVII_ISLE_6 - .byte MAPSEC_SEVII_ISLE_7 - .byte MAPSEC_SEVII_ISLE_8 - .byte MAPSEC_SEVII_ISLE_9 - .byte MAPSEC_RESORT_GORGEOUS - .byte MAPSEC_WATER_LABYRINTH - .byte MAPSEC_FIVE_ISLE_MEADOW - .byte MAPSEC_MEMORIAL_PILLAR - .byte MAPSEC_NAVEL_ROCK - .byte MAPSEC_ICEFALL_CAVE - .byte MAPSEC_ROCKET_WAREHOUSE - .byte MAPSEC_LOST_CAVE - .byte MAPSEC_NONE - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .byte MAPSEC_SEVEN_ISLAND - .byte MAPSEC_SIX_ISLAND - .byte MAPSEC_OUTCAST_ISLAND - .byte MAPSEC_GREEN_PATH - .byte MAPSEC_WATER_PATH - .byte MAPSEC_RUIN_VALLEY - .byte MAPSEC_TRAINER_TOWER - .byte MAPSEC_CANYON_ENTRANCE - .byte MAPSEC_SEVAULT_CANYON - .byte MAPSEC_TANOBY_RUINS - .byte MAPSEC_SEVII_ISLE_22 - .byte MAPSEC_SEVII_ISLE_23 - .byte MAPSEC_SEVII_ISLE_24 - .byte MAPSEC_TRAINER_TOWER_2 - .byte MAPSEC_DOTTED_HOLE - .byte MAPSEC_PATTERN_BUSH - .byte MAPSEC_ALTERING_CAVE - .byte MAPSEC_TANOBY_CHAMBERS - .byte MAPSEC_TANOBY_KEY - .byte MAPSEC_BIRTH_ISLAND - .byte MAPSEC_MONEAN_CHAMBER - .byte MAPSEC_LIPTOO_CHAMBER - .byte MAPSEC_WEEPTH_CHAMBER - .byte MAPSEC_DILFORD_CHAMBER - .byte MAPSEC_SCUFIB_CHAMBER - .byte MAPSEC_RIXY_CHAMBER - .byte MAPSEC_VIAPOIS_CHAMBER - .byte MAPSEC_NONE - .byte 0x00, 0x00 - - .align 2 -gUnknown_83F1B00:: @ 83F1B00 - .byte 1, 1, 1, 0 - .byte 0, 0, 0, 0 - .byte 0, 0, 0, 1 - -gUnknown_83F1B0C:: @ 83F1B0C - .2byte 0x0018, 0x0010, 0x0090, 0x0020 - .2byte 0x0018, 0x0020, 0x0090, 0x0030 - .2byte 0x0000, 0x0000, 0x0000, 0x0000 - -gUnknown_83F1B24:: @ 83F1B24 - .4byte 0x80000000, 0x00000000 - -gAnimCmd_83F1B2C:: - obj_image_anim_frame 0x00, 20 - obj_image_anim_frame 0x10, 20 - obj_image_anim_jump 0 - -gUnknown_83F1B38:: @ 83F1B38 - .4byte gAnimCmd_83F1B2C - -gUnknown_83F1B3C:: @ 83F1B3C - .2byte MAPSEC_VIRIDIAN_FOREST - .align 2 - .4byte gMapSecName_ViridianForest - .4byte gUnknown_8418ECB - .2byte MAPSEC_MT_MOON - .align 2 - .4byte gMapSecName_MtMoon - .4byte gUnknown_8418F3A - .2byte MAPSEC_DIGLETTS_CAVE - .align 2 - .4byte gMapSecName_DiglettsCave - .4byte gUnknown_8418FB8 - .2byte MAPSEC_KANTO_VICTORY_ROAD - .align 2 - .4byte gMapSecName_VictoryRoad - .4byte gUnknown_841901C - .2byte MAPSEC_POKEMON_MANSION - .align 2 - .4byte gMapSecName_PokemonMansion - .4byte gUnknown_841908E - .2byte MAPSEC_KANTO_SAFARI_ZONE - .align 2 - .4byte gMapSecName_SafariZone - .4byte gUnknown_8419103 - .2byte MAPSEC_ROCK_TUNNEL - .align 2 - .4byte gMapSecName_RockTunnel - .4byte gUnknown_841917D - .2byte MAPSEC_SEAFOAM_ISLANDS - .align 2 - .4byte gMapSecName_SeafoamIslands - .4byte gUnknown_8419201 - .2byte MAPSEC_POKEMON_TOWER - .align 2 - .4byte gMapSecName_PokemonTower - .4byte gUnknown_841926D - .2byte MAPSEC_CERULEAN_CAVE - .align 2 - .4byte gMapSecName_CeruleanCave - .4byte gUnknown_84192E2 - .2byte MAPSEC_POWER_PLANT - .align 2 - .4byte gMapSecName_PowerPlant - .4byte gUnknown_841935B - .2byte MAPSEC_MT_EMBER - .align 2 - .4byte gMapSecName_MtEmber - .4byte gUnknown_84193D5 - .2byte MAPSEC_BERRY_FOREST - .align 2 - .4byte gMapSecName_BerryForest - .4byte gUnknown_8419444 - .2byte MAPSEC_ICEFALL_CAVE - .align 2 - .4byte gMapSecName_IcefallCave - .4byte gUnknown_84194C9 - .2byte MAPSEC_LOST_CAVE - .align 2 - .4byte gMapSecName_LostCave - .4byte gUnknown_841953F - .2byte MAPSEC_TANOBY_CHAMBERS - .align 2 - .4byte gMapSecName_TanobyChambers - .4byte gUnknown_84195AC - .2byte MAPSEC_ALTERING_CAVE - .align 2 - .4byte gMapSecName_AlteringCave - .4byte gUnknown_8419629 - .2byte MAPSEC_PATTERN_BUSH - .align 2 - .4byte gMapSecName_PatternBush - .4byte gUnknown_841969D - .2byte MAPSEC_DOTTED_HOLE - .align 2 - .4byte gMapSecName_DottedHole - .4byte gUnknown_841971A - -gUnknown_83F1C20:: @ 83F1C20 - .4byte 0xc0008000, 0x00000000 - -gAnimCmd_83f1c28:: - obj_image_anim_frame 0, 0 - obj_image_anim_jump 0 - -gUnknown_83F1C30:: @ 83F1C30 - .4byte gAnimCmd_83f1c28 - -gUnknown_83F1C34:: @ 83F1C34 - .2byte 0x0018, 0x0010, 0x00d8, 0x00a0 - -gUnknown_83F1C3C:: @ 83F1C3C - .4byte 0x40000000, 0x00000800 - -gAnimCmd_83F1C44:: - obj_image_anim_frame 0, 20 - obj_image_anim_frame 4, 20 - obj_image_anim_jump 0 - -gUnknown_83F1C50:: @ 83F1C50 - .4byte gAnimCmd_83F1C44 - -gUnknown_83F1C54:: @ 83F1C54 - .4byte 0x40000000, 0x00000800 - -gAnimCmd_83F1C5C:: - obj_image_anim_frame 0, 5 - obj_image_anim_end - -gUnknown_83F1C64:: @ 83F1C64 - .4byte gAnimCmd_83F1C5C - -gUnknown_83F1C68:: @ 83F1C68 - .4byte 0x40000000, 0x00000800 - -gUnknown_83F1C70:: @ 83F1C70 - .4byte 0x00000000, 0x00000800 - -gAnimCmd_83F1C78:: - obj_image_anim_frame 0, 30 - obj_image_anim_frame 4, 60 - obj_image_anim_jump 0 - -gAnimCmd_83F1C84:: - obj_image_anim_frame 1, 20 - obj_image_anim_jump 0 - -gAnimCmd_83F1C8C:: - obj_image_anim_frame 0, 20 - obj_image_anim_jump 0 - -gUnknown_83F1C94:: @ 83F1C94 - .4byte gAnimCmd_83F1C78 - -gUnknown_83F1C98:: @ 83F1C98 - .4byte gAnimCmd_83F1C84 - .4byte gAnimCmd_83F1C8C - -gUnknown_83F1CA0:: @ 83F1CA0 - .2byte 0x2000 @ DISPCNT_WIN0_ON - .2byte 0x4000 @ DISPCNT_WIN1_ON - -gUnknown_83F1CA4:: @ 83F1CA4 - .byte OFFSET_REG_WIN0V - .byte OFFSET_REG_WIN0H - .byte OFFSET_REG_WIN1V - .byte OFFSET_REG_WIN1H - -gUnknown_83F1CA8:: @ 83F1CA8 - .byte 15, 1, 2 - - .align 2 -gUnknown_83F1CAC:: @ 83F1CAC - .4byte gMapSecName_PalletTown - .4byte gMapSecName_ViridianCity - .4byte gMapSecName_PewterCity - .4byte gMapSecName_CeruleanCity - .4byte gMapSecName_LavenderTown - .4byte gMapSecName_VermilionCity - .4byte gMapSecName_CeladonCity - .4byte gMapSecName_FuchsiaCity - .4byte gMapSecName_CinnabarIsland - .4byte gMapSecName_IndigoPlateau - .4byte gMapSecName_SaffronCity - .4byte gMapSecName_Route4 - .4byte gMapSecName_Route10 - .4byte gMapSecName_Route1 - .4byte gMapSecName_Route2 - .4byte gMapSecName_Route3 - .4byte gMapSecName_Route4_2 - .4byte gMapSecName_Route5 - .4byte gMapSecName_Route6 - .4byte gMapSecName_Route7 - .4byte gMapSecName_Route8 - .4byte gMapSecName_Route9 - .4byte gMapSecName_Route10_2 - .4byte gMapSecName_Route11 - .4byte gMapSecName_Route12 - .4byte gMapSecName_Route13 - .4byte gMapSecName_Route14 - .4byte gMapSecName_Route15 - .4byte gMapSecName_Route16 - .4byte gMapSecName_Route17 - .4byte gMapSecName_Route18 - .4byte gMapSecName_Route19 - .4byte gMapSecName_Route20 - .4byte gMapSecName_Route21 - .4byte gMapSecName_Route22 - .4byte gMapSecName_Route23 - .4byte gMapSecName_Route24 - .4byte gMapSecName_Route25 - .4byte gMapSecName_ViridianForest - .4byte gMapSecName_MtMoon - .4byte gMapSecName_SSAnne - .4byte gMapSecName_UndergroundPath - .4byte gMapSecName_UndergroundPath_2 - .4byte gMapSecName_DiglettsCave - .4byte gMapSecName_VictoryRoad - .4byte gMapSecName_RocketHideout - .4byte gMapSecName_SilphCo - .4byte gMapSecName_PokemonMansion - .4byte gMapSecName_SafariZone - .4byte gMapSecName_PokemonLeague - .4byte gMapSecName_RockTunnel - .4byte gMapSecName_SeafoamIslands - .4byte gMapSecName_PokemonTower - .4byte gMapSecName_CeruleanCave - .4byte gMapSecName_PowerPlant - .4byte gMapSecName_OneIsland - .4byte gMapSecName_TwoIsland - .4byte gMapSecName_ThreeIsland - .4byte gMapSecName_FourIsland - .4byte gMapSecName_FiveIsland - .4byte gMapSecName_SevenIsland - .4byte gMapSecName_SixIsland - .4byte gMapSecName_KindleRoad - .4byte gMapSecName_TreasureBeach - .4byte gMapSecName_CapeBrink - .4byte gMapSecName_BondBridge - .4byte gMapSecName_ThreeIslePort - .4byte gMapSecName_SeviiIsle6 - .4byte gMapSecName_SeviiIsle7 - .4byte gMapSecName_SeviiIsle8 - .4byte gMapSecName_SeviiIsle9 - .4byte gMapSecName_ResortGorgeous - .4byte gMapSecName_WaterLabyrinth - .4byte gMapSecName_FiveIsleMeadow - .4byte gMapSecName_MemorialPillar - .4byte gMapSecName_OutcastIsland - .4byte gMapSecName_GreenPath - .4byte gMapSecName_WaterPath - .4byte gMapSecName_RuinValley - .4byte gMapSecName_TrainerTower - .4byte gMapSecName_CanyonEntrance - .4byte gMapSecName_SevaultCanyon - .4byte gMapSecName_TanobyRuins - .4byte gMapSecName_SeviiIsle22 - .4byte gMapSecName_SeviiIsle23 - .4byte gMapSecName_SeviiIsle24 - .4byte gMapSecName_NavelRock - .4byte gMapSecName_MtEmber - .4byte gMapSecName_BerryForest - .4byte gMapSecName_IcefallCave - .4byte gMapSecName_RocketWarehouse - .4byte gMapSecName_TrainerTower_2 - .4byte gMapSecName_DottedHole - .4byte gMapSecName_LostCave - .4byte gMapSecName_PatternBush - .4byte gMapSecName_AlteringCave - .4byte gMapSecName_TanobyChambers - .4byte gMapSecName_ThreeIslePath - .4byte gMapSecName_TanobyKey - .4byte gMapSecName_BirthIsland - .4byte gMapSecName_MoneanChamber - .4byte gMapSecName_LiptooChamber - .4byte gMapSecName_WeepthChamber - .4byte gMapSecName_DilfordChamber - .4byte gMapSecName_ScufibChamber - .4byte gMapSecName_RixyChamber - .4byte gMapSecName_ViapoisChamber - .4byte gMapSecName_EmberSpa - .4byte gMapSecName_CeladonDept - -gUnknown_83F1E60:: @ 83F1E60 - .2byte 0x04, 0x0b - .2byte 0x04, 0x08 - .2byte 0x04, 0x04 - .2byte 0x0e, 0x03 - .2byte 0x12, 0x06 - .2byte 0x0e, 0x09 - .2byte 0x0b, 0x06 - .2byte 0x0c, 0x0c - .2byte 0x04, 0x0e - .2byte 0x02, 0x03 - .2byte 0x0e, 0x06 - .2byte 0x08, 0x03 - .2byte 0x12, 0x03 - .2byte 0x04, 0x09 - .2byte 0x04, 0x05 - .2byte 0x05, 0x04 - .2byte 0x08, 0x03 - .2byte 0x0e, 0x04 - .2byte 0x0e, 0x07 - .2byte 0x0c, 0x06 - .2byte 0x0f, 0x06 - .2byte 0x0f, 0x03 - .2byte 0x12, 0x03 - .2byte 0x0f, 0x09 - .2byte 0x12, 0x07 - .2byte 0x10, 0x0b - .2byte 0x0f, 0x0b - .2byte 0x0d, 0x0c - .2byte 0x07, 0x06 - .2byte 0x07, 0x07 - .2byte 0x07, 0x0c - .2byte 0x0c, 0x0d - .2byte 0x05, 0x0e - .2byte 0x04, 0x0c - .2byte 0x02, 0x08 - .2byte 0x02, 0x04 - .2byte 0x0e, 0x01 - .2byte 0x0f, 0x01 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x01, 0x08 - .2byte 0x09, 0x09 - .2byte 0x12, 0x0c - .2byte 0x03, 0x04 - .2byte 0x10, 0x0b - .2byte 0x05, 0x08 - .2byte 0x11, 0x05 - .2byte 0x02, 0x03 - .2byte 0x01, 0x09 - .2byte 0x09, 0x07 - .2byte 0x0d, 0x0c - .2byte 0x12, 0x0d - .2byte 0x04, 0x03 - .2byte 0x05, 0x04 - .2byte 0x01, 0x04 - .2byte 0x04, 0x05 - .2byte 0x10, 0x09 - .2byte 0x0e, 0x0a - .2byte 0x11, 0x0a - .2byte 0x12, 0x0c - .2byte 0x0f, 0x00 - .2byte 0x0f, 0x03 - .2byte 0x12, 0x03 - .2byte 0x10, 0x07 - .2byte 0x05, 0x06 - .2byte 0x05, 0x09 - .2byte 0x06, 0x09 - .2byte 0x03, 0x0c - .2byte 0x09, 0x0c - .2byte 0x03, 0x0e - .2byte 0x02, 0x0c - .2byte 0x0a, 0x08 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x12, 0x0d - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - -gUnknown_83F2178:: @ 83F2178 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x02 - .2byte 0x01, 0x03 - .2byte 0x04, 0x01 - .2byte 0x06, 0x01 - .2byte 0x01, 0x02 - .2byte 0x01, 0x02 - .2byte 0x02, 0x01 - .2byte 0x03, 0x01 - .2byte 0x03, 0x01 - .2byte 0x01, 0x03 - .2byte 0x03, 0x01 - .2byte 0x01, 0x05 - .2byte 0x02, 0x01 - .2byte 0x01, 0x02 - .2byte 0x02, 0x01 - .2byte 0x04, 0x01 - .2byte 0x01, 0x05 - .2byte 0x05, 0x01 - .2byte 0x01, 0x02 - .2byte 0x07, 0x01 - .2byte 0x01, 0x02 - .2byte 0x02, 0x01 - .2byte 0x01, 0x04 - .2byte 0x01, 0x02 - .2byte 0x02, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x06 - .2byte 0x01, 0x02 - .2byte 0x01, 0x02 - .2byte 0x04, 0x01 - .2byte 0x02, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x03, 0x01 - .2byte 0x01, 0x02 - .2byte 0x03, 0x01 - .2byte 0x03, 0x01 - .2byte 0x01, 0x03 - .2byte 0x01, 0x03 - .2byte 0x01, 0x03 - .2byte 0x03, 0x01 - .2byte 0x01, 0x05 - .2byte 0x02, 0x02 - .2byte 0x01, 0x02 - .2byte 0x01, 0x01 - .2byte 0x01, 0x03 - .2byte 0x07, 0x01 - .2byte 0x01, 0x03 - .2byte 0x06, 0x01 - .2byte 0x01, 0x03 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x01, 0x01 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - .2byte 0x00, 0x00 - -gUnknown_83F2490:: @ 83F2490 - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25, MAPSEC_ROUTE_25, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_INDIGO_PLATEAU, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_4_FLYDUP, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_CERULEAN_CITY, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_FLYDUP, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_PEWTER_CITY, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_CELADON_CITY, MAPSEC_ROUTE_7, MAPSEC_ROUTE_7, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_LAVENDER_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_22, MAPSEC_ROUTE_22, MAPSEC_VIRIDIAN_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERMILION_CITY, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PALLET_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_14, MAPSEC_ROUTE_13, MAPSEC_ROUTE_13, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_FUCHSIA_CITY, MAPSEC_ROUTE_15, MAPSEC_ROUTE_15, MAPSEC_ROUTE_14, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CINNABAR_ISLAND, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_MOON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CERULEAN_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROCK_TUNNEL, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POWER_PLANT, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VIRIDIAN_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_MANSION, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - -gUnknown_83F2724:: @ 83F2724 - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_ONE_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TWO_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_THREE_ISLE_PORT, MAPSEC_THREE_ISLE_PORT, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_EMBER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BERRY_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - -gUnknown_83F29B8:: @ 83F29B8 - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FOUR_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NAVEL_ROCK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLAND, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ICEFALL_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LOST_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - -gUnknown_83F2C4C:: @ 83F2C4C - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SIX_ISLAND, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVEN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BIRTH_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ALTERING_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PATTERN_BUSH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DOTTED_HOLE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE - -gUnknown_83F2EE0:: @ 83F2EE0 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x01 - .byte MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), 0x02 - .byte MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), 0x03 - .byte MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY), 0x04 - .byte MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN), 0x05 - .byte MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY), 0x06 - .byte MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY), 0x07 - .byte MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY), 0x08 - .byte MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND), 0x09 - .byte MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR), 0x0a - .byte MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY), 0x0b - .byte MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0x0c - .byte MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0x0d - .byte MAP_GROUP(ROUTE1), MAP_NUM(ROUTE1), 0x00 - .byte MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2), 0x00 - .byte MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3), 0x00 - .byte MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0x00 - .byte MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5), 0x00 - .byte MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6), 0x00 - .byte MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7), 0x00 - .byte MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8), 0x00 - .byte MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9), 0x00 - .byte MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0x00 - .byte MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11), 0x00 - .byte MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12), 0x00 - .byte MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13), 0x00 - .byte MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14), 0x00 - .byte MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15), 0x00 - .byte MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16), 0x00 - .byte MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17), 0x00 - .byte MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18), 0x00 - .byte MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19), 0x00 - .byte MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20), 0x00 - .byte MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH), 0x00 - .byte MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22), 0x00 - .byte MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23), 0x00 - .byte MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24), 0x00 - .byte MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(ONE_ISLAND), MAP_NUM(ONE_ISLAND), 0x0e - .byte MAP_GROUP(TWO_ISLAND), MAP_NUM(TWO_ISLAND), 0x0f - .byte MAP_GROUP(THREE_ISLAND), MAP_NUM(THREE_ISLAND), 0x10 - .byte MAP_GROUP(FOUR_ISLAND), MAP_NUM(FOUR_ISLAND), 0x11 - .byte MAP_GROUP(FIVE_ISLAND), MAP_NUM(FIVE_ISLAND), 0x12 - .byte MAP_GROUP(SEVEN_ISLAND), MAP_NUM(SEVEN_ISLAND), 0x13 - .byte MAP_GROUP(SIX_ISLAND), MAP_NUM(SIX_ISLAND), 0x14 - .byte MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD), 0x00 - .byte MAP_GROUP(ONE_ISLAND_TREASURE_BEACH), MAP_NUM(ONE_ISLAND_TREASURE_BEACH), 0x00 - .byte MAP_GROUP(TWO_ISLAND_CAPE_BRINK), MAP_NUM(TWO_ISLAND_CAPE_BRINK), 0x00 - .byte MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE), 0x00 - .byte MAP_GROUP(THREE_ISLAND_PORT), MAP_NUM(THREE_ISLAND_PORT), 0x00 - .byte MAP_GROUP(UNKNOWN_MAP_03_50), MAP_NUM(UNKNOWN_MAP_03_50), 0x00 - .byte MAP_GROUP(UNKNOWN_MAP_03_51), MAP_NUM(UNKNOWN_MAP_03_51), 0x00 - .byte MAP_GROUP(UNKNOWN_MAP_03_52), MAP_NUM(UNKNOWN_MAP_03_52), 0x00 - .byte MAP_GROUP(UNKNOWN_MAP_03_53), MAP_NUM(UNKNOWN_MAP_03_53), 0x00 - .byte MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS), 0x00 - .byte MAP_GROUP(FIVE_ISLAND_WATER_LABYRINTH), MAP_NUM(FIVE_ISLAND_WATER_LABYRINTH), 0x00 - .byte MAP_GROUP(FIVE_ISLAND_MEADOW), MAP_NUM(FIVE_ISLAND_MEADOW), 0x00 - .byte MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR), 0x00 - .byte MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND), 0x00 - .byte MAP_GROUP(SIX_ISLAND_GREEN_PATH), MAP_NUM(SIX_ISLAND_GREEN_PATH), 0x00 - .byte MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH), 0x00 - .byte MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY), 0x00 - .byte MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER), 0x00 - .byte MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), 0x00 - .byte MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON), 0x00 - .byte MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(NAVEL_ROCK_EXTERIOR), MAP_NUM(NAVEL_ROCK_EXTERIOR), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(BIRTH_ISLAND_EXTERIOR), MAP_NUM(BIRTH_ISLAND_EXTERIOR), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 - .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00 diff --git a/include/strings.h b/include/strings.h index cf26e63fd..e8b4f1b38 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1013,5 +1013,24 @@ extern const u8 gUnknown_8418EA7[]; extern const u8 gUnknown_8418EB0[]; extern const u8 gUnknown_8418EBC[]; extern const u8 gUnknown_8418EC3[]; +extern const u8 gUnknown_8418ECB[]; +extern const u8 gUnknown_8418F3A[]; +extern const u8 gUnknown_8418FB8[]; +extern const u8 gUnknown_841901C[]; +extern const u8 gUnknown_841908E[]; +extern const u8 gUnknown_8419103[]; +extern const u8 gUnknown_841917D[]; +extern const u8 gUnknown_8419201[]; +extern const u8 gUnknown_841926D[]; +extern const u8 gUnknown_84192E2[]; +extern const u8 gUnknown_841935B[]; +extern const u8 gUnknown_84193D5[]; +extern const u8 gUnknown_8419444[]; +extern const u8 gUnknown_84194C9[]; +extern const u8 gUnknown_841953F[]; +extern const u8 gUnknown_84195AC[]; +extern const u8 gUnknown_8419629[]; +extern const u8 gUnknown_841969D[]; +extern const u8 gUnknown_841971A[]; #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 0b12b1187..dbff827d6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -479,7 +479,6 @@ SECTIONS { src/mail.o(.rodata); src/heal_location.o(.rodata); src/region_map.o(.rodata); - data/region_map.o(.rodata); data/image_processing_effects.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/fldeff_flash.o(.rodata); diff --git a/src/region_map.c b/src/region_map.c index f997791ba..bd2fe9dd6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -20,6 +20,7 @@ #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" +#include "constants/spawn_points.h" #include "constants/maps.h" #define FREE_IF_NOT_NULL(ptr) ({ \ @@ -329,73 +330,990 @@ void sub_80C5208(u8 taskId); void sub_80C527C(u16 a0); #include "data/text/map_section_names.h" -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[]; -extern const u32 gUnknown_83EF3C4[]; -extern const u32 gUnknown_83EF450[]; -extern const u32 gUnknown_83EF4E0[]; -extern const u32 gUnknown_83EF524[]; -extern const u32 gUnknown_83EF59C[]; -extern const u32 gUnknown_83EF61C[]; -extern const u32 gUnknown_83F0330[]; -extern const u32 gUnknown_83F0E0C[]; -extern const u32 gUnknown_83F0580[]; -extern const u32 gUnknown_83F089C[]; -extern const u32 gUnknown_83F0AFC[]; -extern const u32 gUnknown_83F0C0C[]; -extern const u32 gUnknown_83F0CF0[]; -extern const u32 gUnknown_83F0F1C[]; -extern const u32 gUnknown_83F1084[]; -extern const u32 gUnknown_83F1190[]; -extern const u32 gUnknown_83F12CC[]; -extern const u32 gUnknown_83F13EC[]; -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]; -extern const struct WindowTemplate gUnknown_83F1A60[]; -extern const u8 gUnknown_83F1A90[]; -extern const u8 gUnknown_83F1A94[]; -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 struct OamData gUnknown_83F1B24; -extern const union AnimCmd *const gUnknown_83F1B38[]; -extern const struct UnkStruct_83F1B3C gUnknown_83F1B3C[]; -extern const struct OamData gUnknown_83F1C20; -extern const union AnimCmd *const gUnknown_83F1C30[]; -extern const struct UnkStruct_80C4CF0 gUnknown_83F1C34; -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 u16 gUnknown_83F1CA0[]; -extern const u8 gUnknown_83F1CA4[][2]; -extern const u8 gUnknown_83F1CA8[]; -extern const u8 *const gUnknown_83F1CAC[]; -extern const u16 gUnknown_83F1E60[][2]; -extern const u16 gUnknown_83F2178[][2]; -extern const u8 gUnknown_83F2490[][15][22]; -extern const u8 gUnknown_83F2724[][15][22]; -extern const u8 gUnknown_83F29B8[][15][22]; -extern const u8 gUnknown_83F2C4C[][15][22]; -extern const u8 gUnknown_83F2EE0[][3]; + +const u16 gUnknown_83EF23C[] = INCBIN_U16("graphics/region_map/unk_83EF23C.gbapal"); +const u16 gUnknown_83EF25C[] = INCBIN_U16("graphics/region_map/unk_83EF25C.gbapal"); +const u16 gUnknown_83EF27C[] = INCBIN_U16("graphics/region_map/unk_83EF27C.gbapal"); +const u16 gUnknown_83EF29C[] = INCBIN_U16("graphics/region_map/unk_83EF29C.gbapal"); +const u16 gUnknown_83EF2BC[] = INCBIN_U16("graphics/region_map/unk_83EF2BC.gbapal"); +const u16 gUnknown_83EF2DC[] = INCBIN_U16("graphics/region_map/unk_83EF2DC.gbapal"); +const u16 _83EF2FC[] = { + RGB(0, 0, 31), + RGB(0, 12, 31), + RGB_WHITE, + RGB_WHITE +}; +const u16 gUnknown_83EF384[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal"); +const u16 gUnknown_83EF3A4[] = INCBIN_U16("graphics/region_map/unk_83EF3A4.gbapal"); +const u32 gUnknown_83EF3C4[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz"); +const u32 gUnknown_83EF450[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz"); +const u32 gUnknown_83EF4E0[] = INCBIN_U32("graphics/region_map/unk_83EF4E0.4bpp.lz"); +const u32 gUnknown_83EF524[] = INCBIN_U32("graphics/region_map/unk_83EF524.4bpp.lz"); +const u32 gUnknown_83EF59C[] = INCBIN_U32("graphics/region_map/unk_83EF59C.4bpp.lz"); +const u32 gUnknown_83EF61C[] = INCBIN_U32("graphics/region_map/unk_83EF61C.4bpp.lz"); +const u32 gUnknown_83F0330[] = INCBIN_U32("graphics/region_map/unk_83F0330.4bpp.lz"); +const u32 gUnknown_83F0580[] = INCBIN_U32("graphics/region_map/unk_83F0580.bin.lz"); +const u32 gUnknown_83F089C[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz"); +const u32 gUnknown_83F0AFC[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz"); +const u32 gUnknown_83F0C0C[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz"); +const u32 gUnknown_83F0CF0[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz"); +const u32 gUnknown_83F0E0C[] = INCBIN_U32("graphics/region_map/unk_83F0E0C.bin.lz"); +const u32 gUnknown_83F0F1C[] = INCBIN_U32("graphics/region_map/unk_83F0F1C.bin.lz"); +const u32 gUnknown_83F1084[] = INCBIN_U32("graphics/region_map/unk_83F1084.bin.lz"); +const u32 gUnknown_83F1190[] = INCBIN_U32("graphics/region_map/unk_83F1190.bin.lz"); +const u32 gUnknown_83F12CC[] = INCBIN_U32("graphics/region_map/unk_83F12CC.4bpp.lz"); +const u32 gUnknown_83F13EC[] = INCBIN_U32("graphics/region_map/unk_83F13EC.4bpp.lz"); +const u32 gUnknown_83F1550[] = INCBIN_U32("graphics/region_map/unk_83F1550.4bpp.lz"); +const u32 gUnknown_83F1640[] = INCBIN_U32("graphics/region_map/unk_83F1640.4bpp.lz"); +const u32 gUnknown_83F1738[] = INCBIN_U32("graphics/region_map/unk_83F1738.4bpp.lz"); +const u32 gUnknown_83F1804[] = INCBIN_U32("graphics/region_map/unk_83F1804.4bpp.lz"); +const u32 gUnknown_83F18D8[] = INCBIN_U32("graphics/region_map/unk_83F18D8.4bpp.lz"); +const u32 gUnknown_83F1908[] = INCBIN_U32("graphics/region_map/unk_83F1908.4bpp.lz"); +const u32 gUnknown_83F1978[] = INCBIN_U32("graphics/region_map/unk_83F1978.4bpp.lz"); +const u32 gUnknown_83F19A0[] = INCBIN_U32("graphics/region_map/unk_83F19A0.bin.lz"); + +const struct BgTemplate gUnknown_83F1A50[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 23, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +const struct WindowTemplate gUnknown_83F1A60[] = { + { + .bg = 3, + .tilemapLeft = 3, + .tilemapTop = 2, + .width = 15, + .height = 2, + .paletteNum = 12, + .baseBlock = 0x001 + }, { + .bg = 3, + .tilemapLeft = 3, + .tilemapTop = 4, + .width = 15, + .height = 2, + .paletteNum = 12, + .baseBlock = 0x01f + }, { + .bg = 3, + .tilemapLeft = 3, + .tilemapTop = 6, + .width = 25, + .height = 11, + .paletteNum = 12, + .baseBlock = 0x03d + }, { + .bg = 3, + .tilemapLeft = 18, + .tilemapTop = 0, + .width = 5, + .height = 2, + .paletteNum = 12, + .baseBlock = 0x150 + }, { + .bg = 3, + .tilemapLeft = 24, + .tilemapTop = 0, + .width = 5, + .height = 2, + .paletteNum = 12, + .baseBlock = 0x15a + }, DUMMY_WIN_TEMPLATE +}; + +ALIGNED(4) const u8 gUnknown_83F1A90[] = {0, 1, 2}; +ALIGNED(4) const u8 gUnknown_83F1A94[] = {0, 7, 2}; +ALIGNED(4) const u8 gUnknown_83F1A98[] = {0, 10, 2}; + +const u8 *const gUnknown_83F1A9C[] = { + gUnknown_83F1A94, + gUnknown_83F1A98 +}; + +const u8 sSeviiMapsecs[3][30] = { + { + MAPSEC_ONE_ISLAND, + MAPSEC_TWO_ISLAND, + MAPSEC_THREE_ISLAND, + MAPSEC_KINDLE_ROAD, + MAPSEC_TREASURE_BEACH, + MAPSEC_CAPE_BRINK, + MAPSEC_BOND_BRIDGE, + MAPSEC_THREE_ISLE_PORT, + MAPSEC_MT_EMBER, + MAPSEC_BERRY_FOREST, + MAPSEC_THREE_ISLE_PATH, + MAPSEC_EMBER_SPA, + MAPSEC_NONE + }, { + MAPSEC_FOUR_ISLAND, + MAPSEC_FIVE_ISLAND, + MAPSEC_SEVII_ISLE_6, + MAPSEC_SEVII_ISLE_7, + MAPSEC_SEVII_ISLE_8, + MAPSEC_SEVII_ISLE_9, + MAPSEC_RESORT_GORGEOUS, + MAPSEC_WATER_LABYRINTH, + MAPSEC_FIVE_ISLE_MEADOW, + MAPSEC_MEMORIAL_PILLAR, + MAPSEC_NAVEL_ROCK, + MAPSEC_ICEFALL_CAVE, + MAPSEC_ROCKET_WAREHOUSE, + MAPSEC_LOST_CAVE, + MAPSEC_NONE + }, { + MAPSEC_SEVEN_ISLAND, + MAPSEC_SIX_ISLAND, + MAPSEC_OUTCAST_ISLAND, + MAPSEC_GREEN_PATH, + MAPSEC_WATER_PATH, + MAPSEC_RUIN_VALLEY, + MAPSEC_TRAINER_TOWER, + MAPSEC_CANYON_ENTRANCE, + MAPSEC_SEVAULT_CANYON, + MAPSEC_TANOBY_RUINS, + MAPSEC_SEVII_ISLE_22, + MAPSEC_SEVII_ISLE_23, + MAPSEC_SEVII_ISLE_24, + MAPSEC_TRAINER_TOWER_2, + MAPSEC_DOTTED_HOLE, + MAPSEC_PATTERN_BUSH, + MAPSEC_ALTERING_CAVE, + MAPSEC_TANOBY_CHAMBERS, + MAPSEC_TANOBY_KEY, + MAPSEC_BIRTH_ISLAND, + MAPSEC_MONEAN_CHAMBER, + MAPSEC_LIPTOO_CHAMBER, + MAPSEC_WEEPTH_CHAMBER, + MAPSEC_DILFORD_CHAMBER, + MAPSEC_SCUFIB_CHAMBER, + MAPSEC_RIXY_CHAMBER, + MAPSEC_VIAPOIS_CHAMBER, + MAPSEC_NONE + } +}; + +ALIGNED(4) const u8 gUnknown_83F1B00[3][4] = { + {1, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 1} +}; + +const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3] = { + {0x18, 0x10, 0x90, 0x20}, + {0x18, 0x20, 0x90, 0x30}, + {0x00, 0x00, 0x00, 0x00} +}; + +const struct OamData gUnknown_83F1B24 = { + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32) +}; + +const union AnimCmd gUnknown_83F1B2C[] = { + ANIMCMD_FRAME(0x00, 20), + ANIMCMD_FRAME(0x10, 20), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_83F1B38[] = { + gUnknown_83F1B2C +}; + +const struct UnkStruct_83F1B3C gUnknown_83F1B3C[] = { + { + .field_0 = MAPSEC_VIRIDIAN_FOREST, + .field_4 = gMapSecName_ViridianForest, + .field_8 = gUnknown_8418ECB + }, { + .field_0 = MAPSEC_MT_MOON, + .field_4 = gMapSecName_MtMoon, + .field_8 = gUnknown_8418F3A + }, { + .field_0 = MAPSEC_DIGLETTS_CAVE, + .field_4 = gMapSecName_DiglettsCave, + .field_8 = gUnknown_8418FB8 + }, { + .field_0 = MAPSEC_KANTO_VICTORY_ROAD, + .field_4 = gMapSecName_VictoryRoad, + .field_8 = gUnknown_841901C + }, { + .field_0 = MAPSEC_POKEMON_MANSION, + .field_4 = gMapSecName_PokemonMansion, + .field_8 = gUnknown_841908E + }, { + .field_0 = MAPSEC_KANTO_SAFARI_ZONE, + .field_4 = gMapSecName_SafariZone, + .field_8 = gUnknown_8419103 + }, { + .field_0 = MAPSEC_ROCK_TUNNEL, + .field_4 = gMapSecName_RockTunnel, + .field_8 = gUnknown_841917D + }, { + .field_0 = MAPSEC_SEAFOAM_ISLANDS, + .field_4 = gMapSecName_SeafoamIslands, + .field_8 = gUnknown_8419201 + }, { + .field_0 = MAPSEC_POKEMON_TOWER, + .field_4 = gMapSecName_PokemonTower, + .field_8 = gUnknown_841926D + }, { + .field_0 = MAPSEC_CERULEAN_CAVE, + .field_4 = gMapSecName_CeruleanCave, + .field_8 = gUnknown_84192E2 + }, { + .field_0 = MAPSEC_POWER_PLANT, + .field_4 = gMapSecName_PowerPlant, + .field_8 = gUnknown_841935B + }, { + .field_0 = MAPSEC_MT_EMBER, + .field_4 = gMapSecName_MtEmber, + .field_8 = gUnknown_84193D5 + }, { + .field_0 = MAPSEC_BERRY_FOREST, + .field_4 = gMapSecName_BerryForest, + .field_8 = gUnknown_8419444 + }, { + .field_0 = MAPSEC_ICEFALL_CAVE, + .field_4 = gMapSecName_IcefallCave, + .field_8 = gUnknown_84194C9 + }, { + .field_0 = MAPSEC_LOST_CAVE, + .field_4 = gMapSecName_LostCave, + .field_8 = gUnknown_841953F + }, { + .field_0 = MAPSEC_TANOBY_CHAMBERS, + .field_4 = gMapSecName_TanobyChambers, + .field_8 = gUnknown_84195AC + }, { + .field_0 = MAPSEC_ALTERING_CAVE, + .field_4 = gMapSecName_AlteringCave, + .field_8 = gUnknown_8419629 + }, { + .field_0 = MAPSEC_PATTERN_BUSH, + .field_4 = gMapSecName_PatternBush, + .field_8 = gUnknown_841969D + }, { + .field_0 = MAPSEC_DOTTED_HOLE, + .field_4 = gMapSecName_DottedHole, + .field_8 = gUnknown_841971A + } +}; + +const struct OamData gUnknown_83F1C20 = { + .shape = SPRITE_SHAPE(32x64), + .size = SPRITE_SIZE(32x64) +}; + +const union AnimCmd gAnimCmd_83F1C28[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_83F1C30[] = { + gAnimCmd_83F1C28 +}; + +const struct UnkStruct_80C4CF0 gUnknown_83F1C34 = { + 0x18, 0x10, 0xD8, 0xA0 +}; + +const struct OamData gUnknown_83F1C3C = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +const union AnimCmd gAnimCmd_83F1C44[] = { + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_83F1C50[] = { + gAnimCmd_83F1C44 +}; + +const struct OamData gUnknown_83F1C54 = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +const union AnimCmd gAnimCmd_83F1C5C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83F1C64[] = { + gAnimCmd_83F1C5C +}; + +const struct OamData gUnknown_83F1C68 = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +const struct OamData gUnknown_83F1C70 = { + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .priority = 2 +}; + +const union AnimCmd gAnimCmd_83F1C78[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(4, 60), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gAnimCmd_83F1C84[] = { + ANIMCMD_FRAME(1, 20), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gAnimCmd_83F1C8C[] = { + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_83F1C94[] = { + gAnimCmd_83F1C78 +}; + +const union AnimCmd *const gUnknown_83F1C98[] = { + gAnimCmd_83F1C84, + gAnimCmd_83F1C8C +}; + +const u16 gUnknown_83F1CA0[] = { + DISPCNT_WIN0_ON, + DISPCNT_WIN1_ON +}; + +const u8 gUnknown_83F1CA4[][2] = { + {REG_OFFSET_WIN0V, REG_OFFSET_WIN0H}, + {REG_OFFSET_WIN1V, REG_OFFSET_WIN1H} +}; + +const u8 gUnknown_83F1CA8[] = {15, 1, 2}; + +const u8 *const gUnknown_83F1CAC[] = { + [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = gMapSecName_PalletTown, + [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = gMapSecName_ViridianCity, + [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = gMapSecName_PewterCity, + [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = gMapSecName_CeruleanCity, + [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = gMapSecName_LavenderTown, + [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = gMapSecName_VermilionCity, + [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = gMapSecName_CeladonCity, + [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = gMapSecName_FuchsiaCity, + [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = gMapSecName_CinnabarIsland, + [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = gMapSecName_IndigoPlateau, + [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = gMapSecName_SaffronCity, + [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = gMapSecName_Route4, + [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = gMapSecName_Route10, + [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = gMapSecName_Route1, + [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = gMapSecName_Route2, + [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = gMapSecName_Route3, + [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = gMapSecName_Route4_2, + [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = gMapSecName_Route5, + [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = gMapSecName_Route6, + [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = gMapSecName_Route7, + [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = gMapSecName_Route8, + [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = gMapSecName_Route9, + [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = gMapSecName_Route10_2, + [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = gMapSecName_Route11, + [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = gMapSecName_Route12, + [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = gMapSecName_Route13, + [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = gMapSecName_Route14, + [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = gMapSecName_Route15, + [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = gMapSecName_Route16, + [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = gMapSecName_Route17, + [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = gMapSecName_Route18, + [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = gMapSecName_Route19, + [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = gMapSecName_Route20, + [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = gMapSecName_Route21, + [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = gMapSecName_Route22, + [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = gMapSecName_Route23, + [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = gMapSecName_Route24, + [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = gMapSecName_Route25, + [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = gMapSecName_ViridianForest, + [MAPSEC_MT_MOON - MAPSECS_KANTO] = gMapSecName_MtMoon, + [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = gMapSecName_SSAnne, + [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = gMapSecName_UndergroundPath, + [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = gMapSecName_UndergroundPath_2, + [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = gMapSecName_DiglettsCave, + [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = gMapSecName_VictoryRoad, + [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = gMapSecName_RocketHideout, + [MAPSEC_SILPH_CO - MAPSECS_KANTO] = gMapSecName_SilphCo, + [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = gMapSecName_PokemonMansion, + [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = gMapSecName_SafariZone, + [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = gMapSecName_PokemonLeague, + [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = gMapSecName_RockTunnel, + [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = gMapSecName_SeafoamIslands, + [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = gMapSecName_PokemonTower, + [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = gMapSecName_CeruleanCave, + [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = gMapSecName_PowerPlant, + [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = gMapSecName_OneIsland, + [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = gMapSecName_TwoIsland, + [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = gMapSecName_ThreeIsland, + [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = gMapSecName_FourIsland, + [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = gMapSecName_FiveIsland, + [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = gMapSecName_SevenIsland, + [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = gMapSecName_SixIsland, + [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = gMapSecName_KindleRoad, + [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = gMapSecName_TreasureBeach, + [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = gMapSecName_CapeBrink, + [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = gMapSecName_BondBridge, + [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = gMapSecName_ThreeIslePort, + [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = gMapSecName_SeviiIsle6, + [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = gMapSecName_SeviiIsle7, + [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = gMapSecName_SeviiIsle8, + [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = gMapSecName_SeviiIsle9, + [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = gMapSecName_ResortGorgeous, + [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = gMapSecName_WaterLabyrinth, + [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = gMapSecName_FiveIsleMeadow, + [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = gMapSecName_MemorialPillar, + [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = gMapSecName_OutcastIsland, + [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = gMapSecName_GreenPath, + [MAPSEC_WATER_PATH - MAPSECS_KANTO] = gMapSecName_WaterPath, + [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = gMapSecName_RuinValley, + [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = gMapSecName_TrainerTower, + [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = gMapSecName_CanyonEntrance, + [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = gMapSecName_SevaultCanyon, + [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = gMapSecName_TanobyRuins, + [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = gMapSecName_SeviiIsle22, + [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = gMapSecName_SeviiIsle23, + [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = gMapSecName_SeviiIsle24, + [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = gMapSecName_NavelRock, + [MAPSEC_MT_EMBER - MAPSECS_KANTO] = gMapSecName_MtEmber, + [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = gMapSecName_BerryForest, + [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = gMapSecName_IcefallCave, + [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = gMapSecName_RocketWarehouse, + [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = gMapSecName_TrainerTower_2, + [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = gMapSecName_DottedHole, + [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = gMapSecName_LostCave, + [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = gMapSecName_PatternBush, + [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = gMapSecName_AlteringCave, + [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = gMapSecName_TanobyChambers, + [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = gMapSecName_ThreeIslePath, + [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = gMapSecName_TanobyKey, + [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = gMapSecName_BirthIsland, + [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = gMapSecName_MoneanChamber, + [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = gMapSecName_LiptooChamber, + [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = gMapSecName_WeepthChamber, + [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = gMapSecName_DilfordChamber, + [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = gMapSecName_ScufibChamber, + [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = gMapSecName_RixyChamber, + [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = gMapSecName_ViapoisChamber, + [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = gMapSecName_EmberSpa, + [MAPSEC_SPECIAL_AREA - MAPSECS_KANTO] = gMapSecName_CeladonDept +}; + +const u16 gUnknown_83F1E60[0xC6][2] = { + [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x04, 0x0b}, + [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x04, 0x08}, + [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x04, 0x04}, + [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {0x0e, 0x03}, + [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {0x12, 0x06}, + [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {0x0e, 0x09}, + [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {0x0b, 0x06}, + [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {0x0c, 0x0c}, + [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {0x04, 0x0e}, + [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {0x02, 0x03}, + [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {0x0e, 0x06}, + [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {0x08, 0x03}, + [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {0x12, 0x03}, + [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {0x04, 0x09}, + [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {0x04, 0x05}, + [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {0x05, 0x04}, + [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {0x08, 0x03}, + [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {0x0e, 0x04}, + [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {0x0e, 0x07}, + [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {0x0c, 0x06}, + [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {0x0f, 0x06}, + [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {0x0f, 0x03}, + [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {0x12, 0x03}, + [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {0x0f, 0x09}, + [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {0x12, 0x07}, + [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {0x10, 0x0b}, + [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {0x0f, 0x0b}, + [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {0x0d, 0x0c}, + [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {0x07, 0x06}, + [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {0x07, 0x07}, + [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {0x07, 0x0c}, + [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {0x0c, 0x0d}, + [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {0x05, 0x0e}, + [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {0x04, 0x0c}, + [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {0x02, 0x08}, + [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {0x02, 0x04}, + [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {0x0e, 0x01}, + [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {0x0f, 0x01}, + [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {0x01, 0x08}, + [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {0x09, 0x09}, + [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {0x12, 0x0c}, + [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {0x03, 0x04}, + [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {0x10, 0x0b}, + [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {0x05, 0x08}, + [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {0x11, 0x05}, + [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {0x02, 0x03}, + [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {0x01, 0x09}, + [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {0x09, 0x07}, + [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {0x0d, 0x0c}, + [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {0x12, 0x0d}, + [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {0x04, 0x03}, + [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {0x05, 0x04}, + [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {0x01, 0x04}, + [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {0x04, 0x05}, + [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {0x10, 0x09}, + [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {0x0e, 0x0a}, + [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {0x11, 0x0a}, + [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {0x12, 0x0c}, + [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {0x0f, 0x00}, + [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {0x0f, 0x03}, + [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {0x12, 0x03}, + [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {0x10, 0x07}, + [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {0x05, 0x06}, + [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {0x05, 0x09}, + [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {0x06, 0x09}, + [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {0x03, 0x0c}, + [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {0x09, 0x0c}, + [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {0x03, 0x0e}, + [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {0x02, 0x0c}, + [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {0x0a, 0x08}, + [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x12, 0x0d}, +}; + +const u16 gUnknown_83F2178[0xC6][2] = { + [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {0x04, 0x01}, + [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {0x06, 0x01}, + [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {0x01, 0x05}, + [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {0x04, 0x01}, + [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {0x01, 0x05}, + [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {0x05, 0x01}, + [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {0x07, 0x01}, + [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {0x01, 0x04}, + [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_MT_MOON - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SILPH_CO - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {0x01, 0x06}, + [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {0x04, 0x01}, + [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {0x02, 0x01}, + [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {0x03, 0x01}, + [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {0x01, 0x05}, + [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {0x02, 0x02}, + [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {0x01, 0x02}, + [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {0x07, 0x01}, + [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {0x06, 0x01}, + [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {0x01, 0x03}, + [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_MT_EMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01}, + [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {0x01, 0x01} +}; + +const u8 gUnknown_83F2490[][15][22] = { + { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25, + MAPSEC_ROUTE_25, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_INDIGO_PLATEAU, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_ROUTE_4_FLYDUP, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, + MAPSEC_ROUTE_4, MAPSEC_CERULEAN_CITY, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_FLYDUP, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_PEWTER_CITY, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, + MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_CELADON_CITY, MAPSEC_ROUTE_7, + MAPSEC_ROUTE_7, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_LAVENDER_TOWN, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_22, MAPSEC_ROUTE_22, MAPSEC_VIRIDIAN_CITY, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERMILION_CITY, + MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PALLET_TOWN, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_14, MAPSEC_ROUTE_13, MAPSEC_ROUTE_13, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_18, + MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_FUCHSIA_CITY, MAPSEC_ROUTE_15, + MAPSEC_ROUTE_15, MAPSEC_ROUTE_14, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CINNABAR_ISLAND, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, + MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_19, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE} + }, { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_MOON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CERULEAN_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROCK_TUNNEL, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POWER_PLANT, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VIRIDIAN_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_MANSION, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + } +}; + +const u8 gUnknown_83F2724[][15][22] = { + { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_ONE_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TWO_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_THREE_ISLE_PORT, MAPSEC_THREE_ISLE_PORT, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + }, { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_EMBER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BERRY_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + } +}; + +const u8 gUnknown_83F29B8[][15][22] = { + { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FOUR_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NAVEL_ROCK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLAND, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + }, { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ICEFALL_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LOST_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + } +}; + +const u8 gUnknown_83F2C4C[][15][22] = { + { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SIX_ISLAND, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVEN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BIRTH_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + }, { + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ALTERING_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PATTERN_BUSH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DOTTED_HOLE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE} + } +}; + +const u8 gUnknown_83F2EE0[][3] = { + [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), SPAWN_PALLET_TOWN}, + [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), SPAWN_VIRIDIAN_CITY}, + [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), SPAWN_PEWTER_CITY}, + [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY), SPAWN_CERULEAN_CITY}, + [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN), SPAWN_LAVENDER_TOWN}, + [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY), SPAWN_VERMILION_CITY}, + [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY), SPAWN_CELADON_CITY}, + [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY), SPAWN_FUCHSIA_CITY}, + [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND), SPAWN_CINNABAR_ISLAND}, + [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR), SPAWN_INDIGO_PLATEAU}, + [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY), SPAWN_SAFFRON_CITY}, + [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), SPAWN_ROUTE4}, + [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), SPAWN_ROUTE10}, + [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE1), MAP_NUM(ROUTE1), 0}, + [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2), 0}, + [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3), 0}, + [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0}, + [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5), 0}, + [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6), 0}, + [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7), 0}, + [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8), 0}, + [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9), 0}, + [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0}, + [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11), 0}, + [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12), 0}, + [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13), 0}, + [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14), 0}, + [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15), 0}, + [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16), 0}, + [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17), 0}, + [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18), 0}, + [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19), 0}, + [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20), 0}, + [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH), 0}, + [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22), 0}, + [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23), 0}, + [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24), 0}, + [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25), 0}, + [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_MT_MOON - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_SILPH_CO - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND), MAP_NUM(ONE_ISLAND), SPAWN_ONE_ISLAND}, + [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(TWO_ISLAND), MAP_NUM(TWO_ISLAND), SPAWN_TWO_ISLAND}, + [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND), MAP_NUM(THREE_ISLAND), SPAWN_THREE_ISLAND}, + [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(FOUR_ISLAND), MAP_NUM(FOUR_ISLAND), SPAWN_FOUR_ISLAND}, + [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND), MAP_NUM(FIVE_ISLAND), SPAWN_FIVE_ISLAND}, + [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND), MAP_NUM(SEVEN_ISLAND), SPAWN_SEVEN_ISLAND}, + [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND), MAP_NUM(SIX_ISLAND), SPAWN_SIX_ISLAND}, + [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD), 0}, + [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND_TREASURE_BEACH), MAP_NUM(ONE_ISLAND_TREASURE_BEACH), 0}, + [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {MAP_GROUP(TWO_ISLAND_CAPE_BRINK), MAP_NUM(TWO_ISLAND_CAPE_BRINK), 0}, + [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE), 0}, + [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND_PORT), MAP_NUM(THREE_ISLAND_PORT), 0}, + [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_50), MAP_NUM(UNKNOWN_MAP_03_50), 0}, + [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_51), MAP_NUM(UNKNOWN_MAP_03_51), 0}, + [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_52), MAP_NUM(UNKNOWN_MAP_03_52), 0}, + [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_53), MAP_NUM(UNKNOWN_MAP_03_53), 0}, + [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS), 0}, + [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_WATER_LABYRINTH), MAP_NUM(FIVE_ISLAND_WATER_LABYRINTH), 0}, + [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_MEADOW), MAP_NUM(FIVE_ISLAND_MEADOW), 0}, + [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR), 0}, + [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND), 0}, + [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_GREEN_PATH), MAP_NUM(SIX_ISLAND_GREEN_PATH), 0}, + [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH), 0}, + [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY), 0}, + [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER), 0}, + [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), 0}, + [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON), 0}, + [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS), 0}, + [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {MAP_GROUP(NAVEL_ROCK_EXTERIOR), MAP_NUM(NAVEL_ROCK_EXTERIOR), 0}, + [MAPSEC_MT_EMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(BIRTH_ISLAND_EXTERIOR), MAP_NUM(BIRTH_ISLAND_EXTERIOR), 0}, + [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, + [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0}, +}; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -1377,7 +2295,7 @@ void sub_80C1880(void) const u8 *sub_80C18E0(u16 a0) { u8 i; - for (i = 0; i < 19; i++) + for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) { if (gUnknown_83F1B3C[i].field_0 == a0) return gUnknown_83F1B3C[i].field_8; @@ -1388,7 +2306,7 @@ const u8 *sub_80C18E0(u16 a0) const u8 *sub_80C1920(u16 a0) { u8 i; - for (i = 0; i < 19; i++) + for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) { if (gUnknown_83F1B3C[i].field_0 == a0) return gUnknown_83F1B3C[i].field_4; -- cgit v1.2.3 From 79fb35d4d2b45ac9da6aaa310be597b685e7e845 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 20:56:54 -0500 Subject: Declutter global namespace --- src/region_map.c | 626 +++++++++++++++++++++++++++---------------------------- 1 file changed, 313 insertions(+), 313 deletions(-) diff --git a/src/region_map.c b/src/region_map.c index bd2fe9dd6..7415deb32 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -218,161 +218,161 @@ struct UnkStruct_20399FC u8 field_2; }; -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 struct UnkStruct_20399EC * gUnknown_20399EC = NULL; -EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; -EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL; +static EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; +static EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; +static EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; +static EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL; +static EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; +static EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL; +static EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL; +static EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; +static EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); -void sub_80C0100(void); -bool8 sub_80C0238(void); -void sub_80C03E8(void); -void sub_80C04E4(u8 taskId); -void sub_80C07F8(u8 taskId); -void sub_80C0820(u8 taskId); -void sub_80C08B4(void); -void sub_80C08E0(void); -void sub_80C08F4(void); -void sub_80C0904(void); -void sub_80C0A2C(void); -void sub_80C0A6C(void); -void sub_80C0A88(u8 a0); -void sub_80C0AB8(void); -void sub_80C0B18(void); -void sub_80C0B9C(void); -void sub_80C0BB0(void); -void sub_80C0CC8(u8 bg, u16 *map); -bool8 sub_80C0E04(u8 a0); -u8 sub_80C0E20(void); -void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); -void sub_80C1098(u8 taskId); -void sub_80C1280(u8 taskId); -bool8 sub_80C12EC(void); -void sub_80C1324(u8 bg, u16 *map); -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_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); -void sub_80C1A94(u8 taskId); -void sub_80C1BE0(u8 taskId); -void sub_80C1E14(u8 taskId); -void sub_80C1E94(void); -void sub_80C1E78(u8 bgId, const u16 * tilemap); -bool8 sub_80C1F80(bool8 a0); -void sub_80C2208(u8 taskId, TaskFunc taskFunc); -void sub_80C24BC(void); -void sub_80C267C(u8 taskId); -void sub_80C25BC(void); -void sub_80C2604(void); -bool8 sub_80C29A4(void); -void sub_80C2B48(void); -void sub_80C2C1C(u8 taskId); -void sub_80C2C7C(u8 taskId); -bool8 sub_80C2E1C(void); -void sub_80C3008(u16 a0, u16 a1); -void sub_80C309C(void); -void sub_80C3154(bool8 a0); -void sub_80C3178(void); -void sub_80C3188(void); -u8 sub_80C31C0(void); -u8 sub_80C3348(void); -u8 sub_80C3400(void); -void sub_80C3418(void); -u16 sub_80C3508(void); -u16 sub_80C3514(void); -u16 sub_80C3520(void); -u16 sub_80C3580(void); -u8 sub_80C35DC(u8 a0); -u8 sub_80C3878(u8 a0); -u8 sub_80C3AC8(u8 a0); -void sub_80C3D40(void); -u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); -void sub_80C41D8(u16 a0, u16 a1); -void sub_80C4244(void); -void sub_80C4324(bool8 a0); -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, bool8 a2); -void sub_80C4960(u8 a0, u8 a1, bool8 a2); -void sub_80C4A04(void); -bool8 sub_80C4AAC(u8 a0); -bool8 sub_80C4B30(u8 a0); -void sub_80C4BE4(void); -void sub_80C4C2C(u8 a0, u16 a1, u16 a2); -void sub_80C4C48(u16 a0); -void sub_80C4C5C(u16 a0, u16 a1); -void sub_80C4C74(u16 a0, u16 a1); -void sub_80C4C88(u16 a0); -void sub_80C4C9C(u8 a0, u8 a1); -void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); -void sub_80C4D30(void); -void sub_80C4E18(const u8 *str); -void sub_80C4E74(const u8 *str); -void sub_80C4ED0(bool8 a0); -void sub_80C4F08(u8 taskId); -void sub_80C51E8(void); -void sub_80C5208(u8 taskId); -void sub_80C527C(u16 a0); +static void sub_80C0100(void); +static bool8 sub_80C0238(void); +static void sub_80C03E8(void); +static void sub_80C04E4(u8 taskId); +static void sub_80C07F8(u8 taskId); +static void sub_80C0820(u8 taskId); +static void sub_80C08B4(void); +static void sub_80C08E0(void); +static void sub_80C08F4(void); +static void sub_80C0904(void); +static void sub_80C0A2C(void); +static void sub_80C0A6C(void); +static void sub_80C0A88(u8 a0); +static void sub_80C0AB8(void); +static void sub_80C0B18(void); +static void sub_80C0B9C(void); +static void sub_80C0BB0(void); +static void sub_80C0CC8(u8 bg, u16 *map); +static bool8 sub_80C0E04(u8 a0); +static u8 sub_80C0E20(void); +static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); +static void sub_80C1098(u8 taskId); +static void sub_80C1280(u8 taskId); +static bool8 sub_80C12EC(void); +static void sub_80C1324(u8 bg, u16 *map); +static void sub_80C1390(void); +static bool8 sub_80C144C(void); +static bool8 sub_80C1478(void); +static bool8 sub_80C16D0(void); +static void sub_80C1754(u8 a0, u16 a1, u16 a2); +static void sub_80C176C(u8 a0, u16 a1, u16 a2); +static void sub_80C1880(void); +static void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); +static void sub_80C1A94(u8 taskId); +static void sub_80C1BE0(u8 taskId); +static void sub_80C1E14(u8 taskId); +static void sub_80C1E94(void); +static void sub_80C1E78(u8 bgId, const u16 * tilemap); +static bool8 sub_80C1F80(bool8 a0); +static void sub_80C2208(u8 taskId, TaskFunc taskFunc); +static void sub_80C24BC(void); +static void sub_80C267C(u8 taskId); +static void sub_80C25BC(void); +static void sub_80C2604(void); +static bool8 sub_80C29A4(void); +static void sub_80C2B48(void); +static void sub_80C2C1C(u8 taskId); +static void sub_80C2C7C(u8 taskId); +static bool8 sub_80C2E1C(void); +static void sub_80C3008(u16 a0, u16 a1); +static void sub_80C309C(void); +static void sub_80C3154(bool8 a0); +static void sub_80C3178(void); +static void sub_80C3188(void); +static u8 sub_80C31C0(void); +static u8 sub_80C3348(void); +static u8 sub_80C3400(void); +static void sub_80C3418(void); +static u16 sub_80C3508(void); +static u16 sub_80C3514(void); +static u16 sub_80C3520(void); +static u16 sub_80C3580(void); +static u8 sub_80C35DC(u8 a0); +static u8 sub_80C3878(u8 a0); +static u8 sub_80C3AC8(u8 a0); +static void sub_80C3D40(void); +static u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); +static void sub_80C41D8(u16 a0, u16 a1); +static void sub_80C4244(void); +static void sub_80C4324(bool8 a0); +static void sub_80C4348(void); +static u16 sub_80C4380(); +static u16 sub_80C438C(); +static void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); +static void sub_80C440C(u8 taskId); +static void sub_80C44E4(u8 taskId); +static void sub_80C4750(void); +static void sub_80C47F0(void); +static void sub_80C48BC(u8 a0, u8 a1, bool8 a2); +static void sub_80C4960(u8 a0, u8 a1, bool8 a2); +static void sub_80C4A04(void); +static bool8 sub_80C4AAC(u8 a0); +static bool8 sub_80C4B30(u8 a0); +static void sub_80C4BE4(void); +static void sub_80C4C2C(u8 a0, u16 a1, u16 a2); +static void sub_80C4C48(u16 a0); +static void sub_80C4C5C(u16 a0, u16 a1); +static void sub_80C4C74(u16 a0, u16 a1); +static void sub_80C4C88(u16 a0); +static void sub_80C4C9C(u8 a0, u8 a1); +static void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); +static void sub_80C4D30(void); +static void sub_80C4E18(const u8 *str); +static void sub_80C4E74(const u8 *str); +static void sub_80C4ED0(bool8 a0); +static void sub_80C4F08(u8 taskId); +static void sub_80C51E8(void); +static void sub_80C5208(u8 taskId); +static void sub_80C527C(u16 a0); #include "data/text/map_section_names.h" -const u16 gUnknown_83EF23C[] = INCBIN_U16("graphics/region_map/unk_83EF23C.gbapal"); -const u16 gUnknown_83EF25C[] = INCBIN_U16("graphics/region_map/unk_83EF25C.gbapal"); -const u16 gUnknown_83EF27C[] = INCBIN_U16("graphics/region_map/unk_83EF27C.gbapal"); -const u16 gUnknown_83EF29C[] = INCBIN_U16("graphics/region_map/unk_83EF29C.gbapal"); -const u16 gUnknown_83EF2BC[] = INCBIN_U16("graphics/region_map/unk_83EF2BC.gbapal"); -const u16 gUnknown_83EF2DC[] = INCBIN_U16("graphics/region_map/unk_83EF2DC.gbapal"); -const u16 _83EF2FC[] = { +static const u16 gUnknown_83EF23C[] = INCBIN_U16("graphics/region_map/unk_83EF23C.gbapal"); +static const u16 gUnknown_83EF25C[] = INCBIN_U16("graphics/region_map/unk_83EF25C.gbapal"); +static const u16 gUnknown_83EF27C[] = INCBIN_U16("graphics/region_map/unk_83EF27C.gbapal"); +static const u16 gUnknown_83EF29C[] = INCBIN_U16("graphics/region_map/unk_83EF29C.gbapal"); +static const u16 gUnknown_83EF2BC[] = INCBIN_U16("graphics/region_map/unk_83EF2BC.gbapal"); +static const u16 gUnknown_83EF2DC[] = INCBIN_U16("graphics/region_map/unk_83EF2DC.gbapal"); +static const u16 _83EF2FC[] = { RGB(0, 0, 31), RGB(0, 12, 31), RGB_WHITE, RGB_WHITE }; -const u16 gUnknown_83EF384[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal"); -const u16 gUnknown_83EF3A4[] = INCBIN_U16("graphics/region_map/unk_83EF3A4.gbapal"); -const u32 gUnknown_83EF3C4[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz"); -const u32 gUnknown_83EF450[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz"); -const u32 gUnknown_83EF4E0[] = INCBIN_U32("graphics/region_map/unk_83EF4E0.4bpp.lz"); -const u32 gUnknown_83EF524[] = INCBIN_U32("graphics/region_map/unk_83EF524.4bpp.lz"); -const u32 gUnknown_83EF59C[] = INCBIN_U32("graphics/region_map/unk_83EF59C.4bpp.lz"); -const u32 gUnknown_83EF61C[] = INCBIN_U32("graphics/region_map/unk_83EF61C.4bpp.lz"); -const u32 gUnknown_83F0330[] = INCBIN_U32("graphics/region_map/unk_83F0330.4bpp.lz"); -const u32 gUnknown_83F0580[] = INCBIN_U32("graphics/region_map/unk_83F0580.bin.lz"); -const u32 gUnknown_83F089C[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz"); -const u32 gUnknown_83F0AFC[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz"); -const u32 gUnknown_83F0C0C[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz"); -const u32 gUnknown_83F0CF0[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz"); -const u32 gUnknown_83F0E0C[] = INCBIN_U32("graphics/region_map/unk_83F0E0C.bin.lz"); -const u32 gUnknown_83F0F1C[] = INCBIN_U32("graphics/region_map/unk_83F0F1C.bin.lz"); -const u32 gUnknown_83F1084[] = INCBIN_U32("graphics/region_map/unk_83F1084.bin.lz"); -const u32 gUnknown_83F1190[] = INCBIN_U32("graphics/region_map/unk_83F1190.bin.lz"); -const u32 gUnknown_83F12CC[] = INCBIN_U32("graphics/region_map/unk_83F12CC.4bpp.lz"); -const u32 gUnknown_83F13EC[] = INCBIN_U32("graphics/region_map/unk_83F13EC.4bpp.lz"); -const u32 gUnknown_83F1550[] = INCBIN_U32("graphics/region_map/unk_83F1550.4bpp.lz"); -const u32 gUnknown_83F1640[] = INCBIN_U32("graphics/region_map/unk_83F1640.4bpp.lz"); -const u32 gUnknown_83F1738[] = INCBIN_U32("graphics/region_map/unk_83F1738.4bpp.lz"); -const u32 gUnknown_83F1804[] = INCBIN_U32("graphics/region_map/unk_83F1804.4bpp.lz"); -const u32 gUnknown_83F18D8[] = INCBIN_U32("graphics/region_map/unk_83F18D8.4bpp.lz"); -const u32 gUnknown_83F1908[] = INCBIN_U32("graphics/region_map/unk_83F1908.4bpp.lz"); -const u32 gUnknown_83F1978[] = INCBIN_U32("graphics/region_map/unk_83F1978.4bpp.lz"); -const u32 gUnknown_83F19A0[] = INCBIN_U32("graphics/region_map/unk_83F19A0.bin.lz"); - -const struct BgTemplate gUnknown_83F1A50[] = { +static const u16 gUnknown_83EF384[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal"); +static const u16 gUnknown_83EF3A4[] = INCBIN_U16("graphics/region_map/unk_83EF3A4.gbapal"); +static const u32 gUnknown_83EF3C4[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz"); +static const u32 gUnknown_83EF450[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz"); +static const u32 gUnknown_83EF4E0[] = INCBIN_U32("graphics/region_map/unk_83EF4E0.4bpp.lz"); +static const u32 gUnknown_83EF524[] = INCBIN_U32("graphics/region_map/unk_83EF524.4bpp.lz"); +static const u32 gUnknown_83EF59C[] = INCBIN_U32("graphics/region_map/unk_83EF59C.4bpp.lz"); +static const u32 gUnknown_83EF61C[] = INCBIN_U32("graphics/region_map/unk_83EF61C.4bpp.lz"); +static const u32 gUnknown_83F0330[] = INCBIN_U32("graphics/region_map/unk_83F0330.4bpp.lz"); +static const u32 gUnknown_83F0580[] = INCBIN_U32("graphics/region_map/unk_83F0580.bin.lz"); +static const u32 gUnknown_83F089C[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz"); +static const u32 gUnknown_83F0AFC[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz"); +static const u32 gUnknown_83F0C0C[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz"); +static const u32 gUnknown_83F0CF0[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz"); +static const u32 gUnknown_83F0E0C[] = INCBIN_U32("graphics/region_map/unk_83F0E0C.bin.lz"); +static const u32 gUnknown_83F0F1C[] = INCBIN_U32("graphics/region_map/unk_83F0F1C.bin.lz"); +static const u32 gUnknown_83F1084[] = INCBIN_U32("graphics/region_map/unk_83F1084.bin.lz"); +static const u32 gUnknown_83F1190[] = INCBIN_U32("graphics/region_map/unk_83F1190.bin.lz"); +static const u32 gUnknown_83F12CC[] = INCBIN_U32("graphics/region_map/unk_83F12CC.4bpp.lz"); +static const u32 gUnknown_83F13EC[] = INCBIN_U32("graphics/region_map/unk_83F13EC.4bpp.lz"); +static const u32 gUnknown_83F1550[] = INCBIN_U32("graphics/region_map/unk_83F1550.4bpp.lz"); +static const u32 gUnknown_83F1640[] = INCBIN_U32("graphics/region_map/unk_83F1640.4bpp.lz"); +static const u32 gUnknown_83F1738[] = INCBIN_U32("graphics/region_map/unk_83F1738.4bpp.lz"); +static const u32 gUnknown_83F1804[] = INCBIN_U32("graphics/region_map/unk_83F1804.4bpp.lz"); +static const u32 gUnknown_83F18D8[] = INCBIN_U32("graphics/region_map/unk_83F18D8.4bpp.lz"); +static const u32 gUnknown_83F1908[] = INCBIN_U32("graphics/region_map/unk_83F1908.4bpp.lz"); +static const u32 gUnknown_83F1978[] = INCBIN_U32("graphics/region_map/unk_83F1978.4bpp.lz"); +static const u32 gUnknown_83F19A0[] = INCBIN_U32("graphics/region_map/unk_83F19A0.bin.lz"); + +static const struct BgTemplate gUnknown_83F1A50[] = { { .bg = 0, .charBaseIndex = 0, @@ -408,7 +408,7 @@ const struct BgTemplate gUnknown_83F1A50[] = { } }; -const struct WindowTemplate gUnknown_83F1A60[] = { +static const struct WindowTemplate gUnknown_83F1A60[] = { { .bg = 3, .tilemapLeft = 3, @@ -456,12 +456,12 @@ ALIGNED(4) const u8 gUnknown_83F1A90[] = {0, 1, 2}; ALIGNED(4) const u8 gUnknown_83F1A94[] = {0, 7, 2}; ALIGNED(4) const u8 gUnknown_83F1A98[] = {0, 10, 2}; -const u8 *const gUnknown_83F1A9C[] = { +static const u8 *const gUnknown_83F1A9C[] = { gUnknown_83F1A94, gUnknown_83F1A98 }; -const u8 sSeviiMapsecs[3][30] = { +static const u8 sSeviiMapsecs[3][30] = { { MAPSEC_ONE_ISLAND, MAPSEC_TWO_ISLAND, @@ -530,28 +530,28 @@ ALIGNED(4) const u8 gUnknown_83F1B00[3][4] = { {0, 0, 0, 1} }; -const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3] = { +static const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3] = { {0x18, 0x10, 0x90, 0x20}, {0x18, 0x20, 0x90, 0x30}, {0x00, 0x00, 0x00, 0x00} }; -const struct OamData gUnknown_83F1B24 = { +static const struct OamData gUnknown_83F1B24 = { .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32) }; -const union AnimCmd gUnknown_83F1B2C[] = { +static const union AnimCmd gUnknown_83F1B2C[] = { ANIMCMD_FRAME(0x00, 20), ANIMCMD_FRAME(0x10, 20), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_83F1B38[] = { +static const union AnimCmd *const gUnknown_83F1B38[] = { gUnknown_83F1B2C }; -const struct UnkStruct_83F1B3C gUnknown_83F1B3C[] = { +static const struct UnkStruct_83F1B3C gUnknown_83F1B3C[] = { { .field_0 = MAPSEC_VIRIDIAN_FOREST, .field_4 = gMapSecName_ViridianForest, @@ -631,105 +631,105 @@ const struct UnkStruct_83F1B3C gUnknown_83F1B3C[] = { } }; -const struct OamData gUnknown_83F1C20 = { +static const struct OamData gUnknown_83F1C20 = { .shape = SPRITE_SHAPE(32x64), .size = SPRITE_SIZE(32x64) }; -const union AnimCmd gAnimCmd_83F1C28[] = { +static const union AnimCmd gAnimCmd_83F1C28[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_83F1C30[] = { +static const union AnimCmd *const gUnknown_83F1C30[] = { gAnimCmd_83F1C28 }; -const struct UnkStruct_80C4CF0 gUnknown_83F1C34 = { +static const struct UnkStruct_80C4CF0 gUnknown_83F1C34 = { 0x18, 0x10, 0xD8, 0xA0 }; -const struct OamData gUnknown_83F1C3C = { +static const struct OamData gUnknown_83F1C3C = { .shape = SPRITE_SHAPE(16x16), .size = SPRITE_SIZE(16x16), .priority = 2 }; -const union AnimCmd gAnimCmd_83F1C44[] = { +static const union AnimCmd gAnimCmd_83F1C44[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_83F1C50[] = { +static const union AnimCmd *const gUnknown_83F1C50[] = { gAnimCmd_83F1C44 }; -const struct OamData gUnknown_83F1C54 = { +static const struct OamData gUnknown_83F1C54 = { .shape = SPRITE_SHAPE(16x16), .size = SPRITE_SIZE(16x16), .priority = 2 }; -const union AnimCmd gAnimCmd_83F1C5C[] = { +static const union AnimCmd gAnimCmd_83F1C5C[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -const union AnimCmd *const gUnknown_83F1C64[] = { +static const union AnimCmd *const gUnknown_83F1C64[] = { gAnimCmd_83F1C5C }; -const struct OamData gUnknown_83F1C68 = { +static const struct OamData gUnknown_83F1C68 = { .shape = SPRITE_SHAPE(16x16), .size = SPRITE_SIZE(16x16), .priority = 2 }; -const struct OamData gUnknown_83F1C70 = { +static const struct OamData gUnknown_83F1C70 = { .shape = SPRITE_SHAPE(8x8), .size = SPRITE_SIZE(8x8), .priority = 2 }; -const union AnimCmd gAnimCmd_83F1C78[] = { +static const union AnimCmd gAnimCmd_83F1C78[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(4, 60), ANIMCMD_JUMP(0) }; -const union AnimCmd gAnimCmd_83F1C84[] = { +static const union AnimCmd gAnimCmd_83F1C84[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_JUMP(0) }; -const union AnimCmd gAnimCmd_83F1C8C[] = { +static const union AnimCmd gAnimCmd_83F1C8C[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_83F1C94[] = { +static const union AnimCmd *const gUnknown_83F1C94[] = { gAnimCmd_83F1C78 }; -const union AnimCmd *const gUnknown_83F1C98[] = { +static const union AnimCmd *const gUnknown_83F1C98[] = { gAnimCmd_83F1C84, gAnimCmd_83F1C8C }; -const u16 gUnknown_83F1CA0[] = { +static const u16 gUnknown_83F1CA0[] = { DISPCNT_WIN0_ON, DISPCNT_WIN1_ON }; -const u8 gUnknown_83F1CA4[][2] = { +static const u8 gUnknown_83F1CA4[][2] = { {REG_OFFSET_WIN0V, REG_OFFSET_WIN0H}, {REG_OFFSET_WIN1V, REG_OFFSET_WIN1H} }; -const u8 gUnknown_83F1CA8[] = {15, 1, 2}; +static const u8 gUnknown_83F1CA8[] = {15, 1, 2}; -const u8 *const gUnknown_83F1CAC[] = { +static const u8 *const gUnknown_83F1CAC[] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = gMapSecName_PalletTown, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = gMapSecName_ViridianCity, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = gMapSecName_PewterCity, @@ -841,7 +841,7 @@ const u8 *const gUnknown_83F1CAC[] = { [MAPSEC_SPECIAL_AREA - MAPSECS_KANTO] = gMapSecName_CeladonDept }; -const u16 gUnknown_83F1E60[0xC6][2] = { +static const u16 gUnknown_83F1E60[0xC6][2] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x04, 0x0b}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x04, 0x08}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x04, 0x04}, @@ -915,7 +915,7 @@ const u16 gUnknown_83F1E60[0xC6][2] = { [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x12, 0x0d}, }; -const u16 gUnknown_83F2178[0xC6][2] = { +static const u16 gUnknown_83F2178[0xC6][2] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x01, 0x01}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x01, 0x01}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x01, 0x01}, @@ -1026,7 +1026,7 @@ const u16 gUnknown_83F2178[0xC6][2] = { [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {0x01, 0x01} }; -const u8 gUnknown_83F2490[][15][22] = { +static const u8 gUnknown_83F2490[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, @@ -1096,7 +1096,7 @@ const u8 gUnknown_83F2490[][15][22] = { } }; -const u8 gUnknown_83F2724[][15][22] = { +static const u8 gUnknown_83F2724[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1132,7 +1132,7 @@ const u8 gUnknown_83F2724[][15][22] = { } }; -const u8 gUnknown_83F29B8[][15][22] = { +static const u8 gUnknown_83F29B8[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1168,7 +1168,7 @@ const u8 gUnknown_83F29B8[][15][22] = { } }; -const u8 gUnknown_83F2C4C[][15][22] = { +static const u8 gUnknown_83F2C4C[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1204,7 +1204,7 @@ const u8 gUnknown_83F2C4C[][15][22] = { } }; -const u8 gUnknown_83F2EE0[][3] = { +static const u8 gUnknown_83F2EE0[][3] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), SPAWN_PALLET_TOWN}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), SPAWN_VIRIDIAN_CITY}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), SPAWN_PEWTER_CITY}, @@ -1335,7 +1335,7 @@ static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) } } -void sub_80BFEA0(void) +static void sub_80BFEA0(void) { u16 pal[16]; CpuCopy16(&gUnknown_83EF2DC[0x20], pal, sizeof(pal)); @@ -1344,7 +1344,7 @@ void sub_80BFEA0(void) LoadPalette(&gUnknown_83EF2DC[0x2F], 0x2F, sizeof(u16)); } -void sub_80BFEDC(u8 kind) +static void sub_80BFEDC(u8 kind) { gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4)); if (gUnknown_20399D4 == NULL) @@ -1427,7 +1427,7 @@ static void sub_80BFFD0(void) gUnknown_20399D4->field_479C = r7; } -void sub_80C0100(void) +static void sub_80C0100(void) { switch (gUnknown_20399D4->field_47A4) { @@ -1478,7 +1478,7 @@ void sub_80C0100(void) gUnknown_20399D4->field_47A4++; } -bool8 sub_80C0238(void) +static bool8 sub_80C0238(void) { switch (gUnknown_20399D4->field_47A8) { @@ -1531,13 +1531,13 @@ bool8 sub_80C0238(void) return FALSE; } -void sub_80C03E8(void) +static void sub_80C03E8(void) { CreateTask(gUnknown_20399D4->field_47B8, 0); SetMainCallback2(sub_80C08B4); } -bool32 sub_80C0410(void) +static bool32 sub_80C0410(void) { if (sub_80C4164(sub_80C0E20(), 0, sub_80C3514(), sub_80C3508()) == 99) return FALSE; @@ -1545,7 +1545,7 @@ bool32 sub_80C0410(void) return TRUE; } -void sub_80C0450(void) +static void sub_80C0450(void) { if (sub_80C0410()) { @@ -1558,7 +1558,7 @@ void sub_80C0450(void) } } -void sub_80C04E4(u8 taskId) +static void sub_80C04E4(u8 taskId) { switch (gUnknown_20399D4->field_47A0) { @@ -1682,7 +1682,7 @@ void sub_80C04E4(u8 taskId) } } -void sub_80C07D0(TaskFunc taskFunc) +static void sub_80C07D0(TaskFunc taskFunc) { gUnknown_20399D4->field_47B8 = taskFunc; } @@ -1692,12 +1692,12 @@ TaskFunc sub_80C07E4(void) return gUnknown_20399D4->field_47B8; } -void sub_80C07F8(u8 taskId) +static void sub_80C07F8(u8 taskId) { gTasks[taskId].func = gUnknown_20399D4->field_47B8; } -void sub_80C0820(u8 taskId) +static void sub_80C0820(u8 taskId) { if (sub_80C0E04(2) == TRUE) sub_80C25BC(); @@ -1714,12 +1714,12 @@ void sub_80C0820(u8 taskId) FREE_IF_NOT_NULL(gUnknown_20399D4); } -void sub_80C0898(void) +static void sub_80C0898(void) { FREE_IF_NOT_NULL(gUnknown_20399D4); } -void sub_80C08B4(void) +static void sub_80C08B4(void) { RunTasks(); AnimateSprites(); @@ -1727,25 +1727,25 @@ void sub_80C08B4(void) UpdatePaletteFade(); } -void sub_80C08CC(void) +static void sub_80C08CC(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_80C08E0(void) +static void sub_80C08E0(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); } -void sub_80C08F4(void) +static void sub_80C08F4(void) { SetVBlankCallback(sub_80C08CC); } -void sub_80C0904(void) +static void sub_80C0904(void) { DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); @@ -1768,14 +1768,14 @@ void sub_80C0904(void) sub_80C0AB8(); } -void sub_80C0A2C(void) +static void sub_80C0A2C(void) { SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796[0]); SetBgTilemapBuffer(1, gUnknown_20399D4->field_1796[1]); SetBgTilemapBuffer(2, gUnknown_20399D4->field_1796[2]); } -void sub_80C0A6C(void) +static void sub_80C0A6C(void) { ResetSpriteData(); ResetPaletteFade(); @@ -1784,7 +1784,7 @@ void sub_80C0A6C(void) ScanlineEffect_Stop(); } -void sub_80C0A88(u8 mode) +static void sub_80C0A88(u8 mode) { switch (mode) { @@ -1799,7 +1799,7 @@ void sub_80C0A88(u8 mode) } } -void sub_80C0AB8(void) +static void sub_80C0AB8(void) { sub_80C4BE4(); sub_80C4C2C(0, 0x11, 0xc0); @@ -1813,7 +1813,7 @@ void sub_80C0AB8(void) sub_80C4C9C(1, 0); } -void sub_80C0B18(void) +static void sub_80C0B18(void) { ClearWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(0)); @@ -1831,12 +1831,12 @@ void sub_80C0B18(void) } } -void sub_80C0B9C(void) +static void sub_80C0B9C(void) { sub_80C4CF0(1, &gUnknown_83F1B0C[1]); } -void sub_80C0BB0(void) +static void sub_80C0BB0(void) { u16 mapsecId; u16 descOffset; @@ -1862,7 +1862,7 @@ void sub_80C0BB0(void) } } -void sub_80C0CA0(void) +static void sub_80C0CA0(void) { FillWindowPixelBuffer(0, PIXEL_FILL(0)); CopyWindowToVram(0, 3); @@ -1870,7 +1870,7 @@ void sub_80C0CA0(void) CopyWindowToVram(1, 3); } -void sub_80C0CC8(u8 bg, u16 *map) +static void sub_80C0CC8(u8 bg, u16 *map) { s16 i; s16 j; @@ -1902,32 +1902,32 @@ void sub_80C0CC8(u8 bg, u16 *map) FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3); } -u8 sub_80C0E04(u8 a0) +static u8 sub_80C0E04(u8 a0) { return gUnknown_20399D4->field_4797[a0]; } -u8 sub_80C0E20(void) +static u8 sub_80C0E20(void) { return gUnknown_20399D4->field_479B; } -u8 sub_80C0E34(void) +static u8 sub_80C0E34(void) { return gUnknown_20399D4->field_479C; } -void sub_80C0E48(u8 a0) +static void sub_80C0E48(u8 a0) { gUnknown_20399D4->field_479B = a0; } -void sub_80C0E5C(u8 a0) +static void sub_80C0E5C(u8 a0) { gUnknown_20399D4->field_479C = a0; } -void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc) +static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc) { gUnknown_20399D8 = AllocZeroed(sizeof(struct UnkStruct_20399D8)); if (FlagGet(FLAG_SYS_SEVII_MAP_4567)) @@ -1964,14 +1964,14 @@ void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc) gTasks[taskId].func = sub_80C1098; } -void sub_80C0FE0(void) +static void sub_80C0FE0(void) { sub_80C4BE4(); sub_80C4C2C(27, 4, 64); sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); } -bool8 sub_80C1014(void) +static bool8 sub_80C1014(void) { if (gUnknown_20399D8->field_1CCD < 16) { @@ -1985,7 +1985,7 @@ bool8 sub_80C1014(void) } } -bool8 sub_80C1058(void) +static bool8 sub_80C1058(void) { if (gUnknown_20399D8->field_1CCD >= 2) { @@ -1999,7 +1999,7 @@ bool8 sub_80C1058(void) } } -void sub_80C1098(u8 taskId) +static void sub_80C1098(u8 taskId) { switch (gUnknown_20399D8->field_1CC8) { @@ -2086,7 +2086,7 @@ void sub_80C1098(u8 taskId) } } -void sub_80C1280(u8 taskId) +static void sub_80C1280(u8 taskId) { gTasks[taskId].func = gUnknown_20399D8->field_1CD0; HideBg(2); @@ -2098,7 +2098,7 @@ void sub_80C1280(u8 taskId) FREE_IF_NOT_NULL(gUnknown_20399D8); } -bool8 sub_80C12EC(void) +static bool8 sub_80C12EC(void) { if (gUnknown_20399D8->field_1CDC != 0) { @@ -2113,7 +2113,7 @@ bool8 sub_80C12EC(void) } } -void sub_80C1324(u8 bg, u16 *map) +static void sub_80C1324(u8 bg, u16 *map) { s16 i; s16 j; @@ -2130,7 +2130,7 @@ void sub_80C1324(u8 bg, u16 *map) } } -void sub_80C1390(void) +static void sub_80C1390(void) { struct UnkStruct_80C4CF0 data; data.v0 = gUnknown_20399D8->field_1CD4[0] = 0x48; @@ -2145,7 +2145,7 @@ void sub_80C1390(void) sub_80C4CF0(1, &data); } -bool8 sub_80C144C(void) +static bool8 sub_80C144C(void) { if (gUnknown_20399D8->field_1CDC < 6) { @@ -2159,7 +2159,7 @@ bool8 sub_80C144C(void) } } -bool8 sub_80C1478(void) +static bool8 sub_80C1478(void) { bool8 r6 = FALSE; struct UnkStruct_80C4CF0 data; @@ -2213,12 +2213,12 @@ bool8 sub_80C1478(void) return FALSE; } -void sub_80C16B8(struct Sprite * sprite) +static void sub_80C16B8(struct Sprite * sprite) { sprite->pos1.y = gUnknown_20399D8->field_1CD4[1] + 16; } -bool8 sub_80C16D0(void) +static bool8 sub_80C16D0(void) { switch (gUnknown_20399D8->field_1CC9) { @@ -2239,12 +2239,12 @@ bool8 sub_80C16D0(void) return FALSE; } -void sub_80C1754(u8 a0, u16 a1, u16 a2) +static void sub_80C1754(u8 a0, u16 a1, u16 a2) { sub_80C176C(a0, a1, a2); } -void sub_80C176C(u8 a0, u16 a1, u16 a2) +static void sub_80C176C(u8 a0, u16 a1, u16 a2) { u8 spriteId; @@ -2278,7 +2278,7 @@ void sub_80C176C(u8 a0, u16 a1, u16 a2) gSprites[spriteId].invisible = FALSE; } -void sub_80C1880(void) +static void sub_80C1880(void) { u8 i; for (i = 0; i < 2; i++) @@ -2292,7 +2292,7 @@ void sub_80C1880(void) } } -const u8 *sub_80C18E0(u16 a0) +static const u8 *sub_80C18E0(u16 a0) { u8 i; for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) @@ -2303,7 +2303,7 @@ const u8 *sub_80C18E0(u16 a0) return gUnknown_8418EC3; } -const u8 *sub_80C1920(u16 a0) +static const u8 *sub_80C1920(u16 a0) { u8 i; for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) @@ -2314,7 +2314,7 @@ const u8 *sub_80C1920(u16 a0) return gUnknown_8418EC3; } -void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc) +static void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc) { u8 r0; gUnknown_20399DC = AllocZeroed(sizeof(struct UnkStruct_20399DC)); @@ -2334,7 +2334,7 @@ void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc) gTasks[taskId].func = sub_80C1A94; } -bool8 sub_80C19FC(void) +static bool8 sub_80C19FC(void) { switch (gUnknown_20399DC->field_3D4A) { @@ -2357,7 +2357,7 @@ bool8 sub_80C19FC(void) return FALSE; } -void sub_80C1A94(u8 taskId) +static void sub_80C1A94(u8 taskId) { switch (gUnknown_20399DC->field_3D48) { @@ -2407,7 +2407,7 @@ void sub_80C1A94(u8 taskId) } } -void sub_80C1BE0(u8 taskId) +static void sub_80C1BE0(u8 taskId) { switch (gUnknown_20399DC->field_3D49) { @@ -2464,7 +2464,7 @@ void sub_80C1BE0(u8 taskId) } } -void sub_80C1E14(u8 taskId) +static void sub_80C1E14(u8 taskId) { gTasks[taskId].func = gUnknown_20399DC->field_3D44; HideBg(2); @@ -2477,12 +2477,12 @@ void sub_80C1E14(u8 taskId) FREE_IF_NOT_NULL(gUnknown_20399DC); } -void sub_80C1E78(u8 bgId, const u16 * tilemap) +static void sub_80C1E78(u8 bgId, const u16 * tilemap) { CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); } -void sub_80C1E94(void) +static void sub_80C1E94(void) { u16 r4; u16 r0; @@ -2504,7 +2504,7 @@ void sub_80C1E94(void) gUnknown_20399DC->field_3E24 = (0x88 - gUnknown_20399DC->field_3E1C) / 8; } -bool8 sub_80C1F80(bool8 a0) +static bool8 sub_80C1F80(bool8 a0) { struct UnkStruct_80C4CF0 data; @@ -2551,12 +2551,12 @@ bool8 sub_80C1F80(bool8 a0) return FALSE; } -void nullsub_63(struct Sprite * sprite) +static void nullsub_63(struct Sprite * sprite) { } -void sub_80C210C(u8 a0, u8 a1, u8 a2) +static void sub_80C210C(u8 a0, u8 a1, u8 a2) { u8 spriteId; struct SpriteSheet spriteSheet = { @@ -2587,7 +2587,7 @@ void sub_80C210C(u8 a0, u8 a1, u8 a2) gSprites[spriteId].invisible = TRUE; } -void sub_80C2208(u8 taskId, TaskFunc taskFunc) +static void sub_80C2208(u8 taskId, TaskFunc taskFunc) { u8 i; @@ -2606,7 +2606,7 @@ void sub_80C2208(u8 taskId, TaskFunc taskFunc) gTasks[taskId].func = sub_80C267C; } -void sub_80C22C4(u8 a0, bool8 a1) +static void sub_80C22C4(u8 a0, bool8 a1) { u8 i; if (a0 == 6) @@ -2622,7 +2622,7 @@ void sub_80C22C4(u8 a0, bool8 a1) } } -bool8 sub_80C2344(void) +static bool8 sub_80C2344(void) { switch (gUnknown_20399E0->field_CCD) { @@ -2666,7 +2666,7 @@ bool8 sub_80C2344(void) return FALSE; } -void sub_80C24BC(void) +static void sub_80C24BC(void) { struct UnkStruct_80C4CF0 data; data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 8; @@ -2680,7 +2680,7 @@ void sub_80C24BC(void) sub_80C4C9C(0, 0); } -void sub_80C253C(void) +static void sub_80C253C(void) { struct UnkStruct_80C4CF0 data = gUnknown_83F1C34; sub_80C4BE4(); @@ -2692,12 +2692,12 @@ void sub_80C253C(void) sub_80C4C9C(0, 0); } -void sub_80C2594(u8 taskId) +static void sub_80C2594(u8 taskId) { gTasks[taskId].func = gUnknown_20399E0->field_CC8; } -void sub_80C25BC(void) +static void sub_80C25BC(void) { u8 i; sub_80C2604(); @@ -2708,7 +2708,7 @@ void sub_80C25BC(void) FREE_IF_NOT_NULL(gUnknown_20399E0); } -void sub_80C2604(void) +static void sub_80C2604(void) { u8 i; for (i = 0; i < 6; i++) @@ -2724,7 +2724,7 @@ void sub_80C2604(void) } } -void sub_80C267C(u8 taskId) +static void sub_80C267C(u8 taskId) { switch (gUnknown_20399E0->field_CCC) { @@ -2832,7 +2832,7 @@ void sub_80C267C(u8 taskId) } } -bool8 sub_80C29A4(void) +static bool8 sub_80C29A4(void) { sub_80C2B48(); if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 0) @@ -2888,7 +2888,7 @@ bool8 sub_80C29A4(void) return FALSE; } -void sub_80C2B48(void) +static void sub_80C2B48(void) { struct UnkStruct_80C4CF0 data; data.v0 = gUnknown_20399E0->field_000[0]->field_400->pos1.x; @@ -2898,7 +2898,7 @@ void sub_80C2B48(void) sub_80C4CF0(0, &data); } -void sub_80C2B9C(void) +static void sub_80C2B9C(void) { struct UnkStruct_80C4CF0 data; data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 16; @@ -2912,12 +2912,12 @@ void sub_80C2B9C(void) sub_80C4C9C(0, 0); } -void sub_80C2C1C(u8 taskId) +static void sub_80C2C1C(u8 taskId) { gTasks[taskId].func = sub_80C2C7C; } -void sub_80C2C38(void) +static void sub_80C2C38(void) { sub_80C210C(0, 4, 4); sub_80C210C(1, 5, 5); @@ -2927,7 +2927,7 @@ void sub_80C2C38(void) sub_80C210C(5, 9, 9); } -void sub_80C2C7C(u8 taskId) +static void sub_80C2C7C(u8 taskId) { switch (gUnknown_20399E0->field_CCF) { @@ -2988,7 +2988,7 @@ void sub_80C2C7C(u8 taskId) } -bool8 sub_80C2E1C(void) +static bool8 sub_80C2E1C(void) { sub_80C2B48(); if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 104) @@ -3044,7 +3044,7 @@ bool8 sub_80C2E1C(void) return FALSE; } -void sub_80C2FC0(struct Sprite * sprite) +static void sub_80C2FC0(struct Sprite * sprite) { if (gUnknown_20399E4->field_00C != 0) { @@ -3059,7 +3059,7 @@ void sub_80C2FC0(struct Sprite * sprite) } } -void sub_80C3008(u16 a0, u16 a1) +static void sub_80C3008(u16 a0, u16 a1) { gUnknown_20399E4 = AllocZeroed(sizeof(struct UnkStruct_20399E4)); LZ77UnCompWram(gUnknown_83EF4E0, gUnknown_20399E4->field_024); @@ -3074,7 +3074,7 @@ void sub_80C3008(u16 a0, u16 a1) sub_80C309C(); } -void sub_80C309C(void) +static void sub_80C309C(void) { u8 spriteId; struct SpriteSheet spriteSheet = { @@ -3103,17 +3103,17 @@ void sub_80C309C(void) sub_80C3154(TRUE); } -void sub_80C3154(bool8 a0) +static void sub_80C3154(bool8 a0) { gUnknown_20399E4->field_01C->invisible = a0; } -void sub_80C3178(void) +static void sub_80C3178(void) { gUnknown_20399E4->field_00E = 0; } -void sub_80C3188(void) +static void sub_80C3188(void) { if (gUnknown_20399E4->field_01C != NULL) { @@ -3124,7 +3124,7 @@ void sub_80C3188(void) FREE_IF_NOT_NULL(gUnknown_20399E4); } -u8 sub_80C31C0(void) +static u8 sub_80C31C0(void) { u8 ret = 0; gUnknown_20399E4->field_008 = 0; @@ -3206,7 +3206,7 @@ u8 sub_80C31C0(void) return ret; } -u8 sub_80C3348(void) +static u8 sub_80C3348(void) { if (gUnknown_20399E4->field_00C != 0) return 2; @@ -3225,12 +3225,12 @@ u8 sub_80C3348(void) return 3; } -u8 sub_80C3400(void) +static u8 sub_80C3400(void) { return gUnknown_20399E4->field_010(); } -void sub_80C3418(void) +static void sub_80C3418(void) { if (sub_80C0E04(0) == 1) { @@ -3279,17 +3279,17 @@ void sub_80C3418(void) gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); } -u16 sub_80C3508(void) +static u16 sub_80C3508(void) { return gUnknown_20399E4->field_000; } -u16 sub_80C3514(void) +static u16 sub_80C3514(void) { return gUnknown_20399E4->field_002; } -u16 sub_80C3520(void) +static u16 sub_80C3520(void) { u8 ret; if (gUnknown_20399E4->field_002 < 0 @@ -3304,7 +3304,7 @@ u16 sub_80C3520(void) return ret; } -u16 sub_80C3580(void) +static u16 sub_80C3580(void) { u8 ret; if (gUnknown_20399E4->field_002 < 0 @@ -3319,7 +3319,7 @@ u16 sub_80C3580(void) return ret; } -u8 sub_80C35DC(u8 mapsec) +static u8 sub_80C35DC(u8 mapsec) { switch (mapsec) { @@ -3372,7 +3372,7 @@ u8 sub_80C35DC(u8 mapsec) } } -u8 sub_80C3878(u8 mapsec) +static u8 sub_80C3878(u8 mapsec) { switch (mapsec) { @@ -3445,7 +3445,7 @@ u8 sub_80C3878(u8 mapsec) } } -u8 sub_80C3AC8(u8 a0) +static u8 sub_80C3AC8(u8 a0) { switch (a0) { @@ -3458,12 +3458,12 @@ u8 sub_80C3AC8(u8 a0) } } -u16 sub_80C3B00(void) +static u16 sub_80C3B00(void) { return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; } -void sub_80C3B28(void) +static void sub_80C3B28(void) { u16 width; u32 divisor; @@ -3541,7 +3541,7 @@ void sub_80C3B28(void) gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1]; } -void sub_80C3D40(void) +static void sub_80C3D40(void) { switch (sub_80C3B00()) { @@ -3721,7 +3721,7 @@ void sub_80C3D40(void) gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); } -u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3) +static u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3) { switch (a0) { @@ -3738,7 +3738,7 @@ u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3) } } -void sub_80C41D8(u16 a0, u16 a1) +static void sub_80C41D8(u16 a0, u16 a1) { gUnknown_20399E8 = AllocZeroed(sizeof(struct UnkStruct_20399E8)); if (gSaveBlock2Ptr->playerGender == FEMALE) @@ -3752,7 +3752,7 @@ void sub_80C41D8(u16 a0, u16 a1) sub_80C4244(); } -void sub_80C4244(void) +static void sub_80C4244(void) { u8 spriteId; struct SpriteSheet spriteSheet = { @@ -3784,12 +3784,12 @@ void sub_80C4244(void) sub_80C4324(TRUE); } -void sub_80C4324(bool8 a0) +static void sub_80C4324(bool8 a0) { gUnknown_20399E8->field_04->invisible = a0; } -void sub_80C4348(void) +static void sub_80C4348(void) { if (gUnknown_20399E8->field_04 != NULL) { @@ -3800,17 +3800,17 @@ void sub_80C4348(void) FREE_IF_NOT_NULL(gUnknown_20399E8); } -u16 sub_80C4380(void) +static u16 sub_80C4380(void) { return gUnknown_20399E8->field_00; } -u16 sub_80C438C(void) +static u16 sub_80C438C(void) { return gUnknown_20399E8->field_02; } -void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc) +static void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc) { gUnknown_20399EC = AllocZeroed(sizeof(struct UnkStruct_20399EC)); gUnknown_20399EC->field_468 = taskFunc; @@ -3820,7 +3820,7 @@ void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc) gTasks[taskId].func = sub_80C440C; } -void sub_80C440C(u8 taskId) +static void sub_80C440C(u8 taskId) { switch (gUnknown_20399EC->field_463) { @@ -3852,12 +3852,12 @@ void sub_80C440C(u8 taskId) } } -void sub_80C44E4(u8 taskId) +static 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) +static void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) { u8 spriteId; struct SpriteSheet spriteSheet = { @@ -3887,7 +3887,7 @@ void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) gUnknown_20399EC->field_2D0[a1].field_4 = a0; } -void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) +static void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) { u8 spriteId; u8 r4; @@ -3922,7 +3922,7 @@ void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) gUnknown_20399EC->field_140[a1].field_4 = a0; } -void sub_80C4750(void) +static void sub_80C4750(void) { u16 i, j, k; u8 r7 = 0; @@ -3945,7 +3945,7 @@ void sub_80C4750(void) } } -void sub_80C47F0(void) +static void sub_80C47F0(void) { u16 i, j, k; u8 r6 = 0; @@ -3972,7 +3972,7 @@ void sub_80C47F0(void) } } -void sub_80C48BC(u8 a0, u8 a1, bool8 a2) +static void sub_80C48BC(u8 a0, u8 a1, bool8 a2) { u8 i; if (a1 == 25) @@ -3990,7 +3990,7 @@ void sub_80C48BC(u8 a0, u8 a1, bool8 a2) } } -void sub_80C4960(u8 a0, u8 a1, bool8 a2) +static void sub_80C4960(u8 a0, u8 a1, bool8 a2) { u8 i; if (a1 == 25) @@ -4008,7 +4008,7 @@ void sub_80C4960(u8 a0, u8 a1, bool8 a2) } } -void sub_80C4A04(void) +static void sub_80C4A04(void) { u8 i; for (i = 0; i < 25; i++) @@ -4032,7 +4032,7 @@ void sub_80C4A04(void) FREE_IF_NOT_NULL(gUnknown_20399EC); } -bool8 sub_80C4AAC(u8 a0) +static bool8 sub_80C4AAC(u8 a0) { if (gUnknown_20399F0[a0] != NULL) return FALSE; @@ -4049,7 +4049,7 @@ bool8 sub_80C4AAC(u8 a0) return TRUE; } -bool8 sub_80C4B30(u8 a0) +static bool8 sub_80C4B30(u8 a0) { if (gUnknown_20399F0[a0] == NULL) return FALSE; @@ -4066,7 +4066,7 @@ bool8 sub_80C4B30(u8 a0) return TRUE; } -void sub_80C4BB8(void) +static void sub_80C4BB8(void) { u8 i; for (i = 0; i < 3; i++) @@ -4075,7 +4075,7 @@ void sub_80C4BB8(void) } } -void sub_80C4BE4(void) +static void sub_80C4BE4(void) { struct UnkStruct_80C4CF0 data = {}; sub_80C4C2C(0, 0, 0); @@ -4087,7 +4087,7 @@ void sub_80C4BE4(void) sub_80C4C9C(1, 1); } -void sub_80C4C2C(u8 a0, u16 a1, u16 a2) +static void sub_80C4C2C(u8 a0, u16 a1, u16 a2) { u16 regval = a0 << 8; regval |= a1; @@ -4095,31 +4095,31 @@ void sub_80C4C2C(u8 a0, u16 a1, u16 a2) SetGpuReg(REG_OFFSET_BLDCNT, regval); } -void sub_80C4C48(u16 a0) +static void sub_80C4C48(u16 a0) { SetGpuReg(REG_OFFSET_BLDY, a0); } -void sub_80C4C5C(u16 a0, u16 a1) +static void sub_80C4C5C(u16 a0, u16 a1) { u16 regval = a0 << 8; regval |= a1; SetGpuReg(REG_OFFSET_BLDALPHA, regval); } -void sub_80C4C74(u16 a0, u16 a1) +static void sub_80C4C74(u16 a0, u16 a1) { u16 regval = a1 << 8; regval |= a0; SetGpuReg(REG_OFFSET_WININ, regval); } -void sub_80C4C88(u16 a0) +static void sub_80C4C88(u16 a0) { SetGpuReg(REG_OFFSET_WINOUT, a0); } -void sub_80C4C9C(u8 a0, u8 a1) +static void sub_80C4C9C(u8 a0, u8 a1) { u16 data[2]; memcpy(data, gUnknown_83F1CA0, 4); @@ -4134,19 +4134,19 @@ void sub_80C4C9C(u8 a0, u8 a1) } } -void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1) +static void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1) { SetGpuReg(gUnknown_83F1CA4[a0][0], (a1->v2 << 8) | a1->v6); SetGpuReg(gUnknown_83F1CA4[a0][1], (a1->v0 << 8) | a1->v4); } -void sub_80C4D30(void) +static void sub_80C4D30(void) { sub_80C4BB8(); sub_80C4BE4(); } -bool32 sub_80C4D40(u16 a0) +static bool32 sub_80C4D40(u16 a0) { if (gUnknown_20399D4 != NULL) return FALSE; @@ -4202,7 +4202,7 @@ u8 *sub_80C4E08(u8 *dest, u16 mapsec) return GetMapNameGeneric(dest, mapsec); } -void sub_80C4E18(const u8 *str) +static void sub_80C4E18(const u8 *str) { if (gUnknown_20399D4->field_4797[2] == 1) FillWindowPixelBuffer(3, PIXEL_FILL(0)); @@ -4212,7 +4212,7 @@ void sub_80C4E18(const u8 *str) CopyWindowToVram(3, 2); } -void sub_80C4E74(const u8 *str) +static void sub_80C4E74(const u8 *str) { if (gUnknown_20399D4->field_4797[2] == 1) FillWindowPixelBuffer(4, PIXEL_FILL(0)); @@ -4222,7 +4222,7 @@ void sub_80C4E74(const u8 *str) CopyWindowToVram(4, 3); } -void sub_80C4ED0(bool8 mode) +static void sub_80C4ED0(bool8 mode) { if (!mode) { @@ -4242,7 +4242,7 @@ void MCB2_FlyMap(void) sub_80BFEDC(2); } -void sub_80C4F08(u8 taskId) +static void sub_80C4F08(u8 taskId) { switch (gUnknown_20399FC->field_0) { @@ -4361,14 +4361,14 @@ void sub_80C4F08(u8 taskId) } } -void sub_80C51E8(void) +static void sub_80C51E8(void) { gUnknown_20399FC = AllocZeroed(sizeof(struct UnkStruct_20399FC)); gUnknown_20399FC->field_0 = 0; gUnknown_20399FC->field_1 = 0; } -void sub_80C5208(u8 taskId) +static void sub_80C5208(u8 taskId) { if (sub_80C0E04(2) == TRUE) sub_80C25BC(); @@ -4386,7 +4386,7 @@ void sub_80C5208(u8 taskId) FREE_IF_NOT_NULL(gUnknown_20399FC); } -void sub_80C527C(u16 mapsec) +static void sub_80C527C(u16 mapsec) { u16 idx = mapsec - MAPSECS_KANTO; if (gUnknown_83F2EE0[idx][2]) -- cgit v1.2.3 From 1ae107fba5e6a1d1c69c9dfff10e34dac612fcf0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 7 Jan 2020 21:01:13 -0500 Subject: Fix name of junk unref pals --- src/region_map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/region_map.c b/src/region_map.c index 7415deb32..36cf7e83b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -337,7 +337,7 @@ static const u16 gUnknown_83EF27C[] = INCBIN_U16("graphics/region_map/unk_83EF27 static const u16 gUnknown_83EF29C[] = INCBIN_U16("graphics/region_map/unk_83EF29C.gbapal"); static const u16 gUnknown_83EF2BC[] = INCBIN_U16("graphics/region_map/unk_83EF2BC.gbapal"); static const u16 gUnknown_83EF2DC[] = INCBIN_U16("graphics/region_map/unk_83EF2DC.gbapal"); -static const u16 _83EF2FC[] = { +static const u16 unref_83EF37C[] = { RGB(0, 0, 31), RGB(0, 12, 31), RGB_WHITE, -- cgit v1.2.3 From f8e911bcf57ec6f2b2e7ec1c0c09e467793b94ab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 8 Jan 2020 16:03:42 -0500 Subject: Partial documentation of region map --- data/strings.s | 75 ++-- include/map_preview_screen.h | 2 +- include/region_map.h | 14 + include/strings.h | 56 +-- src/map_preview_screen.c | 2 +- src/region_map.c | 940 +++++++++++++++++++++---------------------- 6 files changed, 542 insertions(+), 547 deletions(-) diff --git a/data/strings.s b/data/strings.s index d1bbeef49..c6a38c442 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2524,161 +2524,142 @@ gUnknown_8418E77:: @ 8418E77 gUnknown_8418E8A:: @ 8418E8A .string "$" -gUnknown_8418E8B:: @ 8418E8B +gText_RegionMap_Space:: @ 8418E8B .string " $" -gUnknown_8418E8D:: @ 8418E8D +gText_RegionMap_AButtonGuide:: @ 8418E8D .string "{A_BUTTON}GUIDE$" -gUnknown_8418E95:: @ 8418E95 +gText_RegionMap_AButtonCancel:: @ 8418E95 .string "{A_BUTTON}CANCEL$" -gUnknown_8418E9E:: @ 8418E9E +gText_RegionMap_AButtonCancel2:: @ 8418E9E .string "{A_BUTTON}CANCEL$" -gUnknown_8418EA7:: @ 8418EA7 +gText_RegionMap_AButtonSwitch:: @ 8418EA7 .string "{A_BUTTON}SWITCH$" -gUnknown_8418EB0:: @ 8418EB0 +gText_RegionMap_AButtonOK:: @ 8418EB0 .string "{A_BUTTON}OK$" -gUnknown_8418EB5:: @ 8418EB5 +gText_RegionMap_DPadMove:: @ 8418EB5 .string "{DPAD_ANY}MOVE$" -gUnknown_8418EBC:: @ 8418EBC +gText_RegionMap_UpDownPick:: @ 8418EBC .string "{DPAD_UPDOWN}PICK$" -gUnknown_8418EC3:: @ 8418EC3 +gText_RegionMap_NoData:: @ 8418EC3 .string "No data$" -gUnknown_8418ECB:: @ 8418ECB - @ Viridian Forest +gText_RegionMap_AreaDesc_ViridianForest:: .string "A deep and sprawling forest that\n" .string "extends around VIRIDIAN CITY.\n" .string "A natural maze, many people\n" .string "become lost inside.$" -gUnknown_8418F3A:: @ 8418F3A - @ Mt. Moon +gText_RegionMap_AreaDesc_MtMoon:: .string "A mystical mountain that is known\n" .string "for its frequent meteor falls.\n" .string "The shards of stars that fall\n" .string "here are known as MOON STONES.$" -gUnknown_8418FB8:: @ 8418FB8 - @ Diglett's Cave +gText_RegionMap_AreaDesc_DiglettsCave:: .string "A seemingly plain tunnel that was\n" .string "dug by wild DIGLETT.\n" .string "It is famous for connecting\n" .string "ROUTES 2 and 11.$" -gUnknown_841901C:: @ 841901C - @ Victory Road +gText_RegionMap_AreaDesc_VictoryRoad:: .string "A tunnel situated on ROUTE 23.\n" .string "It earned its name because it\n" .string "must be traveled by all TRAINERS\n" .string "aiming for the top.$" -gUnknown_841908E:: @ 841908E - @ Pokémon Mansion +gText_RegionMap_AreaDesc_PokemonMansion:: .string "A decrepit, burned-down mansion\n" .string "on CINNABAR ISLAND.\n" .string "It got its name because a famous\n" .string "POKéMON researcher lived there.$" -gUnknown_8419103:: @ 8419103 - @ Safari Zone +gText_RegionMap_AreaDesc_SafariZone:: .string "An amusement park outside FUCHSIA\n" .string "CITY where many rare POKéMON can\n" .string "be observed in the wild.\n" .string "Catch them in a popular game!$" -gUnknown_841917D:: @ 841917D - @ Rock Tunnel +gText_RegionMap_AreaDesc_RockTunnel:: .string "A naturally formed underground\n" .string "tunnel. Because it has not been\n" .string "developed, it is inky dark inside.\n" .string "A light is needed to get through.$" -gUnknown_8419201:: @ 8419201 - @ Seafoam Islands +gText_RegionMap_AreaDesc_SeafoamIslands:: .string "A pair of islands that is situated\n" .string "on ROUTE 20.\n" .string "The two islands are shaped the\n" .string "same, as if they were twins.$" -gUnknown_841926D:: @ 841926D - @ Pokémon Tower +gText_RegionMap_AreaDesc_PokemonTower:: .string "A tower that houses the graves of\n" .string "countless POKéMON.\n" .string "Many people visit it daily to pay\n" .string "their respects to the fallen.$" -gUnknown_84192E2:: @ 84192E2 - @ Cerulean Cave +gText_RegionMap_AreaDesc_CeruleanCave:: .string "A mysterious cave that is filled\n" .string "with terribly tough POKéMON.\n" .string "It is so dangerous, the POKéMON\n" .string "LEAGUE is in charge of it.$" -gUnknown_841935B:: @ 841935B - @ Power Plant +gText_RegionMap_AreaDesc_PowerPlant:: .string "A power plant that was abandoned\n" .string "years ago, though some of the\n" .string "machines still work. It is infested\n" .string "with electric POKéMON.$" -gUnknown_84193D5:: @ 84193D5 - @ Mt. Ember +gText_RegionMap_AreaDesc_MtEmber:: .string "Supposedly an inactive volcano.\n" .string "However, there are persistent\n" .string "reports that the peak blazes\n" .string "with fire at night.$" -gUnknown_8419444:: @ 8419444 - @ Berry Forest +gText_RegionMap_AreaDesc_BerryForest:: .string "A forest on a small islet off the\n" .string "coast of THREE ISLAND. BERRIES\n" .string "grow wildly in profusion, quickly\n" .string "replenishing those that fall off.$" -gUnknown_84194C9:: @ 84194C9 - @ Icefall Cave +gText_RegionMap_AreaDesc_IcefallCave:: .string "A cave which is covered by water\n" .string "and ice on FOUR ISLAND.\n" .string "It seems like the end of the cave\n" .string "is connected to the ocean.$" -gUnknown_841953F:: @ 841953F - @ Lost Cave +gText_RegionMap_AreaDesc_LostCave:: .string "A bewildering cave off the coast\n" .string "of RESORT GORGEOUS.\n" .string "Some curious thrill seekers have\n" .string "never emerged from it.$" -gUnknown_84195AC:: @ 84195AC - @ Tanoby Ruins +gText_RegionMap_AreaDesc_TanobyRuins:: .string "An ancient ruin that is rumored to\n" .string "be home to a peculiar POKéMON.\n" .string "However, so far, the POKéMON\n" .string "remains an unconfirmed rumor.$" -gUnknown_8419629:: @ 8419629 - @ Altering Cave +gText_RegionMap_AreaDesc_AlteringCave:: .string "This island has been known by this\n" .string "name since the distant past.\n" .string "No one today knows where it got\n" .string "this name, however.$" -gUnknown_841969D:: @ 841969D - @ Pattern Bush +gText_RegionMap_AreaDesc_PatternBush:: .string "A lush and bush-like area. \n" .string "In it are patterns where no grass\n" .string "grows. Some study it in the belief\n" .string "that a secret is concealed.$" -gUnknown_841971A:: @ 841971A - @ Dotted Hole +gText_RegionMap_AreaDesc_DottedHole:: .string "A mysterious, just-discovered\n" .string "ruin from an ancient time.\n" .string "It got its name from the six dots\n" diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index c4e2fa70c..ea85baf71 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -49,6 +49,6 @@ void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); bool32 sub_80F83B0(void); -const struct MapPreviewScreen * sub_80F8544(u8 mapsec); +const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/region_map.h b/include/region_map.h index bc5f789bd..dd4fe491b 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -24,6 +24,20 @@ enum { MAPSECTYPE_CITY_CANTFLY, }; +enum { + MAPPERM_0, + MAPPERM_1, + MAPPERM_2, + MAPPERM_3 +}; + +enum { + REGIONMAP_KANTO, + REGIONMAP_SEVII123, + REGIONMAP_SEVII45, + REGIONMAP_SEVII67 +}; + // Exported RAM declarations // Exported ROM declarations diff --git a/include/strings.h b/include/strings.h index e8b4f1b38..8911a7c93 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1004,33 +1004,33 @@ extern const u8 gText_LinkBattles[]; extern const u8 gText_LinkCableBattles[]; // region_map -extern const u8 gUnknown_8418EB5[]; -extern const u8 gUnknown_8418E8B[]; -extern const u8 gUnknown_8418E8D[]; -extern const u8 gUnknown_8418E95[]; -extern const u8 gUnknown_8418E9E[]; -extern const u8 gUnknown_8418EA7[]; -extern const u8 gUnknown_8418EB0[]; -extern const u8 gUnknown_8418EBC[]; -extern const u8 gUnknown_8418EC3[]; -extern const u8 gUnknown_8418ECB[]; -extern const u8 gUnknown_8418F3A[]; -extern const u8 gUnknown_8418FB8[]; -extern const u8 gUnknown_841901C[]; -extern const u8 gUnknown_841908E[]; -extern const u8 gUnknown_8419103[]; -extern const u8 gUnknown_841917D[]; -extern const u8 gUnknown_8419201[]; -extern const u8 gUnknown_841926D[]; -extern const u8 gUnknown_84192E2[]; -extern const u8 gUnknown_841935B[]; -extern const u8 gUnknown_84193D5[]; -extern const u8 gUnknown_8419444[]; -extern const u8 gUnknown_84194C9[]; -extern const u8 gUnknown_841953F[]; -extern const u8 gUnknown_84195AC[]; -extern const u8 gUnknown_8419629[]; -extern const u8 gUnknown_841969D[]; -extern const u8 gUnknown_841971A[]; +extern const u8 gText_RegionMap_DPadMove[]; +extern const u8 gText_RegionMap_Space[]; +extern const u8 gText_RegionMap_AButtonGuide[]; +extern const u8 gText_RegionMap_AButtonCancel[]; +extern const u8 gText_RegionMap_AButtonCancel2[]; +extern const u8 gText_RegionMap_AButtonSwitch[]; +extern const u8 gText_RegionMap_AButtonOK[]; +extern const u8 gText_RegionMap_UpDownPick[]; +extern const u8 gText_RegionMap_NoData[]; +extern const u8 gText_RegionMap_AreaDesc_ViridianForest[]; +extern const u8 gText_RegionMap_AreaDesc_MtMoon[]; +extern const u8 gText_RegionMap_AreaDesc_DiglettsCave[]; +extern const u8 gText_RegionMap_AreaDesc_VictoryRoad[]; +extern const u8 gText_RegionMap_AreaDesc_PokemonMansion[]; +extern const u8 gText_RegionMap_AreaDesc_SafariZone[]; +extern const u8 gText_RegionMap_AreaDesc_RockTunnel[]; +extern const u8 gText_RegionMap_AreaDesc_SeafoamIslands[]; +extern const u8 gText_RegionMap_AreaDesc_PokemonTower[]; +extern const u8 gText_RegionMap_AreaDesc_CeruleanCave[]; +extern const u8 gText_RegionMap_AreaDesc_PowerPlant[]; +extern const u8 gText_RegionMap_AreaDesc_MtEmber[]; +extern const u8 gText_RegionMap_AreaDesc_BerryForest[]; +extern const u8 gText_RegionMap_AreaDesc_IcefallCave[]; +extern const u8 gText_RegionMap_AreaDesc_LostCave[]; +extern const u8 gText_RegionMap_AreaDesc_TanobyRuins[]; +extern const u8 gText_RegionMap_AreaDesc_AlteringCave[]; +extern const u8 gText_RegionMap_AreaDesc_PatternBush[]; +extern const u8 gText_RegionMap_AreaDesc_DottedHole[]; #endif //GUARD_STRINGS_H diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 0747e8ade..c5b41a7c1 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -552,7 +552,7 @@ static void sub_80F83D0(u8 taskId) } } -const struct MapPreviewScreen * sub_80F8544(u8 mapsec) +const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec) { u8 idx; diff --git a/src/region_map.c b/src/region_map.c index 36cf7e83b..7a411b8e8 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -33,11 +33,11 @@ struct UnkStruct_20399D4 { u8 field_0000[19]; u8 field_0013[19]; - u16 field_0026[5][600]; + u16 layouts[5][600]; // Inefficiency: these should be u8 or have half the elements each - u16 field_1796[3][BG_SCREEN_SIZE]; - u8 field_4796; - u8 field_4797[4]; + u16 bgTilemapBuffers[3][BG_SCREEN_SIZE]; + u8 mapType; + bool8 regionMapPermissions[4]; u8 field_479B; u8 field_479C; u8 filler_479D[3]; @@ -52,25 +52,25 @@ struct UnkStruct_20399D4 u16 field_47B0; u8 filler_47B2[6]; TaskFunc field_47B8; - MainCallback field_47BC; + MainCallback savedCallback; }; // size = 0x47C0 -struct UnkStruct_20399D8_14B0 +struct SelectionCursorSubspriteData { - u8 field_000[0x400]; - struct Sprite * field_400; - u16 field_404; - u16 field_406; - s16 field_408; + u8 tiles[0x400]; + struct Sprite * sprite; + u16 tileTag; + u16 paletteTag; + s16 xCoord; }; struct UnkStruct_20399D8 { - u8 field_0000[0x1000]; - u16 field_1000[0x258]; - struct UnkStruct_20399D8_14B0 field_14B0[2]; + u8 bgTiles[0x1000]; + u16 tileMap[0x258]; + struct SelectionCursorSubspriteData selectionCursorSubspriteData[2]; u8 field_1CC8; - u8 field_1CC9; + u8 selectionCursorLoadState; u8 field_1CCA; u8 field_1CCB; u8 field_1CCC; @@ -81,7 +81,7 @@ struct UnkStruct_20399D8 u16 field_1CDC; }; // size = 0x1CE0 -struct UnkStruct_80C4CF0 +struct GpuWindowParams { u16 v0; u16 v2; @@ -91,19 +91,19 @@ struct UnkStruct_80C4CF0 struct UnkStruct_83F1B3C { - u16 field_0; - const u8 *field_4; - const u8 *field_8; + u16 id; + const u8 *name; + const u8 *desc; }; -struct UnkStruct_20399DC +struct DungeonMapPreviewManagerStruct { - u16 field_0000[0x1C20]; - u16 field_3840[0x280]; - const struct MapPreviewScreen * field_3D40; - TaskFunc field_3D44; - u8 field_3D48; - u8 field_3D49; + u16 tiles[0x1C20]; + u16 tilemap[0x280]; + const struct MapPreviewScreen * mapPreviewInfo; + TaskFunc savedTask; + u8 dungeonMapPreviewPrepState; + u8 dungeonMapPreviewDrawState; u8 field_3D4A; u8 field_3D4B; u8 field_3D4C; @@ -220,7 +220,7 @@ struct UnkStruct_20399FC static EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; static EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; -static EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; +static EWRAM_DATA struct DungeonMapPreviewManagerStruct * sDungeonMapPreviewManager = NULL; static EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL; static EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; static EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL; @@ -229,26 +229,26 @@ static EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; static EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); -static void sub_80C0100(void); -static bool8 sub_80C0238(void); +static void CB2_OpenRegionMap(void); +static bool8 HandleLoadRegionMapGfx(void); static void sub_80C03E8(void); static void sub_80C04E4(u8 taskId); static void sub_80C07F8(u8 taskId); static void sub_80C0820(u8 taskId); static void sub_80C08B4(void); -static void sub_80C08E0(void); +static void NullVBlankHBlankCallbacks(void); static void sub_80C08F4(void); -static void sub_80C0904(void); -static void sub_80C0A2C(void); -static void sub_80C0A6C(void); -static void sub_80C0A88(u8 a0); +static void ResetGpu(void); +static void SetBgTilemapBuffers(void); +static void ResetOamForRegionMap(void); +static void SetBg0andBg3Visibility(u8 a0); static void sub_80C0AB8(void); static void sub_80C0B18(void); static void sub_80C0B9C(void); static void sub_80C0BB0(void); static void sub_80C0CC8(u8 bg, u16 *map); -static bool8 sub_80C0E04(u8 a0); -static u8 sub_80C0E20(void); +static bool8 GetRegionMapPermission(u8 a0); +static u8 GetWhichRegionMap(void); static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); static void sub_80C1098(u8 taskId); static void sub_80C1280(u8 taskId); @@ -257,16 +257,16 @@ static void sub_80C1324(u8 bg, u16 *map); static void sub_80C1390(void); static bool8 sub_80C144C(void); static bool8 sub_80C1478(void); -static bool8 sub_80C16D0(void); -static void sub_80C1754(u8 a0, u16 a1, u16 a2); -static void sub_80C176C(u8 a0, u16 a1, u16 a2); -static void sub_80C1880(void); -static void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); -static void sub_80C1A94(u8 taskId); -static void sub_80C1BE0(u8 taskId); -static void sub_80C1E14(u8 taskId); +static bool8 LoadAndCreateSelectionCursorSpriteGfx(void); +static void CreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag); +static void RealCreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag); +static void DestroySelectionCursorSprites(void); +static void RegionMapCreateDungeonMapPreview(u8 a0, u8 taskId, TaskFunc taskFunc); +static void Task_PrepDungeonMapPreviewAndFlavorText(u8 taskId); +static void Task_DrawDungeonMapPreviewAndFlavorText(u8 taskId); +static void DestroyMapPreviewAssets(u8 taskId); static void sub_80C1E94(void); -static void sub_80C1E78(u8 bgId, const u16 * tilemap); +static void CopyMapPreviewTilemapToBgTilemapBuffer(u8 bgId, const u16 * tilemap); static bool8 sub_80C1F80(bool8 a0); static void sub_80C2208(u8 taskId, TaskFunc taskFunc); static void sub_80C24BC(void); @@ -287,15 +287,15 @@ static u8 sub_80C31C0(void); static u8 sub_80C3348(void); static u8 sub_80C3400(void); static void sub_80C3418(void); -static u16 sub_80C3508(void); -static u16 sub_80C3514(void); +static u16 GetMapCursorX(void); +static u16 GetMapCursorY(void); static u16 sub_80C3520(void); -static u16 sub_80C3580(void); +static u16 GetMapSecUnderCursor(void); static u8 sub_80C35DC(u8 a0); static u8 sub_80C3878(u8 a0); static u8 sub_80C3AC8(u8 a0); -static void sub_80C3D40(void); -static u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3); +static void GetPlayerPositionOnRegionMap_HandleOverrides(void); +static u8 GetSelectedMapSection(u8 a0, u8 a1, s16 a2, s16 a3); static void sub_80C41D8(u16 a0, u16 a1); static void sub_80C4244(void); static void sub_80C4324(bool8 a0); @@ -319,7 +319,7 @@ static void sub_80C4C5C(u16 a0, u16 a1); static void sub_80C4C74(u16 a0, u16 a1); static void sub_80C4C88(u16 a0); static void sub_80C4C9C(u8 a0, u8 a1); -static void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); +static void SetGpuWindowDims(u8 a0, const struct GpuWindowParams *a1); static void sub_80C4D30(void); static void sub_80C4E18(const u8 *str); static void sub_80C4E74(const u8 *str); @@ -343,20 +343,20 @@ static const u16 unref_83EF37C[] = { RGB_WHITE, RGB_WHITE }; -static const u16 gUnknown_83EF384[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal"); +static const u16 sSelectionCursorPals[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal"); static const u16 gUnknown_83EF3A4[] = INCBIN_U16("graphics/region_map/unk_83EF3A4.gbapal"); -static const u32 gUnknown_83EF3C4[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz"); -static const u32 gUnknown_83EF450[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz"); +static const u32 sSelectionCursorLeftTiles[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz"); +static const u32 sSelectionCursorRightTiles[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz"); static const u32 gUnknown_83EF4E0[] = INCBIN_U32("graphics/region_map/unk_83EF4E0.4bpp.lz"); static const u32 gUnknown_83EF524[] = INCBIN_U32("graphics/region_map/unk_83EF524.4bpp.lz"); static const u32 gUnknown_83EF59C[] = INCBIN_U32("graphics/region_map/unk_83EF59C.4bpp.lz"); static const u32 gUnknown_83EF61C[] = INCBIN_U32("graphics/region_map/unk_83EF61C.4bpp.lz"); static const u32 gUnknown_83F0330[] = INCBIN_U32("graphics/region_map/unk_83F0330.4bpp.lz"); static const u32 gUnknown_83F0580[] = INCBIN_U32("graphics/region_map/unk_83F0580.bin.lz"); -static const u32 gUnknown_83F089C[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz"); -static const u32 gUnknown_83F0AFC[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz"); -static const u32 gUnknown_83F0C0C[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz"); -static const u32 gUnknown_83F0CF0[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz"); +static const u32 sRegionMapLayout_Kanto[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz"); +static const u32 sRegionMapLayout_Sevii123[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz"); +static const u32 sRegionMapLayout_Sevii45[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz"); +static const u32 sRegionMapLayout_Sevii67[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz"); static const u32 gUnknown_83F0E0C[] = INCBIN_U32("graphics/region_map/unk_83F0E0C.bin.lz"); static const u32 gUnknown_83F0F1C[] = INCBIN_U32("graphics/region_map/unk_83F0F1C.bin.lz"); static const u32 gUnknown_83F1084[] = INCBIN_U32("graphics/region_map/unk_83F1084.bin.lz"); @@ -452,12 +452,12 @@ static const struct WindowTemplate gUnknown_83F1A60[] = { }, DUMMY_WIN_TEMPLATE }; -ALIGNED(4) const u8 gUnknown_83F1A90[] = {0, 1, 2}; -ALIGNED(4) const u8 gUnknown_83F1A94[] = {0, 7, 2}; +ALIGNED(4) const u8 sTextColor_White[] = {0, 1, 2}; +ALIGNED(4) const u8 sTextColor_Green[] = {0, 7, 2}; ALIGNED(4) const u8 gUnknown_83F1A98[] = {0, 10, 2}; static const u8 *const gUnknown_83F1A9C[] = { - gUnknown_83F1A94, + sTextColor_Green, gUnknown_83F1A98 }; @@ -524,19 +524,19 @@ static const u8 sSeviiMapsecs[3][30] = { } }; -ALIGNED(4) const u8 gUnknown_83F1B00[3][4] = { - {1, 1, 1, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 1} +ALIGNED(4) const bool8 sRegionMapPermissions[3][4] = { + {TRUE , TRUE , TRUE , FALSE}, + {FALSE, FALSE, FALSE, FALSE}, + {FALSE, FALSE, FALSE, TRUE } }; -static const struct UnkStruct_80C4CF0 gUnknown_83F1B0C[3] = { +static const struct GpuWindowParams sStdWindowDims[3] = { {0x18, 0x10, 0x90, 0x20}, {0x18, 0x20, 0x90, 0x30}, {0x00, 0x00, 0x00, 0x00} }; -static const struct OamData gUnknown_83F1B24 = { +static const struct OamData sSelectionCursorOam = { .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32) }; @@ -547,87 +547,87 @@ static const union AnimCmd gUnknown_83F1B2C[] = { ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gUnknown_83F1B38[] = { +static const union AnimCmd *const sSelectionCursorAnims[] = { gUnknown_83F1B2C }; -static const struct UnkStruct_83F1B3C gUnknown_83F1B3C[] = { +static const struct UnkStruct_83F1B3C sDungeonHighlights[] = { { - .field_0 = MAPSEC_VIRIDIAN_FOREST, - .field_4 = gMapSecName_ViridianForest, - .field_8 = gUnknown_8418ECB + .id = MAPSEC_VIRIDIAN_FOREST, + .name = gMapSecName_ViridianForest, + .desc = gText_RegionMap_AreaDesc_ViridianForest }, { - .field_0 = MAPSEC_MT_MOON, - .field_4 = gMapSecName_MtMoon, - .field_8 = gUnknown_8418F3A + .id = MAPSEC_MT_MOON, + .name = gMapSecName_MtMoon, + .desc = gText_RegionMap_AreaDesc_MtMoon }, { - .field_0 = MAPSEC_DIGLETTS_CAVE, - .field_4 = gMapSecName_DiglettsCave, - .field_8 = gUnknown_8418FB8 + .id = MAPSEC_DIGLETTS_CAVE, + .name = gMapSecName_DiglettsCave, + .desc = gText_RegionMap_AreaDesc_DiglettsCave }, { - .field_0 = MAPSEC_KANTO_VICTORY_ROAD, - .field_4 = gMapSecName_VictoryRoad, - .field_8 = gUnknown_841901C + .id = MAPSEC_KANTO_VICTORY_ROAD, + .name = gMapSecName_VictoryRoad, + .desc = gText_RegionMap_AreaDesc_VictoryRoad }, { - .field_0 = MAPSEC_POKEMON_MANSION, - .field_4 = gMapSecName_PokemonMansion, - .field_8 = gUnknown_841908E + .id = MAPSEC_POKEMON_MANSION, + .name = gMapSecName_PokemonMansion, + .desc = gText_RegionMap_AreaDesc_PokemonMansion }, { - .field_0 = MAPSEC_KANTO_SAFARI_ZONE, - .field_4 = gMapSecName_SafariZone, - .field_8 = gUnknown_8419103 + .id = MAPSEC_KANTO_SAFARI_ZONE, + .name = gMapSecName_SafariZone, + .desc = gText_RegionMap_AreaDesc_SafariZone }, { - .field_0 = MAPSEC_ROCK_TUNNEL, - .field_4 = gMapSecName_RockTunnel, - .field_8 = gUnknown_841917D + .id = MAPSEC_ROCK_TUNNEL, + .name = gMapSecName_RockTunnel, + .desc = gText_RegionMap_AreaDesc_RockTunnel }, { - .field_0 = MAPSEC_SEAFOAM_ISLANDS, - .field_4 = gMapSecName_SeafoamIslands, - .field_8 = gUnknown_8419201 + .id = MAPSEC_SEAFOAM_ISLANDS, + .name = gMapSecName_SeafoamIslands, + .desc = gText_RegionMap_AreaDesc_SeafoamIslands }, { - .field_0 = MAPSEC_POKEMON_TOWER, - .field_4 = gMapSecName_PokemonTower, - .field_8 = gUnknown_841926D + .id = MAPSEC_POKEMON_TOWER, + .name = gMapSecName_PokemonTower, + .desc = gText_RegionMap_AreaDesc_PokemonTower }, { - .field_0 = MAPSEC_CERULEAN_CAVE, - .field_4 = gMapSecName_CeruleanCave, - .field_8 = gUnknown_84192E2 + .id = MAPSEC_CERULEAN_CAVE, + .name = gMapSecName_CeruleanCave, + .desc = gText_RegionMap_AreaDesc_CeruleanCave }, { - .field_0 = MAPSEC_POWER_PLANT, - .field_4 = gMapSecName_PowerPlant, - .field_8 = gUnknown_841935B + .id = MAPSEC_POWER_PLANT, + .name = gMapSecName_PowerPlant, + .desc = gText_RegionMap_AreaDesc_PowerPlant }, { - .field_0 = MAPSEC_MT_EMBER, - .field_4 = gMapSecName_MtEmber, - .field_8 = gUnknown_84193D5 + .id = MAPSEC_MT_EMBER, + .name = gMapSecName_MtEmber, + .desc = gText_RegionMap_AreaDesc_MtEmber }, { - .field_0 = MAPSEC_BERRY_FOREST, - .field_4 = gMapSecName_BerryForest, - .field_8 = gUnknown_8419444 + .id = MAPSEC_BERRY_FOREST, + .name = gMapSecName_BerryForest, + .desc = gText_RegionMap_AreaDesc_BerryForest }, { - .field_0 = MAPSEC_ICEFALL_CAVE, - .field_4 = gMapSecName_IcefallCave, - .field_8 = gUnknown_84194C9 + .id = MAPSEC_ICEFALL_CAVE, + .name = gMapSecName_IcefallCave, + .desc = gText_RegionMap_AreaDesc_IcefallCave }, { - .field_0 = MAPSEC_LOST_CAVE, - .field_4 = gMapSecName_LostCave, - .field_8 = gUnknown_841953F + .id = MAPSEC_LOST_CAVE, + .name = gMapSecName_LostCave, + .desc = gText_RegionMap_AreaDesc_LostCave }, { - .field_0 = MAPSEC_TANOBY_CHAMBERS, - .field_4 = gMapSecName_TanobyChambers, - .field_8 = gUnknown_84195AC + .id = MAPSEC_TANOBY_CHAMBERS, + .name = gMapSecName_TanobyChambers, + .desc = gText_RegionMap_AreaDesc_TanobyRuins }, { - .field_0 = MAPSEC_ALTERING_CAVE, - .field_4 = gMapSecName_AlteringCave, - .field_8 = gUnknown_8419629 + .id = MAPSEC_ALTERING_CAVE, + .name = gMapSecName_AlteringCave, + .desc = gText_RegionMap_AreaDesc_AlteringCave }, { - .field_0 = MAPSEC_PATTERN_BUSH, - .field_4 = gMapSecName_PatternBush, - .field_8 = gUnknown_841969D + .id = MAPSEC_PATTERN_BUSH, + .name = gMapSecName_PatternBush, + .desc = gText_RegionMap_AreaDesc_PatternBush }, { - .field_0 = MAPSEC_DOTTED_HOLE, - .field_4 = gMapSecName_DottedHole, - .field_8 = gUnknown_841971A + .id = MAPSEC_DOTTED_HOLE, + .name = gMapSecName_DottedHole, + .desc = gText_RegionMap_AreaDesc_DottedHole } }; @@ -645,7 +645,7 @@ static const union AnimCmd *const gUnknown_83F1C30[] = { gAnimCmd_83F1C28 }; -static const struct UnkStruct_80C4CF0 gUnknown_83F1C34 = { +static const struct GpuWindowParams gUnknown_83F1C34 = { 0x18, 0x10, 0xD8, 0xA0 }; @@ -717,19 +717,19 @@ static const union AnimCmd *const gUnknown_83F1C98[] = { gAnimCmd_83F1C8C }; -static const u16 gUnknown_83F1CA0[] = { +static const u16 sWinFlags[] = { DISPCNT_WIN0_ON, DISPCNT_WIN1_ON }; -static const u8 gUnknown_83F1CA4[][2] = { +static const u8 sWinRegs[][2] = { {REG_OFFSET_WIN0V, REG_OFFSET_WIN0H}, {REG_OFFSET_WIN1V, REG_OFFSET_WIN1H} }; static const u8 gUnknown_83F1CA8[] = {15, 1, 2}; -static const u8 *const gUnknown_83F1CAC[] = { +static const u8 *const sMapNames[] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = gMapSecName_PalletTown, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = gMapSecName_ViridianCity, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = gMapSecName_PewterCity, @@ -841,7 +841,7 @@ static const u8 *const gUnknown_83F1CAC[] = { [MAPSEC_SPECIAL_AREA - MAPSECS_KANTO] = gMapSecName_CeladonDept }; -static const u16 gUnknown_83F1E60[0xC6][2] = { +static const u16 sMapSectionTopLeftCorners[0xC6][2] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x04, 0x0b}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x04, 0x08}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x04, 0x04}, @@ -915,7 +915,7 @@ static const u16 gUnknown_83F1E60[0xC6][2] = { [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x12, 0x0d}, }; -static const u16 gUnknown_83F2178[0xC6][2] = { +static const u16 sMapSectionDimensions[0xC6][2] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x01, 0x01}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x01, 0x01}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x01, 0x01}, @@ -1026,7 +1026,7 @@ static const u16 gUnknown_83F2178[0xC6][2] = { [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {0x01, 0x01} }; -static const u8 gUnknown_83F2490[][15][22] = { +static const u8 sRegionMapSections_Kanto[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, @@ -1096,7 +1096,7 @@ static const u8 gUnknown_83F2490[][15][22] = { } }; -static const u8 gUnknown_83F2724[][15][22] = { +static const u8 sRegionMapSections_Sevii123[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1132,7 +1132,7 @@ static const u8 gUnknown_83F2724[][15][22] = { } }; -static const u8 gUnknown_83F29B8[][15][22] = { +static const u8 sRegionMapSections_Sevii45[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1168,7 +1168,7 @@ static const u8 gUnknown_83F29B8[][15][22] = { } }; -static const u8 gUnknown_83F2C4C[][15][22] = { +static const u8 sRegionMapSections_Sevii67[][15][22] = { { {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, @@ -1204,7 +1204,7 @@ static const u8 gUnknown_83F2C4C[][15][22] = { } }; -static const u8 gUnknown_83F2EE0[][3] = { +static const u8 sMapsecToSpawn[][3] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), SPAWN_PALLET_TOWN}, [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), SPAWN_VIRIDIAN_CITY}, [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), SPAWN_PEWTER_CITY}, @@ -1354,12 +1354,12 @@ static void sub_80BFEDC(u8 kind) else { gUnknown_2031DE0 = TRUE; - gUnknown_20399D4->field_4796 = kind; + gUnknown_20399D4->mapType = kind; gUnknown_20399D4->field_47A0 = 0; gUnknown_20399D4->field_47A4 = 0; gUnknown_20399D4->field_47A8 = 0; sub_80BFFD0(); - SetMainCallback2(sub_80C0100); + SetMainCallback2(CB2_OpenRegionMap); } } @@ -1373,13 +1373,13 @@ void sub_80BFF50(u8 kind, MainCallback cb) else { gUnknown_2031DE0 = TRUE; - gUnknown_20399D4->field_4796 = kind; + gUnknown_20399D4->mapType = kind; gUnknown_20399D4->field_47A0 = 0; gUnknown_20399D4->field_47A4 = 0; gUnknown_20399D4->field_47A8 = 0; - gUnknown_20399D4->field_47BC = cb; + gUnknown_20399D4->savedCallback = cb; sub_80BFFD0(); - SetMainCallback2(sub_80C0100); + SetMainCallback2(CB2_OpenRegionMap); } } @@ -1389,7 +1389,7 @@ static void sub_80BFFD0(void) u8 j; u8 r7; - switch (gUnknown_20399D4->field_4796) + switch (gUnknown_20399D4->mapType) { default: case 0: @@ -1402,10 +1402,10 @@ static void sub_80BFFD0(void) } for (i = 0; i < 4; i++) { - gUnknown_20399D4->field_4797[i] = gUnknown_83F1B00[gUnknown_20399D4->field_4796][i]; + gUnknown_20399D4->regionMapPermissions[i] = sRegionMapPermissions[gUnknown_20399D4->mapType][i]; } if (!FlagGet(FLAG_SYS_SEVII_MAP_123)) - gUnknown_20399D4->field_4797[0] = FALSE; + gUnknown_20399D4->regionMapPermissions[MAPPERM_0] = FALSE; r7 = 0; j = 0; if (gMapHeader.regionMapSectionId >= MAPSECS_SEVII_123) @@ -1427,21 +1427,21 @@ static void sub_80BFFD0(void) gUnknown_20399D4->field_479C = r7; } -static void sub_80C0100(void) +static void CB2_OpenRegionMap(void) { switch (gUnknown_20399D4->field_47A4) { case 0: - sub_80C08E0(); + NullVBlankHBlankCallbacks(); break; case 1: - sub_80C0904(); + ResetGpu(); break; case 2: - sub_80C0A6C(); + ResetOamForRegionMap(); break; case 3: - if (!sub_80C0238()) + if (!HandleLoadRegionMapGfx()) return; break; case 4: @@ -1449,11 +1449,11 @@ static void sub_80C0100(void) CopyBgTilemapBufferToVram(1); break; case 5: - sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D4->field_479B]); + sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D4->field_479B]); CopyBgTilemapBufferToVram(0); - if (gUnknown_20399D4->field_4796 != 0) + if (gUnknown_20399D4->mapType != 0) { - sub_80C0CC8(1, gUnknown_20399D4->field_0026[4]); + sub_80C0CC8(1, gUnknown_20399D4->layouts[4]); CopyBgTilemapBufferToVram(1); } break; @@ -1466,8 +1466,8 @@ static void sub_80C0100(void) PutWindowTilemap(1); break; case 8: - if (sub_80C0E04(2) == TRUE) - sub_80C0A88(1); + if (GetRegionMapPermission(MAPPERM_2) == TRUE) + SetBg0andBg3Visibility(1); break; default: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); @@ -1478,7 +1478,7 @@ static void sub_80C0100(void) gUnknown_20399D4->field_47A4++; } -static bool8 sub_80C0238(void) +static bool8 HandleLoadRegionMapGfx(void) { switch (gUnknown_20399D4->field_47A8) { @@ -1488,7 +1488,7 @@ static bool8 sub_80C0238(void) case 1: LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0); sub_80BFEA0(); - if (gUnknown_20399D4->field_4796 != 0) + if (gUnknown_20399D4->mapType != 0) { LoadPalette(&gUnknown_83EF23C[15], 0x00, 0x02); LoadPalette(&gUnknown_83EF23C[15], 0x10, 0x02); @@ -1502,7 +1502,7 @@ static bool8 sub_80C0238(void) break; case 3: DecompressAndCopyTileDataToVram(0, gUnknown_83EF61C, 0, 0, 0); - if (gUnknown_20399D4->field_4796 != 0) + if (gUnknown_20399D4->mapType != 0) { DecompressAndCopyTileDataToVram(1, gUnknown_83F1978, 0, 0, 0); } @@ -1512,19 +1512,19 @@ static bool8 sub_80C0238(void) return FALSE; break; case 5: - LZ77UnCompWram(gUnknown_83F089C, gUnknown_20399D4->field_0026[0]); + LZ77UnCompWram(sRegionMapLayout_Kanto, gUnknown_20399D4->layouts[0]); break; case 6: - LZ77UnCompWram(gUnknown_83F0AFC, gUnknown_20399D4->field_0026[1]); + LZ77UnCompWram(sRegionMapLayout_Sevii123, gUnknown_20399D4->layouts[1]); break; case 7: - LZ77UnCompWram(gUnknown_83F0C0C, gUnknown_20399D4->field_0026[2]); + LZ77UnCompWram(sRegionMapLayout_Sevii45, gUnknown_20399D4->layouts[2]); break; case 8: - LZ77UnCompWram(gUnknown_83F0CF0, gUnknown_20399D4->field_0026[3]); + LZ77UnCompWram(sRegionMapLayout_Sevii67, gUnknown_20399D4->layouts[3]); break; default: - LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->field_0026[4]); + LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->layouts[4]); return TRUE; } gUnknown_20399D4->field_47A8++; @@ -1539,7 +1539,7 @@ static void sub_80C03E8(void) static bool32 sub_80C0410(void) { - if (sub_80C4164(sub_80C0E20(), 0, sub_80C3514(), sub_80C3508()) == 99) + if (GetSelectedMapSection(GetWhichRegionMap(), 0, GetMapCursorY(), GetMapCursorX()) == 99) return FALSE; else return TRUE; @@ -1551,9 +1551,9 @@ static void sub_80C0450(void) { if ((sub_80C3AC8(0) != 1 && sub_80C3AC8(0) != 0) || (sub_80C3AC8(1) != 1 && sub_80C3AC8(1) != 0)) PlaySE(SE_Z_SCROLL); - if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE) + if (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE) PlaySE(SE_W255); - else if (sub_80C3508() == 21 && sub_80C3514() == 13) + else if (GetMapCursorX() == 21 && GetMapCursorY() == 13) PlaySE(SE_W255); } } @@ -1563,13 +1563,13 @@ static void sub_80C04E4(u8 taskId) switch (gUnknown_20399D4->field_47A0) { case 0: - sub_80C4398(sub_80C0E20(), taskId, gUnknown_20399D4->field_47B8); + sub_80C4398(GetWhichRegionMap(), taskId, gUnknown_20399D4->field_47B8); sub_80C3008(0, 0); sub_80C41D8(1, 1); gUnknown_20399D4->field_47A0++; break; case 1: - if (gUnknown_20399D4->field_4797[2] == 1) + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE) { sub_80C2208(taskId, gUnknown_20399D4->field_47B8); } @@ -1578,13 +1578,13 @@ static void sub_80C04E4(u8 taskId) ShowBg(0); ShowBg(3); ShowBg(1); - sub_80C4E18(gUnknown_8418EB5); - sub_80C4E74(gUnknown_8418E8B); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C4E74(gText_RegionMap_Space); sub_80C4ED0(FALSE); sub_80C4324(FALSE); sub_80C3154(FALSE); - sub_80C48BC(sub_80C0E20(), 25, FALSE); - sub_80C4960(sub_80C0E20(), 25, FALSE); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); } gUnknown_20399D4->field_47A0++; break; @@ -1611,40 +1611,40 @@ static void sub_80C04E4(u8 taskId) sub_80C0BB0(); sub_80C0B9C(); sub_80C0450(); - if (sub_80C3580() != MAPSEC_NONE) + if (GetMapSecUnderCursor() != MAPSEC_NONE) { - if (sub_80C0E04(1) == TRUE) + if (GetRegionMapPermission(MAPPERM_1) == TRUE) { if (sub_80C3AC8(1) == 2) { - sub_80C4E74(gUnknown_8418E8D); + sub_80C4E74(gText_RegionMap_AButtonGuide); } else { - sub_80C4E74(gUnknown_8418E8B); + sub_80C4E74(gText_RegionMap_Space); } } } else { - if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE) + if (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE) { - sub_80C4E74(gUnknown_8418EA7); + sub_80C4E74(gText_RegionMap_AButtonSwitch); } - else if (sub_80C3508() == 21 && sub_80C3514() == 13) + else if (GetMapCursorX() == 21 && GetMapCursorY() == 13) { - sub_80C4E74(gUnknown_8418E95); + sub_80C4E74(gText_RegionMap_AButtonCancel); } else { - sub_80C4E74(gUnknown_8418E8B); + sub_80C4E74(gText_RegionMap_Space); } } break; case 4: - if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->field_4797[1] == 1) + if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->regionMapPermissions[MAPPERM_1] == TRUE) { - sub_80C195C(0, taskId, sub_80C07F8); + RegionMapCreateDungeonMapPreview(0, taskId, sub_80C07F8); } break; case 5: @@ -1656,7 +1656,7 @@ static void sub_80C04E4(u8 taskId) } break; case 4: - if (sub_80C0E04(2) == 1) + if (GetRegionMapPermission(MAPPERM_2) == 1) { sub_80C2C1C(taskId); // FIXME: goto required to match @@ -1699,7 +1699,7 @@ static void sub_80C07F8(u8 taskId) static void sub_80C0820(u8 taskId) { - if (sub_80C0E04(2) == TRUE) + if (GetRegionMapPermission(MAPPERM_2) == TRUE) sub_80C25BC(); sub_80C4A04(); sub_80C3188(); @@ -1707,10 +1707,10 @@ static void sub_80C0820(u8 taskId) sub_80C4D30(); DestroyTask(taskId); FreeAllWindowBuffers(); - if (gUnknown_20399D4->field_47BC == NULL) + if (gUnknown_20399D4->savedCallback == NULL) SetMainCallback2(gMain.savedCallback); else - SetMainCallback2(gUnknown_20399D4->field_47BC); + SetMainCallback2(gUnknown_20399D4->savedCallback); FREE_IF_NOT_NULL(gUnknown_20399D4); } @@ -1734,7 +1734,7 @@ static void sub_80C08CC(void) TransferPlttBuffer(); } -static void sub_80C08E0(void) +static void NullVBlankHBlankCallbacks(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); @@ -1745,7 +1745,7 @@ static void sub_80C08F4(void) SetVBlankCallback(sub_80C08CC); } -static void sub_80C0904(void) +static void ResetGpu(void) { DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); @@ -1764,18 +1764,18 @@ static void sub_80C0904(void) InitWindows(gUnknown_83F1A60); DeactivateAllTextPrinters(); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); - sub_80C0A2C(); + SetBgTilemapBuffers(); sub_80C0AB8(); } -static void sub_80C0A2C(void) +static void SetBgTilemapBuffers(void) { - SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796[0]); - SetBgTilemapBuffer(1, gUnknown_20399D4->field_1796[1]); - SetBgTilemapBuffer(2, gUnknown_20399D4->field_1796[2]); + SetBgTilemapBuffer(0, gUnknown_20399D4->bgTilemapBuffers[0]); + SetBgTilemapBuffer(1, gUnknown_20399D4->bgTilemapBuffers[1]); + SetBgTilemapBuffer(2, gUnknown_20399D4->bgTilemapBuffers[2]); } -static void sub_80C0A6C(void) +static void ResetOamForRegionMap(void) { ResetSpriteData(); ResetPaletteFade(); @@ -1784,7 +1784,7 @@ static void sub_80C0A6C(void) ScanlineEffect_Stop(); } -static void sub_80C0A88(u8 mode) +static void SetBg0andBg3Visibility(u8 mode) { switch (mode) { @@ -1806,10 +1806,10 @@ static void sub_80C0AB8(void) sub_80C4C48(6); sub_80C4C74(0x39, 0x39); sub_80C4C88(0x1b); - sub_80C4CF0(0, &gUnknown_83F1B0C[0]); - sub_80C4CF0(1, &gUnknown_83F1B0C[1]); + SetGpuWindowDims(0, &sStdWindowDims[0]); + SetGpuWindowDims(1, &sStdWindowDims[1]); sub_80C4C9C(0, 0); - if (sub_80C3580() != MAPSEC_NONE) + if (GetMapSecUnderCursor() != MAPSEC_NONE) sub_80C4C9C(1, 0); } @@ -1819,21 +1819,21 @@ static void sub_80C0B18(void) FillWindowPixelBuffer(0, PIXEL_FILL(0)); if (sub_80C3520() == MAPSEC_NONE) { - sub_80C4CF0(0, &gUnknown_83F1B0C[2]); + SetGpuWindowDims(0, &sStdWindowDims[2]); } else { GetMapName(gUnknown_20399D4->field_0000, sub_80C3520(), 0); - AddTextPrinterParameterized3(0, 2, 2, 2, gUnknown_83F1A90, 0, gUnknown_20399D4->field_0000); + AddTextPrinterParameterized3(0, 2, 2, 2, sTextColor_White, 0, gUnknown_20399D4->field_0000); PutWindowTilemap(0); CopyWindowToVram(0, 2); - sub_80C4CF0(0, &gUnknown_83F1B0C[0]); + SetGpuWindowDims(0, &sStdWindowDims[0]); } } static void sub_80C0B9C(void) { - sub_80C4CF0(1, &gUnknown_83F1B0C[1]); + SetGpuWindowDims(1, &sStdWindowDims[1]); } static void sub_80C0BB0(void) @@ -1845,17 +1845,17 @@ static void sub_80C0BB0(void) gUnknown_20399D4->field_47B0 = 32; sub_80C4C9C(1, 1); ClearWindowTilemap(1); - mapsecId = sub_80C3580(); + mapsecId = GetMapSecUnderCursor(); if (mapsecId != MAPSEC_NONE) { descOffset = mapsecId - MAPSECS_KANTO; sub_80C4C9C(1, 0); gUnknown_20399D4->field_47AC = 1; - gUnknown_20399D4->field_47AA = StringLength(gUnknown_83F1CAC[descOffset]); + gUnknown_20399D4->field_47AA = StringLength(sMapNames[descOffset]); gUnknown_20399D4->field_47AE = gUnknown_20399D4->field_47AA * 10 + 50; gUnknown_20399D4->field_47B0 = 48; FillWindowPixelBuffer(1, PIXEL_FILL(0)); - StringCopy(gUnknown_20399D4->field_0013, gUnknown_83F1CAC[descOffset]); + StringCopy(gUnknown_20399D4->field_0013, sMapNames[descOffset]); AddTextPrinterParameterized3(1, 2, 12, 2, gUnknown_83F1A9C[sub_80C3AC8(1) - 2], 0, gUnknown_20399D4->field_0013); PutWindowTilemap(1); CopyWindowToVram(1, 3); @@ -1875,7 +1875,7 @@ static void sub_80C0CC8(u8 bg, u16 *map) s16 i; s16 j; u8 r4; - u16 *buffer = gUnknown_20399D4->field_1796[bg]; + u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[bg]; for (i = 0; i < 20; i++) { for (j = 0; j < 32; j++) @@ -1886,7 +1886,7 @@ static void sub_80C0CC8(u8 bg, u16 *map) buffer[32 * i + j] = map[0]; } } - if (gUnknown_20399D4->field_4797[0] == 1) + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_0] == TRUE) { WriteSequenceToBgTilemapBuffer(0, 0x0F0, 0x18, 0x0E, 3, 1, 0x3, 0x001); WriteSequenceToBgTilemapBuffer(0, 0x100, 0x18, 0x0F, 3, 1, 0x3, 0x001); @@ -1896,18 +1896,18 @@ static void sub_80C0CC8(u8 bg, u16 *map) r4 = gUnknown_20399D8->field_1CCA; else r4 = gUnknown_20399D4->field_479B; - if (r4 == 2 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) + if (r4 == REGIONMAP_SEVII45 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) FillBgTilemapBufferRect_Palette0(0, 0x003, 13, 11, 3, 2); - if (r4 == 3 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR)) + if (r4 == REGIONMAP_SEVII67 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR)) FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3); } -static u8 sub_80C0E04(u8 a0) +static bool8 GetRegionMapPermission(u8 attr) { - return gUnknown_20399D4->field_4797[a0]; + return gUnknown_20399D4->regionMapPermissions[attr]; } -static u8 sub_80C0E20(void) +static u8 GetWhichRegionMap(void) { return gUnknown_20399D4->field_479B; } @@ -1917,7 +1917,7 @@ static u8 sub_80C0E34(void) return gUnknown_20399D4->field_479C; } -static void sub_80C0E48(u8 a0) +static void SetWhichRegionMap(u8 a0) { gUnknown_20399D4->field_479B = a0; } @@ -1936,31 +1936,31 @@ static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc) gUnknown_20399D8->field_1CCC = 1; else gUnknown_20399D8->field_1CCC = 0; - gUnknown_20399D8->field_14B0[0].field_408 = 0x58; - gUnknown_20399D8->field_14B0[1].field_408 = 0x98; + gUnknown_20399D8->selectionCursorSubspriteData[0].xCoord = 0x58; + gUnknown_20399D8->selectionCursorSubspriteData[1].xCoord = 0x98; switch (gUnknown_20399D8->field_1CCC) { case 1: - LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->field_1000); + LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->tileMap); gUnknown_20399D8->field_1CCE = 6; break; case 2: // never reached - LZ77UnCompWram(gUnknown_83F1190, gUnknown_20399D8->field_1000); + LZ77UnCompWram(gUnknown_83F1190, gUnknown_20399D8->tileMap); gUnknown_20399D8->field_1CCE = 4; break; case 3: default: gUnknown_20399D8->field_1CCE = 3; - LZ77UnCompWram(gUnknown_83F0F1C, gUnknown_20399D8->field_1000); + LZ77UnCompWram(gUnknown_83F0F1C, gUnknown_20399D8->tileMap); break; } - LZ77UnCompWram(gUnknown_83F0580, gUnknown_20399D8->field_0000); + LZ77UnCompWram(gUnknown_83F0580, gUnknown_20399D8->bgTiles); gUnknown_20399D8->field_1CC8 = 0; gUnknown_20399D8->field_1CCA = a0; gUnknown_20399D8->field_1CD0 = taskFunc; gUnknown_20399D8->field_1CCB = sub_80C0E34(); sub_80C4AAC(0); - sub_80C4E74(gUnknown_8418EB0); + sub_80C4E74(gText_RegionMap_AButtonOK); gTasks[taskId].func = sub_80C1098; } @@ -2004,16 +2004,16 @@ static void sub_80C1098(u8 taskId) switch (gUnknown_20399D8->field_1CC8) { case 0: - sub_80C08E0(); - sub_80C4E18(gUnknown_8418EBC); + NullVBlankHBlankCallbacks(); + sub_80C4E18(gText_RegionMap_UpDownPick); gUnknown_20399D8->field_1CC8++; break; case 1: - LoadBgTiles(2, gUnknown_20399D8->field_0000, 0x1000, 0x000); + LoadBgTiles(2, gUnknown_20399D8->bgTiles, 0x1000, 0x000); gUnknown_20399D8->field_1CC8++; break; case 2: - sub_80C1324(2, gUnknown_20399D8->field_1000); + sub_80C1324(2, gUnknown_20399D8->tileMap); CopyBgTilemapBufferToVram(2); gUnknown_20399D8->field_1CC8++; break; @@ -2044,7 +2044,7 @@ static void sub_80C1098(u8 taskId) } break; case 8: - if (sub_80C16D0() == TRUE) + if (LoadAndCreateSelectionCursorSpriteGfx() == TRUE) { gUnknown_20399D8->field_1CC8++; } @@ -2052,7 +2052,7 @@ static void sub_80C1098(u8 taskId) case 9: if (sub_80C1478() == TRUE) { - sub_80C0E48(gUnknown_20399D8->field_1CCA); + SetWhichRegionMap(gUnknown_20399D8->field_1CCA); if (sub_80C0E34() == gUnknown_20399D8->field_1CCA) { sub_80C4324(FALSE); @@ -2065,7 +2065,7 @@ static void sub_80C1098(u8 taskId) case 10: if (sub_80C12EC() == TRUE) { - sub_80C1880(); + DestroySelectionCursorSprites(); sub_80C0FE0(); gUnknown_20399D8->field_1CC8++; } @@ -2090,11 +2090,11 @@ static void sub_80C1280(u8 taskId) { gTasks[taskId].func = gUnknown_20399D8->field_1CD0; HideBg(2); - sub_80C4E18(gUnknown_8418EB5); - sub_80C4E74(gUnknown_8418EA7); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C4E74(gText_RegionMap_AButtonSwitch); sub_80C0AB8(); sub_80C0B9C(); - sub_80C4CF0(0, &gUnknown_83F1B0C[2]); + SetGpuWindowDims(0, &sStdWindowDims[2]); FREE_IF_NOT_NULL(gUnknown_20399D8); } @@ -2117,7 +2117,7 @@ static void sub_80C1324(u8 bg, u16 *map) { s16 i; s16 j; - u16 *buffer = gUnknown_20399D4->field_1796[bg]; + u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[bg]; for (i = 0; i < 20; i++) { for (j = 0; j < 32; j++) @@ -2132,7 +2132,7 @@ static void sub_80C1324(u8 bg, u16 *map) static void sub_80C1390(void) { - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams 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; @@ -2142,7 +2142,7 @@ static void sub_80C1390(void) sub_80C4C74(0x1f, 0x15); sub_80C4C88(0x3f); sub_80C4C9C(1, 0); - sub_80C4CF0(1, &data); + SetGpuWindowDims(1, &data); } static bool8 sub_80C144C(void) @@ -2162,7 +2162,7 @@ static bool8 sub_80C144C(void) static bool8 sub_80C1478(void) { bool8 r6 = FALSE; - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams 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; @@ -2188,7 +2188,7 @@ static bool8 sub_80C1478(void) if (JOY_NEW(B_BUTTON)) { gUnknown_20399D8->field_1CCA = gUnknown_20399D8->field_1CCB; - sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D8->field_1CCA]); + sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D8->field_1CCA]); CopyBgTilemapBufferToVram(0); sub_80C48BC(255, 25, TRUE); sub_80C4960(255, 25, TRUE); @@ -2196,8 +2196,8 @@ static bool8 sub_80C1478(void) } if (r6) { - sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D8->field_1CCA]); - sub_80C4E74(gUnknown_8418EB0); + sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D8->field_1CCA]); + sub_80C4E74(gText_RegionMap_AButtonOK); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(3); sub_80C48BC(255, 25, TRUE); @@ -2209,275 +2209,275 @@ static bool8 sub_80C1478(void) sub_80C4324(TRUE); else sub_80C4324(FALSE); - sub_80C4CF0(1, &data); + SetGpuWindowDims(1, &data); return FALSE; } -static void sub_80C16B8(struct Sprite * sprite) +static void SpriteCB_SelectionCursor(struct Sprite * sprite) { sprite->pos1.y = gUnknown_20399D8->field_1CD4[1] + 16; } -static bool8 sub_80C16D0(void) +static bool8 LoadAndCreateSelectionCursorSpriteGfx(void) { - switch (gUnknown_20399D8->field_1CC9) + switch (gUnknown_20399D8->selectionCursorLoadState) { case 0: - LZ77UnCompWram(gUnknown_83EF3C4, gUnknown_20399D8->field_14B0[0].field_000); + LZ77UnCompWram(sSelectionCursorLeftTiles, gUnknown_20399D8->selectionCursorSubspriteData[0].tiles); break; case 1: - LZ77UnCompWram(gUnknown_83EF450, gUnknown_20399D8->field_14B0[1].field_000); + LZ77UnCompWram(sSelectionCursorRightTiles, gUnknown_20399D8->selectionCursorSubspriteData[1].tiles); break; case 2: - sub_80C1754(0, 2, 2); - sub_80C1754(1, 3, 3); + CreateSelectionCursorSubsprite(0, 2, 2); + CreateSelectionCursorSubsprite(1, 3, 3); break; default: return TRUE; } - gUnknown_20399D8->field_1CC9++; + gUnknown_20399D8->selectionCursorLoadState++; return FALSE; } -static void sub_80C1754(u8 a0, u16 a1, u16 a2) +static void CreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag) { - sub_80C176C(a0, a1, a2); + RealCreateSelectionCursorSubsprite(whichSprite, tileTag, paletteTag); } -static void sub_80C176C(u8 a0, u16 a1, u16 a2) +static void RealCreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag) { u8 spriteId; struct SpriteSheet spriteSheet = { - .data = gUnknown_20399D8->field_14B0[a0].field_000, + .data = gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tiles, .size = 0x400, - .tag = a1 + .tag = tileTag }; struct SpritePalette spritePalette = { - .data = gUnknown_83EF384, - .tag = a2 + .data = sSelectionCursorPals, + .tag = paletteTag }; struct SpriteTemplate template = { - .tileTag = a1, - .paletteTag = a2, - .oam = &gUnknown_83F1B24, - .anims = gUnknown_83F1B38, + .tileTag = tileTag, + .paletteTag = paletteTag, + .oam = &sSelectionCursorOam, + .anims = sSelectionCursorAnims, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80C16B8 + .callback = SpriteCB_SelectionCursor }; - gUnknown_20399D8->field_14B0[a0].field_404 = a1; - gUnknown_20399D8->field_14B0[a0].field_406 = a2; + gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tileTag = tileTag; + gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].paletteTag = paletteTag; 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]; + spriteId = CreateSprite(&template, gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].xCoord, 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA), 0); + gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].sprite = &gSprites[spriteId]; gSprites[spriteId].invisible = FALSE; } -static void sub_80C1880(void) +static void DestroySelectionCursorSprites(void) { u8 i; for (i = 0; i < 2; i++) { - if (gUnknown_20399D8->field_14B0[i].field_400 != NULL) + if (gUnknown_20399D8->selectionCursorSubspriteData[i].sprite != 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); + DestroySprite(gUnknown_20399D8->selectionCursorSubspriteData[i].sprite); + FreeSpriteTilesByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].tileTag); + FreeSpritePaletteByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].paletteTag); } } } -static const u8 *sub_80C18E0(u16 a0) +static const u8 *GetDungeonFlavorText(u16 mapsec) { u8 i; - for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) + for (i = 0; i < NELEMS(sDungeonHighlights); i++) { - if (gUnknown_83F1B3C[i].field_0 == a0) - return gUnknown_83F1B3C[i].field_8; + if (sDungeonHighlights[i].id == mapsec) + return sDungeonHighlights[i].desc; } - return gUnknown_8418EC3; + return gText_RegionMap_NoData; } -static const u8 *sub_80C1920(u16 a0) +static const u8 *GetDungeonName(u16 mapsec) { u8 i; - for (i = 0; i < NELEMS(gUnknown_83F1B3C); i++) + for (i = 0; i < NELEMS(sDungeonHighlights); i++) { - if (gUnknown_83F1B3C[i].field_0 == a0) - return gUnknown_83F1B3C[i].field_4; + if (sDungeonHighlights[i].id == mapsec) + return sDungeonHighlights[i].name; } - return gUnknown_8418EC3; + return gText_RegionMap_NoData; } -static void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc) +static void RegionMapCreateDungeonMapPreview(u8 a0, u8 taskId, TaskFunc taskFunc) { u8 r0; - gUnknown_20399DC = AllocZeroed(sizeof(struct UnkStruct_20399DC)); - r0 = sub_80C3580(); + sDungeonMapPreviewManager = AllocZeroed(sizeof(struct DungeonMapPreviewManagerStruct)); + r0 = GetMapSecUnderCursor(); if (r0 == MAPSEC_TANOBY_CHAMBERS) r0 = MAPSEC_MONEAN_CHAMBER; - gUnknown_20399DC->field_3D40 = sub_80F8544(r0); - if (gUnknown_20399DC->field_3D40 == NULL) - gUnknown_20399DC->field_3D40 = sub_80F8544(MAPSEC_ROCK_TUNNEL); - gUnknown_20399DC->field_3D48 = 0; - gUnknown_20399DC->field_3D4A = 0; - gUnknown_20399DC->field_3D44 = taskFunc; - gUnknown_20399DC->field_3E14 = 0; + sDungeonMapPreviewManager->mapPreviewInfo = GetDungeonMapPreviewScreenInfo(r0); + if (sDungeonMapPreviewManager->mapPreviewInfo == NULL) + sDungeonMapPreviewManager->mapPreviewInfo = GetDungeonMapPreviewScreenInfo(MAPSEC_ROCK_TUNNEL); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState = 0; + sDungeonMapPreviewManager->field_3D4A = 0; + sDungeonMapPreviewManager->savedTask = taskFunc; + sDungeonMapPreviewManager->field_3E14 = 0; sub_80C4AAC(0); sub_80C4BE4(); sub_80C0CA0(); - gTasks[taskId].func = sub_80C1A94; + gTasks[taskId].func = Task_PrepDungeonMapPreviewAndFlavorText; } -static bool8 sub_80C19FC(void) +static bool8 HandleLoadMapPreviewScreenGfx(void) { - switch (gUnknown_20399DC->field_3D4A) + switch (sDungeonMapPreviewManager->field_3D4A) { case 0: - LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilesptr, gUnknown_20399DC->field_0000); + LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilesptr, sDungeonMapPreviewManager->tiles); break; case 1: - LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilemapptr, gUnknown_20399DC->field_3840); + LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilemapptr, sDungeonMapPreviewManager->tilemap); break; case 2: - LoadBgTiles(2, gUnknown_20399DC->field_0000, 0x3840, 0x000); + LoadBgTiles(2, sDungeonMapPreviewManager->tiles, 0x3840, 0x000); break; case 3: - LoadPalette(gUnknown_20399DC->field_3D40->palptr, 0xD0, 0x60); + LoadPalette(sDungeonMapPreviewManager->mapPreviewInfo->palptr, 0xD0, 0x60); break; default: return TRUE; } - gUnknown_20399DC->field_3D4A++; + sDungeonMapPreviewManager->field_3D4A++; return FALSE; } -static void sub_80C1A94(u8 taskId) +static void Task_PrepDungeonMapPreviewAndFlavorText(u8 taskId) { - switch (gUnknown_20399DC->field_3D48) + switch (sDungeonMapPreviewManager->dungeonMapPreviewPrepState) { case 0: - sub_80C08E0(); - gUnknown_20399DC->field_3D48++; + NullVBlankHBlankCallbacks(); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 1: - if (sub_80C19FC() == TRUE) - gUnknown_20399DC->field_3D48++; + if (HandleLoadMapPreviewScreenGfx() == TRUE) + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 2: sub_80C1E94(); - sub_80C4E74(gUnknown_8418E9E); - gUnknown_20399DC->field_3D48++; + sub_80C4E74(gText_RegionMap_AButtonCancel2); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 3: - sub_80C1E78(2, gUnknown_20399DC->field_3840); + CopyMapPreviewTilemapToBgTilemapBuffer(2, sDungeonMapPreviewManager->tilemap); CopyBgTilemapBufferToVram(2); - gUnknown_20399DC->field_3D48++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 4: ShowBg(2); - gUnknown_20399DC->field_3D48++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 5: sub_80C08F4(); - gUnknown_20399DC->field_3D48++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 6: if (sub_80C1F80(FALSE) == TRUE) - gUnknown_20399DC->field_3D48++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; case 7: - gTasks[taskId].func = sub_80C1BE0; + gTasks[taskId].func = Task_DrawDungeonMapPreviewAndFlavorText; break; case 8: if (sub_80C1F80(TRUE) == TRUE) { - gUnknown_20399DC->field_3D48++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; } break; case 9: - sub_80C1E14(taskId); - gUnknown_20399DC->field_3D48++; + DestroyMapPreviewAssets(taskId); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; break; } } -static void sub_80C1BE0(u8 taskId) +static void Task_DrawDungeonMapPreviewAndFlavorText(u8 taskId) { - switch (gUnknown_20399DC->field_3D49) + switch (sDungeonMapPreviewManager->dungeonMapPreviewDrawState) { case 0: - gUnknown_20399DC->field_3E0E = 0x0133; - gUnknown_20399DC->field_3E10 = 0x0100; - gUnknown_20399DC->field_3E12 = 0x00F0; - gUnknown_20399DC->field_3D49++; + sDungeonMapPreviewManager->field_3E0E = 0x0133; + sDungeonMapPreviewManager->field_3E10 = 0x0100; + sDungeonMapPreviewManager->field_3E12 = 0x00F0; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; break; case 1: - if (gUnknown_20399DC->field_3D4C++ > 40) + if (sDungeonMapPreviewManager->field_3D4C++ > 40) { - gUnknown_20399DC->field_3D4C = 0; - gUnknown_20399DC->field_3D49++; + sDungeonMapPreviewManager->field_3D4C = 0; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; } break; case 2: FillWindowPixelBuffer(2, PIXEL_FILL(0)); CopyWindowToVram(2, 3); PutWindowTilemap(2); - gUnknown_20399DC->field_3D49++; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; break; case 3: - if (gUnknown_20399DC->field_3D4C > 25) + if (sDungeonMapPreviewManager->field_3D4C > 25) { - AddTextPrinterParameterized3(2, 2, 4, 0, gUnknown_83F1A94, -1, sub_80C1920(sub_80C3580())); - AddTextPrinterParameterized3(2, 2, 2, 14, gUnknown_83F1A90, -1, sub_80C18E0(sub_80C3580())); + AddTextPrinterParameterized3(2, 2, 4, 0, sTextColor_Green, -1, GetDungeonName(GetMapSecUnderCursor())); + AddTextPrinterParameterized3(2, 2, 2, 14, sTextColor_White, -1, GetDungeonFlavorText(GetMapSecUnderCursor())); CopyWindowToVram(2, 3); - gUnknown_20399DC->field_3D49++; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; } - else if (gUnknown_20399DC->field_3D4C > 20) + else if (sDungeonMapPreviewManager->field_3D4C > 20) { - gUnknown_20399DC->field_3E0E -= 6; - gUnknown_20399DC->field_3E10 -= 5; - gUnknown_20399DC->field_3E12 -= 5; - CpuCopy16(gUnknown_20399DC->field_3D40->palptr, gUnknown_20399DC->field_3D4E, 0x60); - TintPalette_CustomTone(gUnknown_20399DC->field_3D4E, 0x30, gUnknown_20399DC->field_3E0E, gUnknown_20399DC->field_3E10, gUnknown_20399DC->field_3E12); - LoadPalette(gUnknown_20399DC->field_3D4E, 0xD0, 0x60); + sDungeonMapPreviewManager->field_3E0E -= 6; + sDungeonMapPreviewManager->field_3E10 -= 5; + sDungeonMapPreviewManager->field_3E12 -= 5; + CpuCopy16(sDungeonMapPreviewManager->mapPreviewInfo->palptr, sDungeonMapPreviewManager->field_3D4E, 0x60); + TintPalette_CustomTone(sDungeonMapPreviewManager->field_3D4E, 0x30, sDungeonMapPreviewManager->field_3E0E, sDungeonMapPreviewManager->field_3E10, sDungeonMapPreviewManager->field_3E12); + LoadPalette(sDungeonMapPreviewManager->field_3D4E, 0xD0, 0x60); } - gUnknown_20399DC->field_3D4C++; + sDungeonMapPreviewManager->field_3D4C++; break; case 4: if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) { FillWindowPixelBuffer(2, PIXEL_FILL(0)); CopyWindowToVram(2, 3); - gUnknown_20399DC->field_3D48++; - gUnknown_20399DC->field_3D49++; + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; } break; default: - gTasks[taskId].func = sub_80C1A94; + gTasks[taskId].func = Task_PrepDungeonMapPreviewAndFlavorText; break; } } -static void sub_80C1E14(u8 taskId) +static void DestroyMapPreviewAssets(u8 taskId) { - gTasks[taskId].func = gUnknown_20399DC->field_3D44; + gTasks[taskId].func = sDungeonMapPreviewManager->savedTask; HideBg(2); sub_80C4B30(0); sub_80C0B18(); sub_80C0BB0(); sub_80C0AB8(); sub_80C0B9C(); - sub_80C4E74(gUnknown_8418E8D); - FREE_IF_NOT_NULL(gUnknown_20399DC); + sub_80C4E74(gText_RegionMap_AButtonGuide); + FREE_IF_NOT_NULL(sDungeonMapPreviewManager); } -static void sub_80C1E78(u8 bgId, const u16 * tilemap) +static void CopyMapPreviewTilemapToBgTilemapBuffer(u8 bgId, const u16 * tilemap) { CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); } @@ -2488,37 +2488,37 @@ static void sub_80C1E94(void) u16 r0; sub_80C4BE4(); sub_80C4C2C(0, 17, 192); - sub_80C4C48(gUnknown_20399DC->field_3E14); + sub_80C4C48(sDungeonMapPreviewManager->field_3E14); sub_80C4C74(0, 13); sub_80C4C88(59); sub_80C4C9C(1, 0); - r4 = sub_80C3508(); - r0 = sub_80C3514(); - gUnknown_20399DC->field_3E16 = 8 * r4 + 32; - gUnknown_20399DC->field_3E18 = 8 * r0 + 24; - gUnknown_20399DC->field_3E1A = gUnknown_20399DC->field_3E16 + 8; - gUnknown_20399DC->field_3E1C = gUnknown_20399DC->field_3E18 + 8; - gUnknown_20399DC->field_3E1E = (0x10 - gUnknown_20399DC->field_3E16) / 8; - gUnknown_20399DC->field_3E20 = (0x20 - gUnknown_20399DC->field_3E18) / 8; - gUnknown_20399DC->field_3E22 = (0xE0 - gUnknown_20399DC->field_3E1A) / 8; - gUnknown_20399DC->field_3E24 = (0x88 - gUnknown_20399DC->field_3E1C) / 8; + r4 = GetMapCursorX(); + r0 = GetMapCursorY(); + sDungeonMapPreviewManager->field_3E16 = 8 * r4 + 32; + sDungeonMapPreviewManager->field_3E18 = 8 * r0 + 24; + sDungeonMapPreviewManager->field_3E1A = sDungeonMapPreviewManager->field_3E16 + 8; + sDungeonMapPreviewManager->field_3E1C = sDungeonMapPreviewManager->field_3E18 + 8; + sDungeonMapPreviewManager->field_3E1E = (0x10 - sDungeonMapPreviewManager->field_3E16) / 8; + sDungeonMapPreviewManager->field_3E20 = (0x20 - sDungeonMapPreviewManager->field_3E18) / 8; + sDungeonMapPreviewManager->field_3E22 = (0xE0 - sDungeonMapPreviewManager->field_3E1A) / 8; + sDungeonMapPreviewManager->field_3E24 = (0x88 - sDungeonMapPreviewManager->field_3E1C) / 8; } static bool8 sub_80C1F80(bool8 a0) { - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams data; if (!a0) { - if (gUnknown_20399DC->field_3D4B < 8) + if (sDungeonMapPreviewManager->field_3D4B < 8) { - gUnknown_20399DC->field_3E16 += gUnknown_20399DC->field_3E1E; - gUnknown_20399DC->field_3E18 += gUnknown_20399DC->field_3E20; - gUnknown_20399DC->field_3E1A += gUnknown_20399DC->field_3E22; - gUnknown_20399DC->field_3E1C += gUnknown_20399DC->field_3E24; - gUnknown_20399DC->field_3D4B++; - if (gUnknown_20399DC->field_3E14 < 6) - gUnknown_20399DC->field_3E14++; + sDungeonMapPreviewManager->field_3E16 += sDungeonMapPreviewManager->field_3E1E; + sDungeonMapPreviewManager->field_3E18 += sDungeonMapPreviewManager->field_3E20; + sDungeonMapPreviewManager->field_3E1A += sDungeonMapPreviewManager->field_3E22; + sDungeonMapPreviewManager->field_3E1C += sDungeonMapPreviewManager->field_3E24; + sDungeonMapPreviewManager->field_3D4B++; + if (sDungeonMapPreviewManager->field_3E14 < 6) + sDungeonMapPreviewManager->field_3E14++; } else { @@ -2527,27 +2527,27 @@ static bool8 sub_80C1F80(bool8 a0) } else { - if (gUnknown_20399DC->field_3D4B == 0) + if (sDungeonMapPreviewManager->field_3D4B == 0) { return TRUE; } else { - gUnknown_20399DC->field_3E16 -= gUnknown_20399DC->field_3E1E; - gUnknown_20399DC->field_3E18 -= gUnknown_20399DC->field_3E20; - gUnknown_20399DC->field_3E1A -= gUnknown_20399DC->field_3E22; - gUnknown_20399DC->field_3E1C -= gUnknown_20399DC->field_3E24; - gUnknown_20399DC->field_3D4B--; - if (gUnknown_20399DC->field_3E14 > 0) - gUnknown_20399DC->field_3E14--; + sDungeonMapPreviewManager->field_3E16 -= sDungeonMapPreviewManager->field_3E1E; + sDungeonMapPreviewManager->field_3E18 -= sDungeonMapPreviewManager->field_3E20; + sDungeonMapPreviewManager->field_3E1A -= sDungeonMapPreviewManager->field_3E22; + sDungeonMapPreviewManager->field_3E1C -= sDungeonMapPreviewManager->field_3E24; + sDungeonMapPreviewManager->field_3D4B--; + if (sDungeonMapPreviewManager->field_3E14 > 0) + sDungeonMapPreviewManager->field_3E14--; } } - data.v0 = gUnknown_20399DC->field_3E16; - data.v2 = gUnknown_20399DC->field_3E18; - data.v4 = gUnknown_20399DC->field_3E1A; - data.v6 = gUnknown_20399DC->field_3E1C; - sub_80C4CF0(1, &data); - sub_80C4C48(gUnknown_20399DC->field_3E14); + data.v0 = sDungeonMapPreviewManager->field_3E16; + data.v2 = sDungeonMapPreviewManager->field_3E18; + data.v4 = sDungeonMapPreviewManager->field_3E1A; + data.v6 = sDungeonMapPreviewManager->field_3E1C; + SetGpuWindowDims(1, &data); + sub_80C4C48(sDungeonMapPreviewManager->field_3E14); return FALSE; } @@ -2601,7 +2601,7 @@ static void sub_80C2208(u8 taskId, TaskFunc taskFunc) sub_80C4AAC(0); sub_80C4BE4(); sub_80C24BC(); - sub_80C0A88(1); + SetBg0andBg3Visibility(1); gUnknown_20399E0->field_CC8 = taskFunc; gTasks[taskId].func = sub_80C267C; } @@ -2668,7 +2668,7 @@ static bool8 sub_80C2344(void) static void sub_80C24BC(void) { - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams data; data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 8; data.v2 = 0x10; data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 8; @@ -2676,19 +2676,19 @@ static void sub_80C24BC(void) sub_80C4C2C(0, 2, 0); sub_80C4C74(18, 0); sub_80C4C88(16); - sub_80C4CF0(0, &data); + SetGpuWindowDims(0, &data); sub_80C4C9C(0, 0); } static void sub_80C253C(void) { - struct UnkStruct_80C4CF0 data = gUnknown_83F1C34; + struct GpuWindowParams data = gUnknown_83F1C34; sub_80C4BE4(); sub_80C4C2C(2, 41, 128); sub_80C4C48(gUnknown_20399E0->field_CD0); sub_80C4C74(55, 0); sub_80C4C88(18); - sub_80C4CF0(0, &data); + SetGpuWindowDims(0, &data); sub_80C4C9C(0, 0); } @@ -2729,7 +2729,7 @@ static void sub_80C267C(u8 taskId) switch (gUnknown_20399E0->field_CCC) { case 0: - sub_80C08E0(); + NullVBlankHBlankCallbacks(); gUnknown_20399E0->field_CCC++; break; case 1: @@ -2774,17 +2774,17 @@ static void sub_80C267C(u8 taskId) case 8: gUnknown_20399E0->field_CD0 = 15; sub_80C253C(); - sub_80C0A88(0); - sub_80C48BC(sub_80C0E20(), 25, FALSE); - sub_80C4960(sub_80C0E20(), 25, FALSE); + SetBg0andBg3Visibility(0); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); gUnknown_20399E0->field_CCC++; break; case 9: - sub_80C4E18(gUnknown_8418EB5); + sub_80C4E18(gText_RegionMap_DPadMove); if (sub_80C3AC8(1) != 2) - sub_80C4E74(gUnknown_8418E8B); + sub_80C4E74(gText_RegionMap_Space); else - sub_80C4E74(gUnknown_8418E8D); + sub_80C4E74(gText_RegionMap_AButtonGuide); sub_80C4ED0(FALSE); gUnknown_20399E0->field_CCC++; break; @@ -2890,17 +2890,17 @@ static bool8 sub_80C29A4(void) static void sub_80C2B48(void) { - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams data; data.v0 = gUnknown_20399E0->field_000[0]->field_400->pos1.x; data.v2 = 0x10; data.v4 = gUnknown_20399E0->field_000[3]->field_400->pos1.x; data.v6 = 0xA0; - sub_80C4CF0(0, &data); + SetGpuWindowDims(0, &data); } static void sub_80C2B9C(void) { - struct UnkStruct_80C4CF0 data; + struct GpuWindowParams data; data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 16; data.v2 = 0x10; data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 16; @@ -2908,7 +2908,7 @@ static void sub_80C2B9C(void) sub_80C4C2C(0, 2, 0); sub_80C4C74(18, 0); sub_80C4C88(16); - sub_80C4CF0(0, &data); + SetGpuWindowDims(0, &data); sub_80C4C9C(0, 0); } @@ -3065,12 +3065,12 @@ static void sub_80C3008(u16 a0, u16 a1) LZ77UnCompWram(gUnknown_83EF4E0, gUnknown_20399E4->field_024); gUnknown_20399E4->field_020 = a0; gUnknown_20399E4->field_022 = a1; - sub_80C3D40(); + GetPlayerPositionOnRegionMap_HandleOverrides(); gUnknown_20399E4->field_004 = 8 * gUnknown_20399E4->field_000 + 36; gUnknown_20399E4->field_006 = 8 * gUnknown_20399E4->field_002 + 36; gUnknown_20399E4->field_010 = sub_80C31C0; gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); - gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); sub_80C309C(); } @@ -3172,7 +3172,7 @@ static u8 sub_80C31C0(void) } if (gUnknown_20399E4->field_000 == 21 && gUnknown_20399E4->field_002 == 11) { - if (sub_80C0E04(0) == TRUE) + if (GetRegionMapPermission(MAPPERM_0) == TRUE) { PlaySE(SE_W063B); ret = 5; @@ -3184,12 +3184,12 @@ static u8 sub_80C31C0(void) if (JOY_REPT(START_BUTTON)) { sub_80C3418(); - gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); - gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); return 3; } - else if (JOY_NEW(SELECT_BUTTON) && gUnknown_20399D4->field_47BC == CB2_ReturnToField) + else if (JOY_NEW(SELECT_BUTTON) && gUnknown_20399D4->savedCallback == CB2_ReturnToField) { ret = 6; } @@ -3218,9 +3218,9 @@ static u8 sub_80C3348(void) gUnknown_20399E4->field_002++; if (gUnknown_20399E4->field_00A < 0) gUnknown_20399E4->field_002--; - gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014); - gUnknown_20399E4->field_018 = sub_80C3878(sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); gUnknown_20399E4->field_010 = sub_80C31C0; return 3; } @@ -3232,11 +3232,11 @@ static u8 sub_80C3400(void) static void sub_80C3418(void) { - if (sub_80C0E04(0) == 1) + if (GetRegionMapPermission(MAPPERM_0) == 1) { gUnknown_20399E4->field_00E++; gUnknown_20399E4->field_00E %= 3; - if (gUnknown_20399E4->field_00E == 0 && sub_80C0E20() != sub_80C0E34()) + if (gUnknown_20399E4->field_00E == 0 && GetWhichRegionMap() != sub_80C0E34()) { gUnknown_20399E4->field_00E++; } @@ -3276,15 +3276,15 @@ static void sub_80C3418(void) } gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36; gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36; - gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); } -static u16 sub_80C3508(void) +static u16 GetMapCursorX(void) { return gUnknown_20399E4->field_000; } -static u16 sub_80C3514(void) +static u16 GetMapCursorY(void) { return gUnknown_20399E4->field_002; } @@ -3298,13 +3298,13 @@ static u16 sub_80C3520(void) || gUnknown_20399E4->field_000 > 21) return MAPSEC_NONE; - ret = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + ret = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); if ((ret == MAPSEC_NAVEL_ROCK || ret == MAPSEC_BIRTH_ISLAND) && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) ret = MAPSEC_NONE; return ret; } -static u16 sub_80C3580(void) +static u16 GetMapSecUnderCursor(void) { u8 ret; if (gUnknown_20399E4->field_002 < 0 @@ -3313,7 +3313,7 @@ static u16 sub_80C3580(void) || gUnknown_20399E4->field_000 > 21) return MAPSEC_NONE; - ret = sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + ret = GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); if (ret == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS)) ret = MAPSEC_NONE; return ret; @@ -3360,7 +3360,7 @@ static u8 sub_80C35DC(u8 mapsec) case MAPSEC_SIX_ISLAND: return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND) ? 2 : 3; case MAPSEC_ROUTE_4_FLYDUP: - if (!sub_80C0E04(3)) + if (!GetRegionMapPermission(MAPPERM_3)) return 0; return FlagGet(FLAG_WORLD_MAP_ROUTE4_POKEMON_CENTER_1F) ? 2 : 3; case MAPSEC_ROUTE_10_FLYDUP: @@ -3458,12 +3458,12 @@ static u8 sub_80C3AC8(u8 a0) } } -static u16 sub_80C3B00(void) +static u16 GetPlayerCurrentMapSectionId(void) { return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; } -static void sub_80C3B28(void) +static void GetPlayerPositionOnRegionMap(void) { u16 width; u32 divisor; @@ -3525,25 +3525,25 @@ static void sub_80C3B28(void) } gUnknown_20399E4->field_014 -= MAPSECS_KANTO; - divisor = width / gUnknown_83F2178[gUnknown_20399E4->field_014][0]; + divisor = width / sMapSectionDimensions[gUnknown_20399E4->field_014][0]; if (divisor == 0) divisor = 1; x /= divisor; - if (x >= gUnknown_83F2178[gUnknown_20399E4->field_014][0]) - x = gUnknown_83F2178[gUnknown_20399E4->field_014][0] - 1; - divisor = height / gUnknown_83F2178[gUnknown_20399E4->field_014][1]; + if (x >= sMapSectionDimensions[gUnknown_20399E4->field_014][0]) + x = sMapSectionDimensions[gUnknown_20399E4->field_014][0] - 1; + divisor = height / sMapSectionDimensions[gUnknown_20399E4->field_014][1]; if (divisor == 0) divisor = 1; y /= divisor; - if (y >= gUnknown_83F2178[gUnknown_20399E4->field_014][1]) - y = gUnknown_83F2178[gUnknown_20399E4->field_014][1] - 1; - gUnknown_20399E4->field_000 = x + gUnknown_83F1E60[gUnknown_20399E4->field_014][0]; - gUnknown_20399E4->field_002 = y + gUnknown_83F1E60[gUnknown_20399E4->field_014][1]; + if (y >= sMapSectionDimensions[gUnknown_20399E4->field_014][1]) + y = sMapSectionDimensions[gUnknown_20399E4->field_014][1] - 1; + gUnknown_20399E4->field_000 = x + sMapSectionTopLeftCorners[gUnknown_20399E4->field_014][0]; + gUnknown_20399E4->field_002 = y + sMapSectionTopLeftCorners[gUnknown_20399E4->field_014][1]; } -static void sub_80C3D40(void) +static void GetPlayerPositionOnRegionMap_HandleOverrides(void) { - switch (sub_80C3B00()) + switch (GetPlayerCurrentMapSectionId()) { case MAPSEC_KANTO_SAFARI_ZONE: gUnknown_20399E4->field_000 = 12; @@ -3655,7 +3655,7 @@ static void sub_80C3D40(void) } else { - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); } break; case MAPSEC_ROUTE_21: @@ -3678,7 +3678,7 @@ static void sub_80C3D40(void) } else { - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); } break; case MAPSEC_ROUTE_6: @@ -3689,7 +3689,7 @@ static void sub_80C3D40(void) } else { - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); } break; case MAPSEC_ROUTE_7: @@ -3700,7 +3700,7 @@ static void sub_80C3D40(void) } else { - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); } break; case MAPSEC_ROUTE_8: @@ -3711,28 +3711,28 @@ static void sub_80C3D40(void) } else { - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); } break; default: - sub_80C3B28(); + GetPlayerPositionOnRegionMap(); break; } - gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); + gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); } -static u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3) +static u8 GetSelectedMapSection(u8 whichMap, u8 layer, s16 y, s16 x) { - switch (a0) + switch (whichMap) { case 0: - return gUnknown_83F2490[a1][a2][a3]; + return sRegionMapSections_Kanto[layer][y][x]; case 1: - return gUnknown_83F2724[a1][a2][a3]; + return sRegionMapSections_Sevii123[layer][y][x]; case 2: - return gUnknown_83F29B8[a1][a2][a3]; + return sRegionMapSections_Sevii45[layer][y][x]; case 3: - return gUnknown_83F2C4C[a1][a2][a3]; + return sRegionMapSections_Sevii67[layer][y][x]; default: return MAPSEC_NONE; } @@ -3747,8 +3747,8 @@ static void sub_80C41D8(u16 a0, u16 a1) LZ77UnCompWram(gUnknown_83EF524, gUnknown_20399E8->field_0C); gUnknown_20399E8->field_08 = a0; gUnknown_20399E8->field_0A = a1; - gUnknown_20399E8->field_00 = sub_80C3508(); - gUnknown_20399E8->field_02 = sub_80C3514(); + gUnknown_20399E8->field_00 = GetMapCursorX(); + gUnknown_20399E8->field_02 = GetMapCursorY(); sub_80C4244(); } @@ -3825,7 +3825,7 @@ static void sub_80C440C(u8 taskId) switch (gUnknown_20399EC->field_463) { case 0: - sub_80C08E0(); + NullVBlankHBlankCallbacks(); gUnknown_20399EC->field_463++; break; case 1: @@ -3913,7 +3913,7 @@ static void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5) LoadSpriteSheet(&spriteSheet); LoadSpritePalette(&spritePalette); - r4 = sub_80C4164(a0, 0, a3, a2); + r4 = GetSelectedMapSection(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); @@ -3926,7 +3926,7 @@ static void sub_80C4750(void) { u16 i, j, k; u8 r7 = 0; - if (sub_80C0E04(3)) + if (GetRegionMapPermission(MAPPERM_3)) { for (i = 0; i < 4; i++) { @@ -3934,7 +3934,7 @@ static void sub_80C4750(void) { for (k = 0; k < 22; k++) { - if (sub_80C35DC(sub_80C4164(i, 0, j, k)) == 2) + if (sub_80C35DC(GetSelectedMapSection(i, 0, j, k)) == 2) { sub_80C450C(i, r7, k, j, r7 + 10, 10); r7++; @@ -3956,7 +3956,7 @@ static void sub_80C47F0(void) { for (k = 0; k < 22; k++) { - mapsec = sub_80C4164(i, 1, j, k); + mapsec = GetSelectedMapSection(i, 1, j, k); if (mapsec == MAPSEC_NONE) continue; if (mapsec == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS)) @@ -4077,11 +4077,11 @@ static void sub_80C4BB8(void) static void sub_80C4BE4(void) { - struct UnkStruct_80C4CF0 data = {}; + struct GpuWindowParams data = {}; sub_80C4C2C(0, 0, 0); sub_80C4C48(0); - sub_80C4CF0(0, &data); - sub_80C4CF0(1, &data); + SetGpuWindowDims(0, &data); + SetGpuWindowDims(1, &data); sub_80C4C74(0, 0); sub_80C4C9C(0, 1); sub_80C4C9C(1, 1); @@ -4122,7 +4122,7 @@ static void sub_80C4C88(u16 a0) static void sub_80C4C9C(u8 a0, u8 a1) { u16 data[2]; - memcpy(data, gUnknown_83F1CA0, 4); + memcpy(data, sWinFlags, 4); switch (a1) { case 0: @@ -4134,10 +4134,10 @@ static void sub_80C4C9C(u8 a0, u8 a1) } } -static void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1) +static void SetGpuWindowDims(u8 winIdx, const struct GpuWindowParams *data) { - SetGpuReg(gUnknown_83F1CA4[a0][0], (a1->v2 << 8) | a1->v6); - SetGpuReg(gUnknown_83F1CA4[a0][1], (a1->v0 << 8) | a1->v4); + SetGpuReg(sWinRegs[winIdx][0], (data->v2 << 8) | data->v6); + SetGpuReg(sWinRegs[winIdx][1], (data->v0 << 8) | data->v4); } static void sub_80C4D30(void) @@ -4175,7 +4175,7 @@ u8 *GetMapName(u8 *dst0, u16 mapsec, u16 fill) if (sub_80C4D40(mapsec) == TRUE) dst = StringCopy(dst0, gMapSecName_CeladonDept); else - dst = StringCopy(dst0, gUnknown_83F1CAC[idx]); + dst = StringCopy(dst0, sMapNames[idx]); } else { @@ -4204,7 +4204,7 @@ u8 *sub_80C4E08(u8 *dest, u16 mapsec) static void sub_80C4E18(const u8 *str) { - if (gUnknown_20399D4->field_4797[2] == 1) + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE) FillWindowPixelBuffer(3, PIXEL_FILL(0)); else FillWindowPixelBuffer(3, PIXEL_FILL(15)); @@ -4214,7 +4214,7 @@ static void sub_80C4E18(const u8 *str) static void sub_80C4E74(const u8 *str) { - if (gUnknown_20399D4->field_4797[2] == 1) + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE) FillWindowPixelBuffer(4, PIXEL_FILL(0)); else FillWindowPixelBuffer(4, PIXEL_FILL(15)); @@ -4248,7 +4248,7 @@ static void sub_80C4F08(u8 taskId) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); - sub_80C4398(sub_80C0E20(), taskId, sub_80C07E4()); + sub_80C4398(GetWhichRegionMap(), taskId, sub_80C07E4()); sub_80C3008(0, 0); sub_80C41D8(1, 1); sub_80C3154(FALSE); @@ -4256,7 +4256,7 @@ static void sub_80C4F08(u8 taskId) gUnknown_20399FC->field_0++; break; case 1: - if (sub_80C0E04(2) == TRUE) + if (GetRegionMapPermission(MAPPERM_2) == TRUE) { sub_80C2208(taskId, sub_80C07E4()); } @@ -4265,14 +4265,14 @@ static void sub_80C4F08(u8 taskId) ShowBg(0); ShowBg(3); ShowBg(1); - sub_80C4E18(gUnknown_8418EB5); - sub_80C48BC(sub_80C0E20(), 25, FALSE); - sub_80C4960(sub_80C0E20(), 25, FALSE); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); } gUnknown_20399FC->field_0++; break; case 2: - sub_80C4E74(gUnknown_8418EB0); + sub_80C4E74(gText_RegionMap_AButtonOK); sub_80C4ED0(FALSE); gUnknown_20399FC->field_0++; break; @@ -4304,22 +4304,22 @@ static void sub_80C4F08(u8 taskId) sub_80C0B18(); sub_80C0BB0(); sub_80C0B9C(); - if (sub_80C3508() == 21 && sub_80C3514() == 13) + if (GetMapCursorX() == 21 && GetMapCursorY() == 13) { PlaySE(SE_W255); - sub_80C4E74(gUnknown_8418E95); + sub_80C4E74(gText_RegionMap_AButtonCancel); } else if (sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) { - sub_80C4E74(gUnknown_8418EB0); + sub_80C4E74(gText_RegionMap_AButtonOK); } else { - sub_80C4E74(gUnknown_8418E8B); + sub_80C4E74(gText_RegionMap_Space); } break; case 4: - if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && sub_80C0E04(3) == TRUE) + if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && GetRegionMapPermission(MAPPERM_3) == TRUE) { switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) { @@ -4337,12 +4337,12 @@ static void sub_80C4F08(u8 taskId) } break; case 5: - sub_80C0E70(sub_80C0E20(), taskId, sub_80C07F8); + sub_80C0E70(GetWhichRegionMap(), taskId, sub_80C07F8); break; } break; case 5: - if (sub_80C0E04(2) == TRUE) + if (GetRegionMapPermission(MAPPERM_2) == TRUE) sub_80C2C1C(taskId); gUnknown_20399FC->field_0++; break; @@ -4370,7 +4370,7 @@ static void sub_80C51E8(void) static void sub_80C5208(u8 taskId) { - if (sub_80C0E04(2) == TRUE) + if (GetRegionMapPermission(MAPPERM_2) == TRUE) sub_80C25BC(); sub_80C4A04(); sub_80C3188(); @@ -4389,14 +4389,14 @@ static void sub_80C5208(u8 taskId) static void sub_80C527C(u16 mapsec) { u16 idx = mapsec - MAPSECS_KANTO; - if (gUnknown_83F2EE0[idx][2]) + if (sMapsecToSpawn[idx][2]) { - sub_805546C(gUnknown_83F2EE0[idx][2]); - sub_8124C1C(gUnknown_83F2EE0[idx]); + sub_805546C(sMapsecToSpawn[idx][2]); + sub_8124C1C(sMapsecToSpawn[idx]); } else { - warp1_set_2(gUnknown_83F2EE0[idx][0], gUnknown_83F2EE0[idx][1], -1); + warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1); } sub_80842C8(); } -- cgit v1.2.3 From 855b7780d925d9acfaaf2ed939f15d335efa8ba4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 8 Jan 2020 18:29:04 -0500 Subject: Resolve review comments --- data/image_processing_effects.s | 3204 -------------------------------------- ld_script.txt | 2 +- src/image_processing_effects.c | 3217 ++++++++++++++++++++++++++++++++++++++- src/region_map.c | 13 +- 4 files changed, 3215 insertions(+), 3221 deletions(-) delete mode 100644 data/image_processing_effects.s diff --git a/data/image_processing_effects.s b/data/image_processing_effects.s deleted file mode 100644 index d5585410c..000000000 --- a/data/image_processing_effects.s +++ /dev/null @@ -1,3204 +0,0 @@ - .section .rodata - .align 2, 0 - -gPointillismPoints:: @ 83F3024 - .byte 0x00, 0x1d, 0x1c - .byte 0x0e, 0x1e, 0x1b - .byte 0x00, 0x01, 0x32 - .byte 0x2e, 0x1e, 0x37 - .byte 0x0a, 0x22, 0x1f - .byte 0x05, 0x26, 0x2e - .byte 0x12, 0x17, 0x1e - .byte 0x1a, 0x03, 0x11 - .byte 0x05, 0x11, 0x18 - .byte 0x05, 0x27, 0x2f - .byte 0x1a, 0x3f, 0x12 - .byte 0x22, 0x3f, 0x16 - .byte 0x2b, 0x2f, 0x2e - .byte 0x11, 0x02, 0x2d - .byte 0x23, 0x0d, 0x28 - .byte 0x17, 0x0c, 0x19 - .byte 0x2f, 0x0e, 0x13 - .byte 0x30, 0x18, 0x20 - .byte 0x2d, 0x28, 0x22 - .byte 0x01, 0x03, 0x19 - .byte 0x0e, 0x2a, 0x2b - .byte 0x22, 0x15, 0x25 - .byte 0x22, 0x0a, 0x26 - .byte 0x39, 0x06, 0x23 - .byte 0x16, 0x07, 0x2f - .byte 0x22, 0x3a, 0x1b - .byte 0x3b, 0x36, 0x35 - .byte 0x0a, 0x2b, 0x24 - .byte 0x36, 0x09, 0x12 - .byte 0x1c, 0x2f, 0x23 - .byte 0x2e, 0x38, 0x2c - .byte 0x05, 0x2a, 0x20 - .byte 0x07, 0x14, 0x32 - .byte 0x31, 0x08, 0x17 - .byte 0x1a, 0x24, 0x2d - .byte 0x22, 0x0a, 0x16 - .byte 0x1b, 0x26, 0x2b - .byte 0x29, 0x16, 0x11 - .byte 0x35, 0x08, 0x14 - .byte 0x1e, 0x08, 0x14 - .byte 0x05, 0x31, 0x14 - .byte 0x38, 0x31, 0x17 - .byte 0x34, 0x33, 0x12 - .byte 0x11, 0x09, 0x1f - .byte 0x28, 0x3d, 0x32 - .byte 0x35, 0x03, 0x1e - .byte 0x3c, 0x2b, 0x2e - .byte 0x10, 0x01, 0x17 - .byte 0x03, 0x3e, 0x22 - .byte 0x17, 0x18, 0x34 - .byte 0x08, 0x29, 0x19 - .byte 0x03, 0x24, 0x28 - .byte 0x3d, 0x33, 0x2f - .byte 0x31, 0x24, 0x19 - .byte 0x1b, 0x18, 0x26 - .byte 0x07, 0x0d, 0x25 - .byte 0x2d, 0x3f, 0x12 - .byte 0x2f, 0x15, 0x25 - .byte 0x29, 0x0f, 0x12 - .byte 0x07, 0x2c, 0x12 - .byte 0x2c, 0x0b, 0x26 - .byte 0x12, 0x1a, 0x16 - .byte 0x00, 0x0b, 0x2f - .byte 0x16, 0x35, 0x24 - .byte 0x1f, 0x1c, 0x22 - .byte 0x29, 0x33, 0x27 - .byte 0x3b, 0x30, 0x17 - .byte 0x11, 0x06, 0x35 - .byte 0x3e, 0x31, 0x2f - .byte 0x11, 0x3a, 0x25 - .byte 0x2a, 0x02, 0x19 - .byte 0x33, 0x18, 0x35 - .byte 0x2a, 0x20, 0x21 - .byte 0x2e, 0x32, 0x1b - .byte 0x3b, 0x1f, 0x23 - .byte 0x39, 0x29, 0x2a - .byte 0x2e, 0x31, 0x29 - .byte 0x2a, 0x0e, 0x2d - .byte 0x2d, 0x00, 0x1f - .byte 0x38, 0x28, 0x1b - .byte 0x14, 0x3b, 0x2b - .byte 0x2e, 0x04, 0x26 - .byte 0x36, 0x30, 0x11 - .byte 0x3b, 0x21, 0x2d - .byte 0x2b, 0x3f, 0x1b - .byte 0x20, 0x13, 0x31 - .byte 0x33, 0x0c, 0x30 - .byte 0x22, 0x2b, 0x2b - .byte 0x16, 0x02, 0x1e - .byte 0x1c, 0x12, 0x1c - .byte 0x0f, 0x3c, 0x36 - .byte 0x38, 0x10, 0x2d - .byte 0x18, 0x2f, 0x2d - .byte 0x35, 0x3b, 0x11 - .byte 0x37, 0x31, 0x13 - .byte 0x13, 0x3d, 0x2f - .byte 0x1e, 0x2c, 0x33 - .byte 0x2e, 0x37, 0x12 - .byte 0x3c, 0x1f, 0x33 - .byte 0x32, 0x2a, 0x27 - .byte 0x0d, 0x3b, 0x1c - .byte 0x35, 0x2a, 0x27 - .byte 0x09, 0x3d, 0x27 - .byte 0x12, 0x0b, 0x18 - .byte 0x0c, 0x15, 0x1d - .byte 0x20, 0x01, 0x1c - .byte 0x08, 0x3b, 0x1c - .byte 0x12, 0x37, 0x33 - .byte 0x15, 0x03, 0x2c - .byte 0x2a, 0x3b, 0x31 - .byte 0x0f, 0x04, 0x35 - .byte 0x08, 0x17, 0x33 - .byte 0x38, 0x3d, 0x2a - .byte 0x2f, 0x35, 0x16 - .byte 0x10, 0x35, 0x16 - .byte 0x23, 0x13, 0x2c - .byte 0x2f, 0x06, 0x20 - .byte 0x27, 0x3a, 0x24 - .byte 0x00, 0x1c, 0x2a - .byte 0x03, 0x39, 0x1d - .byte 0x28, 0x07, 0x1a - .byte 0x20, 0x0a, 0x37 - .byte 0x07, 0x35, 0x2d - .byte 0x15, 0x2f, 0x2c - .byte 0x10, 0x2c, 0x23 - .byte 0x3f, 0x29, 0x14 - .byte 0x2a, 0x21, 0x36 - .byte 0x34, 0x1a, 0x2c - .byte 0x1c, 0x3d, 0x33 - .byte 0x38, 0x2b, 0x22 - .byte 0x35, 0x28, 0x1f - .byte 0x3d, 0x0f, 0x1c - .byte 0x1e, 0x3e, 0x1b - .byte 0x0c, 0x3e, 0x1f - .byte 0x2b, 0x31, 0x2c - .byte 0x32, 0x39, 0x11 - .byte 0x05, 0x09, 0x11 - .byte 0x04, 0x38, 0x2a - .byte 0x32, 0x00, 0x16 - .byte 0x13, 0x0b, 0x31 - .byte 0x34, 0x2a, 0x13 - .byte 0x2c, 0x22, 0x21 - .byte 0x39, 0x2f, 0x15 - .byte 0x37, 0x28, 0x1e - .byte 0x07, 0x3b, 0x2d - .byte 0x11, 0x03, 0x28 - .byte 0x2d, 0x30, 0x1e - .byte 0x31, 0x11, 0x11 - .byte 0x23, 0x01, 0x1e - .byte 0x3d, 0x31, 0x34 - .byte 0x1c, 0x02, 0x34 - .byte 0x21, 0x0e, 0x25 - .byte 0x3d, 0x07, 0x17 - .byte 0x33, 0x15, 0x10 - .byte 0x29, 0x32, 0x32 - .byte 0x18, 0x1f, 0x30 - .byte 0x2d, 0x3b, 0x30 - .byte 0x27, 0x3e, 0x16 - .byte 0x31, 0x15, 0x12 - .byte 0x30, 0x25, 0x17 - .byte 0x33, 0x06, 0x34 - .byte 0x00, 0x29, 0x18 - .byte 0x3c, 0x03, 0x12 - .byte 0x2c, 0x0c, 0x11 - .byte 0x09, 0x30, 0x30 - .byte 0x10, 0x0e, 0x11 - .byte 0x27, 0x16, 0x1b - .byte 0x0c, 0x3b, 0x2e - .byte 0x2b, 0x33, 0x1e - .byte 0x13, 0x2d, 0x2d - .byte 0x11, 0x24, 0x29 - .byte 0x34, 0x3e, 0x2b - .byte 0x24, 0x1e, 0x21 - .byte 0x27, 0x1a, 0x2d - .byte 0x04, 0x39, 0x16 - .byte 0x3e, 0x33, 0x26 - .byte 0x1b, 0x2e, 0x25 - .byte 0x0c, 0x06, 0x19 - .byte 0x25, 0x19, 0x18 - .byte 0x1d, 0x33, 0x33 - .byte 0x1d, 0x28, 0x2d - .byte 0x1c, 0x10, 0x2a - .byte 0x1f, 0x35, 0x1e - .byte 0x34, 0x02, 0x10 - .byte 0x2b, 0x3a, 0x14 - .byte 0x0d, 0x0b, 0x15 - .byte 0x0c, 0x2c, 0x10 - .byte 0x37, 0x3a, 0x19 - .byte 0x06, 0x13, 0x17 - .byte 0x24, 0x10, 0x25 - .byte 0x24, 0x04, 0x1e - .byte 0x00, 0x35, 0x34 - .byte 0x3a, 0x00, 0x37 - .byte 0x3c, 0x07, 0x1a - .byte 0x2b, 0x28, 0x36 - .byte 0x34, 0x39, 0x2f - .byte 0x28, 0x09, 0x1f - .byte 0x38, 0x31, 0x30 - .byte 0x16, 0x25, 0x31 - .byte 0x18, 0x28, 0x31 - .byte 0x18, 0x0c, 0x22 - .byte 0x06, 0x39, 0x2d - .byte 0x3d, 0x20, 0x24 - .byte 0x2e, 0x27, 0x21 - .byte 0x3e, 0x18, 0x18 - .byte 0x15, 0x3c, 0x24 - .byte 0x06, 0x1b, 0x26 - .byte 0x15, 0x0e, 0x22 - .byte 0x0a, 0x0d, 0x1f - .byte 0x18, 0x16, 0x34 - .byte 0x10, 0x28, 0x21 - .byte 0x20, 0x11, 0x11 - .byte 0x36, 0x32, 0x15 - .byte 0x3b, 0x2e, 0x24 - .byte 0x1f, 0x2d, 0x12 - .byte 0x36, 0x2e, 0x20 - .byte 0x0b, 0x17, 0x33 - .byte 0x26, 0x03, 0x1f - .byte 0x08, 0x19, 0x31 - .byte 0x2a, 0x18, 0x25 - .byte 0x35, 0x2d, 0x2d - .byte 0x30, 0x38, 0x18 - .byte 0x1c, 0x25, 0x14 - .byte 0x1c, 0x22, 0x28 - .byte 0x08, 0x23, 0x21 - .byte 0x26, 0x1e, 0x30 - .byte 0x19, 0x0f, 0x15 - .byte 0x10, 0x2f, 0x22 - .byte 0x12, 0x02, 0x25 - .byte 0x3c, 0x01, 0x1d - .byte 0x0e, 0x14, 0x18 - .byte 0x0d, 0x18, 0x17 - .byte 0x22, 0x0b, 0x31 - .byte 0x13, 0x34, 0x21 - .byte 0x0f, 0x2d, 0x36 - .byte 0x39, 0x1f, 0x25 - .byte 0x18, 0x10, 0x1f - .byte 0x2d, 0x20, 0x20 - .byte 0x19, 0x0b, 0x31 - .byte 0x33, 0x13, 0x14 - .byte 0x2e, 0x11, 0x21 - .byte 0x2d, 0x0a, 0x37 - .byte 0x07, 0x15, 0x1b - .byte 0x32, 0x04, 0x32 - .byte 0x06, 0x18, 0x1b - .byte 0x13, 0x24, 0x12 - .byte 0x36, 0x22, 0x16 - .byte 0x1d, 0x29, 0x1c - .byte 0x35, 0x17, 0x21 - .byte 0x36, 0x17, 0x2b - .byte 0x35, 0x32, 0x19 - .byte 0x2a, 0x0f, 0x2e - .byte 0x10, 0x00, 0x34 - .byte 0x02, 0x0e, 0x28 - .byte 0x31, 0x32, 0x32 - .byte 0x3b, 0x05, 0x20 - .byte 0x36, 0x26, 0x12 - .byte 0x34, 0x06, 0x34 - .byte 0x1e, 0x31, 0x32 - .byte 0x35, 0x05, 0x34 - .byte 0x1e, 0x13, 0x15 - .byte 0x15, 0x14, 0x2c - .byte 0x29, 0x1c, 0x18 - .byte 0x24, 0x24, 0x12 - .byte 0x22, 0x29, 0x18 - .byte 0x34, 0x36, 0x30 - .byte 0x1e, 0x01, 0x23 - .byte 0x0c, 0x3c, 0x24 - .byte 0x0a, 0x3d, 0x16 - .byte 0x27, 0x1e, 0x23 - .byte 0x15, 0x02, 0x12 - .byte 0x11, 0x19, 0x2a - .byte 0x1d, 0x31, 0x15 - .byte 0x03, 0x3b, 0x2a - .byte 0x21, 0x19, 0x2c - .byte 0x0a, 0x23, 0x11 - .byte 0x25, 0x11, 0x1a - .byte 0x1a, 0x0a, 0x34 - .byte 0x3b, 0x0b, 0x33 - .byte 0x21, 0x0b, 0x37 - .byte 0x01, 0x31, 0x28 - .byte 0x35, 0x1d, 0x27 - .byte 0x2c, 0x30, 0x31 - .byte 0x2e, 0x39, 0x2d - .byte 0x30, 0x05, 0x2c - .byte 0x12, 0x2a, 0x2b - .byte 0x39, 0x22, 0x20 - .byte 0x15, 0x34, 0x1c - .byte 0x1c, 0x01, 0x15 - .byte 0x20, 0x16, 0x22 - .byte 0x13, 0x04, 0x18 - .byte 0x1e, 0x13, 0x10 - .byte 0x25, 0x33, 0x15 - .byte 0x39, 0x03, 0x31 - .byte 0x3f, 0x36, 0x18 - .byte 0x14, 0x23, 0x10 - .byte 0x2f, 0x1e, 0x1f - .byte 0x1f, 0x17, 0x2c - .byte 0x02, 0x16, 0x31 - .byte 0x20, 0x18, 0x30 - .byte 0x2e, 0x18, 0x37 - .byte 0x3b, 0x0e, 0x30 - .byte 0x10, 0x39, 0x24 - .byte 0x26, 0x39, 0x1e - .byte 0x30, 0x26, 0x2e - .byte 0x12, 0x01, 0x14 - .byte 0x37, 0x2a, 0x2e - .byte 0x21, 0x06, 0x1d - .byte 0x2a, 0x16, 0x32 - .byte 0x09, 0x38, 0x1c - .byte 0x07, 0x22, 0x17 - .byte 0x3b, 0x2d, 0x15 - .byte 0x07, 0x1e, 0x2e - .byte 0x1b, 0x2e, 0x1d - .byte 0x04, 0x09, 0x30 - .byte 0x30, 0x2d, 0x37 - .byte 0x2d, 0x34, 0x24 - .byte 0x18, 0x24, 0x25 - .byte 0x0e, 0x2d, 0x26 - .byte 0x23, 0x0a, 0x16 - .byte 0x12, 0x2d, 0x11 - .byte 0x21, 0x28, 0x2e - .byte 0x0f, 0x01, 0x21 - .byte 0x01, 0x31, 0x12 - .byte 0x3f, 0x1b, 0x1e - .byte 0x21, 0x25, 0x2b - .byte 0x26, 0x18, 0x13 - .byte 0x15, 0x2d, 0x34 - .byte 0x23, 0x21, 0x36 - .byte 0x0e, 0x2e, 0x1c - .byte 0x14, 0x22, 0x1c - .byte 0x2c, 0x0b, 0x28 - .byte 0x1a, 0x18, 0x21 - .byte 0x21, 0x07, 0x1a - .byte 0x24, 0x26, 0x29 - .byte 0x2b, 0x0a, 0x34 - .byte 0x3e, 0x27, 0x33 - .byte 0x12, 0x34, 0x1b - .byte 0x1f, 0x01, 0x2a - .byte 0x2e, 0x06, 0x23 - .byte 0x2f, 0x1f, 0x14 - .byte 0x18, 0x06, 0x26 - .byte 0x31, 0x1f, 0x2b - .byte 0x22, 0x26, 0x2e - .byte 0x1e, 0x15, 0x16 - .byte 0x20, 0x22, 0x28 - .byte 0x15, 0x37, 0x12 - .byte 0x25, 0x04, 0x2c - .byte 0x1f, 0x04, 0x2e - .byte 0x0c, 0x13, 0x18 - .byte 0x07, 0x0b, 0x36 - .byte 0x1d, 0x1c, 0x2a - .byte 0x30, 0x22, 0x1c - .byte 0x2e, 0x12, 0x2f - .byte 0x2b, 0x21, 0x1e - .byte 0x16, 0x38, 0x30 - .byte 0x04, 0x02, 0x16 - .byte 0x05, 0x14, 0x20 - .byte 0x38, 0x3c, 0x33 - .byte 0x21, 0x1b, 0x2f - .byte 0x14, 0x2a, 0x27 - .byte 0x38, 0x14, 0x1b - .byte 0x2b, 0x1f, 0x2b - .byte 0x29, 0x2b, 0x25 - .byte 0x27, 0x36, 0x21 - .byte 0x11, 0x22, 0x1b - .byte 0x29, 0x03, 0x1b - .byte 0x18, 0x24, 0x28 - .byte 0x21, 0x2d, 0x36 - .byte 0x3c, 0x2c, 0x24 - .byte 0x33, 0x17, 0x1f - .byte 0x2a, 0x3a, 0x21 - .byte 0x0a, 0x23, 0x37 - .byte 0x00, 0x0b, 0x21 - .byte 0x11, 0x38, 0x19 - .byte 0x0f, 0x0e, 0x1c - .byte 0x1f, 0x0f, 0x37 - .byte 0x3c, 0x10, 0x37 - .byte 0x38, 0x31, 0x35 - .byte 0x07, 0x15, 0x28 - .byte 0x1e, 0x2e, 0x19 - .byte 0x26, 0x10, 0x33 - .byte 0x3d, 0x35, 0x2f - .byte 0x3a, 0x04, 0x34 - .byte 0x0d, 0x18, 0x1a - .byte 0x01, 0x2d, 0x15 - .byte 0x3d, 0x1a, 0x17 - .byte 0x17, 0x3f, 0x32 - .byte 0x0b, 0x21, 0x11 - .byte 0x1e, 0x26, 0x2b - .byte 0x0d, 0x19, 0x24 - .byte 0x2e, 0x04, 0x1b - .byte 0x1b, 0x33, 0x20 - .byte 0x15, 0x21, 0x1d - .byte 0x1f, 0x04, 0x21 - .byte 0x0f, 0x12, 0x1f - .byte 0x2d, 0x2a, 0x32 - .byte 0x03, 0x37, 0x1f - .byte 0x35, 0x07, 0x27 - .byte 0x24, 0x1f, 0x31 - .byte 0x2f, 0x30, 0x15 - .byte 0x06, 0x00, 0x24 - .byte 0x0b, 0x22, 0x1a - .byte 0x0c, 0x3b, 0x29 - .byte 0x14, 0x1a, 0x17 - .byte 0x37, 0x20, 0x25 - .byte 0x3f, 0x26, 0x37 - .byte 0x3a, 0x3e, 0x10 - .byte 0x22, 0x04, 0x11 - .byte 0x28, 0x12, 0x1c - .byte 0x03, 0x2e, 0x2e - .byte 0x0e, 0x38, 0x28 - .byte 0x01, 0x29, 0x22 - .byte 0x1e, 0x33, 0x19 - .byte 0x06, 0x21, 0x27 - .byte 0x33, 0x19, 0x1a - .byte 0x02, 0x05, 0x17 - .byte 0x11, 0x11, 0x2c - .byte 0x1f, 0x26, 0x1e - .byte 0x39, 0x1f, 0x28 - .byte 0x2e, 0x2f, 0x12 - .byte 0x22, 0x34, 0x13 - .byte 0x3b, 0x26, 0x2f - .byte 0x34, 0x00, 0x14 - .byte 0x10, 0x31, 0x11 - .byte 0x1d, 0x2d, 0x2a - .byte 0x08, 0x08, 0x37 - .byte 0x15, 0x18, 0x34 - .byte 0x04, 0x2b, 0x24 - .byte 0x2f, 0x1e, 0x27 - .byte 0x22, 0x2a, 0x24 - .byte 0x07, 0x14, 0x25 - .byte 0x01, 0x27, 0x19 - .byte 0x29, 0x0a, 0x29 - .byte 0x3d, 0x1c, 0x2f - .byte 0x0d, 0x1f, 0x1c - .byte 0x24, 0x3d, 0x32 - .byte 0x36, 0x1d, 0x24 - .byte 0x14, 0x21, 0x16 - .byte 0x1a, 0x0d, 0x29 - .byte 0x3f, 0x2b, 0x2a - .byte 0x1a, 0x3e, 0x35 - .byte 0x11, 0x28, 0x18 - .byte 0x32, 0x05, 0x15 - .byte 0x21, 0x2e, 0x34 - .byte 0x2d, 0x14, 0x2a - .byte 0x3c, 0x08, 0x37 - .byte 0x3f, 0x34, 0x1e - .byte 0x27, 0x24, 0x1c - .byte 0x16, 0x16, 0x33 - .byte 0x29, 0x3b, 0x19 - .byte 0x36, 0x2f, 0x1c - .byte 0x03, 0x25, 0x2c - .byte 0x0b, 0x16, 0x36 - .byte 0x1c, 0x1d, 0x1b - .byte 0x2c, 0x27, 0x1b - .byte 0x0b, 0x1f, 0x2b - .byte 0x08, 0x10, 0x27 - .byte 0x3f, 0x25, 0x2f - .byte 0x33, 0x13, 0x1f - .byte 0x04, 0x31, 0x37 - .byte 0x0e, 0x2f, 0x12 - .byte 0x08, 0x23, 0x20 - .byte 0x3a, 0x1a, 0x1e - .byte 0x2f, 0x0b, 0x1f - .byte 0x1e, 0x20, 0x19 - .byte 0x23, 0x3b, 0x14 - .byte 0x25, 0x00, 0x27 - .byte 0x14, 0x04, 0x25 - .byte 0x36, 0x1a, 0x2b - .byte 0x27, 0x21, 0x15 - .byte 0x28, 0x13, 0x2c - .byte 0x0e, 0x3c, 0x35 - .byte 0x0c, 0x2d, 0x2b - .byte 0x37, 0x16, 0x15 - .byte 0x29, 0x15, 0x1d - .byte 0x17, 0x34, 0x36 - .byte 0x09, 0x0a, 0x31 - .byte 0x37, 0x22, 0x28 - .byte 0x17, 0x2b, 0x35 - .byte 0x14, 0x2b, 0x12 - .byte 0x08, 0x13, 0x1f - .byte 0x31, 0x13, 0x28 - .byte 0x06, 0x07, 0x35 - .byte 0x23, 0x3a, 0x29 - .byte 0x0f, 0x24, 0x2e - .byte 0x07, 0x35, 0x26 - .byte 0x0e, 0x12, 0x15 - .byte 0x23, 0x33, 0x2c - .byte 0x0e, 0x21, 0x26 - .byte 0x1c, 0x12, 0x25 - .byte 0x23, 0x1d, 0x2f - .byte 0x04, 0x35, 0x33 - .byte 0x16, 0x01, 0x24 - .byte 0x3d, 0x2c, 0x2e - .byte 0x35, 0x0a, 0x25 - .byte 0x11, 0x13, 0x25 - .byte 0x1b, 0x1b, 0x15 - .byte 0x15, 0x39, 0x10 - .byte 0x0b, 0x35, 0x24 - .byte 0x3a, 0x27, 0x30 - .byte 0x2e, 0x2f, 0x15 - .byte 0x10, 0x1f, 0x35 - .byte 0x1b, 0x28, 0x35 - .byte 0x26, 0x30, 0x37 - .byte 0x34, 0x37, 0x2b - .byte 0x0f, 0x30, 0x29 - .byte 0x2e, 0x3f, 0x2b - .byte 0x38, 0x34, 0x2b - .byte 0x2b, 0x2f, 0x25 - .byte 0x0d, 0x28, 0x2a - .byte 0x33, 0x18, 0x10 - .byte 0x21, 0x12, 0x11 - .byte 0x1f, 0x22, 0x34 - .byte 0x11, 0x25, 0x23 - .byte 0x21, 0x3f, 0x11 - .byte 0x26, 0x27, 0x25 - .byte 0x28, 0x36, 0x12 - .byte 0x15, 0x26, 0x32 - .byte 0x11, 0x18, 0x24 - .byte 0x32, 0x25, 0x37 - .byte 0x27, 0x3a, 0x33 - .byte 0x35, 0x07, 0x1c - .byte 0x1a, 0x0e, 0x2a - .byte 0x1e, 0x2f, 0x1f - .byte 0x00, 0x2e, 0x21 - .byte 0x1b, 0x3c, 0x14 - .byte 0x2f, 0x3a, 0x2f - .byte 0x3e, 0x38, 0x15 - .byte 0x1a, 0x13, 0x2f - .byte 0x29, 0x0d, 0x2f - .byte 0x37, 0x17, 0x18 - .byte 0x30, 0x1c, 0x35 - .byte 0x15, 0x34, 0x14 - .byte 0x28, 0x11, 0x2c - .byte 0x2c, 0x25, 0x2a - .byte 0x20, 0x3f, 0x28 - .byte 0x0c, 0x34, 0x1b - .byte 0x30, 0x2e, 0x25 - .byte 0x37, 0x1c, 0x24 - .byte 0x1f, 0x25, 0x26 - .byte 0x0c, 0x19, 0x34 - .byte 0x18, 0x10, 0x35 - .byte 0x0a, 0x13, 0x11 - .byte 0x25, 0x13, 0x20 - .byte 0x13, 0x19, 0x11 - .byte 0x20, 0x28, 0x1d - .byte 0x3e, 0x30, 0x1b - .byte 0x23, 0x24, 0x21 - .byte 0x0d, 0x23, 0x23 - .byte 0x1d, 0x28, 0x2e - .byte 0x2d, 0x12, 0x1f - .byte 0x0e, 0x2e, 0x2b - .byte 0x0b, 0x31, 0x32 - .byte 0x24, 0x3c, 0x2c - .byte 0x13, 0x3c, 0x12 - .byte 0x28, 0x16, 0x2a - .byte 0x05, 0x0c, 0x32 - .byte 0x39, 0x0b, 0x32 - .byte 0x21, 0x04, 0x14 - .byte 0x10, 0x31, 0x32 - .byte 0x12, 0x1f, 0x23 - .byte 0x39, 0x2e, 0x2e - .byte 0x22, 0x3d, 0x27 - .byte 0x0c, 0x1e, 0x18 - .byte 0x25, 0x00, 0x17 - .byte 0x06, 0x31, 0x14 - .byte 0x13, 0x21, 0x1a - .byte 0x14, 0x20, 0x35 - .byte 0x0a, 0x3b, 0x25 - .byte 0x33, 0x08, 0x28 - .byte 0x3d, 0x02, 0x33 - .byte 0x23, 0x00, 0x13 - .byte 0x22, 0x21, 0x28 - .byte 0x30, 0x14, 0x2e - .byte 0x14, 0x32, 0x36 - .byte 0x39, 0x23, 0x1e - .byte 0x1c, 0x11, 0x30 - .byte 0x37, 0x16, 0x30 - .byte 0x15, 0x31, 0x1f - .byte 0x34, 0x28, 0x2c - .byte 0x35, 0x05, 0x29 - .byte 0x37, 0x33, 0x2a - .byte 0x1c, 0x17, 0x2e - .byte 0x10, 0x06, 0x16 - .byte 0x32, 0x1f, 0x2f - .byte 0x00, 0x29, 0x1e - .byte 0x04, 0x01, 0x16 - .byte 0x3b, 0x23, 0x1e - .byte 0x1b, 0x34, 0x2a - .byte 0x30, 0x11, 0x2b - .byte 0x03, 0x00, 0x1f - .byte 0x1d, 0x37, 0x1a - .byte 0x3a, 0x18, 0x25 - .byte 0x1c, 0x16, 0x2c - .byte 0x04, 0x3f, 0x33 - .byte 0x26, 0x23, 0x2d - .byte 0x15, 0x2c, 0x27 - .byte 0x02, 0x35, 0x27 - .byte 0x07, 0x35, 0x33 - .byte 0x1a, 0x0c, 0x10 - .byte 0x28, 0x26, 0x2c - .byte 0x2f, 0x36, 0x16 - .byte 0x37, 0x0b, 0x27 - .byte 0x1b, 0x3d, 0x18 - .byte 0x27, 0x1f, 0x20 - .byte 0x2b, 0x2a, 0x33 - .byte 0x0b, 0x0f, 0x20 - .byte 0x35, 0x3c, 0x2f - .byte 0x33, 0x21, 0x15 - .byte 0x2d, 0x26, 0x34 - .byte 0x1f, 0x1a, 0x21 - .byte 0x2f, 0x2c, 0x2a - .byte 0x1a, 0x32, 0x1a - .byte 0x3b, 0x3f, 0x21 - .byte 0x13, 0x3f, 0x13 - .byte 0x0f, 0x24, 0x22 - .byte 0x14, 0x1b, 0x10 - .byte 0x21, 0x06, 0x28 - .byte 0x25, 0x34, 0x10 - .byte 0x2e, 0x0e, 0x14 - .byte 0x3c, 0x3e, 0x25 - .byte 0x16, 0x06, 0x30 - .byte 0x0b, 0x04, 0x1f - .byte 0x3e, 0x02, 0x24 - .byte 0x0c, 0x17, 0x25 - .byte 0x2b, 0x3c, 0x2d - .byte 0x15, 0x36, 0x33 - .byte 0x18, 0x23, 0x2a - .byte 0x1d, 0x10, 0x2a - .byte 0x35, 0x17, 0x28 - .byte 0x00, 0x37, 0x24 - .byte 0x0a, 0x3b, 0x15 - .byte 0x1d, 0x0b, 0x1f - .byte 0x3c, 0x31, 0x25 - .byte 0x1d, 0x0f, 0x1d - .byte 0x20, 0x13, 0x34 - .byte 0x11, 0x2b, 0x2e - .byte 0x23, 0x0c, 0x2e - .byte 0x24, 0x02, 0x14 - .byte 0x31, 0x16, 0x19 - .byte 0x0e, 0x23, 0x35 - .byte 0x1a, 0x10, 0x16 - .byte 0x14, 0x04, 0x19 - .byte 0x2d, 0x27, 0x37 - .byte 0x33, 0x02, 0x31 - .byte 0x02, 0x04, 0x16 - .byte 0x0d, 0x22, 0x25 - .byte 0x25, 0x00, 0x16 - .byte 0x2a, 0x3f, 0x26 - .byte 0x20, 0x0c, 0x12 - .byte 0x2f, 0x2e, 0x35 - .byte 0x1b, 0x0d, 0x22 - .byte 0x1e, 0x01, 0x34 - .byte 0x05, 0x22, 0x21 - .byte 0x34, 0x2a, 0x32 - .byte 0x0b, 0x09, 0x1d - .byte 0x3f, 0x32, 0x2f - .byte 0x3d, 0x18, 0x2d - .byte 0x0b, 0x38, 0x36 - .byte 0x39, 0x17, 0x28 - .byte 0x34, 0x04, 0x24 - .byte 0x36, 0x0e, 0x2a - .byte 0x38, 0x01, 0x14 - .byte 0x3c, 0x24, 0x22 - .byte 0x21, 0x03, 0x18 - .byte 0x32, 0x2f, 0x12 - .byte 0x29, 0x24, 0x31 - .byte 0x0a, 0x3b, 0x12 - .byte 0x1a, 0x1c, 0x20 - .byte 0x30, 0x31, 0x1b - .byte 0x1a, 0x21, 0x10 - .byte 0x05, 0x29, 0x10 - .byte 0x26, 0x2d, 0x13 - .byte 0x16, 0x0c, 0x1d - .byte 0x2b, 0x06, 0x1b - .byte 0x06, 0x12, 0x14 - .byte 0x38, 0x0f, 0x35 - .byte 0x23, 0x3a, 0x2c - .byte 0x00, 0x19, 0x33 - .byte 0x29, 0x14, 0x2d - .byte 0x2a, 0x21, 0x29 - .byte 0x14, 0x31, 0x14 - .byte 0x1a, 0x06, 0x1e - .byte 0x18, 0x1b, 0x28 - .byte 0x3b, 0x16, 0x29 - .byte 0x15, 0x1e, 0x12 - .byte 0x34, 0x0a, 0x14 - .byte 0x1b, 0x05, 0x27 - .byte 0x0b, 0x01, 0x26 - .byte 0x2a, 0x22, 0x35 - .byte 0x21, 0x20, 0x18 - .byte 0x20, 0x37, 0x17 - .byte 0x14, 0x1f, 0x11 - .byte 0x1d, 0x11, 0x25 - .byte 0x24, 0x2b, 0x2f - .byte 0x07, 0x3f, 0x1f - .byte 0x2c, 0x25, 0x25 - .byte 0x2a, 0x29, 0x18 - .byte 0x11, 0x24, 0x28 - .byte 0x31, 0x2c, 0x2a - .byte 0x39, 0x0b, 0x26 - .byte 0x28, 0x10, 0x26 - .byte 0x22, 0x06, 0x16 - .byte 0x09, 0x2c, 0x13 - .byte 0x34, 0x19, 0x15 - .byte 0x3a, 0x12, 0x21 - .byte 0x1d, 0x38, 0x23 - .byte 0x12, 0x25, 0x24 - .byte 0x21, 0x30, 0x12 - .byte 0x37, 0x1a, 0x12 - .byte 0x24, 0x3b, 0x25 - .byte 0x32, 0x15, 0x23 - .byte 0x0d, 0x1a, 0x10 - .byte 0x16, 0x2e, 0x26 - .byte 0x1d, 0x14, 0x16 - .byte 0x3e, 0x2e, 0x1f - .byte 0x0a, 0x16, 0x10 - .byte 0x1d, 0x30, 0x2b - .byte 0x04, 0x3a, 0x19 - .byte 0x08, 0x2d, 0x2e - .byte 0x28, 0x1e, 0x33 - .byte 0x0a, 0x12, 0x2e - .byte 0x0d, 0x03, 0x2f - .byte 0x26, 0x3a, 0x1e - .byte 0x35, 0x3b, 0x2a - .byte 0x03, 0x1a, 0x18 - .byte 0x3f, 0x0b, 0x27 - .byte 0x04, 0x05, 0x34 - .byte 0x36, 0x0b, 0x27 - .byte 0x3b, 0x17, 0x11 - .byte 0x0d, 0x27, 0x26 - .byte 0x2c, 0x1f, 0x20 - .byte 0x26, 0x10, 0x20 - .byte 0x25, 0x23, 0x2d - .byte 0x37, 0x09, 0x13 - .byte 0x14, 0x17, 0x2d - .byte 0x2e, 0x3d, 0x23 - .byte 0x1d, 0x1a, 0x1f - .byte 0x21, 0x33, 0x2e - .byte 0x28, 0x17, 0x13 - .byte 0x26, 0x3c, 0x36 - .byte 0x14, 0x1a, 0x33 - .byte 0x32, 0x20, 0x2b - .byte 0x19, 0x3e, 0x20 - .byte 0x0c, 0x02, 0x2d - .byte 0x3c, 0x3c, 0x2a - .byte 0x30, 0x30, 0x28 - .byte 0x25, 0x3f, 0x1e - .byte 0x03, 0x17, 0x1e - .byte 0x35, 0x11, 0x1c - .byte 0x1b, 0x14, 0x2a - .byte 0x28, 0x3a, 0x23 - .byte 0x0e, 0x1f, 0x12 - .byte 0x36, 0x21, 0x20 - .byte 0x07, 0x3b, 0x10 - .byte 0x23, 0x19, 0x34 - .byte 0x0d, 0x2e, 0x18 - .byte 0x3f, 0x20, 0x25 - .byte 0x3e, 0x3b, 0x15 - .byte 0x0b, 0x2e, 0x12 - .byte 0x37, 0x0b, 0x23 - .byte 0x3d, 0x32, 0x1f - .byte 0x16, 0x03, 0x27 - .byte 0x14, 0x0c, 0x21 - .byte 0x18, 0x03, 0x30 - .byte 0x3e, 0x21, 0x13 - .byte 0x0f, 0x00, 0x32 - .byte 0x3f, 0x23, 0x16 - .byte 0x0e, 0x31, 0x1d - .byte 0x18, 0x1c, 0x1d - .byte 0x30, 0x0e, 0x1e - .byte 0x21, 0x20, 0x23 - .byte 0x3f, 0x0c, 0x1e - .byte 0x14, 0x33, 0x22 - .byte 0x22, 0x21, 0x15 - .byte 0x36, 0x05, 0x1e - .byte 0x1d, 0x31, 0x14 - .byte 0x20, 0x11, 0x37 - .byte 0x0d, 0x33, 0x19 - .byte 0x25, 0x05, 0x36 - .byte 0x1e, 0x31, 0x20 - .byte 0x35, 0x3a, 0x2f - .byte 0x32, 0x2f, 0x30 - .byte 0x14, 0x23, 0x2d - .byte 0x35, 0x1e, 0x29 - .byte 0x05, 0x05, 0x1b - .byte 0x09, 0x1f, 0x26 - .byte 0x2f, 0x0b, 0x15 - .byte 0x15, 0x11, 0x13 - .byte 0x29, 0x1b, 0x18 - .byte 0x1c, 0x13, 0x35 - .byte 0x34, 0x31, 0x23 - .byte 0x27, 0x3f, 0x2f - .byte 0x09, 0x30, 0x19 - .byte 0x23, 0x12, 0x34 - .byte 0x02, 0x2a, 0x21 - .byte 0x09, 0x3c, 0x1d - .byte 0x0c, 0x02, 0x10 - .byte 0x22, 0x05, 0x17 - .byte 0x22, 0x08, 0x1b - .byte 0x0a, 0x0f, 0x15 - .byte 0x02, 0x11, 0x13 - .byte 0x01, 0x21, 0x22 - .byte 0x16, 0x39, 0x33 - .byte 0x24, 0x38, 0x34 - .byte 0x0f, 0x1e, 0x2b - .byte 0x2b, 0x15, 0x15 - .byte 0x20, 0x22, 0x2e - .byte 0x3a, 0x3f, 0x31 - .byte 0x1a, 0x27, 0x2b - .byte 0x29, 0x34, 0x14 - .byte 0x16, 0x39, 0x2f - .byte 0x13, 0x3e, 0x16 - .byte 0x36, 0x21, 0x30 - .byte 0x00, 0x24, 0x2b - .byte 0x24, 0x21, 0x30 - .byte 0x15, 0x31, 0x13 - .byte 0x10, 0x37, 0x24 - .byte 0x08, 0x07, 0x23 - .byte 0x21, 0x09, 0x25 - .byte 0x05, 0x3c, 0x32 - .byte 0x19, 0x03, 0x25 - .byte 0x0f, 0x29, 0x2b - .byte 0x16, 0x07, 0x13 - .byte 0x3e, 0x3d, 0x25 - .byte 0x36, 0x0b, 0x28 - .byte 0x2e, 0x2b, 0x16 - .byte 0x0c, 0x31, 0x11 - .byte 0x30, 0x13, 0x2d - .byte 0x26, 0x3e, 0x37 - .byte 0x29, 0x2f, 0x2e - .byte 0x15, 0x3d, 0x17 - .byte 0x1c, 0x2e, 0x21 - .byte 0x33, 0x2f, 0x10 - .byte 0x0d, 0x05, 0x1d - .byte 0x1c, 0x1a, 0x12 - .byte 0x0e, 0x18, 0x37 - .byte 0x1b, 0x11, 0x14 - .byte 0x06, 0x14, 0x21 - .byte 0x31, 0x0e, 0x27 - .byte 0x1a, 0x03, 0x10 - .byte 0x00, 0x34, 0x31 - .byte 0x3f, 0x0b, 0x1d - .byte 0x0f, 0x12, 0x1f - .byte 0x1a, 0x15, 0x10 - .byte 0x0f, 0x00, 0x24 - .byte 0x3e, 0x0a, 0x2a - .byte 0x30, 0x2b, 0x24 - .byte 0x26, 0x31, 0x10 - .byte 0x2d, 0x2f, 0x2f - .byte 0x3f, 0x0c, 0x13 - .byte 0x12, 0x0b, 0x16 - .byte 0x15, 0x07, 0x1f - .byte 0x28, 0x10, 0x32 - .byte 0x0f, 0x17, 0x15 - .byte 0x0b, 0x27, 0x33 - .byte 0x34, 0x1d, 0x10 - .byte 0x1c, 0x3a, 0x12 - .byte 0x2c, 0x27, 0x37 - .byte 0x0a, 0x1a, 0x32 - .byte 0x05, 0x1f, 0x21 - .byte 0x24, 0x0d, 0x1f - .byte 0x1c, 0x17, 0x24 - .byte 0x2f, 0x3b, 0x32 - .byte 0x3b, 0x25, 0x10 - .byte 0x03, 0x2f, 0x21 - .byte 0x0c, 0x10, 0x23 - .byte 0x0e, 0x3a, 0x2c - .byte 0x33, 0x03, 0x2c - .byte 0x12, 0x06, 0x1c - .byte 0x2a, 0x37, 0x30 - .byte 0x3f, 0x01, 0x1e - .byte 0x35, 0x16, 0x37 - .byte 0x2c, 0x32, 0x35 - .byte 0x05, 0x11, 0x22 - .byte 0x29, 0x09, 0x20 - .byte 0x2b, 0x0d, 0x1f - .byte 0x18, 0x0d, 0x20 - .byte 0x23, 0x39, 0x16 - .byte 0x0f, 0x3a, 0x18 - .byte 0x21, 0x35, 0x2b - .byte 0x36, 0x26, 0x2b - .byte 0x23, 0x05, 0x2f - .byte 0x1b, 0x08, 0x17 - .byte 0x3e, 0x09, 0x16 - .byte 0x2d, 0x3a, 0x37 - .byte 0x15, 0x35, 0x35 - .byte 0x29, 0x0a, 0x12 - .byte 0x02, 0x39, 0x1f - .byte 0x14, 0x34, 0x33 - .byte 0x17, 0x1d, 0x18 - .byte 0x16, 0x1d, 0x1a - .byte 0x01, 0x39, 0x22 - .byte 0x1e, 0x27, 0x36 - .byte 0x32, 0x14, 0x26 - .byte 0x0a, 0x39, 0x36 - .byte 0x1f, 0x0d, 0x1e - .byte 0x0b, 0x0a, 0x19 - .byte 0x35, 0x1d, 0x34 - .byte 0x03, 0x12, 0x16 - .byte 0x0c, 0x13, 0x2e - .byte 0x0c, 0x34, 0x1e - .byte 0x10, 0x14, 0x1e - .byte 0x23, 0x32, 0x27 - .byte 0x02, 0x10, 0x29 - .byte 0x35, 0x18, 0x33 - .byte 0x33, 0x1d, 0x1a - .byte 0x3c, 0x15, 0x23 - .byte 0x3e, 0x3f, 0x22 - .byte 0x2a, 0x02, 0x2c - .byte 0x28, 0x0a, 0x2f - .byte 0x1a, 0x06, 0x35 - .byte 0x3c, 0x17, 0x2b - .byte 0x03, 0x12, 0x17 - .byte 0x2f, 0x0a, 0x26 - .byte 0x12, 0x38, 0x11 - .byte 0x36, 0x1b, 0x23 - .byte 0x01, 0x39, 0x35 - .byte 0x19, 0x19, 0x17 - .byte 0x09, 0x28, 0x22 - .byte 0x1e, 0x27, 0x2c - .byte 0x35, 0x33, 0x2c - .byte 0x27, 0x25, 0x31 - .byte 0x06, 0x31, 0x2d - .byte 0x1a, 0x39, 0x28 - .byte 0x2d, 0x04, 0x1e - .byte 0x24, 0x3e, 0x1c - .byte 0x3c, 0x30, 0x1b - .byte 0x3f, 0x3e, 0x37 - .byte 0x22, 0x36, 0x11 - .byte 0x00, 0x01, 0x1c - .byte 0x12, 0x1a, 0x10 - .byte 0x12, 0x1e, 0x2c - .byte 0x1f, 0x12, 0x2a - .byte 0x2f, 0x06, 0x19 - .byte 0x35, 0x1a, 0x18 - .byte 0x3b, 0x09, 0x36 - .byte 0x34, 0x1d, 0x13 - .byte 0x02, 0x07, 0x10 - .byte 0x20, 0x2f, 0x1d - .byte 0x0b, 0x03, 0x33 - .byte 0x1c, 0x16, 0x31 - .byte 0x05, 0x13, 0x1b - .byte 0x29, 0x06, 0x13 - .byte 0x30, 0x2d, 0x36 - .byte 0x2a, 0x2d, 0x2c - .byte 0x19, 0x34, 0x1c - .byte 0x0f, 0x15, 0x12 - .byte 0x36, 0x15, 0x2c - .byte 0x3a, 0x06, 0x1c - .byte 0x12, 0x1d, 0x26 - .byte 0x03, 0x38, 0x1d - .byte 0x01, 0x01, 0x2d - .byte 0x17, 0x2e, 0x10 - .byte 0x14, 0x17, 0x1c - .byte 0x34, 0x0f, 0x28 - .byte 0x09, 0x37, 0x1b - .byte 0x28, 0x1d, 0x26 - .byte 0x29, 0x2d, 0x36 - .byte 0x1e, 0x17, 0x28 - .byte 0x15, 0x0f, 0x1c - .byte 0x20, 0x2d, 0x10 - .byte 0x27, 0x16, 0x2e - .byte 0x14, 0x09, 0x12 - .byte 0x3b, 0x3d, 0x21 - .byte 0x25, 0x1a, 0x2c - .byte 0x00, 0x22, 0x36 - .byte 0x0d, 0x30, 0x10 - .byte 0x17, 0x19, 0x1b - .byte 0x00, 0x3b, 0x21 - .byte 0x2a, 0x28, 0x34 - .byte 0x2d, 0x0f, 0x16 - .byte 0x0a, 0x30, 0x28 - .byte 0x06, 0x00, 0x25 - .byte 0x31, 0x2e, 0x2a - .byte 0x14, 0x33, 0x28 - .byte 0x36, 0x10, 0x2e - .byte 0x05, 0x2e, 0x19 - .byte 0x19, 0x1a, 0x15 - .byte 0x2c, 0x14, 0x17 - .byte 0x37, 0x0f, 0x13 - .byte 0x32, 0x17, 0x1b - .byte 0x39, 0x18, 0x32 - .byte 0x2e, 0x32, 0x1e - .byte 0x24, 0x1d, 0x31 - .byte 0x12, 0x1d, 0x2b - .byte 0x14, 0x0c, 0x27 - .byte 0x36, 0x2e, 0x32 - .byte 0x06, 0x0a, 0x1a - .byte 0x28, 0x28, 0x20 - .byte 0x3a, 0x3a, 0x17 - .byte 0x08, 0x27, 0x36 - .byte 0x18, 0x1a, 0x10 - .byte 0x1e, 0x26, 0x1b - .byte 0x1f, 0x33, 0x1f - .byte 0x21, 0x17, 0x2f - .byte 0x01, 0x08, 0x20 - .byte 0x35, 0x03, 0x19 - .byte 0x3b, 0x02, 0x20 - .byte 0x02, 0x2d, 0x23 - .byte 0x0e, 0x17, 0x32 - .byte 0x31, 0x29, 0x11 - .byte 0x22, 0x17, 0x22 - .byte 0x3a, 0x2c, 0x23 - .byte 0x34, 0x20, 0x18 - .byte 0x00, 0x3a, 0x22 - .byte 0x25, 0x33, 0x21 - .byte 0x33, 0x04, 0x27 - .byte 0x04, 0x18, 0x32 - .byte 0x2c, 0x0c, 0x2f - .byte 0x28, 0x14, 0x2c - .byte 0x3f, 0x30, 0x2b - .byte 0x30, 0x21, 0x1d - .byte 0x01, 0x25, 0x32 - .byte 0x05, 0x23, 0x34 - .byte 0x24, 0x10, 0x30 - .byte 0x3d, 0x14, 0x1b - .byte 0x3f, 0x38, 0x2f - .byte 0x22, 0x1b, 0x32 - .byte 0x25, 0x07, 0x37 - .byte 0x0a, 0x0c, 0x1d - .byte 0x03, 0x1e, 0x1a - .byte 0x0f, 0x3c, 0x12 - .byte 0x11, 0x18, 0x1d - .byte 0x00, 0x35, 0x2f - .byte 0x32, 0x18, 0x14 - .byte 0x23, 0x30, 0x1b - .byte 0x11, 0x3d, 0x12 - .byte 0x1a, 0x16, 0x35 - .byte 0x28, 0x05, 0x24 - .byte 0x17, 0x3d, 0x37 - .byte 0x2e, 0x09, 0x2e - .byte 0x18, 0x1d, 0x17 - .byte 0x20, 0x1f, 0x18 - .byte 0x23, 0x2c, 0x2f - .byte 0x20, 0x3f, 0x16 - .byte 0x3f, 0x29, 0x2e - .byte 0x23, 0x3b, 0x29 - .byte 0x18, 0x39, 0x13 - .byte 0x1e, 0x32, 0x35 - .byte 0x14, 0x1d, 0x2a - .byte 0x35, 0x01, 0x1d - .byte 0x3e, 0x3b, 0x1e - .byte 0x22, 0x1e, 0x16 - .byte 0x18, 0x22, 0x12 - .byte 0x3e, 0x29, 0x33 - .byte 0x2f, 0x14, 0x19 - .byte 0x3b, 0x07, 0x15 - .byte 0x06, 0x3d, 0x29 - .byte 0x35, 0x37, 0x23 - .byte 0x34, 0x1d, 0x2d - .byte 0x18, 0x12, 0x1b - .byte 0x0b, 0x13, 0x24 - .byte 0x13, 0x38, 0x1c - .byte 0x1f, 0x0b, 0x1b - .byte 0x13, 0x21, 0x1c - .byte 0x06, 0x39, 0x32 - .byte 0x37, 0x3d, 0x26 - .byte 0x29, 0x26, 0x15 - .byte 0x3c, 0x33, 0x27 - .byte 0x00, 0x01, 0x2e - .byte 0x15, 0x18, 0x31 - .byte 0x0d, 0x2c, 0x13 - .byte 0x27, 0x3b, 0x20 - .byte 0x2d, 0x01, 0x26 - .byte 0x23, 0x15, 0x30 - .byte 0x24, 0x00, 0x17 - .byte 0x37, 0x3f, 0x33 - .byte 0x25, 0x24, 0x31 - .byte 0x06, 0x3b, 0x37 - .byte 0x03, 0x18, 0x1a - .byte 0x2c, 0x34, 0x14 - .byte 0x1d, 0x36, 0x18 - .byte 0x3a, 0x04, 0x23 - .byte 0x12, 0x26, 0x15 - .byte 0x2b, 0x19, 0x1a - .byte 0x29, 0x2c, 0x36 - .byte 0x01, 0x19, 0x1d - .byte 0x2f, 0x06, 0x2b - .byte 0x0c, 0x12, 0x26 - .byte 0x36, 0x32, 0x1d - .byte 0x0d, 0x12, 0x28 - .byte 0x03, 0x28, 0x13 - .byte 0x29, 0x06, 0x17 - .byte 0x03, 0x38, 0x21 - .byte 0x30, 0x2c, 0x10 - .byte 0x22, 0x00, 0x28 - .byte 0x24, 0x3b, 0x1c - .byte 0x20, 0x3e, 0x13 - .byte 0x02, 0x0c, 0x19 - .byte 0x29, 0x2c, 0x1a - .byte 0x39, 0x30, 0x22 - .byte 0x2a, 0x1f, 0x22 - .byte 0x14, 0x34, 0x2c - .byte 0x14, 0x25, 0x1b - .byte 0x06, 0x3b, 0x15 - .byte 0x06, 0x1c, 0x13 - .byte 0x15, 0x03, 0x18 - .byte 0x1e, 0x2a, 0x1b - .byte 0x17, 0x25, 0x2f - .byte 0x1c, 0x29, 0x2e - .byte 0x02, 0x32, 0x1e - .byte 0x1d, 0x28, 0x35 - .byte 0x36, 0x03, 0x34 - .byte 0x16, 0x3d, 0x2a - .byte 0x12, 0x0d, 0x13 - .byte 0x1d, 0x2d, 0x21 - .byte 0x32, 0x17, 0x2e - .byte 0x1a, 0x15, 0x26 - .byte 0x22, 0x2f, 0x15 - .byte 0x3c, 0x0e, 0x20 - .byte 0x2f, 0x27, 0x13 - .byte 0x04, 0x09, 0x32 - .byte 0x1e, 0x01, 0x34 - .byte 0x06, 0x16, 0x1e - .byte 0x2e, 0x1b, 0x1c - .byte 0x28, 0x13, 0x2a - .byte 0x30, 0x34, 0x12 - .byte 0x12, 0x32, 0x18 - .byte 0x1d, 0x1d, 0x35 - .byte 0x07, 0x1c, 0x16 - .byte 0x2d, 0x3d, 0x35 - .byte 0x1c, 0x1b, 0x24 - .byte 0x21, 0x2d, 0x1e - .byte 0x10, 0x09, 0x14 - .byte 0x3d, 0x11, 0x12 - .byte 0x25, 0x02, 0x26 - .byte 0x23, 0x02, 0x19 - .byte 0x19, 0x05, 0x14 - .byte 0x0b, 0x21, 0x1a - .byte 0x09, 0x02, 0x2c - .byte 0x18, 0x28, 0x2d - .byte 0x1e, 0x10, 0x12 - .byte 0x2e, 0x18, 0x2e - .byte 0x1f, 0x02, 0x2c - .byte 0x14, 0x17, 0x24 - .byte 0x39, 0x08, 0x32 - .byte 0x16, 0x14, 0x22 - .byte 0x16, 0x28, 0x21 - .byte 0x11, 0x10, 0x2c - .byte 0x23, 0x36, 0x2b - .byte 0x39, 0x21, 0x26 - .byte 0x0e, 0x06, 0x2d - .byte 0x3c, 0x3e, 0x26 - .byte 0x2a, 0x1b, 0x1f - .byte 0x00, 0x3c, 0x33 - .byte 0x35, 0x3f, 0x14 - .byte 0x00, 0x0b, 0x10 - .byte 0x34, 0x3c, 0x17 - .byte 0x2d, 0x07, 0x1f - .byte 0x24, 0x39, 0x27 - .byte 0x16, 0x00, 0x1d - .byte 0x33, 0x2b, 0x1e - .byte 0x0f, 0x08, 0x31 - .byte 0x3a, 0x09, 0x13 - .byte 0x0c, 0x21, 0x1c - .byte 0x2a, 0x17, 0x34 - .byte 0x29, 0x27, 0x10 - .byte 0x37, 0x1b, 0x18 - .byte 0x15, 0x08, 0x2f - .byte 0x1f, 0x16, 0x12 - .byte 0x1f, 0x28, 0x34 - .byte 0x1c, 0x20, 0x22 - .byte 0x12, 0x01, 0x12 - .byte 0x21, 0x31, 0x10 - .byte 0x22, 0x26, 0x1e - .byte 0x01, 0x3d, 0x11 - .byte 0x1e, 0x27, 0x25 - .byte 0x3d, 0x30, 0x24 - .byte 0x1d, 0x11, 0x22 - .byte 0x36, 0x30, 0x16 - .byte 0x1f, 0x3e, 0x2a - .byte 0x3c, 0x27, 0x1b - .byte 0x1f, 0x29, 0x10 - .byte 0x1e, 0x05, 0x2a - .byte 0x0a, 0x10, 0x14 - .byte 0x1f, 0x00, 0x2e - .byte 0x0b, 0x3b, 0x18 - .byte 0x0a, 0x39, 0x30 - .byte 0x37, 0x0b, 0x1f - .byte 0x1d, 0x0a, 0x29 - .byte 0x3e, 0x1c, 0x33 - .byte 0x13, 0x2e, 0x28 - .byte 0x27, 0x1b, 0x1e - .byte 0x1d, 0x02, 0x1c - .byte 0x01, 0x25, 0x14 - .byte 0x3a, 0x10, 0x1c - .byte 0x12, 0x05, 0x2a - .byte 0x30, 0x20, 0x26 - .byte 0x2f, 0x2e, 0x2e - .byte 0x03, 0x07, 0x24 - .byte 0x36, 0x04, 0x2b - .byte 0x11, 0x25, 0x2d - .byte 0x28, 0x0e, 0x2e - .byte 0x0f, 0x1d, 0x15 - .byte 0x1c, 0x28, 0x30 - .byte 0x1f, 0x23, 0x26 - .byte 0x36, 0x12, 0x37 - .byte 0x3a, 0x31, 0x10 - .byte 0x2c, 0x2c, 0x2f - .byte 0x1a, 0x0d, 0x15 - .byte 0x3f, 0x3c, 0x32 - .byte 0x35, 0x1c, 0x16 - .byte 0x33, 0x16, 0x28 - .byte 0x1d, 0x3f, 0x21 - .byte 0x2c, 0x3e, 0x2b - .byte 0x24, 0x23, 0x2f - .byte 0x32, 0x15, 0x2a - .byte 0x1b, 0x10, 0x35 - .byte 0x18, 0x37, 0x10 - .byte 0x3b, 0x1e, 0x11 - .byte 0x2b, 0x16, 0x24 - .byte 0x1d, 0x16, 0x26 - .byte 0x3c, 0x2d, 0x11 - .byte 0x15, 0x28, 0x28 - .byte 0x27, 0x27, 0x27 - .byte 0x3b, 0x3a, 0x16 - .byte 0x1a, 0x0c, 0x1a - .byte 0x15, 0x08, 0x25 - .byte 0x0b, 0x10, 0x22 - .byte 0x1a, 0x3e, 0x17 - .byte 0x28, 0x1f, 0x1e - .byte 0x01, 0x1e, 0x1e - .byte 0x1c, 0x2f, 0x10 - .byte 0x25, 0x0b, 0x34 - .byte 0x3e, 0x0c, 0x1a - .byte 0x1b, 0x10, 0x2a - .byte 0x0f, 0x14, 0x17 - .byte 0x0f, 0x3f, 0x17 - .byte 0x03, 0x15, 0x1f - .byte 0x02, 0x36, 0x17 - .byte 0x15, 0x1d, 0x18 - .byte 0x08, 0x36, 0x10 - .byte 0x14, 0x0d, 0x2b - .byte 0x0a, 0x05, 0x1d - .byte 0x26, 0x12, 0x1e - .byte 0x3e, 0x18, 0x19 - .byte 0x36, 0x18, 0x37 - .byte 0x17, 0x39, 0x2e - .byte 0x0d, 0x04, 0x19 - .byte 0x16, 0x22, 0x15 - .byte 0x3e, 0x26, 0x1f - .byte 0x00, 0x06, 0x17 - .byte 0x33, 0x22, 0x1d - .byte 0x2b, 0x39, 0x2b - .byte 0x3e, 0x31, 0x1c - .byte 0x22, 0x3f, 0x13 - .byte 0x30, 0x1c, 0x31 - .byte 0x07, 0x2b, 0x14 - .byte 0x32, 0x35, 0x1e - .byte 0x02, 0x07, 0x20 - .byte 0x0f, 0x3b, 0x11 - .byte 0x20, 0x07, 0x12 - .byte 0x2a, 0x30, 0x1d - .byte 0x28, 0x38, 0x36 - .byte 0x20, 0x01, 0x17 - .byte 0x15, 0x20, 0x21 - .byte 0x3a, 0x1b, 0x1e - .byte 0x38, 0x12, 0x24 - .byte 0x03, 0x3e, 0x1f - .byte 0x29, 0x1d, 0x13 - .byte 0x20, 0x27, 0x19 - .byte 0x12, 0x25, 0x20 - .byte 0x32, 0x33, 0x2b - .byte 0x3f, 0x05, 0x31 - .byte 0x35, 0x3c, 0x2d - .byte 0x2d, 0x02, 0x2e - .byte 0x10, 0x2a, 0x16 - .byte 0x17, 0x08, 0x31 - .byte 0x17, 0x2e, 0x2b - .byte 0x30, 0x1e, 0x15 - .byte 0x31, 0x15, 0x26 - .byte 0x08, 0x10, 0x33 - .byte 0x15, 0x01, 0x27 - .byte 0x12, 0x07, 0x2f - .byte 0x29, 0x27, 0x34 - .byte 0x3f, 0x08, 0x31 - .byte 0x1c, 0x20, 0x1a - .byte 0x33, 0x0c, 0x13 - .byte 0x18, 0x31, 0x24 - .byte 0x37, 0x2d, 0x2e - .byte 0x21, 0x18, 0x24 - .byte 0x3a, 0x27, 0x31 - .byte 0x35, 0x3e, 0x30 - .byte 0x3a, 0x14, 0x33 - .byte 0x0f, 0x1a, 0x2d - .byte 0x30, 0x2e, 0x11 - .byte 0x1a, 0x31, 0x1d - .byte 0x17, 0x3c, 0x18 - .byte 0x33, 0x31, 0x23 - .byte 0x1d, 0x39, 0x2d - .byte 0x10, 0x1d, 0x2f - .byte 0x24, 0x15, 0x1c - .byte 0x25, 0x01, 0x2b - .byte 0x22, 0x16, 0x2e - .byte 0x1b, 0x25, 0x35 - .byte 0x37, 0x10, 0x26 - .byte 0x39, 0x01, 0x36 - .byte 0x17, 0x2b, 0x14 - .byte 0x09, 0x16, 0x17 - .byte 0x20, 0x28, 0x23 - .byte 0x26, 0x3a, 0x26 - .byte 0x27, 0x2a, 0x24 - .byte 0x36, 0x02, 0x2c - .byte 0x29, 0x30, 0x35 - .byte 0x36, 0x01, 0x1f - .byte 0x28, 0x3b, 0x1d - .byte 0x23, 0x1e, 0x2d - .byte 0x11, 0x1e, 0x2c - .byte 0x2f, 0x32, 0x19 - .byte 0x3f, 0x26, 0x31 - .byte 0x38, 0x1e, 0x17 - .byte 0x05, 0x18, 0x2e - .byte 0x00, 0x2e, 0x12 - .byte 0x34, 0x3f, 0x34 - .byte 0x16, 0x10, 0x29 - .byte 0x20, 0x3d, 0x36 - .byte 0x2f, 0x16, 0x25 - .byte 0x12, 0x17, 0x10 - .byte 0x21, 0x37, 0x35 - .byte 0x25, 0x37, 0x2d - .byte 0x01, 0x08, 0x27 - .byte 0x03, 0x1f, 0x29 - .byte 0x0d, 0x2a, 0x16 - .byte 0x3a, 0x3f, 0x33 - .byte 0x2b, 0x19, 0x1d - .byte 0x2a, 0x1f, 0x29 - .byte 0x28, 0x2c, 0x10 - .byte 0x28, 0x30, 0x10 - .byte 0x39, 0x14, 0x1b - .byte 0x00, 0x18, 0x21 - .byte 0x28, 0x0c, 0x37 - .byte 0x11, 0x10, 0x11 - .byte 0x3c, 0x33, 0x32 - .byte 0x33, 0x36, 0x1a - .byte 0x36, 0x00, 0x1c - .byte 0x31, 0x1b, 0x1d - .byte 0x38, 0x1d, 0x10 - .byte 0x3c, 0x39, 0x27 - .byte 0x3a, 0x3f, 0x14 - .byte 0x19, 0x12, 0x14 - .byte 0x0d, 0x1f, 0x18 - .byte 0x00, 0x25, 0x18 - .byte 0x28, 0x1c, 0x32 - .byte 0x27, 0x03, 0x1a - .byte 0x26, 0x2d, 0x2a - .byte 0x29, 0x28, 0x27 - .byte 0x0a, 0x2a, 0x18 - .byte 0x0a, 0x1a, 0x30 - .byte 0x20, 0x1a, 0x2e - .byte 0x06, 0x0b, 0x1d - .byte 0x0f, 0x0c, 0x1c - .byte 0x35, 0x28, 0x1c - .byte 0x3d, 0x16, 0x23 - .byte 0x21, 0x1c, 0x31 - .byte 0x14, 0x1c, 0x2e - .byte 0x22, 0x32, 0x35 - .byte 0x09, 0x29, 0x30 - .byte 0x20, 0x1a, 0x10 - .byte 0x31, 0x3f, 0x2c - .byte 0x0a, 0x3d, 0x37 - .byte 0x0b, 0x2e, 0x2d - .byte 0x1f, 0x22, 0x31 - .byte 0x06, 0x07, 0x29 - .byte 0x22, 0x17, 0x2d - .byte 0x30, 0x11, 0x18 - .byte 0x0c, 0x19, 0x15 - .byte 0x07, 0x0a, 0x34 - .byte 0x18, 0x29, 0x27 - .byte 0x33, 0x0c, 0x30 - .byte 0x03, 0x1a, 0x37 - .byte 0x06, 0x01, 0x2d - .byte 0x0f, 0x3b, 0x2b - .byte 0x11, 0x1f, 0x37 - .byte 0x2b, 0x21, 0x36 - .byte 0x3f, 0x23, 0x17 - .byte 0x17, 0x07, 0x2b - .byte 0x2b, 0x0e, 0x30 - .byte 0x11, 0x39, 0x1d - .byte 0x29, 0x03, 0x33 - .byte 0x30, 0x03, 0x2f - .byte 0x3c, 0x20, 0x26 - .byte 0x03, 0x22, 0x14 - .byte 0x3a, 0x28, 0x35 - .byte 0x01, 0x28, 0x2b - .byte 0x3e, 0x15, 0x18 - .byte 0x30, 0x07, 0x17 - .byte 0x3b, 0x2c, 0x30 - .byte 0x15, 0x07, 0x2c - .byte 0x17, 0x27, 0x1d - .byte 0x3f, 0x1e, 0x33 - .byte 0x0d, 0x17, 0x10 - .byte 0x15, 0x0e, 0x30 - .byte 0x09, 0x05, 0x30 - .byte 0x2d, 0x20, 0x15 - .byte 0x3c, 0x3d, 0x30 - .byte 0x0c, 0x17, 0x1c - .byte 0x1a, 0x0d, 0x25 - .byte 0x2b, 0x2b, 0x2a - .byte 0x02, 0x16, 0x2d - .byte 0x17, 0x31, 0x17 - .byte 0x00, 0x08, 0x13 - .byte 0x37, 0x35, 0x21 - .byte 0x1e, 0x1c, 0x1f - .byte 0x2b, 0x32, 0x1c - .byte 0x10, 0x2a, 0x16 - .byte 0x3a, 0x33, 0x31 - .byte 0x17, 0x2b, 0x2a - .byte 0x0c, 0x3d, 0x11 - .byte 0x28, 0x0a, 0x30 - .byte 0x23, 0x0a, 0x26 - .byte 0x0a, 0x14, 0x24 - .byte 0x0b, 0x0f, 0x30 - .byte 0x1b, 0x1e, 0x29 - .byte 0x02, 0x35, 0x28 - .byte 0x3b, 0x02, 0x14 - .byte 0x00, 0x0f, 0x35 - .byte 0x1c, 0x3c, 0x2e - .byte 0x28, 0x38, 0x19 - .byte 0x1b, 0x11, 0x12 - .byte 0x09, 0x16, 0x10 - .byte 0x2e, 0x0d, 0x20 - .byte 0x3d, 0x04, 0x32 - .byte 0x16, 0x2c, 0x25 - .byte 0x02, 0x3d, 0x18 - .byte 0x0b, 0x13, 0x1c - .byte 0x22, 0x2a, 0x1c - .byte 0x20, 0x27, 0x22 - .byte 0x05, 0x26, 0x22 - .byte 0x12, 0x1d, 0x2c - .byte 0x08, 0x05, 0x2e - .byte 0x3f, 0x1c, 0x17 - .byte 0x24, 0x0d, 0x33 - .byte 0x36, 0x08, 0x24 - .byte 0x10, 0x22, 0x29 - .byte 0x1c, 0x0a, 0x11 - .byte 0x25, 0x0f, 0x10 - .byte 0x24, 0x38, 0x2f - .byte 0x25, 0x32, 0x1e - .byte 0x06, 0x2a, 0x29 - .byte 0x3e, 0x3a, 0x28 - .byte 0x34, 0x17, 0x33 - .byte 0x18, 0x33, 0x17 - .byte 0x07, 0x14, 0x1f - .byte 0x11, 0x17, 0x20 - .byte 0x13, 0x0e, 0x14 - .byte 0x3b, 0x1c, 0x12 - .byte 0x2a, 0x13, 0x37 - .byte 0x2a, 0x35, 0x32 - .byte 0x30, 0x02, 0x25 - .byte 0x00, 0x07, 0x1f - .byte 0x0c, 0x04, 0x2c - .byte 0x37, 0x37, 0x30 - .byte 0x25, 0x12, 0x25 - .byte 0x12, 0x22, 0x21 - .byte 0x22, 0x35, 0x33 - .byte 0x07, 0x20, 0x2d - .byte 0x27, 0x0e, 0x30 - .byte 0x34, 0x19, 0x1a - .byte 0x0a, 0x3c, 0x25 - .byte 0x07, 0x1d, 0x2b - .byte 0x31, 0x3a, 0x12 - .byte 0x1a, 0x3d, 0x37 - .byte 0x16, 0x15, 0x16 - .byte 0x39, 0x13, 0x15 - .byte 0x2d, 0x03, 0x2e - .byte 0x06, 0x39, 0x2c - .byte 0x16, 0x00, 0x13 - .byte 0x35, 0x2a, 0x35 - .byte 0x24, 0x01, 0x18 - .byte 0x24, 0x37, 0x28 - .byte 0x25, 0x1b, 0x34 - .byte 0x25, 0x19, 0x17 - .byte 0x27, 0x2f, 0x1b - .byte 0x27, 0x0d, 0x10 - .byte 0x36, 0x3c, 0x30 - .byte 0x3c, 0x33, 0x23 - .byte 0x3e, 0x27, 0x1e - .byte 0x25, 0x2d, 0x29 - .byte 0x1f, 0x12, 0x21 - .byte 0x37, 0x32, 0x1f - .byte 0x11, 0x21, 0x35 - .byte 0x30, 0x0c, 0x19 - .byte 0x25, 0x3d, 0x26 - .byte 0x17, 0x02, 0x1d - .byte 0x14, 0x2e, 0x11 - .byte 0x38, 0x13, 0x30 - .byte 0x0a, 0x2b, 0x20 - .byte 0x1e, 0x10, 0x15 - .byte 0x37, 0x30, 0x2e - .byte 0x1e, 0x04, 0x2c - .byte 0x14, 0x34, 0x19 - .byte 0x08, 0x14, 0x18 - .byte 0x0e, 0x1c, 0x30 - .byte 0x1a, 0x2e, 0x1b - .byte 0x1f, 0x39, 0x31 - .byte 0x0c, 0x1c, 0x28 - .byte 0x3e, 0x33, 0x23 - .byte 0x0f, 0x13, 0x16 - .byte 0x25, 0x39, 0x2f - .byte 0x14, 0x1b, 0x1a - .byte 0x28, 0x3e, 0x21 - .byte 0x2d, 0x19, 0x11 - .byte 0x0c, 0x34, 0x32 - .byte 0x39, 0x31, 0x19 - .byte 0x1a, 0x08, 0x34 - .byte 0x09, 0x2f, 0x11 - .byte 0x30, 0x04, 0x1c - .byte 0x02, 0x3b, 0x1b - .byte 0x33, 0x21, 0x33 - .byte 0x38, 0x02, 0x1a - .byte 0x31, 0x38, 0x32 - .byte 0x1f, 0x1d, 0x16 - .byte 0x17, 0x10, 0x1b - .byte 0x32, 0x20, 0x17 - .byte 0x00, 0x33, 0x12 - .byte 0x21, 0x0f, 0x27 - .byte 0x14, 0x19, 0x27 - .byte 0x24, 0x2c, 0x37 - .byte 0x25, 0x05, 0x2f - .byte 0x3d, 0x25, 0x11 - .byte 0x12, 0x30, 0x1a - .byte 0x16, 0x03, 0x1a - .byte 0x14, 0x09, 0x13 - .byte 0x02, 0x23, 0x22 - .byte 0x01, 0x3c, 0x10 - .byte 0x3f, 0x2d, 0x23 - .byte 0x31, 0x3f, 0x23 - .byte 0x17, 0x00, 0x33 - .byte 0x3f, 0x0f, 0x2f - .byte 0x26, 0x07, 0x15 - .byte 0x21, 0x2b, 0x2a - .byte 0x38, 0x39, 0x1e - .byte 0x09, 0x25, 0x2b - .byte 0x3b, 0x30, 0x25 - .byte 0x12, 0x2d, 0x13 - .byte 0x32, 0x19, 0x28 - .byte 0x24, 0x1c, 0x2d - .byte 0x35, 0x32, 0x26 - .byte 0x0d, 0x23, 0x1e - .byte 0x1d, 0x07, 0x21 - .byte 0x0b, 0x34, 0x17 - .byte 0x2d, 0x32, 0x32 - .byte 0x3a, 0x3c, 0x35 - .byte 0x1a, 0x10, 0x33 - .byte 0x1a, 0x07, 0x22 - .byte 0x3b, 0x1b, 0x2a - .byte 0x33, 0x1f, 0x26 - .byte 0x0e, 0x35, 0x1a - .byte 0x3b, 0x0a, 0x1c - .byte 0x11, 0x07, 0x11 - .byte 0x0d, 0x3c, 0x2d - .byte 0x1e, 0x37, 0x29 - .byte 0x11, 0x05, 0x12 - .byte 0x15, 0x2f, 0x1c - .byte 0x24, 0x31, 0x16 - .byte 0x2b, 0x21, 0x1b - .byte 0x23, 0x10, 0x31 - .byte 0x02, 0x14, 0x29 - .byte 0x26, 0x20, 0x16 - .byte 0x10, 0x17, 0x10 - .byte 0x0b, 0x0f, 0x33 - .byte 0x01, 0x2e, 0x14 - .byte 0x21, 0x0e, 0x37 - .byte 0x1a, 0x1d, 0x2f - .byte 0x1e, 0x30, 0x24 - .byte 0x04, 0x14, 0x2d - .byte 0x11, 0x00, 0x30 - .byte 0x08, 0x2a, 0x1d - .byte 0x1d, 0x22, 0x21 - .byte 0x24, 0x2c, 0x37 - .byte 0x24, 0x11, 0x12 - .byte 0x04, 0x2e, 0x28 - .byte 0x1d, 0x18, 0x23 - .byte 0x3c, 0x16, 0x16 - .byte 0x10, 0x17, 0x31 - .byte 0x20, 0x21, 0x12 - .byte 0x33, 0x3e, 0x34 - .byte 0x06, 0x13, 0x13 - .byte 0x17, 0x38, 0x2b - .byte 0x14, 0x0d, 0x15 - .byte 0x24, 0x3b, 0x2b - .byte 0x34, 0x3b, 0x1e - .byte 0x18, 0x07, 0x34 - .byte 0x37, 0x1d, 0x1f - .byte 0x0b, 0x29, 0x20 - .byte 0x12, 0x1e, 0x1d - .byte 0x1a, 0x24, 0x24 - .byte 0x3d, 0x28, 0x24 - .byte 0x0b, 0x12, 0x33 - .byte 0x1b, 0x3a, 0x22 - .byte 0x14, 0x13, 0x2a - .byte 0x31, 0x38, 0x15 - .byte 0x37, 0x2b, 0x2e - .byte 0x19, 0x1e, 0x2c - .byte 0x3f, 0x1b, 0x2a - .byte 0x33, 0x1f, 0x33 - .byte 0x3f, 0x15, 0x29 - .byte 0x01, 0x1e, 0x18 - .byte 0x1f, 0x22, 0x19 - .byte 0x33, 0x3c, 0x34 - .byte 0x1e, 0x12, 0x22 - .byte 0x0d, 0x37, 0x2c - .byte 0x0f, 0x08, 0x31 - .byte 0x2e, 0x09, 0x36 - .byte 0x01, 0x05, 0x1e - .byte 0x1c, 0x04, 0x1e - .byte 0x0c, 0x01, 0x1c - .byte 0x29, 0x28, 0x2f - .byte 0x39, 0x2d, 0x14 - .byte 0x09, 0x22, 0x36 - .byte 0x04, 0x37, 0x37 - .byte 0x2d, 0x2f, 0x35 - .byte 0x24, 0x23, 0x1b - .byte 0x08, 0x20, 0x32 - .byte 0x20, 0x1f, 0x34 - .byte 0x02, 0x31, 0x19 - .byte 0x18, 0x13, 0x36 - .byte 0x06, 0x2b, 0x1e - .byte 0x0e, 0x1b, 0x10 - .byte 0x2f, 0x0e, 0x1c - .byte 0x11, 0x38, 0x13 - .byte 0x01, 0x37, 0x19 - .byte 0x14, 0x11, 0x26 - .byte 0x31, 0x3d, 0x33 - .byte 0x1d, 0x1b, 0x34 - .byte 0x25, 0x31, 0x2f - .byte 0x11, 0x0a, 0x2f - .byte 0x39, 0x17, 0x1b - .byte 0x05, 0x0e, 0x13 - .byte 0x29, 0x25, 0x22 - .byte 0x15, 0x0d, 0x20 - .byte 0x2b, 0x27, 0x21 - .byte 0x3e, 0x24, 0x27 - .byte 0x2a, 0x2b, 0x16 - .byte 0x24, 0x3d, 0x15 - .byte 0x15, 0x30, 0x31 - .byte 0x0f, 0x33, 0x24 - .byte 0x06, 0x16, 0x13 - .byte 0x06, 0x31, 0x10 - .byte 0x2e, 0x3f, 0x10 - .byte 0x05, 0x0d, 0x2f - .byte 0x3c, 0x1f, 0x19 - .byte 0x12, 0x13, 0x24 - .byte 0x0f, 0x33, 0x36 - .byte 0x15, 0x3b, 0x33 - .byte 0x03, 0x0f, 0x2a - .byte 0x3b, 0x3c, 0x2c - .byte 0x36, 0x09, 0x29 - .byte 0x11, 0x3b, 0x27 - .byte 0x28, 0x2b, 0x31 - .byte 0x1a, 0x0e, 0x2f - .byte 0x39, 0x2c, 0x31 - .byte 0x0e, 0x3c, 0x35 - .byte 0x2c, 0x24, 0x33 - .byte 0x3d, 0x11, 0x2b - .byte 0x07, 0x3c, 0x37 - .byte 0x14, 0x18, 0x13 - .byte 0x1d, 0x3f, 0x2e - .byte 0x30, 0x12, 0x25 - .byte 0x26, 0x1d, 0x11 - .byte 0x07, 0x11, 0x1e - .byte 0x34, 0x01, 0x11 - .byte 0x0b, 0x39, 0x21 - .byte 0x29, 0x02, 0x29 - .byte 0x15, 0x10, 0x1a - .byte 0x30, 0x1f, 0x35 - .byte 0x3c, 0x2b, 0x2a - .byte 0x30, 0x3b, 0x36 - .byte 0x20, 0x1a, 0x23 - .byte 0x32, 0x24, 0x2b - .byte 0x15, 0x20, 0x1c - .byte 0x25, 0x3d, 0x36 - .byte 0x2d, 0x14, 0x31 - .byte 0x18, 0x23, 0x17 - .byte 0x18, 0x05, 0x13 - .byte 0x34, 0x30, 0x37 - .byte 0x0e, 0x39, 0x23 - .byte 0x1d, 0x1f, 0x17 - .byte 0x01, 0x15, 0x2f - .byte 0x0b, 0x3e, 0x1b - .byte 0x0d, 0x19, 0x2e - .byte 0x31, 0x38, 0x1c - .byte 0x15, 0x34, 0x15 - .byte 0x13, 0x19, 0x29 - .byte 0x19, 0x14, 0x27 - .byte 0x15, 0x18, 0x23 - .byte 0x29, 0x0c, 0x27 - .byte 0x2d, 0x0e, 0x17 - .byte 0x34, 0x18, 0x10 - .byte 0x3b, 0x1e, 0x29 - .byte 0x34, 0x2c, 0x22 - .byte 0x31, 0x08, 0x13 - .byte 0x1d, 0x18, 0x1a - .byte 0x1c, 0x0b, 0x2a - .byte 0x19, 0x1e, 0x1a - .byte 0x23, 0x27, 0x17 - .byte 0x3b, 0x0e, 0x37 - .byte 0x19, 0x2b, 0x16 - .byte 0x2f, 0x08, 0x21 - .byte 0x37, 0x02, 0x20 - .byte 0x0b, 0x32, 0x30 - .byte 0x16, 0x05, 0x30 - .byte 0x13, 0x05, 0x1a - .byte 0x07, 0x39, 0x19 - .byte 0x0c, 0x3b, 0x2a - .byte 0x15, 0x05, 0x30 - .byte 0x30, 0x05, 0x19 - .byte 0x13, 0x00, 0x12 - .byte 0x27, 0x16, 0x2a - .byte 0x0f, 0x28, 0x27 - .byte 0x0c, 0x23, 0x2f - .byte 0x39, 0x28, 0x2a - .byte 0x24, 0x25, 0x1f - .byte 0x18, 0x29, 0x14 - .byte 0x16, 0x05, 0x1a - .byte 0x35, 0x2f, 0x26 - .byte 0x0a, 0x3a, 0x29 - .byte 0x34, 0x2c, 0x36 - .byte 0x2e, 0x3a, 0x15 - .byte 0x1a, 0x0a, 0x2d - .byte 0x16, 0x14, 0x2e - .byte 0x35, 0x28, 0x2a - .byte 0x35, 0x0f, 0x11 - .byte 0x11, 0x32, 0x19 - .byte 0x20, 0x1a, 0x28 - .byte 0x17, 0x1a, 0x28 - .byte 0x16, 0x33, 0x25 - .byte 0x13, 0x2c, 0x29 - .byte 0x09, 0x16, 0x33 - .byte 0x1d, 0x27, 0x26 - .byte 0x15, 0x0c, 0x2f - .byte 0x22, 0x1c, 0x19 - .byte 0x29, 0x33, 0x10 - .byte 0x2d, 0x11, 0x1b - .byte 0x16, 0x19, 0x2e - .byte 0x0d, 0x0c, 0x28 - .byte 0x37, 0x3a, 0x34 - .byte 0x2a, 0x1d, 0x37 - .byte 0x30, 0x0a, 0x36 - .byte 0x24, 0x39, 0x1b - .byte 0x39, 0x0a, 0x32 - .byte 0x11, 0x03, 0x2d - .byte 0x32, 0x1d, 0x30 - .byte 0x38, 0x1e, 0x27 - .byte 0x2e, 0x17, 0x18 - .byte 0x16, 0x17, 0x2a - .byte 0x36, 0x3b, 0x31 - .byte 0x17, 0x04, 0x19 - .byte 0x3a, 0x25, 0x2d - .byte 0x00, 0x36, 0x27 - .byte 0x25, 0x12, 0x33 - .byte 0x06, 0x0a, 0x14 - .byte 0x11, 0x05, 0x2f - .byte 0x03, 0x35, 0x2f - .byte 0x0b, 0x34, 0x29 - .byte 0x00, 0x31, 0x13 - .byte 0x27, 0x0f, 0x1c - .byte 0x1d, 0x06, 0x2d - .byte 0x1c, 0x30, 0x27 - .byte 0x2f, 0x2a, 0x27 - .byte 0x16, 0x20, 0x31 - .byte 0x33, 0x2b, 0x2b - .byte 0x05, 0x30, 0x36 - .byte 0x29, 0x23, 0x35 - .byte 0x10, 0x16, 0x2f - .byte 0x2d, 0x20, 0x29 - .byte 0x37, 0x13, 0x24 - .byte 0x2d, 0x0e, 0x25 - .byte 0x08, 0x0a, 0x18 - .byte 0x0f, 0x03, 0x1b - .byte 0x31, 0x0c, 0x37 - .byte 0x1e, 0x34, 0x31 - .byte 0x1b, 0x0e, 0x25 - .byte 0x1a, 0x07, 0x34 - .byte 0x0d, 0x3c, 0x33 - .byte 0x00, 0x3a, 0x36 - .byte 0x04, 0x27, 0x12 - .byte 0x23, 0x18, 0x24 - .byte 0x0d, 0x0b, 0x18 - .byte 0x31, 0x32, 0x37 - .byte 0x00, 0x0d, 0x21 - .byte 0x32, 0x10, 0x12 - .byte 0x26, 0x0d, 0x19 - .byte 0x29, 0x24, 0x2b - .byte 0x3d, 0x21, 0x1f - .byte 0x1e, 0x1b, 0x28 - .byte 0x0d, 0x12, 0x28 - .byte 0x35, 0x1e, 0x23 - .byte 0x0a, 0x2e, 0x22 - .byte 0x27, 0x27, 0x35 - .byte 0x01, 0x0e, 0x20 - .byte 0x31, 0x39, 0x29 - .byte 0x3b, 0x24, 0x36 - .byte 0x14, 0x10, 0x33 - .byte 0x18, 0x2c, 0x26 - .byte 0x04, 0x2d, 0x15 - .byte 0x1a, 0x11, 0x37 - .byte 0x0f, 0x0b, 0x14 - .byte 0x0e, 0x2c, 0x2c - .byte 0x21, 0x17, 0x2c - .byte 0x16, 0x21, 0x35 - .byte 0x3e, 0x10, 0x10 - .byte 0x0a, 0x05, 0x1e - .byte 0x3b, 0x09, 0x13 - .byte 0x26, 0x18, 0x1e - .byte 0x23, 0x0c, 0x1a - .byte 0x33, 0x37, 0x1f - .byte 0x09, 0x12, 0x35 - .byte 0x3d, 0x0d, 0x15 - .byte 0x36, 0x06, 0x24 - .byte 0x33, 0x30, 0x29 - .byte 0x3b, 0x0f, 0x28 - .byte 0x34, 0x2a, 0x2c - .byte 0x02, 0x12, 0x35 - .byte 0x09, 0x22, 0x31 - .byte 0x3b, 0x31, 0x1c - .byte 0x33, 0x22, 0x27 - .byte 0x3d, 0x34, 0x15 - .byte 0x14, 0x22, 0x28 - .byte 0x28, 0x10, 0x1e - .byte 0x21, 0x31, 0x10 - .byte 0x2d, 0x16, 0x21 - .byte 0x1e, 0x05, 0x33 - .byte 0x0f, 0x30, 0x31 - .byte 0x0e, 0x1a, 0x35 - .byte 0x38, 0x2e, 0x28 - .byte 0x26, 0x37, 0x1e - .byte 0x2b, 0x13, 0x33 - .byte 0x1f, 0x1e, 0x37 - .byte 0x0a, 0x28, 0x24 - .byte 0x32, 0x1c, 0x1a - .byte 0x1f, 0x3f, 0x19 - .byte 0x39, 0x39, 0x29 - .byte 0x2c, 0x1b, 0x14 - .byte 0x15, 0x2a, 0x17 - .byte 0x32, 0x0f, 0x21 - .byte 0x30, 0x21, 0x18 - .byte 0x23, 0x2a, 0x27 - .byte 0x3d, 0x07, 0x10 - .byte 0x0b, 0x3f, 0x2f - .byte 0x31, 0x02, 0x2e - .byte 0x08, 0x39, 0x2f - .byte 0x3f, 0x20, 0x18 - .byte 0x2d, 0x34, 0x11 - .byte 0x2e, 0x34, 0x10 - .byte 0x26, 0x12, 0x23 - .byte 0x25, 0x0a, 0x37 - .byte 0x34, 0x09, 0x25 - .byte 0x0a, 0x3e, 0x16 - .byte 0x1a, 0x17, 0x11 - .byte 0x38, 0x1c, 0x20 - .byte 0x11, 0x21, 0x26 - .byte 0x05, 0x0f, 0x18 - .byte 0x26, 0x2b, 0x32 - .byte 0x0a, 0x0c, 0x16 - .byte 0x03, 0x29, 0x1d - .byte 0x29, 0x3b, 0x23 - .byte 0x16, 0x1b, 0x29 - .byte 0x07, 0x09, 0x17 - .byte 0x17, 0x2c, 0x1c - .byte 0x35, 0x33, 0x30 - .byte 0x17, 0x12, 0x1e - .byte 0x3d, 0x1a, 0x2b - .byte 0x21, 0x1d, 0x10 - .byte 0x0a, 0x08, 0x17 - .byte 0x14, 0x3c, 0x36 - .byte 0x28, 0x36, 0x36 - .byte 0x3b, 0x20, 0x1b - .byte 0x13, 0x22, 0x1d - .byte 0x13, 0x3a, 0x15 - .byte 0x02, 0x23, 0x2c - .byte 0x3e, 0x19, 0x14 - .byte 0x39, 0x3c, 0x1a - .byte 0x10, 0x08, 0x1e - .byte 0x0a, 0x13, 0x29 - .byte 0x3f, 0x38, 0x2c - .byte 0x07, 0x23, 0x1f - .byte 0x19, 0x2a, 0x24 - .byte 0x14, 0x3c, 0x1f - .byte 0x0d, 0x04, 0x37 - .byte 0x1a, 0x2f, 0x28 - .byte 0x2a, 0x1d, 0x1e - .byte 0x11, 0x37, 0x29 - .byte 0x28, 0x27, 0x12 - .byte 0x0d, 0x00, 0x26 - .byte 0x0a, 0x3c, 0x26 - .byte 0x1f, 0x1c, 0x33 - .byte 0x04, 0x3a, 0x2c - .byte 0x24, 0x3d, 0x2b - .byte 0x26, 0x31, 0x2f - .byte 0x13, 0x1c, 0x21 - .byte 0x3e, 0x12, 0x23 - .byte 0x36, 0x0a, 0x1a - .byte 0x2d, 0x1e, 0x19 - .byte 0x05, 0x1f, 0x1b - .byte 0x1e, 0x0a, 0x1f - .byte 0x20, 0x08, 0x24 - .byte 0x2c, 0x0c, 0x33 - .byte 0x1d, 0x1f, 0x11 - .byte 0x0e, 0x12, 0x10 - .byte 0x27, 0x12, 0x19 - .byte 0x2a, 0x13, 0x31 - .byte 0x1c, 0x04, 0x30 - .byte 0x1a, 0x38, 0x1f - .byte 0x2c, 0x35, 0x25 - .byte 0x07, 0x0b, 0x33 - .byte 0x2d, 0x02, 0x1a - .byte 0x2a, 0x35, 0x35 - .byte 0x16, 0x2f, 0x14 - .byte 0x11, 0x31, 0x33 - .byte 0x2c, 0x31, 0x1e - .byte 0x3c, 0x3a, 0x27 - .byte 0x3c, 0x2b, 0x12 - .byte 0x27, 0x1d, 0x12 - .byte 0x36, 0x2c, 0x2b - .byte 0x25, 0x3b, 0x35 - .byte 0x12, 0x3d, 0x27 - .byte 0x13, 0x23, 0x19 - .byte 0x33, 0x2c, 0x26 - .byte 0x09, 0x3c, 0x12 - .byte 0x15, 0x1a, 0x23 - .byte 0x21, 0x07, 0x1a - .byte 0x22, 0x25, 0x20 - .byte 0x19, 0x1b, 0x2c - .byte 0x3a, 0x19, 0x35 - .byte 0x05, 0x26, 0x1d - .byte 0x23, 0x22, 0x25 - .byte 0x0e, 0x1e, 0x11 - .byte 0x13, 0x30, 0x12 - .byte 0x2c, 0x22, 0x25 - .byte 0x0a, 0x1d, 0x18 - .byte 0x23, 0x3e, 0x1d - .byte 0x02, 0x28, 0x25 - .byte 0x21, 0x0e, 0x20 - .byte 0x21, 0x22, 0x37 - .byte 0x18, 0x33, 0x27 - .byte 0x23, 0x23, 0x31 - .byte 0x24, 0x1a, 0x1a - .byte 0x3e, 0x25, 0x24 - .byte 0x24, 0x01, 0x18 - .byte 0x34, 0x10, 0x22 - .byte 0x07, 0x00, 0x37 - .byte 0x06, 0x20, 0x20 - .byte 0x3a, 0x02, 0x2b - .byte 0x07, 0x2c, 0x2c - .byte 0x09, 0x2f, 0x2a - .byte 0x01, 0x32, 0x2c - .byte 0x00, 0x35, 0x13 - .byte 0x2b, 0x3c, 0x1f - .byte 0x36, 0x37, 0x1e - .byte 0x20, 0x35, 0x1d - .byte 0x0c, 0x07, 0x33 - .byte 0x16, 0x08, 0x12 - .byte 0x3f, 0x36, 0x11 - .byte 0x0b, 0x1f, 0x2d - .byte 0x21, 0x20, 0x33 - .byte 0x17, 0x1a, 0x2e - .byte 0x16, 0x01, 0x2f - .byte 0x2f, 0x1c, 0x34 - .byte 0x29, 0x31, 0x2e - .byte 0x3b, 0x38, 0x31 - .byte 0x0d, 0x16, 0x12 - .byte 0x07, 0x29, 0x24 - .byte 0x33, 0x3c, 0x34 - .byte 0x3e, 0x1e, 0x18 - .byte 0x30, 0x02, 0x34 - .byte 0x2a, 0x34, 0x1b - .byte 0x2e, 0x23, 0x18 - .byte 0x34, 0x00, 0x1f - .byte 0x20, 0x0e, 0x28 - .byte 0x15, 0x33, 0x37 - .byte 0x27, 0x35, 0x23 - .byte 0x37, 0x3e, 0x11 - .byte 0x32, 0x2e, 0x36 - .byte 0x3a, 0x02, 0x2b - .byte 0x00, 0x36, 0x1d - .byte 0x13, 0x29, 0x16 - .byte 0x08, 0x2b, 0x37 - .byte 0x08, 0x02, 0x27 - .byte 0x32, 0x2d, 0x34 - .byte 0x30, 0x36, 0x29 - .byte 0x2e, 0x10, 0x12 - .byte 0x3c, 0x2e, 0x2a - .byte 0x04, 0x33, 0x30 - .byte 0x3f, 0x01, 0x22 - .byte 0x37, 0x14, 0x1d - .byte 0x27, 0x00, 0x2f - .byte 0x0c, 0x39, 0x26 - .byte 0x27, 0x04, 0x21 - .byte 0x19, 0x08, 0x1d - .byte 0x01, 0x04, 0x1e - .byte 0x27, 0x1b, 0x2b - .byte 0x31, 0x17, 0x1f - .byte 0x07, 0x01, 0x2d - .byte 0x2e, 0x3b, 0x1f - .byte 0x34, 0x24, 0x31 - .byte 0x32, 0x2b, 0x24 - .byte 0x0e, 0x07, 0x1e - .byte 0x0f, 0x33, 0x10 - .byte 0x16, 0x21, 0x32 - .byte 0x39, 0x02, 0x1a - .byte 0x33, 0x3d, 0x22 - .byte 0x0c, 0x25, 0x1a - .byte 0x29, 0x29, 0x28 - .byte 0x3a, 0x32, 0x26 - .byte 0x0b, 0x13, 0x22 - .byte 0x1f, 0x0f, 0x1c - .byte 0x04, 0x2c, 0x20 - .byte 0x39, 0x1a, 0x1b - .byte 0x1a, 0x2a, 0x1f - .byte 0x24, 0x13, 0x1a - .byte 0x31, 0x3b, 0x33 - .byte 0x39, 0x23, 0x28 - .byte 0x31, 0x07, 0x31 - .byte 0x1f, 0x10, 0x20 - .byte 0x29, 0x17, 0x32 - .byte 0x26, 0x3b, 0x2d - .byte 0x02, 0x3c, 0x1c - .byte 0x0e, 0x00, 0x20 - .byte 0x14, 0x3e, 0x37 - .byte 0x01, 0x0f, 0x2d - .byte 0x06, 0x12, 0x27 - .byte 0x30, 0x13, 0x19 - .byte 0x00, 0x33, 0x2a - .byte 0x0c, 0x07, 0x27 - .byte 0x11, 0x3a, 0x1c - .byte 0x15, 0x0a, 0x13 - .byte 0x1f, 0x0d, 0x2a - .byte 0x37, 0x07, 0x2a - .byte 0x34, 0x35, 0x34 - .byte 0x28, 0x16, 0x27 - .byte 0x06, 0x02, 0x36 - .byte 0x09, 0x23, 0x30 - .byte 0x14, 0x02, 0x28 - .byte 0x39, 0x32, 0x34 - .byte 0x24, 0x35, 0x12 - .byte 0x12, 0x22, 0x26 - .byte 0x09, 0x07, 0x33 - .byte 0x0f, 0x3e, 0x1e - .byte 0x00, 0x3c, 0x33 - .byte 0x10, 0x37, 0x14 - .byte 0x3a, 0x03, 0x25 - .byte 0x2d, 0x1e, 0x24 - .byte 0x36, 0x36, 0x26 - .byte 0x1f, 0x3c, 0x1a - .byte 0x37, 0x33, 0x25 - .byte 0x23, 0x13, 0x1f - .byte 0x33, 0x0d, 0x13 - .byte 0x25, 0x30, 0x1e - .byte 0x17, 0x03, 0x18 - .byte 0x18, 0x18, 0x14 - .byte 0x30, 0x07, 0x22 - .byte 0x3e, 0x33, 0x21 - .byte 0x14, 0x37, 0x16 - .byte 0x16, 0x00, 0x12 - .byte 0x2c, 0x12, 0x2f - .byte 0x25, 0x3f, 0x1e - .byte 0x24, 0x19, 0x16 - .byte 0x16, 0x0f, 0x35 - .byte 0x2d, 0x10, 0x11 - .byte 0x24, 0x2a, 0x28 - .byte 0x19, 0x25, 0x2e - .byte 0x0c, 0x16, 0x1f - .byte 0x38, 0x21, 0x36 - .byte 0x3d, 0x1a, 0x2f - .byte 0x3b, 0x32, 0x12 - .byte 0x36, 0x13, 0x29 - .byte 0x0e, 0x30, 0x31 - .byte 0x19, 0x07, 0x2f - .byte 0x25, 0x23, 0x28 - .byte 0x20, 0x08, 0x29 - .byte 0x2a, 0x00, 0x30 - .byte 0x30, 0x38, 0x23 - .byte 0x1e, 0x0f, 0x1f - .byte 0x3b, 0x1b, 0x30 - .byte 0x3a, 0x37, 0x2f - .byte 0x39, 0x37, 0x35 - .byte 0x39, 0x2d, 0x2f - .byte 0x1f, 0x2e, 0x1e - .byte 0x1a, 0x2b, 0x1e - .byte 0x14, 0x17, 0x20 - .byte 0x2f, 0x03, 0x11 - .byte 0x1d, 0x00, 0x30 - .byte 0x17, 0x2b, 0x1d - .byte 0x35, 0x28, 0x25 - .byte 0x3b, 0x0f, 0x11 - .byte 0x09, 0x04, 0x2e - .byte 0x23, 0x11, 0x1e - .byte 0x13, 0x37, 0x1e - .byte 0x37, 0x37, 0x1e - .byte 0x07, 0x01, 0x32 - .byte 0x14, 0x06, 0x32 - .byte 0x11, 0x0c, 0x2e - .byte 0x36, 0x2e, 0x24 - .byte 0x15, 0x2a, 0x1c - .byte 0x22, 0x15, 0x34 - .byte 0x2c, 0x1e, 0x35 - .byte 0x22, 0x27, 0x33 - .byte 0x19, 0x3f, 0x2d - .byte 0x21, 0x33, 0x15 - .byte 0x26, 0x1a, 0x11 - .byte 0x16, 0x3e, 0x12 - .byte 0x2b, 0x24, 0x15 - .byte 0x3c, 0x0f, 0x2d - .byte 0x31, 0x15, 0x36 - .byte 0x3f, 0x24, 0x1d - .byte 0x25, 0x01, 0x37 - .byte 0x33, 0x16, 0x1a - .byte 0x1f, 0x0e, 0x10 - .byte 0x2f, 0x0b, 0x12 - .byte 0x2a, 0x1a, 0x25 - .byte 0x17, 0x0a, 0x35 - .byte 0x09, 0x28, 0x35 - .byte 0x02, 0x13, 0x36 - .byte 0x34, 0x2f, 0x17 - .byte 0x03, 0x04, 0x31 - .byte 0x3e, 0x26, 0x11 - .byte 0x35, 0x33, 0x31 - .byte 0x22, 0x17, 0x23 - .byte 0x1d, 0x05, 0x2b - .byte 0x2e, 0x27, 0x20 - .byte 0x03, 0x2b, 0x1d - .byte 0x01, 0x19, 0x1e - .byte 0x0e, 0x05, 0x18 - .byte 0x16, 0x25, 0x17 - .byte 0x02, 0x28, 0x18 - .byte 0x19, 0x0b, 0x24 - .byte 0x3e, 0x35, 0x16 - .byte 0x2e, 0x29, 0x25 - .byte 0x3e, 0x38, 0x1e - .byte 0x3a, 0x2f, 0x12 - .byte 0x14, 0x17, 0x2d - .byte 0x11, 0x12, 0x30 - .byte 0x15, 0x31, 0x18 - .byte 0x08, 0x0b, 0x29 - .byte 0x2d, 0x00, 0x33 - .byte 0x2c, 0x06, 0x1a - .byte 0x14, 0x1c, 0x2e - .byte 0x04, 0x08, 0x12 - .byte 0x1b, 0x2b, 0x2d - .byte 0x2a, 0x37, 0x33 - .byte 0x10, 0x27, 0x2c - .byte 0x1d, 0x0e, 0x34 - .byte 0x20, 0x02, 0x12 - .byte 0x1e, 0x1a, 0x2e - .byte 0x07, 0x0b, 0x10 - .byte 0x36, 0x1e, 0x33 - .byte 0x2b, 0x28, 0x1b - .byte 0x31, 0x25, 0x1f - .byte 0x38, 0x3a, 0x2f - .byte 0x39, 0x30, 0x2f - .byte 0x12, 0x09, 0x14 - .byte 0x0e, 0x08, 0x19 - .byte 0x00, 0x0d, 0x2c - .byte 0x1b, 0x0e, 0x34 - .byte 0x11, 0x25, 0x15 - .byte 0x0c, 0x2d, 0x26 - .byte 0x36, 0x2c, 0x16 - .byte 0x31, 0x31, 0x2c - .byte 0x03, 0x1a, 0x16 - .byte 0x1c, 0x32, 0x14 - .byte 0x0a, 0x3e, 0x36 - .byte 0x33, 0x1b, 0x27 - .byte 0x1f, 0x32, 0x18 - .byte 0x33, 0x26, 0x33 - .byte 0x1a, 0x13, 0x1a - .byte 0x0f, 0x34, 0x1c - .byte 0x35, 0x2c, 0x2f - .byte 0x38, 0x03, 0x18 - .byte 0x15, 0x0f, 0x27 - .byte 0x31, 0x29, 0x20 - .byte 0x28, 0x0e, 0x28 - .byte 0x31, 0x2c, 0x2e - .byte 0x15, 0x19, 0x1b - .byte 0x10, 0x03, 0x2f - .byte 0x2e, 0x2a, 0x32 - .byte 0x2a, 0x27, 0x1b - .byte 0x36, 0x04, 0x1e - .byte 0x3b, 0x04, 0x21 - .byte 0x07, 0x2f, 0x19 - .byte 0x27, 0x1d, 0x1d - .byte 0x3c, 0x3d, 0x2e - .byte 0x25, 0x08, 0x32 - .byte 0x3b, 0x34, 0x2a - .byte 0x0c, 0x10, 0x13 - .byte 0x25, 0x35, 0x1a - .byte 0x2f, 0x19, 0x28 - .byte 0x17, 0x00, 0x2b - .byte 0x0a, 0x1c, 0x17 - .byte 0x0a, 0x11, 0x1b - .byte 0x35, 0x13, 0x37 - .byte 0x29, 0x1c, 0x28 - .byte 0x0c, 0x31, 0x35 - .byte 0x3c, 0x10, 0x1a - .byte 0x1b, 0x3a, 0x2d - .byte 0x3a, 0x1c, 0x18 - .byte 0x22, 0x10, 0x2d - .byte 0x1c, 0x3c, 0x12 - .byte 0x17, 0x18, 0x2a - .byte 0x0b, 0x2b, 0x2f - .byte 0x2d, 0x04, 0x2e - .byte 0x3c, 0x13, 0x23 - .byte 0x01, 0x1c, 0x2e - .byte 0x14, 0x16, 0x22 - .byte 0x0c, 0x24, 0x13 - .byte 0x35, 0x37, 0x34 - .byte 0x1b, 0x30, 0x1e - .byte 0x3a, 0x1c, 0x20 - .byte 0x06, 0x06, 0x36 - .byte 0x09, 0x15, 0x1a - .byte 0x1b, 0x1a, 0x27 - .byte 0x0f, 0x33, 0x35 - .byte 0x37, 0x06, 0x23 - .byte 0x3a, 0x12, 0x1d - .byte 0x00, 0x16, 0x29 - .byte 0x0e, 0x1d, 0x35 - .byte 0x3f, 0x38, 0x16 - .byte 0x2a, 0x3c, 0x34 - .byte 0x13, 0x32, 0x10 - .byte 0x17, 0x2c, 0x37 - .byte 0x29, 0x2a, 0x1e - .byte 0x35, 0x2f, 0x2d - .byte 0x3c, 0x2a, 0x11 - .byte 0x28, 0x13, 0x21 - .byte 0x19, 0x1e, 0x34 - .byte 0x0c, 0x06, 0x2d - .byte 0x09, 0x04, 0x1c - .byte 0x1d, 0x2f, 0x26 - .byte 0x39, 0x07, 0x16 - .byte 0x14, 0x04, 0x2d - .byte 0x3a, 0x2f, 0x2e - .byte 0x29, 0x15, 0x35 - .byte 0x24, 0x02, 0x36 - .byte 0x3f, 0x02, 0x1a - .byte 0x0f, 0x18, 0x24 - .byte 0x16, 0x1d, 0x19 - .byte 0x14, 0x16, 0x10 - .byte 0x29, 0x1b, 0x13 - .byte 0x15, 0x0e, 0x19 - .byte 0x3a, 0x2e, 0x2b - .byte 0x08, 0x30, 0x15 - .byte 0x35, 0x16, 0x30 - .byte 0x2e, 0x18, 0x35 - .byte 0x3b, 0x0b, 0x1c - .byte 0x3a, 0x18, 0x13 - .byte 0x29, 0x13, 0x1e - .byte 0x20, 0x13, 0x27 - .byte 0x04, 0x1d, 0x34 - .byte 0x00, 0x38, 0x19 - .byte 0x08, 0x39, 0x32 - .byte 0x20, 0x10, 0x26 - .byte 0x08, 0x02, 0x28 - .byte 0x3f, 0x0f, 0x16 - .byte 0x30, 0x1f, 0x19 - .byte 0x20, 0x2d, 0x10 - .byte 0x38, 0x17, 0x1c - .byte 0x18, 0x31, 0x27 - .byte 0x33, 0x38, 0x30 - .byte 0x16, 0x33, 0x23 - .byte 0x00, 0x01, 0x36 - .byte 0x0d, 0x02, 0x23 - .byte 0x39, 0x04, 0x1f - .byte 0x0e, 0x30, 0x24 - .byte 0x06, 0x01, 0x2c - .byte 0x34, 0x33, 0x35 - .byte 0x16, 0x34, 0x2e - .byte 0x32, 0x16, 0x24 - .byte 0x26, 0x39, 0x34 - .byte 0x1f, 0x3c, 0x1d - .byte 0x28, 0x1d, 0x37 - .byte 0x17, 0x15, 0x2b - .byte 0x27, 0x39, 0x30 - .byte 0x0b, 0x1b, 0x18 - .byte 0x35, 0x20, 0x2d - .byte 0x0b, 0x35, 0x1c - .byte 0x03, 0x0e, 0x21 - .byte 0x06, 0x0c, 0x20 - .byte 0x02, 0x18, 0x34 - .byte 0x1e, 0x36, 0x2d - .byte 0x16, 0x0c, 0x19 - .byte 0x25, 0x09, 0x2c - .byte 0x37, 0x05, 0x2e - .byte 0x2e, 0x2b, 0x2c - .byte 0x24, 0x1a, 0x14 - .byte 0x27, 0x04, 0x10 - .byte 0x32, 0x38, 0x33 - .byte 0x37, 0x15, 0x35 - .byte 0x11, 0x3f, 0x1d - .byte 0x23, 0x23, 0x1f - .byte 0x29, 0x3f, 0x1d - .byte 0x1a, 0x3c, 0x2b - .byte 0x1b, 0x2c, 0x2c - .byte 0x38, 0x3b, 0x36 - .byte 0x04, 0x13, 0x33 - .byte 0x2c, 0x14, 0x12 - .byte 0x1a, 0x09, 0x1b - .byte 0x36, 0x11, 0x24 - .byte 0x3a, 0x3f, 0x11 - .byte 0x01, 0x0e, 0x2b - .byte 0x3b, 0x03, 0x2a - .byte 0x08, 0x0d, 0x2b - .byte 0x2b, 0x13, 0x27 - .byte 0x3a, 0x3c, 0x1c - .byte 0x3a, 0x15, 0x2a - .byte 0x24, 0x00, 0x17 - .byte 0x3e, 0x0a, 0x15 - .byte 0x0c, 0x29, 0x2d - .byte 0x1f, 0x15, 0x30 - .byte 0x35, 0x18, 0x19 - .byte 0x3d, 0x37, 0x37 - .byte 0x12, 0x38, 0x1b - .byte 0x3b, 0x02, 0x20 - .byte 0x08, 0x21, 0x19 - .byte 0x2e, 0x36, 0x1d - .byte 0x15, 0x3d, 0x24 - .byte 0x22, 0x0c, 0x27 - .byte 0x36, 0x3f, 0x33 - .byte 0x33, 0x12, 0x11 - .byte 0x1a, 0x19, 0x1f - .byte 0x2b, 0x24, 0x12 - .byte 0x11, 0x2a, 0x18 - .byte 0x25, 0x32, 0x2a - .byte 0x2c, 0x1a, 0x12 - .byte 0x26, 0x06, 0x10 - .byte 0x11, 0x29, 0x33 - .byte 0x2c, 0x09, 0x14 - .byte 0x2b, 0x12, 0x2b - .byte 0x1d, 0x03, 0x24 - .byte 0x00, 0x12, 0x15 - .byte 0x22, 0x3d, 0x26 - .byte 0x15, 0x37, 0x1a - .byte 0x0f, 0x12, 0x37 - .byte 0x24, 0x01, 0x18 - .byte 0x2a, 0x17, 0x13 - .byte 0x14, 0x3b, 0x29 - .byte 0x2a, 0x19, 0x32 - .byte 0x2d, 0x17, 0x17 - .byte 0x0b, 0x2c, 0x33 - .byte 0x07, 0x2d, 0x34 - .byte 0x07, 0x38, 0x1d - .byte 0x1f, 0x36, 0x22 - .byte 0x11, 0x0a, 0x17 - .byte 0x14, 0x11, 0x13 - .byte 0x2a, 0x17, 0x25 - .byte 0x01, 0x3a, 0x1c - .byte 0x26, 0x27, 0x30 - .byte 0x2d, 0x3b, 0x35 - .byte 0x3a, 0x30, 0x34 - .byte 0x06, 0x3a, 0x1c - .byte 0x2d, 0x05, 0x13 - .byte 0x21, 0x32, 0x12 - .byte 0x3e, 0x1e, 0x2c - .byte 0x3a, 0x3f, 0x2d - .byte 0x20, 0x2a, 0x34 - .byte 0x26, 0x03, 0x1a - .byte 0x19, 0x27, 0x2e - .byte 0x31, 0x04, 0x26 - .byte 0x2a, 0x3f, 0x30 - .byte 0x25, 0x23, 0x2a - .byte 0x08, 0x08, 0x35 - .byte 0x2c, 0x30, 0x1e - .byte 0x08, 0x05, 0x18 - .byte 0x06, 0x09, 0x2d - .byte 0x19, 0x00, 0x27 - .byte 0x0d, 0x10, 0x19 - .byte 0x1c, 0x00, 0x13 - .byte 0x3d, 0x0b, 0x24 - .byte 0x2e, 0x1f, 0x16 - .byte 0x3d, 0x18, 0x34 - .byte 0x12, 0x1e, 0x15 - .byte 0x15, 0x39, 0x25 - .byte 0x33, 0x0f, 0x17 - .byte 0x1a, 0x1c, 0x1b - .byte 0x37, 0x29, 0x1b - .byte 0x3b, 0x38, 0x12 - .byte 0x1d, 0x22, 0x34 - .byte 0x26, 0x0a, 0x31 - .byte 0x16, 0x2d, 0x13 - .byte 0x0d, 0x20, 0x27 - .byte 0x24, 0x1d, 0x16 - .byte 0x2e, 0x2b, 0x18 - .byte 0x16, 0x2a, 0x1b - .byte 0x24, 0x17, 0x36 - .byte 0x02, 0x05, 0x2b - .byte 0x37, 0x1a, 0x17 - .byte 0x11, 0x3d, 0x2c - .byte 0x1e, 0x2f, 0x22 - .byte 0x2c, 0x29, 0x1a - .byte 0x2f, 0x04, 0x25 - .byte 0x36, 0x0c, 0x35 - .byte 0x30, 0x3e, 0x12 - .byte 0x11, 0x30, 0x37 - .byte 0x12, 0x21, 0x2e - .byte 0x21, 0x30, 0x17 - .byte 0x2c, 0x3d, 0x24 - .byte 0x11, 0x23, 0x14 - .byte 0x1a, 0x32, 0x17 - .byte 0x39, 0x27, 0x18 - .byte 0x0f, 0x24, 0x19 - .byte 0x00, 0x3d, 0x37 - .byte 0x2c, 0x3c, 0x1c - .byte 0x0b, 0x39, 0x23 - .byte 0x0e, 0x04, 0x1f - .byte 0x1c, 0x31, 0x14 - .byte 0x00, 0x04, 0x15 - .byte 0x26, 0x2a, 0x2a - .byte 0x20, 0x25, 0x2a - .byte 0x0b, 0x3c, 0x33 - .byte 0x11, 0x0b, 0x2e - .byte 0x37, 0x22, 0x2e - .byte 0x0e, 0x22, 0x26 - .byte 0x18, 0x2d, 0x27 - .byte 0x06, 0x0c, 0x1c - .byte 0x26, 0x18, 0x2f - .byte 0x3a, 0x01, 0x2a - .byte 0x2f, 0x31, 0x34 - .byte 0x1f, 0x34, 0x1a - .byte 0x31, 0x05, 0x10 - .byte 0x2e, 0x17, 0x34 - .byte 0x18, 0x22, 0x23 - .byte 0x23, 0x21, 0x32 - .byte 0x07, 0x08, 0x22 - .byte 0x26, 0x1c, 0x22 - .byte 0x31, 0x12, 0x2f - .byte 0x08, 0x1f, 0x10 - .byte 0x27, 0x15, 0x2a - .byte 0x1f, 0x0b, 0x26 - .byte 0x2f, 0x14, 0x35 - .byte 0x24, 0x1f, 0x26 - .byte 0x3b, 0x23, 0x33 - .byte 0x20, 0x3e, 0x2d - .byte 0x17, 0x0c, 0x15 - .byte 0x13, 0x39, 0x1a - .byte 0x30, 0x14, 0x25 - .byte 0x09, 0x07, 0x17 - .byte 0x38, 0x38, 0x1f - .byte 0x29, 0x24, 0x27 - .byte 0x17, 0x27, 0x28 - .byte 0x1b, 0x12, 0x2a - .byte 0x2b, 0x3d, 0x2d - .byte 0x19, 0x34, 0x1c - .byte 0x01, 0x1d, 0x10 - .byte 0x08, 0x39, 0x11 - .byte 0x0e, 0x36, 0x1b - .byte 0x26, 0x13, 0x10 - .byte 0x16, 0x28, 0x1e - .byte 0x3c, 0x28, 0x17 - .byte 0x3e, 0x39, 0x34 - .byte 0x0a, 0x03, 0x2e - .byte 0x37, 0x1a, 0x13 - .byte 0x2b, 0x33, 0x26 - .byte 0x13, 0x2c, 0x21 - .byte 0x25, 0x14, 0x10 - .byte 0x16, 0x0b, 0x35 - .byte 0x1d, 0x35, 0x33 - .byte 0x21, 0x08, 0x33 - .byte 0x28, 0x21, 0x1a - .byte 0x12, 0x0c, 0x1b - .byte 0x36, 0x2a, 0x19 - .byte 0x2c, 0x2b, 0x23 - .byte 0x01, 0x0f, 0x26 - .byte 0x17, 0x0c, 0x18 - .byte 0x09, 0x0f, 0x11 - .byte 0x2b, 0x24, 0x1c - .byte 0x09, 0x09, 0x15 - .byte 0x36, 0x08, 0x13 - .byte 0x20, 0x39, 0x21 - .byte 0x00, 0x3a, 0x1f - .byte 0x2b, 0x36, 0x31 - .byte 0x02, 0x37, 0x13 - .byte 0x04, 0x34, 0x35 - .byte 0x37, 0x3d, 0x1a - .byte 0x17, 0x3d, 0x13 - .byte 0x2b, 0x36, 0x2f - .byte 0x13, 0x1e, 0x13 - .byte 0x3e, 0x11, 0x33 - .byte 0x27, 0x3a, 0x2d - .byte 0x1e, 0x31, 0x1a - .byte 0x03, 0x03, 0x2d - .byte 0x25, 0x37, 0x1f - .byte 0x11, 0x01, 0x22 - .byte 0x1c, 0x12, 0x17 - .byte 0x30, 0x3a, 0x30 - .byte 0x17, 0x1d, 0x29 - .byte 0x0e, 0x13, 0x27 - .byte 0x1a, 0x2e, 0x24 - .byte 0x2d, 0x00, 0x1c - .byte 0x17, 0x28, 0x1d - .byte 0x09, 0x1f, 0x2e - .byte 0x1a, 0x2d, 0x26 - .byte 0x0a, 0x13, 0x32 - .byte 0x3e, 0x00, 0x27 - .byte 0x0b, 0x3b, 0x30 - .byte 0x08, 0x3a, 0x2d - .byte 0x22, 0x12, 0x1e - .byte 0x34, 0x1d, 0x2b - .byte 0x26, 0x22, 0x35 - .byte 0x17, 0x2c, 0x17 - .byte 0x29, 0x13, 0x2d - .byte 0x2d, 0x10, 0x10 - .byte 0x20, 0x31, 0x23 - .byte 0x1e, 0x33, 0x18 - .byte 0x33, 0x06, 0x2d - .byte 0x26, 0x14, 0x27 - .byte 0x22, 0x1d, 0x2a - .byte 0x2d, 0x06, 0x18 - .byte 0x07, 0x09, 0x2e - .byte 0x21, 0x15, 0x2e - .byte 0x21, 0x38, 0x23 - .byte 0x35, 0x0b, 0x34 - .byte 0x24, 0x0b, 0x22 - .byte 0x1e, 0x01, 0x17 - .byte 0x0b, 0x24, 0x11 - .byte 0x17, 0x07, 0x20 - .byte 0x14, 0x25, 0x32 - .byte 0x1a, 0x0e, 0x2f - .byte 0x35, 0x17, 0x1f - .byte 0x0c, 0x08, 0x21 - .byte 0x30, 0x35, 0x1f - .byte 0x0c, 0x0b, 0x20 - .byte 0x04, 0x10, 0x11 - .byte 0x35, 0x11, 0x1e - .byte 0x33, 0x3d, 0x16 - .byte 0x1e, 0x2b, 0x1d - .byte 0x1a, 0x19, 0x10 - .byte 0x04, 0x06, 0x22 - .byte 0x03, 0x3d, 0x24 - .byte 0x2a, 0x0e, 0x35 - .byte 0x03, 0x3e, 0x17 - .byte 0x0b, 0x18, 0x36 - .byte 0x3d, 0x0d, 0x26 - .byte 0x35, 0x12, 0x20 - .byte 0x1f, 0x0d, 0x16 - .byte 0x23, 0x32, 0x1a - .byte 0x00, 0x3d, 0x26 - .byte 0x30, 0x19, 0x36 - .byte 0x12, 0x0e, 0x23 - .byte 0x01, 0x23, 0x28 - .byte 0x3b, 0x31, 0x11 - .byte 0x2d, 0x1c, 0x36 - .byte 0x2a, 0x05, 0x16 - .byte 0x14, 0x0e, 0x30 - .byte 0x3a, 0x37, 0x19 - .byte 0x1f, 0x30, 0x25 - .byte 0x10, 0x26, 0x2f - .byte 0x22, 0x11, 0x1f - .byte 0x2e, 0x2b, 0x1e - .byte 0x16, 0x16, 0x21 - .byte 0x32, 0x18, 0x35 - .byte 0x23, 0x32, 0x1a - .byte 0x3d, 0x0d, 0x19 - .byte 0x39, 0x09, 0x23 - .byte 0x30, 0x2e, 0x24 - .byte 0x1e, 0x0f, 0x24 - .byte 0x09, 0x21, 0x31 - .byte 0x05, 0x03, 0x11 - .byte 0x05, 0x22, 0x2a - .byte 0x03, 0x07, 0x37 - .byte 0x04, 0x08, 0x13 - .byte 0x05, 0x10, 0x34 - .byte 0x37, 0x14, 0x29 - .byte 0x0a, 0x24, 0x32 - .byte 0x34, 0x1e, 0x1b - .byte 0x12, 0x17, 0x2e - .byte 0x01, 0x02, 0x13 - .byte 0x0a, 0x0c, 0x11 - .byte 0x02, 0x14, 0x13 - .byte 0x0d, 0x25, 0x23 - .byte 0x00, 0x07, 0x1a - .byte 0x1c, 0x28, 0x35 - .byte 0x08, 0x0e, 0x2c - .byte 0x1b, 0x3c, 0x15 - .byte 0x1c, 0x19, 0x1d - .byte 0x32, 0x13, 0x1a - .byte 0x1c, 0x00, 0x37 - .byte 0x22, 0x1b, 0x35 - .byte 0x39, 0x3e, 0x14 - .byte 0x32, 0x06, 0x31 - .byte 0x17, 0x05, 0x2b - .byte 0x01, 0x0f, 0x20 - .byte 0x1e, 0x0f, 0x34 - .byte 0x18, 0x03, 0x1f - .byte 0x2b, 0x00, 0x14 - .byte 0x15, 0x3a, 0x30 - .byte 0x25, 0x30, 0x21 - .byte 0x0b, 0x00, 0x37 - .byte 0x24, 0x37, 0x1d - .byte 0x29, 0x21, 0x16 - .byte 0x24, 0x0f, 0x2c - .byte 0x3e, 0x15, 0x36 - .byte 0x3c, 0x2d, 0x23 - .byte 0x3d, 0x3c, 0x17 - .byte 0x1a, 0x1c, 0x13 - .byte 0x0a, 0x29, 0x22 - .byte 0x25, 0x3f, 0x26 - .byte 0x3b, 0x39, 0x2f - .byte 0x1d, 0x08, 0x16 - .byte 0x0b, 0x19, 0x14 - .byte 0x12, 0x01, 0x2c - .byte 0x35, 0x11, 0x2a - .byte 0x02, 0x00, 0x13 - .byte 0x39, 0x2a, 0x35 - .byte 0x07, 0x1a, 0x11 - .byte 0x24, 0x0e, 0x1e - .byte 0x0e, 0x2c, 0x15 - .byte 0x08, 0x31, 0x1b - .byte 0x21, 0x1d, 0x26 - .byte 0x1d, 0x1c, 0x2a - .byte 0x1d, 0x24, 0x13 - .byte 0x01, 0x00, 0x18 - .byte 0x28, 0x2a, 0x37 - .byte 0x15, 0x0f, 0x13 - .byte 0x10, 0x32, 0x36 - .byte 0x22, 0x13, 0x31 - .byte 0x13, 0x05, 0x1e - .byte 0x17, 0x35, 0x35 - .byte 0x3b, 0x0e, 0x24 - .byte 0x35, 0x3a, 0x1d - .byte 0x1b, 0x36, 0x1b - .byte 0x03, 0x1d, 0x24 - .byte 0x0f, 0x16, 0x30 - .byte 0x2d, 0x09, 0x25 - .byte 0x05, 0x21, 0x13 - .byte 0x0a, 0x27, 0x36 - .byte 0x04, 0x0d, 0x1c - .byte 0x06, 0x3e, 0x21 - .byte 0x2a, 0x27, 0x33 - .byte 0x28, 0x0e, 0x15 - .byte 0x0b, 0x17, 0x1d - .byte 0x1d, 0x32, 0x2d - .byte 0x08, 0x3d, 0x29 - .byte 0x21, 0x32, 0x17 - .byte 0x33, 0x31, 0x22 - .byte 0x0e, 0x03, 0x21 - .byte 0x0d, 0x0b, 0x16 - .byte 0x3e, 0x2a, 0x2e - .byte 0x19, 0x36, 0x2a - .byte 0x0d, 0x00, 0x14 - .byte 0x22, 0x07, 0x36 - .byte 0x0a, 0x09, 0x15 - .byte 0x14, 0x10, 0x22 - .byte 0x07, 0x16, 0x2c - .byte 0x36, 0x13, 0x15 - .byte 0x09, 0x2f, 0x1b - .byte 0x20, 0x3b, 0x2e - .byte 0x3a, 0x3a, 0x16 - .byte 0x0d, 0x15, 0x2a - .byte 0x39, 0x13, 0x2b - .byte 0x0b, 0x01, 0x2a - .byte 0x13, 0x17, 0x1e - .byte 0x08, 0x17, 0x1e - .byte 0x0c, 0x0f, 0x34 - .byte 0x1f, 0x31, 0x12 - .byte 0x07, 0x3a, 0x1d - .byte 0x35, 0x1e, 0x12 - .byte 0x24, 0x2c, 0x15 - .byte 0x0e, 0x21, 0x19 - .byte 0x34, 0x3b, 0x33 - .byte 0x19, 0x0f, 0x28 - .byte 0x10, 0x2f, 0x2e - .byte 0x23, 0x27, 0x31 - .byte 0x39, 0x2e, 0x18 - .byte 0x3c, 0x3f, 0x24 - .byte 0x07, 0x23, 0x30 - .byte 0x28, 0x13, 0x35 - .byte 0x13, 0x0a, 0x10 - .byte 0x35, 0x19, 0x33 - .byte 0x23, 0x28, 0x29 - .byte 0x13, 0x2f, 0x1a - .byte 0x3a, 0x19, 0x14 - .byte 0x37, 0x36, 0x26 - .byte 0x20, 0x3b, 0x15 - .byte 0x37, 0x39, 0x10 - .byte 0x3c, 0x21, 0x34 - .byte 0x1c, 0x38, 0x30 - .byte 0x15, 0x07, 0x26 - .byte 0x27, 0x21, 0x19 - .byte 0x18, 0x11, 0x23 - .byte 0x30, 0x28, 0x37 - .byte 0x32, 0x2d, 0x1f - .byte 0x2c, 0x3f, 0x30 - .byte 0x1d, 0x2f, 0x26 - .byte 0x01, 0x11, 0x1c - .byte 0x3b, 0x0f, 0x12 - .byte 0x2a, 0x17, 0x27 - .byte 0x05, 0x00, 0x1b - .byte 0x25, 0x1c, 0x32 - .byte 0x04, 0x22, 0x2d - .byte 0x10, 0x0f, 0x25 - .byte 0x0d, 0x39, 0x30 - .byte 0x0b, 0x2e, 0x27 - .byte 0x2d, 0x34, 0x15 - .byte 0x3e, 0x30, 0x36 - .byte 0x16, 0x26, 0x2a - .byte 0x05, 0x3f, 0x2b - .byte 0x20, 0x3b, 0x2e - .byte 0x3b, 0x1c, 0x2f - .byte 0x01, 0x18, 0x16 - .byte 0x16, 0x3d, 0x10 - .byte 0x0a, 0x1f, 0x18 - .byte 0x17, 0x0f, 0x22 - .byte 0x06, 0x13, 0x11 - .byte 0x38, 0x21, 0x17 - .byte 0x17, 0x0a, 0x37 - .byte 0x1c, 0x19, 0x30 - .byte 0x16, 0x38, 0x31 - .byte 0x30, 0x10, 0x36 - .byte 0x31, 0x2f, 0x26 - .byte 0x3c, 0x1b, 0x23 - .byte 0x33, 0x2f, 0x19 - .byte 0x16, 0x35, 0x25 - .byte 0x3a, 0x18, 0x1f - .byte 0x37, 0x01, 0x1e - .byte 0x0d, 0x18, 0x12 - .byte 0x1f, 0x1c, 0x1b - .byte 0x07, 0x34, 0x2d - .byte 0x0b, 0x3f, 0x33 - .byte 0x1e, 0x34, 0x1d - .byte 0x2c, 0x13, 0x2c - .byte 0x20, 0x20, 0x13 - .byte 0x20, 0x0f, 0x31 - .byte 0x08, 0x0f, 0x24 - .byte 0x18, 0x3d, 0x1c - .byte 0x36, 0x34, 0x27 - .byte 0x33, 0x2a, 0x25 - .byte 0x2d, 0x30, 0x26 - .byte 0x3d, 0x37, 0x26 - .byte 0x25, 0x11, 0x11 - .byte 0x03, 0x05, 0x18 - .byte 0x10, 0x04, 0x29 - .byte 0x07, 0x2e, 0x36 - .byte 0x2a, 0x29, 0x15 - .byte 0x3a, 0x0e, 0x33 - .byte 0x2a, 0x06, 0x29 - .byte 0x3d, 0x01, 0x29 - .byte 0x27, 0x0e, 0x16 - .byte 0x1d, 0x28, 0x1b - .byte 0x10, 0x33, 0x2b - .byte 0x0c, 0x14, 0x1d - .byte 0x15, 0x3f, 0x25 - .byte 0x37, 0x23, 0x1e - .byte 0x04, 0x2c, 0x1c - .byte 0x15, 0x34, 0x2a - .byte 0x09, 0x2f, 0x15 - .byte 0x02, 0x3f, 0x14 - .byte 0x19, 0x2c, 0x33 - .byte 0x39, 0x32, 0x20 - .byte 0x2a, 0x18, 0x32 - .byte 0x17, 0x23, 0x21 - .byte 0x0b, 0x2d, 0x25 - .byte 0x24, 0x3a, 0x2d - .byte 0x31, 0x3f, 0x34 - .byte 0x18, 0x19, 0x24 - .byte 0x1e, 0x15, 0x1a - .byte 0x17, 0x33, 0x2b - .byte 0x23, 0x09, 0x26 - .byte 0x1b, 0x0d, 0x15 - .byte 0x36, 0x26, 0x28 - .byte 0x3a, 0x1c, 0x14 - .byte 0x0c, 0x3e, 0x10 - .byte 0x18, 0x06, 0x35 - .byte 0x37, 0x26, 0x36 - .byte 0x21, 0x26, 0x17 - .byte 0x3d, 0x1c, 0x2c - .byte 0x16, 0x25, 0x1d - .byte 0x1e, 0x0b, 0x1e - .byte 0x1d, 0x0d, 0x32 - .byte 0x08, 0x1f, 0x1b - .byte 0x12, 0x1c, 0x12 - .byte 0x20, 0x2a, 0x28 - .byte 0x06, 0x3b, 0x35 - .byte 0x39, 0x0e, 0x1e - .byte 0x31, 0x30, 0x28 - .byte 0x02, 0x21, 0x14 - .byte 0x06, 0x1e, 0x29 - .byte 0x16, 0x09, 0x1c - .byte 0x27, 0x32, 0x2d - .byte 0x39, 0x03, 0x27 - .byte 0x29, 0x09, 0x1e - .byte 0x1b, 0x11, 0x1c - .byte 0x28, 0x3a, 0x2c - .byte 0x03, 0x03, 0x18 - .byte 0x23, 0x09, 0x2f - .byte 0x30, 0x17, 0x23 - .byte 0x0f, 0x25, 0x33 - .byte 0x06, 0x24, 0x37 - .byte 0x22, 0x09, 0x33 - .byte 0x2c, 0x09, 0x2a - .byte 0x0c, 0x12, 0x2a - .byte 0x28, 0x20, 0x10 - .byte 0x15, 0x29, 0x33 - .byte 0x0f, 0x1a, 0x13 - .byte 0x13, 0x18, 0x36 - .byte 0x2e, 0x16, 0x13 - .byte 0x3c, 0x1a, 0x15 - .byte 0x3a, 0x11, 0x32 - .byte 0x02, 0x0a, 0x2c - .byte 0x19, 0x39, 0x11 - .byte 0x31, 0x3e, 0x1d - .byte 0x32, 0x14, 0x32 - .byte 0x12, 0x2e, 0x34 - .byte 0x3e, 0x36, 0x23 - .byte 0x37, 0x3e, 0x15 - .byte 0x15, 0x35, 0x34 - .byte 0x01, 0x3a, 0x2c - .byte 0x26, 0x25, 0x22 - .byte 0x01, 0x2b, 0x37 - .byte 0x1c, 0x3d, 0x33 - .byte 0x3e, 0x10, 0x1c - .byte 0x26, 0x33, 0x19 - .byte 0x05, 0x19, 0x17 - .byte 0x12, 0x38, 0x1c - .byte 0x15, 0x3c, 0x32 - .byte 0x3f, 0x0f, 0x37 - .byte 0x02, 0x39, 0x32 - .byte 0x13, 0x00, 0x1d - .byte 0x1d, 0x2c, 0x10 - .byte 0x39, 0x13, 0x31 - .byte 0x0f, 0x37, 0x19 - .byte 0x09, 0x0d, 0x2a - .byte 0x20, 0x2f, 0x32 - .byte 0x3b, 0x34, 0x22 - .byte 0x26, 0x14, 0x10 - .byte 0x24, 0x3d, 0x22 - .byte 0x0b, 0x31, 0x23 - .byte 0x2f, 0x2d, 0x2a - .byte 0x30, 0x04, 0x35 - .byte 0x19, 0x20, 0x2a - .byte 0x16, 0x36, 0x37 - .byte 0x14, 0x28, 0x37 - .byte 0x11, 0x0b, 0x27 - .byte 0x1d, 0x06, 0x29 - .byte 0x35, 0x16, 0x2e - .byte 0x24, 0x2e, 0x29 - .byte 0x36, 0x14, 0x2a - .byte 0x21, 0x0c, 0x1f - .byte 0x3f, 0x39, 0x19 - .byte 0x27, 0x10, 0x2a - .byte 0x1e, 0x12, 0x34 - .byte 0x10, 0x24, 0x34 - .byte 0x1d, 0x13, 0x1d - .byte 0x17, 0x16, 0x37 - .byte 0x27, 0x1b, 0x27 - .byte 0x07, 0x24, 0x21 - .byte 0x37, 0x21, 0x11 - .byte 0x37, 0x28, 0x24 - .byte 0x19, 0x02, 0x1c - .byte 0x14, 0x12, 0x1d - .byte 0x1b, 0x24, 0x2e - .byte 0x2e, 0x3a, 0x15 - .byte 0x37, 0x34, 0x21 - .byte 0x33, 0x2d, 0x29 - .byte 0x2f, 0x1e, 0x34 - .byte 0x29, 0x3c, 0x12 - .byte 0x05, 0x15, 0x20 - .byte 0x05, 0x3e, 0x19 - .byte 0x18, 0x0b, 0x30 - .byte 0x2f, 0x02, 0x27 - .byte 0x14, 0x1c, 0x34 - .byte 0x12, 0x20, 0x30 - .byte 0x2b, 0x22, 0x1b - .byte 0x06, 0x31, 0x28 - .byte 0x15, 0x2d, 0x12 - .byte 0x01, 0x0e, 0x13 - .byte 0x13, 0x0c, 0x28 - .byte 0x07, 0x2a, 0x14 - .byte 0x1d, 0x36, 0x14 - .byte 0x15, 0x2b, 0x26 - .byte 0x03, 0x25, 0x15 - .byte 0x3e, 0x3b, 0x20 - .byte 0x35, 0x0c, 0x25 - .byte 0x2b, 0x16, 0x35 - .byte 0x1e, 0x31, 0x2c - .byte 0x06, 0x03, 0x29 - .byte 0x24, 0x07, 0x1f - .byte 0x32, 0x2f, 0x19 - .byte 0x25, 0x21, 0x31 - .byte 0x22, 0x26, 0x1d - .byte 0x00, 0x1b, 0x18 - .byte 0x2a, 0x24, 0x31 - .byte 0x20, 0x06, 0x2f - .byte 0x1e, 0x32, 0x26 - .byte 0x32, 0x39, 0x12 - .byte 0x20, 0x01, 0x19 - .byte 0x0f, 0x15, 0x15 - .byte 0x27, 0x10, 0x2e - .byte 0x09, 0x25, 0x19 - .byte 0x29, 0x37, 0x30 - .byte 0x13, 0x1c, 0x1d - .byte 0x29, 0x2d, 0x26 - .byte 0x02, 0x1a, 0x16 - .byte 0x1d, 0x2b, 0x1c - .byte 0x18, 0x04, 0x34 - .byte 0x28, 0x2a, 0x21 - .byte 0x15, 0x1b, 0x2e - .byte 0x16, 0x01, 0x10 - .byte 0x05, 0x09, 0x14 - .byte 0x22, 0x03, 0x22 - .byte 0x02, 0x1b, 0x34 - .byte 0x29, 0x2a, 0x23 - .byte 0x26, 0x36, 0x13 - .byte 0x23, 0x3d, 0x1a - .byte 0x1d, 0x10, 0x24 - .byte 0x25, 0x2b, 0x37 - .byte 0x19, 0x24, 0x26 - .byte 0x28, 0x13, 0x16 - .byte 0x17, 0x14, 0x19 - .byte 0x0b, 0x2f, 0x25 - .byte 0x37, 0x34, 0x37 - .byte 0x39, 0x21, 0x1b - .byte 0x0f, 0x3d, 0x2d - .byte 0x0d, 0x10, 0x20 - .byte 0x05, 0x0b, 0x2d - .byte 0x01, 0x12, 0x24 - .byte 0x18, 0x3d, 0x32 - .byte 0x09, 0x21, 0x26 - .byte 0x1a, 0x0e, 0x1f - .byte 0x30, 0x06, 0x1f - .byte 0x0b, 0x3c, 0x29 - .byte 0x07, 0x3e, 0x27 - .byte 0x13, 0x1e, 0x1a - .byte 0x13, 0x07, 0x23 - .byte 0x10, 0x34, 0x1e - .byte 0x32, 0x17, 0x23 - .byte 0x35, 0x16, 0x31 - .byte 0x32, 0x2e, 0x1b - .byte 0x28, 0x0e, 0x22 - .byte 0x14, 0x3a, 0x23 - .byte 0x22, 0x03, 0x29 - .byte 0x2a, 0x10, 0x20 - .byte 0x3e, 0x3c, 0x27 - .byte 0x16, 0x20, 0x12 - .byte 0x3f, 0x24, 0x31 - .byte 0x0d, 0x2e, 0x32 - .byte 0x2f, 0x17, 0x2d - .byte 0x36, 0x3b, 0x17 - .byte 0x24, 0x23, 0x18 - .byte 0x37, 0x1d, 0x13 - .byte 0x17, 0x3a, 0x1a - .byte 0x0a, 0x3d, 0x1e - .byte 0x05, 0x12, 0x16 - .byte 0x33, 0x32, 0x25 - .byte 0x1d, 0x1f, 0x29 - .byte 0x34, 0x2c, 0x26 - .byte 0x20, 0x29, 0x35 - .byte 0x0e, 0x32, 0x17 - .byte 0x01, 0x39, 0x2d - .byte 0x27, 0x24, 0x23 - .byte 0x28, 0x3f, 0x18 - .byte 0x39, 0x38, 0x25 - .byte 0x23, 0x11, 0x11 - .byte 0x19, 0x2c, 0x29 - .byte 0x30, 0x08, 0x28 - .byte 0x25, 0x27, 0x1d - .byte 0x17, 0x25, 0x21 - .byte 0x09, 0x3d, 0x16 - .byte 0x1b, 0x0f, 0x2c - .byte 0x1b, 0x12, 0x22 - .byte 0x28, 0x3e, 0x26 - .byte 0x34, 0x10, 0x1b - .byte 0x02, 0x34, 0x15 - .byte 0x1a, 0x29, 0x19 - .byte 0x29, 0x11, 0x31 - .byte 0x12, 0x27, 0x17 - .byte 0x27, 0x27, 0x2f - .byte 0x34, 0x27, 0x24 - .byte 0x03, 0x19, 0x36 - .byte 0x17, 0x1d, 0x33 - .byte 0x19, 0x25, 0x1a - .byte 0x2b, 0x39, 0x13 - .byte 0x3b, 0x33, 0x1d - .byte 0x27, 0x31, 0x34 - .byte 0x28, 0x33, 0x37 - .byte 0x09, 0x30, 0x1b - .byte 0x03, 0x3a, 0x27 - .byte 0x19, 0x11, 0x1f - .byte 0x0b, 0x1a, 0x34 - .byte 0x3d, 0x2a, 0x15 - .byte 0x04, 0x24, 0x36 - .byte 0x30, 0x23, 0x30 - .byte 0x0f, 0x22, 0x1b - .byte 0x3d, 0x3d, 0x24 - .byte 0x29, 0x1d, 0x12 - .byte 0x16, 0x19, 0x2e - .byte 0x03, 0x12, 0x17 - .byte 0x18, 0x25, 0x33 - .byte 0x2f, 0x23, 0x1a - .byte 0x1a, 0x35, 0x27 - .byte 0x21, 0x26, 0x19 - .byte 0x1b, 0x30, 0x18 - .byte 0x2b, 0x22, 0x2d - .byte 0x2c, 0x1a, 0x34 - .byte 0x3e, 0x12, 0x19 - .byte 0x28, 0x27, 0x15 - .byte 0x1b, 0x11, 0x12 - .byte 0x17, 0x15, 0x10 - .byte 0x34, 0x37, 0x25 - .byte 0x12, 0x3f, 0x15 - .byte 0x31, 0x0d, 0x37 - .byte 0x3e, 0x2a, 0x2d - .byte 0x0f, 0x24, 0x24 - .byte 0x3c, 0x3f, 0x1f - .byte 0x1d, 0x34, 0x17 - .byte 0x1a, 0x23, 0x1f - .byte 0x37, 0x0f, 0x10 - .byte 0x32, 0x34, 0x35 - .byte 0x19, 0x05, 0x22 - .byte 0x33, 0x16, 0x34 - .byte 0x1e, 0x14, 0x1e - .byte 0x08, 0x13, 0x29 - .byte 0x3a, 0x37, 0x30 - .byte 0x1d, 0x36, 0x15 - .byte 0x29, 0x2e, 0x1d - .byte 0x32, 0x2e, 0x23 - .byte 0x35, 0x17, 0x1c - .byte 0x36, 0x1d, 0x13 - .byte 0x23, 0x34, 0x34 - .byte 0x24, 0x1a, 0x37 - .byte 0x2f, 0x26, 0x2e - .byte 0x1e, 0x17, 0x1a - .byte 0x1f, 0x15, 0x1f - .byte 0x2b, 0x1f, 0x19 - .byte 0x0a, 0x33, 0x1a - .byte 0x35, 0x31, 0x24 - .byte 0x2d, 0x17, 0x2c - .byte 0x0c, 0x21, 0x36 - .byte 0x2c, 0x35, 0x35 - .byte 0x1b, 0x03, 0x27 - .byte 0x01, 0x0d, 0x1d - .byte 0x1c, 0x0e, 0x11 - .byte 0x11, 0x2b, 0x10 - .byte 0x25, 0x3b, 0x20 - .byte 0x1f, 0x17, 0x19 - .byte 0x20, 0x08, 0x36 - .byte 0x13, 0x38, 0x19 - .byte 0x1b, 0x2b, 0x24 - .byte 0x0b, 0x1f, 0x29 - .byte 0x27, 0x15, 0x2c - .byte 0x37, 0x39, 0x10 - .byte 0x3a, 0x15, 0x2e - .byte 0x2f, 0x11, 0x36 - .byte 0x24, 0x04, 0x20 - .byte 0x3b, 0x2a, 0x35 - .byte 0x27, 0x35, 0x34 - .byte 0x0d, 0x1b, 0x20 - .byte 0x10, 0x22, 0x37 - .byte 0x1f, 0x38, 0x27 - .byte 0x31, 0x0f, 0x28 - .byte 0x28, 0x25, 0x15 - .byte 0x00, 0x1d, 0x25 - .byte 0x31, 0x28, 0x28 - .byte 0x0b, 0x3a, 0x1d - .byte 0x2d, 0x13, 0x1b - .byte 0x03, 0x37, 0x2e - .byte 0x1d, 0x28, 0x19 - .byte 0x08, 0x2d, 0x22 - .byte 0x27, 0x39, 0x32 - .byte 0x3f, 0x2f, 0x1d - .byte 0x33, 0x34, 0x28 - .byte 0x18, 0x08, 0x31 - .byte 0x23, 0x1f, 0x13 - .byte 0x0d, 0x2c, 0x23 - .byte 0x3a, 0x2d, 0x1a - .byte 0x02, 0x25, 0x13 - .byte 0x20, 0x36, 0x34 - .byte 0x12, 0x2b, 0x2d - .byte 0x35, 0x35, 0x34 - .byte 0x23, 0x20, 0x21 - .byte 0x3a, 0x19, 0x1b - .byte 0x1f, 0x2b, 0x19 - .byte 0x35, 0x0e, 0x19 - .byte 0x26, 0x24, 0x37 - .byte 0x18, 0x08, 0x10 - .byte 0x0c, 0x16, 0x2d - .byte 0x1f, 0x34, 0x21 - .byte 0x05, 0x38, 0x19 - .byte 0x14, 0x21, 0x24 - .byte 0x11, 0x31, 0x14 - .byte 0x3e, 0x38, 0x29 - .byte 0x3f, 0x08, 0x25 - .byte 0x2a, 0x1f, 0x25 - .byte 0x25, 0x06, 0x28 - .byte 0x0b, 0x1e, 0x14 - .byte 0x1a, 0x38, 0x22 - .byte 0x24, 0x18, 0x29 - .byte 0x1a, 0x11, 0x20 - .byte 0x3b, 0x3a, 0x1e - .byte 0x1c, 0x26, 0x1a - .byte 0x05, 0x32, 0x19 - .byte 0x39, 0x2a, 0x31 - .byte 0x09, 0x07, 0x25 - .byte 0x05, 0x3e, 0x16 - .byte 0x34, 0x26, 0x14 - .byte 0x1b, 0x32, 0x26 - .byte 0x05, 0x08, 0x37 - .byte 0x0f, 0x03, 0x20 - .byte 0x2a, 0x39, 0x31 - .byte 0x08, 0x01, 0x1e - .byte 0x1d, 0x23, 0x31 - .byte 0x28, 0x1b, 0x28 - .byte 0x1e, 0x37, 0x14 - .byte 0x13, 0x0e, 0x28 - .byte 0x2a, 0x3b, 0x37 - .byte 0x2f, 0x1c, 0x28 - .byte 0x30, 0x30, 0x1a - .byte 0x36, 0x1f, 0x16 - .byte 0x3e, 0x0d, 0x15 - .byte 0x2e, 0x16, 0x18 - .byte 0x15, 0x37, 0x20 - .byte 0x2a, 0x33, 0x30 - .byte 0x2b, 0x0e, 0x25 - .byte 0x18, 0x20, 0x16 - .byte 0x02, 0x19, 0x25 - .byte 0x0a, 0x2e, 0x30 - .byte 0x16, 0x03, 0x11 - .byte 0x04, 0x27, 0x25 - .byte 0x1b, 0x1c, 0x21 - .byte 0x29, 0x04, 0x27 - .byte 0x3d, 0x20, 0x1e - .byte 0x28, 0x33, 0x31 - .byte 0x1e, 0x39, 0x10 - .byte 0x31, 0x29, 0x1e - .byte 0x06, 0x25, 0x28 - .byte 0x19, 0x3b, 0x12 - .byte 0x0b, 0x1b, 0x1c - .byte 0x3e, 0x37, 0x20 - .byte 0x0a, 0x37, 0x33 - .byte 0x02, 0x2c, 0x25 - .byte 0x15, 0x18, 0x14 - .byte 0x3b, 0x20, 0x1c - .byte 0x22, 0x3b, 0x1c - .byte 0x24, 0x34, 0x35 - .byte 0x0f, 0x2f, 0x31 - .byte 0x3b, 0x17, 0x35 - .byte 0x30, 0x39, 0x37 - .byte 0x0d, 0x15, 0x11 - .byte 0x10, 0x03, 0x1e - .byte 0x1a, 0x39, 0x33 - .byte 0x2f, 0x2e, 0x28 - .byte 0x1c, 0x28, 0x36 - .byte 0x28, 0x18, 0x1f - .byte 0x15, 0x01, 0x30 - .byte 0x3e, 0x32, 0x28 - .byte 0x34, 0x2f, 0x23 - .byte 0x07, 0x0c, 0x36 - .byte 0x28, 0x2c, 0x34 - .byte 0x2a, 0x0c, 0x1f - .byte 0x3f, 0x20, 0x13 - .byte 0x2b, 0x17, 0x27 - .byte 0x28, 0x29, 0x2a - .byte 0x3c, 0x13, 0x36 - .byte 0x26, 0x2d, 0x2a - .byte 0x0a, 0x06, 0x1e - .byte 0x20, 0x04, 0x1a - .byte 0x02, 0x07, 0x35 - .byte 0x0e, 0x18, 0x30 - .byte 0x00, 0x34, 0x34 - .byte 0x2f, 0x14, 0x37 - .byte 0x21, 0x30, 0x1f - .byte 0x15, 0x37, 0x1b - .byte 0x3a, 0x0b, 0x32 - .byte 0x22, 0x22, 0x21 - .byte 0x1b, 0x35, 0x23 - .byte 0x0d, 0x03, 0x1c - .byte 0x23, 0x3b, 0x13 - .byte 0x0e, 0x1d, 0x1f - .byte 0x1d, 0x3f, 0x2e - .byte 0x39, 0x27, 0x2e - .byte 0x0f, 0x38, 0x20 - .byte 0x31, 0x3c, 0x35 - .byte 0x0b, 0x0f, 0x2e - .byte 0x06, 0x06, 0x28 - .byte 0x25, 0x39, 0x23 - .byte 0x0a, 0x32, 0x15 - .byte 0x0f, 0x1d, 0x25 - .byte 0x0c, 0x0d, 0x34 - .byte 0x12, 0x2e, 0x21 - .byte 0x36, 0x18, 0x1f - .byte 0x1f, 0x34, 0x1b - .byte 0x05, 0x3a, 0x36 - .byte 0x2b, 0x01, 0x17 - .byte 0x0e, 0x16, 0x2b - .byte 0x0e, 0x0b, 0x26 - .byte 0x0d, 0x2d, 0x10 - .byte 0x21, 0x11, 0x27 - .byte 0x3d, 0x13, 0x32 - .byte 0x15, 0x25, 0x2a - .byte 0x1b, 0x2d, 0x35 - .byte 0x2c, 0x2b, 0x26 - .byte 0x26, 0x1f, 0x20 - .byte 0x22, 0x2b, 0x12 - .byte 0x3f, 0x3d, 0x27 - .byte 0x30, 0x0a, 0x36 - .byte 0x35, 0x1f, 0x17 - .byte 0x21, 0x08, 0x29 - .byte 0x1d, 0x20, 0x33 - .byte 0x34, 0x11, 0x16 - .byte 0x05, 0x38, 0x2d diff --git a/ld_script.txt b/ld_script.txt index dbff827d6..aeb11a271 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -479,7 +479,7 @@ SECTIONS { src/mail.o(.rodata); src/heal_location.o(.rodata); src/region_map.o(.rodata); - data/image_processing_effects.o(.rodata); + src/image_processing_effects.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/fldeff_flash.o(.rodata); src/field_specials.o(.rodata); diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c index c9ca4b16b..fdd62f7a5 100644 --- a/src/image_processing_effects.c +++ b/src/image_processing_effects.c @@ -49,7 +49,3208 @@ static u16 QuantizePixel_GrayscaleSmall(u16*); static u16 QuantizePixel_Grayscale(u16*); static u16 QuantizePixel_PrimaryColors(u16*); -extern const u8 gPointillismPoints[][3]; +static const u8 sPointillismPoints[][3] = { + {0x00, 0x1d, 0x1c}, + {0x0e, 0x1e, 0x1b}, + {0x00, 0x01, 0x32}, + {0x2e, 0x1e, 0x37}, + {0x0a, 0x22, 0x1f}, + {0x05, 0x26, 0x2e}, + {0x12, 0x17, 0x1e}, + {0x1a, 0x03, 0x11}, + {0x05, 0x11, 0x18}, + {0x05, 0x27, 0x2f}, + {0x1a, 0x3f, 0x12}, + {0x22, 0x3f, 0x16}, + {0x2b, 0x2f, 0x2e}, + {0x11, 0x02, 0x2d}, + {0x23, 0x0d, 0x28}, + {0x17, 0x0c, 0x19}, + {0x2f, 0x0e, 0x13}, + {0x30, 0x18, 0x20}, + {0x2d, 0x28, 0x22}, + {0x01, 0x03, 0x19}, + {0x0e, 0x2a, 0x2b}, + {0x22, 0x15, 0x25}, + {0x22, 0x0a, 0x26}, + {0x39, 0x06, 0x23}, + {0x16, 0x07, 0x2f}, + {0x22, 0x3a, 0x1b}, + {0x3b, 0x36, 0x35}, + {0x0a, 0x2b, 0x24}, + {0x36, 0x09, 0x12}, + {0x1c, 0x2f, 0x23}, + {0x2e, 0x38, 0x2c}, + {0x05, 0x2a, 0x20}, + {0x07, 0x14, 0x32}, + {0x31, 0x08, 0x17}, + {0x1a, 0x24, 0x2d}, + {0x22, 0x0a, 0x16}, + {0x1b, 0x26, 0x2b}, + {0x29, 0x16, 0x11}, + {0x35, 0x08, 0x14}, + {0x1e, 0x08, 0x14}, + {0x05, 0x31, 0x14}, + {0x38, 0x31, 0x17}, + {0x34, 0x33, 0x12}, + {0x11, 0x09, 0x1f}, + {0x28, 0x3d, 0x32}, + {0x35, 0x03, 0x1e}, + {0x3c, 0x2b, 0x2e}, + {0x10, 0x01, 0x17}, + {0x03, 0x3e, 0x22}, + {0x17, 0x18, 0x34}, + {0x08, 0x29, 0x19}, + {0x03, 0x24, 0x28}, + {0x3d, 0x33, 0x2f}, + {0x31, 0x24, 0x19}, + {0x1b, 0x18, 0x26}, + {0x07, 0x0d, 0x25}, + {0x2d, 0x3f, 0x12}, + {0x2f, 0x15, 0x25}, + {0x29, 0x0f, 0x12}, + {0x07, 0x2c, 0x12}, + {0x2c, 0x0b, 0x26}, + {0x12, 0x1a, 0x16}, + {0x00, 0x0b, 0x2f}, + {0x16, 0x35, 0x24}, + {0x1f, 0x1c, 0x22}, + {0x29, 0x33, 0x27}, + {0x3b, 0x30, 0x17}, + {0x11, 0x06, 0x35}, + {0x3e, 0x31, 0x2f}, + {0x11, 0x3a, 0x25}, + {0x2a, 0x02, 0x19}, + {0x33, 0x18, 0x35}, + {0x2a, 0x20, 0x21}, + {0x2e, 0x32, 0x1b}, + {0x3b, 0x1f, 0x23}, + {0x39, 0x29, 0x2a}, + {0x2e, 0x31, 0x29}, + {0x2a, 0x0e, 0x2d}, + {0x2d, 0x00, 0x1f}, + {0x38, 0x28, 0x1b}, + {0x14, 0x3b, 0x2b}, + {0x2e, 0x04, 0x26}, + {0x36, 0x30, 0x11}, + {0x3b, 0x21, 0x2d}, + {0x2b, 0x3f, 0x1b}, + {0x20, 0x13, 0x31}, + {0x33, 0x0c, 0x30}, + {0x22, 0x2b, 0x2b}, + {0x16, 0x02, 0x1e}, + {0x1c, 0x12, 0x1c}, + {0x0f, 0x3c, 0x36}, + {0x38, 0x10, 0x2d}, + {0x18, 0x2f, 0x2d}, + {0x35, 0x3b, 0x11}, + {0x37, 0x31, 0x13}, + {0x13, 0x3d, 0x2f}, + {0x1e, 0x2c, 0x33}, + {0x2e, 0x37, 0x12}, + {0x3c, 0x1f, 0x33}, + {0x32, 0x2a, 0x27}, + {0x0d, 0x3b, 0x1c}, + {0x35, 0x2a, 0x27}, + {0x09, 0x3d, 0x27}, + {0x12, 0x0b, 0x18}, + {0x0c, 0x15, 0x1d}, + {0x20, 0x01, 0x1c}, + {0x08, 0x3b, 0x1c}, + {0x12, 0x37, 0x33}, + {0x15, 0x03, 0x2c}, + {0x2a, 0x3b, 0x31}, + {0x0f, 0x04, 0x35}, + {0x08, 0x17, 0x33}, + {0x38, 0x3d, 0x2a}, + {0x2f, 0x35, 0x16}, + {0x10, 0x35, 0x16}, + {0x23, 0x13, 0x2c}, + {0x2f, 0x06, 0x20}, + {0x27, 0x3a, 0x24}, + {0x00, 0x1c, 0x2a}, + {0x03, 0x39, 0x1d}, + {0x28, 0x07, 0x1a}, + {0x20, 0x0a, 0x37}, + {0x07, 0x35, 0x2d}, + {0x15, 0x2f, 0x2c}, + {0x10, 0x2c, 0x23}, + {0x3f, 0x29, 0x14}, + {0x2a, 0x21, 0x36}, + {0x34, 0x1a, 0x2c}, + {0x1c, 0x3d, 0x33}, + {0x38, 0x2b, 0x22}, + {0x35, 0x28, 0x1f}, + {0x3d, 0x0f, 0x1c}, + {0x1e, 0x3e, 0x1b}, + {0x0c, 0x3e, 0x1f}, + {0x2b, 0x31, 0x2c}, + {0x32, 0x39, 0x11}, + {0x05, 0x09, 0x11}, + {0x04, 0x38, 0x2a}, + {0x32, 0x00, 0x16}, + {0x13, 0x0b, 0x31}, + {0x34, 0x2a, 0x13}, + {0x2c, 0x22, 0x21}, + {0x39, 0x2f, 0x15}, + {0x37, 0x28, 0x1e}, + {0x07, 0x3b, 0x2d}, + {0x11, 0x03, 0x28}, + {0x2d, 0x30, 0x1e}, + {0x31, 0x11, 0x11}, + {0x23, 0x01, 0x1e}, + {0x3d, 0x31, 0x34}, + {0x1c, 0x02, 0x34}, + {0x21, 0x0e, 0x25}, + {0x3d, 0x07, 0x17}, + {0x33, 0x15, 0x10}, + {0x29, 0x32, 0x32}, + {0x18, 0x1f, 0x30}, + {0x2d, 0x3b, 0x30}, + {0x27, 0x3e, 0x16}, + {0x31, 0x15, 0x12}, + {0x30, 0x25, 0x17}, + {0x33, 0x06, 0x34}, + {0x00, 0x29, 0x18}, + {0x3c, 0x03, 0x12}, + {0x2c, 0x0c, 0x11}, + {0x09, 0x30, 0x30}, + {0x10, 0x0e, 0x11}, + {0x27, 0x16, 0x1b}, + {0x0c, 0x3b, 0x2e}, + {0x2b, 0x33, 0x1e}, + {0x13, 0x2d, 0x2d}, + {0x11, 0x24, 0x29}, + {0x34, 0x3e, 0x2b}, + {0x24, 0x1e, 0x21}, + {0x27, 0x1a, 0x2d}, + {0x04, 0x39, 0x16}, + {0x3e, 0x33, 0x26}, + {0x1b, 0x2e, 0x25}, + {0x0c, 0x06, 0x19}, + {0x25, 0x19, 0x18}, + {0x1d, 0x33, 0x33}, + {0x1d, 0x28, 0x2d}, + {0x1c, 0x10, 0x2a}, + {0x1f, 0x35, 0x1e}, + {0x34, 0x02, 0x10}, + {0x2b, 0x3a, 0x14}, + {0x0d, 0x0b, 0x15}, + {0x0c, 0x2c, 0x10}, + {0x37, 0x3a, 0x19}, + {0x06, 0x13, 0x17}, + {0x24, 0x10, 0x25}, + {0x24, 0x04, 0x1e}, + {0x00, 0x35, 0x34}, + {0x3a, 0x00, 0x37}, + {0x3c, 0x07, 0x1a}, + {0x2b, 0x28, 0x36}, + {0x34, 0x39, 0x2f}, + {0x28, 0x09, 0x1f}, + {0x38, 0x31, 0x30}, + {0x16, 0x25, 0x31}, + {0x18, 0x28, 0x31}, + {0x18, 0x0c, 0x22}, + {0x06, 0x39, 0x2d}, + {0x3d, 0x20, 0x24}, + {0x2e, 0x27, 0x21}, + {0x3e, 0x18, 0x18}, + {0x15, 0x3c, 0x24}, + {0x06, 0x1b, 0x26}, + {0x15, 0x0e, 0x22}, + {0x0a, 0x0d, 0x1f}, + {0x18, 0x16, 0x34}, + {0x10, 0x28, 0x21}, + {0x20, 0x11, 0x11}, + {0x36, 0x32, 0x15}, + {0x3b, 0x2e, 0x24}, + {0x1f, 0x2d, 0x12}, + {0x36, 0x2e, 0x20}, + {0x0b, 0x17, 0x33}, + {0x26, 0x03, 0x1f}, + {0x08, 0x19, 0x31}, + {0x2a, 0x18, 0x25}, + {0x35, 0x2d, 0x2d}, + {0x30, 0x38, 0x18}, + {0x1c, 0x25, 0x14}, + {0x1c, 0x22, 0x28}, + {0x08, 0x23, 0x21}, + {0x26, 0x1e, 0x30}, + {0x19, 0x0f, 0x15}, + {0x10, 0x2f, 0x22}, + {0x12, 0x02, 0x25}, + {0x3c, 0x01, 0x1d}, + {0x0e, 0x14, 0x18}, + {0x0d, 0x18, 0x17}, + {0x22, 0x0b, 0x31}, + {0x13, 0x34, 0x21}, + {0x0f, 0x2d, 0x36}, + {0x39, 0x1f, 0x25}, + {0x18, 0x10, 0x1f}, + {0x2d, 0x20, 0x20}, + {0x19, 0x0b, 0x31}, + {0x33, 0x13, 0x14}, + {0x2e, 0x11, 0x21}, + {0x2d, 0x0a, 0x37}, + {0x07, 0x15, 0x1b}, + {0x32, 0x04, 0x32}, + {0x06, 0x18, 0x1b}, + {0x13, 0x24, 0x12}, + {0x36, 0x22, 0x16}, + {0x1d, 0x29, 0x1c}, + {0x35, 0x17, 0x21}, + {0x36, 0x17, 0x2b}, + {0x35, 0x32, 0x19}, + {0x2a, 0x0f, 0x2e}, + {0x10, 0x00, 0x34}, + {0x02, 0x0e, 0x28}, + {0x31, 0x32, 0x32}, + {0x3b, 0x05, 0x20}, + {0x36, 0x26, 0x12}, + {0x34, 0x06, 0x34}, + {0x1e, 0x31, 0x32}, + {0x35, 0x05, 0x34}, + {0x1e, 0x13, 0x15}, + {0x15, 0x14, 0x2c}, + {0x29, 0x1c, 0x18}, + {0x24, 0x24, 0x12}, + {0x22, 0x29, 0x18}, + {0x34, 0x36, 0x30}, + {0x1e, 0x01, 0x23}, + {0x0c, 0x3c, 0x24}, + {0x0a, 0x3d, 0x16}, + {0x27, 0x1e, 0x23}, + {0x15, 0x02, 0x12}, + {0x11, 0x19, 0x2a}, + {0x1d, 0x31, 0x15}, + {0x03, 0x3b, 0x2a}, + {0x21, 0x19, 0x2c}, + {0x0a, 0x23, 0x11}, + {0x25, 0x11, 0x1a}, + {0x1a, 0x0a, 0x34}, + {0x3b, 0x0b, 0x33}, + {0x21, 0x0b, 0x37}, + {0x01, 0x31, 0x28}, + {0x35, 0x1d, 0x27}, + {0x2c, 0x30, 0x31}, + {0x2e, 0x39, 0x2d}, + {0x30, 0x05, 0x2c}, + {0x12, 0x2a, 0x2b}, + {0x39, 0x22, 0x20}, + {0x15, 0x34, 0x1c}, + {0x1c, 0x01, 0x15}, + {0x20, 0x16, 0x22}, + {0x13, 0x04, 0x18}, + {0x1e, 0x13, 0x10}, + {0x25, 0x33, 0x15}, + {0x39, 0x03, 0x31}, + {0x3f, 0x36, 0x18}, + {0x14, 0x23, 0x10}, + {0x2f, 0x1e, 0x1f}, + {0x1f, 0x17, 0x2c}, + {0x02, 0x16, 0x31}, + {0x20, 0x18, 0x30}, + {0x2e, 0x18, 0x37}, + {0x3b, 0x0e, 0x30}, + {0x10, 0x39, 0x24}, + {0x26, 0x39, 0x1e}, + {0x30, 0x26, 0x2e}, + {0x12, 0x01, 0x14}, + {0x37, 0x2a, 0x2e}, + {0x21, 0x06, 0x1d}, + {0x2a, 0x16, 0x32}, + {0x09, 0x38, 0x1c}, + {0x07, 0x22, 0x17}, + {0x3b, 0x2d, 0x15}, + {0x07, 0x1e, 0x2e}, + {0x1b, 0x2e, 0x1d}, + {0x04, 0x09, 0x30}, + {0x30, 0x2d, 0x37}, + {0x2d, 0x34, 0x24}, + {0x18, 0x24, 0x25}, + {0x0e, 0x2d, 0x26}, + {0x23, 0x0a, 0x16}, + {0x12, 0x2d, 0x11}, + {0x21, 0x28, 0x2e}, + {0x0f, 0x01, 0x21}, + {0x01, 0x31, 0x12}, + {0x3f, 0x1b, 0x1e}, + {0x21, 0x25, 0x2b}, + {0x26, 0x18, 0x13}, + {0x15, 0x2d, 0x34}, + {0x23, 0x21, 0x36}, + {0x0e, 0x2e, 0x1c}, + {0x14, 0x22, 0x1c}, + {0x2c, 0x0b, 0x28}, + {0x1a, 0x18, 0x21}, + {0x21, 0x07, 0x1a}, + {0x24, 0x26, 0x29}, + {0x2b, 0x0a, 0x34}, + {0x3e, 0x27, 0x33}, + {0x12, 0x34, 0x1b}, + {0x1f, 0x01, 0x2a}, + {0x2e, 0x06, 0x23}, + {0x2f, 0x1f, 0x14}, + {0x18, 0x06, 0x26}, + {0x31, 0x1f, 0x2b}, + {0x22, 0x26, 0x2e}, + {0x1e, 0x15, 0x16}, + {0x20, 0x22, 0x28}, + {0x15, 0x37, 0x12}, + {0x25, 0x04, 0x2c}, + {0x1f, 0x04, 0x2e}, + {0x0c, 0x13, 0x18}, + {0x07, 0x0b, 0x36}, + {0x1d, 0x1c, 0x2a}, + {0x30, 0x22, 0x1c}, + {0x2e, 0x12, 0x2f}, + {0x2b, 0x21, 0x1e}, + {0x16, 0x38, 0x30}, + {0x04, 0x02, 0x16}, + {0x05, 0x14, 0x20}, + {0x38, 0x3c, 0x33}, + {0x21, 0x1b, 0x2f}, + {0x14, 0x2a, 0x27}, + {0x38, 0x14, 0x1b}, + {0x2b, 0x1f, 0x2b}, + {0x29, 0x2b, 0x25}, + {0x27, 0x36, 0x21}, + {0x11, 0x22, 0x1b}, + {0x29, 0x03, 0x1b}, + {0x18, 0x24, 0x28}, + {0x21, 0x2d, 0x36}, + {0x3c, 0x2c, 0x24}, + {0x33, 0x17, 0x1f}, + {0x2a, 0x3a, 0x21}, + {0x0a, 0x23, 0x37}, + {0x00, 0x0b, 0x21}, + {0x11, 0x38, 0x19}, + {0x0f, 0x0e, 0x1c}, + {0x1f, 0x0f, 0x37}, + {0x3c, 0x10, 0x37}, + {0x38, 0x31, 0x35}, + {0x07, 0x15, 0x28}, + {0x1e, 0x2e, 0x19}, + {0x26, 0x10, 0x33}, + {0x3d, 0x35, 0x2f}, + {0x3a, 0x04, 0x34}, + {0x0d, 0x18, 0x1a}, + {0x01, 0x2d, 0x15}, + {0x3d, 0x1a, 0x17}, + {0x17, 0x3f, 0x32}, + {0x0b, 0x21, 0x11}, + {0x1e, 0x26, 0x2b}, + {0x0d, 0x19, 0x24}, + {0x2e, 0x04, 0x1b}, + {0x1b, 0x33, 0x20}, + {0x15, 0x21, 0x1d}, + {0x1f, 0x04, 0x21}, + {0x0f, 0x12, 0x1f}, + {0x2d, 0x2a, 0x32}, + {0x03, 0x37, 0x1f}, + {0x35, 0x07, 0x27}, + {0x24, 0x1f, 0x31}, + {0x2f, 0x30, 0x15}, + {0x06, 0x00, 0x24}, + {0x0b, 0x22, 0x1a}, + {0x0c, 0x3b, 0x29}, + {0x14, 0x1a, 0x17}, + {0x37, 0x20, 0x25}, + {0x3f, 0x26, 0x37}, + {0x3a, 0x3e, 0x10}, + {0x22, 0x04, 0x11}, + {0x28, 0x12, 0x1c}, + {0x03, 0x2e, 0x2e}, + {0x0e, 0x38, 0x28}, + {0x01, 0x29, 0x22}, + {0x1e, 0x33, 0x19}, + {0x06, 0x21, 0x27}, + {0x33, 0x19, 0x1a}, + {0x02, 0x05, 0x17}, + {0x11, 0x11, 0x2c}, + {0x1f, 0x26, 0x1e}, + {0x39, 0x1f, 0x28}, + {0x2e, 0x2f, 0x12}, + {0x22, 0x34, 0x13}, + {0x3b, 0x26, 0x2f}, + {0x34, 0x00, 0x14}, + {0x10, 0x31, 0x11}, + {0x1d, 0x2d, 0x2a}, + {0x08, 0x08, 0x37}, + {0x15, 0x18, 0x34}, + {0x04, 0x2b, 0x24}, + {0x2f, 0x1e, 0x27}, + {0x22, 0x2a, 0x24}, + {0x07, 0x14, 0x25}, + {0x01, 0x27, 0x19}, + {0x29, 0x0a, 0x29}, + {0x3d, 0x1c, 0x2f}, + {0x0d, 0x1f, 0x1c}, + {0x24, 0x3d, 0x32}, + {0x36, 0x1d, 0x24}, + {0x14, 0x21, 0x16}, + {0x1a, 0x0d, 0x29}, + {0x3f, 0x2b, 0x2a}, + {0x1a, 0x3e, 0x35}, + {0x11, 0x28, 0x18}, + {0x32, 0x05, 0x15}, + {0x21, 0x2e, 0x34}, + {0x2d, 0x14, 0x2a}, + {0x3c, 0x08, 0x37}, + {0x3f, 0x34, 0x1e}, + {0x27, 0x24, 0x1c}, + {0x16, 0x16, 0x33}, + {0x29, 0x3b, 0x19}, + {0x36, 0x2f, 0x1c}, + {0x03, 0x25, 0x2c}, + {0x0b, 0x16, 0x36}, + {0x1c, 0x1d, 0x1b}, + {0x2c, 0x27, 0x1b}, + {0x0b, 0x1f, 0x2b}, + {0x08, 0x10, 0x27}, + {0x3f, 0x25, 0x2f}, + {0x33, 0x13, 0x1f}, + {0x04, 0x31, 0x37}, + {0x0e, 0x2f, 0x12}, + {0x08, 0x23, 0x20}, + {0x3a, 0x1a, 0x1e}, + {0x2f, 0x0b, 0x1f}, + {0x1e, 0x20, 0x19}, + {0x23, 0x3b, 0x14}, + {0x25, 0x00, 0x27}, + {0x14, 0x04, 0x25}, + {0x36, 0x1a, 0x2b}, + {0x27, 0x21, 0x15}, + {0x28, 0x13, 0x2c}, + {0x0e, 0x3c, 0x35}, + {0x0c, 0x2d, 0x2b}, + {0x37, 0x16, 0x15}, + {0x29, 0x15, 0x1d}, + {0x17, 0x34, 0x36}, + {0x09, 0x0a, 0x31}, + {0x37, 0x22, 0x28}, + {0x17, 0x2b, 0x35}, + {0x14, 0x2b, 0x12}, + {0x08, 0x13, 0x1f}, + {0x31, 0x13, 0x28}, + {0x06, 0x07, 0x35}, + {0x23, 0x3a, 0x29}, + {0x0f, 0x24, 0x2e}, + {0x07, 0x35, 0x26}, + {0x0e, 0x12, 0x15}, + {0x23, 0x33, 0x2c}, + {0x0e, 0x21, 0x26}, + {0x1c, 0x12, 0x25}, + {0x23, 0x1d, 0x2f}, + {0x04, 0x35, 0x33}, + {0x16, 0x01, 0x24}, + {0x3d, 0x2c, 0x2e}, + {0x35, 0x0a, 0x25}, + {0x11, 0x13, 0x25}, + {0x1b, 0x1b, 0x15}, + {0x15, 0x39, 0x10}, + {0x0b, 0x35, 0x24}, + {0x3a, 0x27, 0x30}, + {0x2e, 0x2f, 0x15}, + {0x10, 0x1f, 0x35}, + {0x1b, 0x28, 0x35}, + {0x26, 0x30, 0x37}, + {0x34, 0x37, 0x2b}, + {0x0f, 0x30, 0x29}, + {0x2e, 0x3f, 0x2b}, + {0x38, 0x34, 0x2b}, + {0x2b, 0x2f, 0x25}, + {0x0d, 0x28, 0x2a}, + {0x33, 0x18, 0x10}, + {0x21, 0x12, 0x11}, + {0x1f, 0x22, 0x34}, + {0x11, 0x25, 0x23}, + {0x21, 0x3f, 0x11}, + {0x26, 0x27, 0x25}, + {0x28, 0x36, 0x12}, + {0x15, 0x26, 0x32}, + {0x11, 0x18, 0x24}, + {0x32, 0x25, 0x37}, + {0x27, 0x3a, 0x33}, + {0x35, 0x07, 0x1c}, + {0x1a, 0x0e, 0x2a}, + {0x1e, 0x2f, 0x1f}, + {0x00, 0x2e, 0x21}, + {0x1b, 0x3c, 0x14}, + {0x2f, 0x3a, 0x2f}, + {0x3e, 0x38, 0x15}, + {0x1a, 0x13, 0x2f}, + {0x29, 0x0d, 0x2f}, + {0x37, 0x17, 0x18}, + {0x30, 0x1c, 0x35}, + {0x15, 0x34, 0x14}, + {0x28, 0x11, 0x2c}, + {0x2c, 0x25, 0x2a}, + {0x20, 0x3f, 0x28}, + {0x0c, 0x34, 0x1b}, + {0x30, 0x2e, 0x25}, + {0x37, 0x1c, 0x24}, + {0x1f, 0x25, 0x26}, + {0x0c, 0x19, 0x34}, + {0x18, 0x10, 0x35}, + {0x0a, 0x13, 0x11}, + {0x25, 0x13, 0x20}, + {0x13, 0x19, 0x11}, + {0x20, 0x28, 0x1d}, + {0x3e, 0x30, 0x1b}, + {0x23, 0x24, 0x21}, + {0x0d, 0x23, 0x23}, + {0x1d, 0x28, 0x2e}, + {0x2d, 0x12, 0x1f}, + {0x0e, 0x2e, 0x2b}, + {0x0b, 0x31, 0x32}, + {0x24, 0x3c, 0x2c}, + {0x13, 0x3c, 0x12}, + {0x28, 0x16, 0x2a}, + {0x05, 0x0c, 0x32}, + {0x39, 0x0b, 0x32}, + {0x21, 0x04, 0x14}, + {0x10, 0x31, 0x32}, + {0x12, 0x1f, 0x23}, + {0x39, 0x2e, 0x2e}, + {0x22, 0x3d, 0x27}, + {0x0c, 0x1e, 0x18}, + {0x25, 0x00, 0x17}, + {0x06, 0x31, 0x14}, + {0x13, 0x21, 0x1a}, + {0x14, 0x20, 0x35}, + {0x0a, 0x3b, 0x25}, + {0x33, 0x08, 0x28}, + {0x3d, 0x02, 0x33}, + {0x23, 0x00, 0x13}, + {0x22, 0x21, 0x28}, + {0x30, 0x14, 0x2e}, + {0x14, 0x32, 0x36}, + {0x39, 0x23, 0x1e}, + {0x1c, 0x11, 0x30}, + {0x37, 0x16, 0x30}, + {0x15, 0x31, 0x1f}, + {0x34, 0x28, 0x2c}, + {0x35, 0x05, 0x29}, + {0x37, 0x33, 0x2a}, + {0x1c, 0x17, 0x2e}, + {0x10, 0x06, 0x16}, + {0x32, 0x1f, 0x2f}, + {0x00, 0x29, 0x1e}, + {0x04, 0x01, 0x16}, + {0x3b, 0x23, 0x1e}, + {0x1b, 0x34, 0x2a}, + {0x30, 0x11, 0x2b}, + {0x03, 0x00, 0x1f}, + {0x1d, 0x37, 0x1a}, + {0x3a, 0x18, 0x25}, + {0x1c, 0x16, 0x2c}, + {0x04, 0x3f, 0x33}, + {0x26, 0x23, 0x2d}, + {0x15, 0x2c, 0x27}, + {0x02, 0x35, 0x27}, + {0x07, 0x35, 0x33}, + {0x1a, 0x0c, 0x10}, + {0x28, 0x26, 0x2c}, + {0x2f, 0x36, 0x16}, + {0x37, 0x0b, 0x27}, + {0x1b, 0x3d, 0x18}, + {0x27, 0x1f, 0x20}, + {0x2b, 0x2a, 0x33}, + {0x0b, 0x0f, 0x20}, + {0x35, 0x3c, 0x2f}, + {0x33, 0x21, 0x15}, + {0x2d, 0x26, 0x34}, + {0x1f, 0x1a, 0x21}, + {0x2f, 0x2c, 0x2a}, + {0x1a, 0x32, 0x1a}, + {0x3b, 0x3f, 0x21}, + {0x13, 0x3f, 0x13}, + {0x0f, 0x24, 0x22}, + {0x14, 0x1b, 0x10}, + {0x21, 0x06, 0x28}, + {0x25, 0x34, 0x10}, + {0x2e, 0x0e, 0x14}, + {0x3c, 0x3e, 0x25}, + {0x16, 0x06, 0x30}, + {0x0b, 0x04, 0x1f}, + {0x3e, 0x02, 0x24}, + {0x0c, 0x17, 0x25}, + {0x2b, 0x3c, 0x2d}, + {0x15, 0x36, 0x33}, + {0x18, 0x23, 0x2a}, + {0x1d, 0x10, 0x2a}, + {0x35, 0x17, 0x28}, + {0x00, 0x37, 0x24}, + {0x0a, 0x3b, 0x15}, + {0x1d, 0x0b, 0x1f}, + {0x3c, 0x31, 0x25}, + {0x1d, 0x0f, 0x1d}, + {0x20, 0x13, 0x34}, + {0x11, 0x2b, 0x2e}, + {0x23, 0x0c, 0x2e}, + {0x24, 0x02, 0x14}, + {0x31, 0x16, 0x19}, + {0x0e, 0x23, 0x35}, + {0x1a, 0x10, 0x16}, + {0x14, 0x04, 0x19}, + {0x2d, 0x27, 0x37}, + {0x33, 0x02, 0x31}, + {0x02, 0x04, 0x16}, + {0x0d, 0x22, 0x25}, + {0x25, 0x00, 0x16}, + {0x2a, 0x3f, 0x26}, + {0x20, 0x0c, 0x12}, + {0x2f, 0x2e, 0x35}, + {0x1b, 0x0d, 0x22}, + {0x1e, 0x01, 0x34}, + {0x05, 0x22, 0x21}, + {0x34, 0x2a, 0x32}, + {0x0b, 0x09, 0x1d}, + {0x3f, 0x32, 0x2f}, + {0x3d, 0x18, 0x2d}, + {0x0b, 0x38, 0x36}, + {0x39, 0x17, 0x28}, + {0x34, 0x04, 0x24}, + {0x36, 0x0e, 0x2a}, + {0x38, 0x01, 0x14}, + {0x3c, 0x24, 0x22}, + {0x21, 0x03, 0x18}, + {0x32, 0x2f, 0x12}, + {0x29, 0x24, 0x31}, + {0x0a, 0x3b, 0x12}, + {0x1a, 0x1c, 0x20}, + {0x30, 0x31, 0x1b}, + {0x1a, 0x21, 0x10}, + {0x05, 0x29, 0x10}, + {0x26, 0x2d, 0x13}, + {0x16, 0x0c, 0x1d}, + {0x2b, 0x06, 0x1b}, + {0x06, 0x12, 0x14}, + {0x38, 0x0f, 0x35}, + {0x23, 0x3a, 0x2c}, + {0x00, 0x19, 0x33}, + {0x29, 0x14, 0x2d}, + {0x2a, 0x21, 0x29}, + {0x14, 0x31, 0x14}, + {0x1a, 0x06, 0x1e}, + {0x18, 0x1b, 0x28}, + {0x3b, 0x16, 0x29}, + {0x15, 0x1e, 0x12}, + {0x34, 0x0a, 0x14}, + {0x1b, 0x05, 0x27}, + {0x0b, 0x01, 0x26}, + {0x2a, 0x22, 0x35}, + {0x21, 0x20, 0x18}, + {0x20, 0x37, 0x17}, + {0x14, 0x1f, 0x11}, + {0x1d, 0x11, 0x25}, + {0x24, 0x2b, 0x2f}, + {0x07, 0x3f, 0x1f}, + {0x2c, 0x25, 0x25}, + {0x2a, 0x29, 0x18}, + {0x11, 0x24, 0x28}, + {0x31, 0x2c, 0x2a}, + {0x39, 0x0b, 0x26}, + {0x28, 0x10, 0x26}, + {0x22, 0x06, 0x16}, + {0x09, 0x2c, 0x13}, + {0x34, 0x19, 0x15}, + {0x3a, 0x12, 0x21}, + {0x1d, 0x38, 0x23}, + {0x12, 0x25, 0x24}, + {0x21, 0x30, 0x12}, + {0x37, 0x1a, 0x12}, + {0x24, 0x3b, 0x25}, + {0x32, 0x15, 0x23}, + {0x0d, 0x1a, 0x10}, + {0x16, 0x2e, 0x26}, + {0x1d, 0x14, 0x16}, + {0x3e, 0x2e, 0x1f}, + {0x0a, 0x16, 0x10}, + {0x1d, 0x30, 0x2b}, + {0x04, 0x3a, 0x19}, + {0x08, 0x2d, 0x2e}, + {0x28, 0x1e, 0x33}, + {0x0a, 0x12, 0x2e}, + {0x0d, 0x03, 0x2f}, + {0x26, 0x3a, 0x1e}, + {0x35, 0x3b, 0x2a}, + {0x03, 0x1a, 0x18}, + {0x3f, 0x0b, 0x27}, + {0x04, 0x05, 0x34}, + {0x36, 0x0b, 0x27}, + {0x3b, 0x17, 0x11}, + {0x0d, 0x27, 0x26}, + {0x2c, 0x1f, 0x20}, + {0x26, 0x10, 0x20}, + {0x25, 0x23, 0x2d}, + {0x37, 0x09, 0x13}, + {0x14, 0x17, 0x2d}, + {0x2e, 0x3d, 0x23}, + {0x1d, 0x1a, 0x1f}, + {0x21, 0x33, 0x2e}, + {0x28, 0x17, 0x13}, + {0x26, 0x3c, 0x36}, + {0x14, 0x1a, 0x33}, + {0x32, 0x20, 0x2b}, + {0x19, 0x3e, 0x20}, + {0x0c, 0x02, 0x2d}, + {0x3c, 0x3c, 0x2a}, + {0x30, 0x30, 0x28}, + {0x25, 0x3f, 0x1e}, + {0x03, 0x17, 0x1e}, + {0x35, 0x11, 0x1c}, + {0x1b, 0x14, 0x2a}, + {0x28, 0x3a, 0x23}, + {0x0e, 0x1f, 0x12}, + {0x36, 0x21, 0x20}, + {0x07, 0x3b, 0x10}, + {0x23, 0x19, 0x34}, + {0x0d, 0x2e, 0x18}, + {0x3f, 0x20, 0x25}, + {0x3e, 0x3b, 0x15}, + {0x0b, 0x2e, 0x12}, + {0x37, 0x0b, 0x23}, + {0x3d, 0x32, 0x1f}, + {0x16, 0x03, 0x27}, + {0x14, 0x0c, 0x21}, + {0x18, 0x03, 0x30}, + {0x3e, 0x21, 0x13}, + {0x0f, 0x00, 0x32}, + {0x3f, 0x23, 0x16}, + {0x0e, 0x31, 0x1d}, + {0x18, 0x1c, 0x1d}, + {0x30, 0x0e, 0x1e}, + {0x21, 0x20, 0x23}, + {0x3f, 0x0c, 0x1e}, + {0x14, 0x33, 0x22}, + {0x22, 0x21, 0x15}, + {0x36, 0x05, 0x1e}, + {0x1d, 0x31, 0x14}, + {0x20, 0x11, 0x37}, + {0x0d, 0x33, 0x19}, + {0x25, 0x05, 0x36}, + {0x1e, 0x31, 0x20}, + {0x35, 0x3a, 0x2f}, + {0x32, 0x2f, 0x30}, + {0x14, 0x23, 0x2d}, + {0x35, 0x1e, 0x29}, + {0x05, 0x05, 0x1b}, + {0x09, 0x1f, 0x26}, + {0x2f, 0x0b, 0x15}, + {0x15, 0x11, 0x13}, + {0x29, 0x1b, 0x18}, + {0x1c, 0x13, 0x35}, + {0x34, 0x31, 0x23}, + {0x27, 0x3f, 0x2f}, + {0x09, 0x30, 0x19}, + {0x23, 0x12, 0x34}, + {0x02, 0x2a, 0x21}, + {0x09, 0x3c, 0x1d}, + {0x0c, 0x02, 0x10}, + {0x22, 0x05, 0x17}, + {0x22, 0x08, 0x1b}, + {0x0a, 0x0f, 0x15}, + {0x02, 0x11, 0x13}, + {0x01, 0x21, 0x22}, + {0x16, 0x39, 0x33}, + {0x24, 0x38, 0x34}, + {0x0f, 0x1e, 0x2b}, + {0x2b, 0x15, 0x15}, + {0x20, 0x22, 0x2e}, + {0x3a, 0x3f, 0x31}, + {0x1a, 0x27, 0x2b}, + {0x29, 0x34, 0x14}, + {0x16, 0x39, 0x2f}, + {0x13, 0x3e, 0x16}, + {0x36, 0x21, 0x30}, + {0x00, 0x24, 0x2b}, + {0x24, 0x21, 0x30}, + {0x15, 0x31, 0x13}, + {0x10, 0x37, 0x24}, + {0x08, 0x07, 0x23}, + {0x21, 0x09, 0x25}, + {0x05, 0x3c, 0x32}, + {0x19, 0x03, 0x25}, + {0x0f, 0x29, 0x2b}, + {0x16, 0x07, 0x13}, + {0x3e, 0x3d, 0x25}, + {0x36, 0x0b, 0x28}, + {0x2e, 0x2b, 0x16}, + {0x0c, 0x31, 0x11}, + {0x30, 0x13, 0x2d}, + {0x26, 0x3e, 0x37}, + {0x29, 0x2f, 0x2e}, + {0x15, 0x3d, 0x17}, + {0x1c, 0x2e, 0x21}, + {0x33, 0x2f, 0x10}, + {0x0d, 0x05, 0x1d}, + {0x1c, 0x1a, 0x12}, + {0x0e, 0x18, 0x37}, + {0x1b, 0x11, 0x14}, + {0x06, 0x14, 0x21}, + {0x31, 0x0e, 0x27}, + {0x1a, 0x03, 0x10}, + {0x00, 0x34, 0x31}, + {0x3f, 0x0b, 0x1d}, + {0x0f, 0x12, 0x1f}, + {0x1a, 0x15, 0x10}, + {0x0f, 0x00, 0x24}, + {0x3e, 0x0a, 0x2a}, + {0x30, 0x2b, 0x24}, + {0x26, 0x31, 0x10}, + {0x2d, 0x2f, 0x2f}, + {0x3f, 0x0c, 0x13}, + {0x12, 0x0b, 0x16}, + {0x15, 0x07, 0x1f}, + {0x28, 0x10, 0x32}, + {0x0f, 0x17, 0x15}, + {0x0b, 0x27, 0x33}, + {0x34, 0x1d, 0x10}, + {0x1c, 0x3a, 0x12}, + {0x2c, 0x27, 0x37}, + {0x0a, 0x1a, 0x32}, + {0x05, 0x1f, 0x21}, + {0x24, 0x0d, 0x1f}, + {0x1c, 0x17, 0x24}, + {0x2f, 0x3b, 0x32}, + {0x3b, 0x25, 0x10}, + {0x03, 0x2f, 0x21}, + {0x0c, 0x10, 0x23}, + {0x0e, 0x3a, 0x2c}, + {0x33, 0x03, 0x2c}, + {0x12, 0x06, 0x1c}, + {0x2a, 0x37, 0x30}, + {0x3f, 0x01, 0x1e}, + {0x35, 0x16, 0x37}, + {0x2c, 0x32, 0x35}, + {0x05, 0x11, 0x22}, + {0x29, 0x09, 0x20}, + {0x2b, 0x0d, 0x1f}, + {0x18, 0x0d, 0x20}, + {0x23, 0x39, 0x16}, + {0x0f, 0x3a, 0x18}, + {0x21, 0x35, 0x2b}, + {0x36, 0x26, 0x2b}, + {0x23, 0x05, 0x2f}, + {0x1b, 0x08, 0x17}, + {0x3e, 0x09, 0x16}, + {0x2d, 0x3a, 0x37}, + {0x15, 0x35, 0x35}, + {0x29, 0x0a, 0x12}, + {0x02, 0x39, 0x1f}, + {0x14, 0x34, 0x33}, + {0x17, 0x1d, 0x18}, + {0x16, 0x1d, 0x1a}, + {0x01, 0x39, 0x22}, + {0x1e, 0x27, 0x36}, + {0x32, 0x14, 0x26}, + {0x0a, 0x39, 0x36}, + {0x1f, 0x0d, 0x1e}, + {0x0b, 0x0a, 0x19}, + {0x35, 0x1d, 0x34}, + {0x03, 0x12, 0x16}, + {0x0c, 0x13, 0x2e}, + {0x0c, 0x34, 0x1e}, + {0x10, 0x14, 0x1e}, + {0x23, 0x32, 0x27}, + {0x02, 0x10, 0x29}, + {0x35, 0x18, 0x33}, + {0x33, 0x1d, 0x1a}, + {0x3c, 0x15, 0x23}, + {0x3e, 0x3f, 0x22}, + {0x2a, 0x02, 0x2c}, + {0x28, 0x0a, 0x2f}, + {0x1a, 0x06, 0x35}, + {0x3c, 0x17, 0x2b}, + {0x03, 0x12, 0x17}, + {0x2f, 0x0a, 0x26}, + {0x12, 0x38, 0x11}, + {0x36, 0x1b, 0x23}, + {0x01, 0x39, 0x35}, + {0x19, 0x19, 0x17}, + {0x09, 0x28, 0x22}, + {0x1e, 0x27, 0x2c}, + {0x35, 0x33, 0x2c}, + {0x27, 0x25, 0x31}, + {0x06, 0x31, 0x2d}, + {0x1a, 0x39, 0x28}, + {0x2d, 0x04, 0x1e}, + {0x24, 0x3e, 0x1c}, + {0x3c, 0x30, 0x1b}, + {0x3f, 0x3e, 0x37}, + {0x22, 0x36, 0x11}, + {0x00, 0x01, 0x1c}, + {0x12, 0x1a, 0x10}, + {0x12, 0x1e, 0x2c}, + {0x1f, 0x12, 0x2a}, + {0x2f, 0x06, 0x19}, + {0x35, 0x1a, 0x18}, + {0x3b, 0x09, 0x36}, + {0x34, 0x1d, 0x13}, + {0x02, 0x07, 0x10}, + {0x20, 0x2f, 0x1d}, + {0x0b, 0x03, 0x33}, + {0x1c, 0x16, 0x31}, + {0x05, 0x13, 0x1b}, + {0x29, 0x06, 0x13}, + {0x30, 0x2d, 0x36}, + {0x2a, 0x2d, 0x2c}, + {0x19, 0x34, 0x1c}, + {0x0f, 0x15, 0x12}, + {0x36, 0x15, 0x2c}, + {0x3a, 0x06, 0x1c}, + {0x12, 0x1d, 0x26}, + {0x03, 0x38, 0x1d}, + {0x01, 0x01, 0x2d}, + {0x17, 0x2e, 0x10}, + {0x14, 0x17, 0x1c}, + {0x34, 0x0f, 0x28}, + {0x09, 0x37, 0x1b}, + {0x28, 0x1d, 0x26}, + {0x29, 0x2d, 0x36}, + {0x1e, 0x17, 0x28}, + {0x15, 0x0f, 0x1c}, + {0x20, 0x2d, 0x10}, + {0x27, 0x16, 0x2e}, + {0x14, 0x09, 0x12}, + {0x3b, 0x3d, 0x21}, + {0x25, 0x1a, 0x2c}, + {0x00, 0x22, 0x36}, + {0x0d, 0x30, 0x10}, + {0x17, 0x19, 0x1b}, + {0x00, 0x3b, 0x21}, + {0x2a, 0x28, 0x34}, + {0x2d, 0x0f, 0x16}, + {0x0a, 0x30, 0x28}, + {0x06, 0x00, 0x25}, + {0x31, 0x2e, 0x2a}, + {0x14, 0x33, 0x28}, + {0x36, 0x10, 0x2e}, + {0x05, 0x2e, 0x19}, + {0x19, 0x1a, 0x15}, + {0x2c, 0x14, 0x17}, + {0x37, 0x0f, 0x13}, + {0x32, 0x17, 0x1b}, + {0x39, 0x18, 0x32}, + {0x2e, 0x32, 0x1e}, + {0x24, 0x1d, 0x31}, + {0x12, 0x1d, 0x2b}, + {0x14, 0x0c, 0x27}, + {0x36, 0x2e, 0x32}, + {0x06, 0x0a, 0x1a}, + {0x28, 0x28, 0x20}, + {0x3a, 0x3a, 0x17}, + {0x08, 0x27, 0x36}, + {0x18, 0x1a, 0x10}, + {0x1e, 0x26, 0x1b}, + {0x1f, 0x33, 0x1f}, + {0x21, 0x17, 0x2f}, + {0x01, 0x08, 0x20}, + {0x35, 0x03, 0x19}, + {0x3b, 0x02, 0x20}, + {0x02, 0x2d, 0x23}, + {0x0e, 0x17, 0x32}, + {0x31, 0x29, 0x11}, + {0x22, 0x17, 0x22}, + {0x3a, 0x2c, 0x23}, + {0x34, 0x20, 0x18}, + {0x00, 0x3a, 0x22}, + {0x25, 0x33, 0x21}, + {0x33, 0x04, 0x27}, + {0x04, 0x18, 0x32}, + {0x2c, 0x0c, 0x2f}, + {0x28, 0x14, 0x2c}, + {0x3f, 0x30, 0x2b}, + {0x30, 0x21, 0x1d}, + {0x01, 0x25, 0x32}, + {0x05, 0x23, 0x34}, + {0x24, 0x10, 0x30}, + {0x3d, 0x14, 0x1b}, + {0x3f, 0x38, 0x2f}, + {0x22, 0x1b, 0x32}, + {0x25, 0x07, 0x37}, + {0x0a, 0x0c, 0x1d}, + {0x03, 0x1e, 0x1a}, + {0x0f, 0x3c, 0x12}, + {0x11, 0x18, 0x1d}, + {0x00, 0x35, 0x2f}, + {0x32, 0x18, 0x14}, + {0x23, 0x30, 0x1b}, + {0x11, 0x3d, 0x12}, + {0x1a, 0x16, 0x35}, + {0x28, 0x05, 0x24}, + {0x17, 0x3d, 0x37}, + {0x2e, 0x09, 0x2e}, + {0x18, 0x1d, 0x17}, + {0x20, 0x1f, 0x18}, + {0x23, 0x2c, 0x2f}, + {0x20, 0x3f, 0x16}, + {0x3f, 0x29, 0x2e}, + {0x23, 0x3b, 0x29}, + {0x18, 0x39, 0x13}, + {0x1e, 0x32, 0x35}, + {0x14, 0x1d, 0x2a}, + {0x35, 0x01, 0x1d}, + {0x3e, 0x3b, 0x1e}, + {0x22, 0x1e, 0x16}, + {0x18, 0x22, 0x12}, + {0x3e, 0x29, 0x33}, + {0x2f, 0x14, 0x19}, + {0x3b, 0x07, 0x15}, + {0x06, 0x3d, 0x29}, + {0x35, 0x37, 0x23}, + {0x34, 0x1d, 0x2d}, + {0x18, 0x12, 0x1b}, + {0x0b, 0x13, 0x24}, + {0x13, 0x38, 0x1c}, + {0x1f, 0x0b, 0x1b}, + {0x13, 0x21, 0x1c}, + {0x06, 0x39, 0x32}, + {0x37, 0x3d, 0x26}, + {0x29, 0x26, 0x15}, + {0x3c, 0x33, 0x27}, + {0x00, 0x01, 0x2e}, + {0x15, 0x18, 0x31}, + {0x0d, 0x2c, 0x13}, + {0x27, 0x3b, 0x20}, + {0x2d, 0x01, 0x26}, + {0x23, 0x15, 0x30}, + {0x24, 0x00, 0x17}, + {0x37, 0x3f, 0x33}, + {0x25, 0x24, 0x31}, + {0x06, 0x3b, 0x37}, + {0x03, 0x18, 0x1a}, + {0x2c, 0x34, 0x14}, + {0x1d, 0x36, 0x18}, + {0x3a, 0x04, 0x23}, + {0x12, 0x26, 0x15}, + {0x2b, 0x19, 0x1a}, + {0x29, 0x2c, 0x36}, + {0x01, 0x19, 0x1d}, + {0x2f, 0x06, 0x2b}, + {0x0c, 0x12, 0x26}, + {0x36, 0x32, 0x1d}, + {0x0d, 0x12, 0x28}, + {0x03, 0x28, 0x13}, + {0x29, 0x06, 0x17}, + {0x03, 0x38, 0x21}, + {0x30, 0x2c, 0x10}, + {0x22, 0x00, 0x28}, + {0x24, 0x3b, 0x1c}, + {0x20, 0x3e, 0x13}, + {0x02, 0x0c, 0x19}, + {0x29, 0x2c, 0x1a}, + {0x39, 0x30, 0x22}, + {0x2a, 0x1f, 0x22}, + {0x14, 0x34, 0x2c}, + {0x14, 0x25, 0x1b}, + {0x06, 0x3b, 0x15}, + {0x06, 0x1c, 0x13}, + {0x15, 0x03, 0x18}, + {0x1e, 0x2a, 0x1b}, + {0x17, 0x25, 0x2f}, + {0x1c, 0x29, 0x2e}, + {0x02, 0x32, 0x1e}, + {0x1d, 0x28, 0x35}, + {0x36, 0x03, 0x34}, + {0x16, 0x3d, 0x2a}, + {0x12, 0x0d, 0x13}, + {0x1d, 0x2d, 0x21}, + {0x32, 0x17, 0x2e}, + {0x1a, 0x15, 0x26}, + {0x22, 0x2f, 0x15}, + {0x3c, 0x0e, 0x20}, + {0x2f, 0x27, 0x13}, + {0x04, 0x09, 0x32}, + {0x1e, 0x01, 0x34}, + {0x06, 0x16, 0x1e}, + {0x2e, 0x1b, 0x1c}, + {0x28, 0x13, 0x2a}, + {0x30, 0x34, 0x12}, + {0x12, 0x32, 0x18}, + {0x1d, 0x1d, 0x35}, + {0x07, 0x1c, 0x16}, + {0x2d, 0x3d, 0x35}, + {0x1c, 0x1b, 0x24}, + {0x21, 0x2d, 0x1e}, + {0x10, 0x09, 0x14}, + {0x3d, 0x11, 0x12}, + {0x25, 0x02, 0x26}, + {0x23, 0x02, 0x19}, + {0x19, 0x05, 0x14}, + {0x0b, 0x21, 0x1a}, + {0x09, 0x02, 0x2c}, + {0x18, 0x28, 0x2d}, + {0x1e, 0x10, 0x12}, + {0x2e, 0x18, 0x2e}, + {0x1f, 0x02, 0x2c}, + {0x14, 0x17, 0x24}, + {0x39, 0x08, 0x32}, + {0x16, 0x14, 0x22}, + {0x16, 0x28, 0x21}, + {0x11, 0x10, 0x2c}, + {0x23, 0x36, 0x2b}, + {0x39, 0x21, 0x26}, + {0x0e, 0x06, 0x2d}, + {0x3c, 0x3e, 0x26}, + {0x2a, 0x1b, 0x1f}, + {0x00, 0x3c, 0x33}, + {0x35, 0x3f, 0x14}, + {0x00, 0x0b, 0x10}, + {0x34, 0x3c, 0x17}, + {0x2d, 0x07, 0x1f}, + {0x24, 0x39, 0x27}, + {0x16, 0x00, 0x1d}, + {0x33, 0x2b, 0x1e}, + {0x0f, 0x08, 0x31}, + {0x3a, 0x09, 0x13}, + {0x0c, 0x21, 0x1c}, + {0x2a, 0x17, 0x34}, + {0x29, 0x27, 0x10}, + {0x37, 0x1b, 0x18}, + {0x15, 0x08, 0x2f}, + {0x1f, 0x16, 0x12}, + {0x1f, 0x28, 0x34}, + {0x1c, 0x20, 0x22}, + {0x12, 0x01, 0x12}, + {0x21, 0x31, 0x10}, + {0x22, 0x26, 0x1e}, + {0x01, 0x3d, 0x11}, + {0x1e, 0x27, 0x25}, + {0x3d, 0x30, 0x24}, + {0x1d, 0x11, 0x22}, + {0x36, 0x30, 0x16}, + {0x1f, 0x3e, 0x2a}, + {0x3c, 0x27, 0x1b}, + {0x1f, 0x29, 0x10}, + {0x1e, 0x05, 0x2a}, + {0x0a, 0x10, 0x14}, + {0x1f, 0x00, 0x2e}, + {0x0b, 0x3b, 0x18}, + {0x0a, 0x39, 0x30}, + {0x37, 0x0b, 0x1f}, + {0x1d, 0x0a, 0x29}, + {0x3e, 0x1c, 0x33}, + {0x13, 0x2e, 0x28}, + {0x27, 0x1b, 0x1e}, + {0x1d, 0x02, 0x1c}, + {0x01, 0x25, 0x14}, + {0x3a, 0x10, 0x1c}, + {0x12, 0x05, 0x2a}, + {0x30, 0x20, 0x26}, + {0x2f, 0x2e, 0x2e}, + {0x03, 0x07, 0x24}, + {0x36, 0x04, 0x2b}, + {0x11, 0x25, 0x2d}, + {0x28, 0x0e, 0x2e}, + {0x0f, 0x1d, 0x15}, + {0x1c, 0x28, 0x30}, + {0x1f, 0x23, 0x26}, + {0x36, 0x12, 0x37}, + {0x3a, 0x31, 0x10}, + {0x2c, 0x2c, 0x2f}, + {0x1a, 0x0d, 0x15}, + {0x3f, 0x3c, 0x32}, + {0x35, 0x1c, 0x16}, + {0x33, 0x16, 0x28}, + {0x1d, 0x3f, 0x21}, + {0x2c, 0x3e, 0x2b}, + {0x24, 0x23, 0x2f}, + {0x32, 0x15, 0x2a}, + {0x1b, 0x10, 0x35}, + {0x18, 0x37, 0x10}, + {0x3b, 0x1e, 0x11}, + {0x2b, 0x16, 0x24}, + {0x1d, 0x16, 0x26}, + {0x3c, 0x2d, 0x11}, + {0x15, 0x28, 0x28}, + {0x27, 0x27, 0x27}, + {0x3b, 0x3a, 0x16}, + {0x1a, 0x0c, 0x1a}, + {0x15, 0x08, 0x25}, + {0x0b, 0x10, 0x22}, + {0x1a, 0x3e, 0x17}, + {0x28, 0x1f, 0x1e}, + {0x01, 0x1e, 0x1e}, + {0x1c, 0x2f, 0x10}, + {0x25, 0x0b, 0x34}, + {0x3e, 0x0c, 0x1a}, + {0x1b, 0x10, 0x2a}, + {0x0f, 0x14, 0x17}, + {0x0f, 0x3f, 0x17}, + {0x03, 0x15, 0x1f}, + {0x02, 0x36, 0x17}, + {0x15, 0x1d, 0x18}, + {0x08, 0x36, 0x10}, + {0x14, 0x0d, 0x2b}, + {0x0a, 0x05, 0x1d}, + {0x26, 0x12, 0x1e}, + {0x3e, 0x18, 0x19}, + {0x36, 0x18, 0x37}, + {0x17, 0x39, 0x2e}, + {0x0d, 0x04, 0x19}, + {0x16, 0x22, 0x15}, + {0x3e, 0x26, 0x1f}, + {0x00, 0x06, 0x17}, + {0x33, 0x22, 0x1d}, + {0x2b, 0x39, 0x2b}, + {0x3e, 0x31, 0x1c}, + {0x22, 0x3f, 0x13}, + {0x30, 0x1c, 0x31}, + {0x07, 0x2b, 0x14}, + {0x32, 0x35, 0x1e}, + {0x02, 0x07, 0x20}, + {0x0f, 0x3b, 0x11}, + {0x20, 0x07, 0x12}, + {0x2a, 0x30, 0x1d}, + {0x28, 0x38, 0x36}, + {0x20, 0x01, 0x17}, + {0x15, 0x20, 0x21}, + {0x3a, 0x1b, 0x1e}, + {0x38, 0x12, 0x24}, + {0x03, 0x3e, 0x1f}, + {0x29, 0x1d, 0x13}, + {0x20, 0x27, 0x19}, + {0x12, 0x25, 0x20}, + {0x32, 0x33, 0x2b}, + {0x3f, 0x05, 0x31}, + {0x35, 0x3c, 0x2d}, + {0x2d, 0x02, 0x2e}, + {0x10, 0x2a, 0x16}, + {0x17, 0x08, 0x31}, + {0x17, 0x2e, 0x2b}, + {0x30, 0x1e, 0x15}, + {0x31, 0x15, 0x26}, + {0x08, 0x10, 0x33}, + {0x15, 0x01, 0x27}, + {0x12, 0x07, 0x2f}, + {0x29, 0x27, 0x34}, + {0x3f, 0x08, 0x31}, + {0x1c, 0x20, 0x1a}, + {0x33, 0x0c, 0x13}, + {0x18, 0x31, 0x24}, + {0x37, 0x2d, 0x2e}, + {0x21, 0x18, 0x24}, + {0x3a, 0x27, 0x31}, + {0x35, 0x3e, 0x30}, + {0x3a, 0x14, 0x33}, + {0x0f, 0x1a, 0x2d}, + {0x30, 0x2e, 0x11}, + {0x1a, 0x31, 0x1d}, + {0x17, 0x3c, 0x18}, + {0x33, 0x31, 0x23}, + {0x1d, 0x39, 0x2d}, + {0x10, 0x1d, 0x2f}, + {0x24, 0x15, 0x1c}, + {0x25, 0x01, 0x2b}, + {0x22, 0x16, 0x2e}, + {0x1b, 0x25, 0x35}, + {0x37, 0x10, 0x26}, + {0x39, 0x01, 0x36}, + {0x17, 0x2b, 0x14}, + {0x09, 0x16, 0x17}, + {0x20, 0x28, 0x23}, + {0x26, 0x3a, 0x26}, + {0x27, 0x2a, 0x24}, + {0x36, 0x02, 0x2c}, + {0x29, 0x30, 0x35}, + {0x36, 0x01, 0x1f}, + {0x28, 0x3b, 0x1d}, + {0x23, 0x1e, 0x2d}, + {0x11, 0x1e, 0x2c}, + {0x2f, 0x32, 0x19}, + {0x3f, 0x26, 0x31}, + {0x38, 0x1e, 0x17}, + {0x05, 0x18, 0x2e}, + {0x00, 0x2e, 0x12}, + {0x34, 0x3f, 0x34}, + {0x16, 0x10, 0x29}, + {0x20, 0x3d, 0x36}, + {0x2f, 0x16, 0x25}, + {0x12, 0x17, 0x10}, + {0x21, 0x37, 0x35}, + {0x25, 0x37, 0x2d}, + {0x01, 0x08, 0x27}, + {0x03, 0x1f, 0x29}, + {0x0d, 0x2a, 0x16}, + {0x3a, 0x3f, 0x33}, + {0x2b, 0x19, 0x1d}, + {0x2a, 0x1f, 0x29}, + {0x28, 0x2c, 0x10}, + {0x28, 0x30, 0x10}, + {0x39, 0x14, 0x1b}, + {0x00, 0x18, 0x21}, + {0x28, 0x0c, 0x37}, + {0x11, 0x10, 0x11}, + {0x3c, 0x33, 0x32}, + {0x33, 0x36, 0x1a}, + {0x36, 0x00, 0x1c}, + {0x31, 0x1b, 0x1d}, + {0x38, 0x1d, 0x10}, + {0x3c, 0x39, 0x27}, + {0x3a, 0x3f, 0x14}, + {0x19, 0x12, 0x14}, + {0x0d, 0x1f, 0x18}, + {0x00, 0x25, 0x18}, + {0x28, 0x1c, 0x32}, + {0x27, 0x03, 0x1a}, + {0x26, 0x2d, 0x2a}, + {0x29, 0x28, 0x27}, + {0x0a, 0x2a, 0x18}, + {0x0a, 0x1a, 0x30}, + {0x20, 0x1a, 0x2e}, + {0x06, 0x0b, 0x1d}, + {0x0f, 0x0c, 0x1c}, + {0x35, 0x28, 0x1c}, + {0x3d, 0x16, 0x23}, + {0x21, 0x1c, 0x31}, + {0x14, 0x1c, 0x2e}, + {0x22, 0x32, 0x35}, + {0x09, 0x29, 0x30}, + {0x20, 0x1a, 0x10}, + {0x31, 0x3f, 0x2c}, + {0x0a, 0x3d, 0x37}, + {0x0b, 0x2e, 0x2d}, + {0x1f, 0x22, 0x31}, + {0x06, 0x07, 0x29}, + {0x22, 0x17, 0x2d}, + {0x30, 0x11, 0x18}, + {0x0c, 0x19, 0x15}, + {0x07, 0x0a, 0x34}, + {0x18, 0x29, 0x27}, + {0x33, 0x0c, 0x30}, + {0x03, 0x1a, 0x37}, + {0x06, 0x01, 0x2d}, + {0x0f, 0x3b, 0x2b}, + {0x11, 0x1f, 0x37}, + {0x2b, 0x21, 0x36}, + {0x3f, 0x23, 0x17}, + {0x17, 0x07, 0x2b}, + {0x2b, 0x0e, 0x30}, + {0x11, 0x39, 0x1d}, + {0x29, 0x03, 0x33}, + {0x30, 0x03, 0x2f}, + {0x3c, 0x20, 0x26}, + {0x03, 0x22, 0x14}, + {0x3a, 0x28, 0x35}, + {0x01, 0x28, 0x2b}, + {0x3e, 0x15, 0x18}, + {0x30, 0x07, 0x17}, + {0x3b, 0x2c, 0x30}, + {0x15, 0x07, 0x2c}, + {0x17, 0x27, 0x1d}, + {0x3f, 0x1e, 0x33}, + {0x0d, 0x17, 0x10}, + {0x15, 0x0e, 0x30}, + {0x09, 0x05, 0x30}, + {0x2d, 0x20, 0x15}, + {0x3c, 0x3d, 0x30}, + {0x0c, 0x17, 0x1c}, + {0x1a, 0x0d, 0x25}, + {0x2b, 0x2b, 0x2a}, + {0x02, 0x16, 0x2d}, + {0x17, 0x31, 0x17}, + {0x00, 0x08, 0x13}, + {0x37, 0x35, 0x21}, + {0x1e, 0x1c, 0x1f}, + {0x2b, 0x32, 0x1c}, + {0x10, 0x2a, 0x16}, + {0x3a, 0x33, 0x31}, + {0x17, 0x2b, 0x2a}, + {0x0c, 0x3d, 0x11}, + {0x28, 0x0a, 0x30}, + {0x23, 0x0a, 0x26}, + {0x0a, 0x14, 0x24}, + {0x0b, 0x0f, 0x30}, + {0x1b, 0x1e, 0x29}, + {0x02, 0x35, 0x28}, + {0x3b, 0x02, 0x14}, + {0x00, 0x0f, 0x35}, + {0x1c, 0x3c, 0x2e}, + {0x28, 0x38, 0x19}, + {0x1b, 0x11, 0x12}, + {0x09, 0x16, 0x10}, + {0x2e, 0x0d, 0x20}, + {0x3d, 0x04, 0x32}, + {0x16, 0x2c, 0x25}, + {0x02, 0x3d, 0x18}, + {0x0b, 0x13, 0x1c}, + {0x22, 0x2a, 0x1c}, + {0x20, 0x27, 0x22}, + {0x05, 0x26, 0x22}, + {0x12, 0x1d, 0x2c}, + {0x08, 0x05, 0x2e}, + {0x3f, 0x1c, 0x17}, + {0x24, 0x0d, 0x33}, + {0x36, 0x08, 0x24}, + {0x10, 0x22, 0x29}, + {0x1c, 0x0a, 0x11}, + {0x25, 0x0f, 0x10}, + {0x24, 0x38, 0x2f}, + {0x25, 0x32, 0x1e}, + {0x06, 0x2a, 0x29}, + {0x3e, 0x3a, 0x28}, + {0x34, 0x17, 0x33}, + {0x18, 0x33, 0x17}, + {0x07, 0x14, 0x1f}, + {0x11, 0x17, 0x20}, + {0x13, 0x0e, 0x14}, + {0x3b, 0x1c, 0x12}, + {0x2a, 0x13, 0x37}, + {0x2a, 0x35, 0x32}, + {0x30, 0x02, 0x25}, + {0x00, 0x07, 0x1f}, + {0x0c, 0x04, 0x2c}, + {0x37, 0x37, 0x30}, + {0x25, 0x12, 0x25}, + {0x12, 0x22, 0x21}, + {0x22, 0x35, 0x33}, + {0x07, 0x20, 0x2d}, + {0x27, 0x0e, 0x30}, + {0x34, 0x19, 0x1a}, + {0x0a, 0x3c, 0x25}, + {0x07, 0x1d, 0x2b}, + {0x31, 0x3a, 0x12}, + {0x1a, 0x3d, 0x37}, + {0x16, 0x15, 0x16}, + {0x39, 0x13, 0x15}, + {0x2d, 0x03, 0x2e}, + {0x06, 0x39, 0x2c}, + {0x16, 0x00, 0x13}, + {0x35, 0x2a, 0x35}, + {0x24, 0x01, 0x18}, + {0x24, 0x37, 0x28}, + {0x25, 0x1b, 0x34}, + {0x25, 0x19, 0x17}, + {0x27, 0x2f, 0x1b}, + {0x27, 0x0d, 0x10}, + {0x36, 0x3c, 0x30}, + {0x3c, 0x33, 0x23}, + {0x3e, 0x27, 0x1e}, + {0x25, 0x2d, 0x29}, + {0x1f, 0x12, 0x21}, + {0x37, 0x32, 0x1f}, + {0x11, 0x21, 0x35}, + {0x30, 0x0c, 0x19}, + {0x25, 0x3d, 0x26}, + {0x17, 0x02, 0x1d}, + {0x14, 0x2e, 0x11}, + {0x38, 0x13, 0x30}, + {0x0a, 0x2b, 0x20}, + {0x1e, 0x10, 0x15}, + {0x37, 0x30, 0x2e}, + {0x1e, 0x04, 0x2c}, + {0x14, 0x34, 0x19}, + {0x08, 0x14, 0x18}, + {0x0e, 0x1c, 0x30}, + {0x1a, 0x2e, 0x1b}, + {0x1f, 0x39, 0x31}, + {0x0c, 0x1c, 0x28}, + {0x3e, 0x33, 0x23}, + {0x0f, 0x13, 0x16}, + {0x25, 0x39, 0x2f}, + {0x14, 0x1b, 0x1a}, + {0x28, 0x3e, 0x21}, + {0x2d, 0x19, 0x11}, + {0x0c, 0x34, 0x32}, + {0x39, 0x31, 0x19}, + {0x1a, 0x08, 0x34}, + {0x09, 0x2f, 0x11}, + {0x30, 0x04, 0x1c}, + {0x02, 0x3b, 0x1b}, + {0x33, 0x21, 0x33}, + {0x38, 0x02, 0x1a}, + {0x31, 0x38, 0x32}, + {0x1f, 0x1d, 0x16}, + {0x17, 0x10, 0x1b}, + {0x32, 0x20, 0x17}, + {0x00, 0x33, 0x12}, + {0x21, 0x0f, 0x27}, + {0x14, 0x19, 0x27}, + {0x24, 0x2c, 0x37}, + {0x25, 0x05, 0x2f}, + {0x3d, 0x25, 0x11}, + {0x12, 0x30, 0x1a}, + {0x16, 0x03, 0x1a}, + {0x14, 0x09, 0x13}, + {0x02, 0x23, 0x22}, + {0x01, 0x3c, 0x10}, + {0x3f, 0x2d, 0x23}, + {0x31, 0x3f, 0x23}, + {0x17, 0x00, 0x33}, + {0x3f, 0x0f, 0x2f}, + {0x26, 0x07, 0x15}, + {0x21, 0x2b, 0x2a}, + {0x38, 0x39, 0x1e}, + {0x09, 0x25, 0x2b}, + {0x3b, 0x30, 0x25}, + {0x12, 0x2d, 0x13}, + {0x32, 0x19, 0x28}, + {0x24, 0x1c, 0x2d}, + {0x35, 0x32, 0x26}, + {0x0d, 0x23, 0x1e}, + {0x1d, 0x07, 0x21}, + {0x0b, 0x34, 0x17}, + {0x2d, 0x32, 0x32}, + {0x3a, 0x3c, 0x35}, + {0x1a, 0x10, 0x33}, + {0x1a, 0x07, 0x22}, + {0x3b, 0x1b, 0x2a}, + {0x33, 0x1f, 0x26}, + {0x0e, 0x35, 0x1a}, + {0x3b, 0x0a, 0x1c}, + {0x11, 0x07, 0x11}, + {0x0d, 0x3c, 0x2d}, + {0x1e, 0x37, 0x29}, + {0x11, 0x05, 0x12}, + {0x15, 0x2f, 0x1c}, + {0x24, 0x31, 0x16}, + {0x2b, 0x21, 0x1b}, + {0x23, 0x10, 0x31}, + {0x02, 0x14, 0x29}, + {0x26, 0x20, 0x16}, + {0x10, 0x17, 0x10}, + {0x0b, 0x0f, 0x33}, + {0x01, 0x2e, 0x14}, + {0x21, 0x0e, 0x37}, + {0x1a, 0x1d, 0x2f}, + {0x1e, 0x30, 0x24}, + {0x04, 0x14, 0x2d}, + {0x11, 0x00, 0x30}, + {0x08, 0x2a, 0x1d}, + {0x1d, 0x22, 0x21}, + {0x24, 0x2c, 0x37}, + {0x24, 0x11, 0x12}, + {0x04, 0x2e, 0x28}, + {0x1d, 0x18, 0x23}, + {0x3c, 0x16, 0x16}, + {0x10, 0x17, 0x31}, + {0x20, 0x21, 0x12}, + {0x33, 0x3e, 0x34}, + {0x06, 0x13, 0x13}, + {0x17, 0x38, 0x2b}, + {0x14, 0x0d, 0x15}, + {0x24, 0x3b, 0x2b}, + {0x34, 0x3b, 0x1e}, + {0x18, 0x07, 0x34}, + {0x37, 0x1d, 0x1f}, + {0x0b, 0x29, 0x20}, + {0x12, 0x1e, 0x1d}, + {0x1a, 0x24, 0x24}, + {0x3d, 0x28, 0x24}, + {0x0b, 0x12, 0x33}, + {0x1b, 0x3a, 0x22}, + {0x14, 0x13, 0x2a}, + {0x31, 0x38, 0x15}, + {0x37, 0x2b, 0x2e}, + {0x19, 0x1e, 0x2c}, + {0x3f, 0x1b, 0x2a}, + {0x33, 0x1f, 0x33}, + {0x3f, 0x15, 0x29}, + {0x01, 0x1e, 0x18}, + {0x1f, 0x22, 0x19}, + {0x33, 0x3c, 0x34}, + {0x1e, 0x12, 0x22}, + {0x0d, 0x37, 0x2c}, + {0x0f, 0x08, 0x31}, + {0x2e, 0x09, 0x36}, + {0x01, 0x05, 0x1e}, + {0x1c, 0x04, 0x1e}, + {0x0c, 0x01, 0x1c}, + {0x29, 0x28, 0x2f}, + {0x39, 0x2d, 0x14}, + {0x09, 0x22, 0x36}, + {0x04, 0x37, 0x37}, + {0x2d, 0x2f, 0x35}, + {0x24, 0x23, 0x1b}, + {0x08, 0x20, 0x32}, + {0x20, 0x1f, 0x34}, + {0x02, 0x31, 0x19}, + {0x18, 0x13, 0x36}, + {0x06, 0x2b, 0x1e}, + {0x0e, 0x1b, 0x10}, + {0x2f, 0x0e, 0x1c}, + {0x11, 0x38, 0x13}, + {0x01, 0x37, 0x19}, + {0x14, 0x11, 0x26}, + {0x31, 0x3d, 0x33}, + {0x1d, 0x1b, 0x34}, + {0x25, 0x31, 0x2f}, + {0x11, 0x0a, 0x2f}, + {0x39, 0x17, 0x1b}, + {0x05, 0x0e, 0x13}, + {0x29, 0x25, 0x22}, + {0x15, 0x0d, 0x20}, + {0x2b, 0x27, 0x21}, + {0x3e, 0x24, 0x27}, + {0x2a, 0x2b, 0x16}, + {0x24, 0x3d, 0x15}, + {0x15, 0x30, 0x31}, + {0x0f, 0x33, 0x24}, + {0x06, 0x16, 0x13}, + {0x06, 0x31, 0x10}, + {0x2e, 0x3f, 0x10}, + {0x05, 0x0d, 0x2f}, + {0x3c, 0x1f, 0x19}, + {0x12, 0x13, 0x24}, + {0x0f, 0x33, 0x36}, + {0x15, 0x3b, 0x33}, + {0x03, 0x0f, 0x2a}, + {0x3b, 0x3c, 0x2c}, + {0x36, 0x09, 0x29}, + {0x11, 0x3b, 0x27}, + {0x28, 0x2b, 0x31}, + {0x1a, 0x0e, 0x2f}, + {0x39, 0x2c, 0x31}, + {0x0e, 0x3c, 0x35}, + {0x2c, 0x24, 0x33}, + {0x3d, 0x11, 0x2b}, + {0x07, 0x3c, 0x37}, + {0x14, 0x18, 0x13}, + {0x1d, 0x3f, 0x2e}, + {0x30, 0x12, 0x25}, + {0x26, 0x1d, 0x11}, + {0x07, 0x11, 0x1e}, + {0x34, 0x01, 0x11}, + {0x0b, 0x39, 0x21}, + {0x29, 0x02, 0x29}, + {0x15, 0x10, 0x1a}, + {0x30, 0x1f, 0x35}, + {0x3c, 0x2b, 0x2a}, + {0x30, 0x3b, 0x36}, + {0x20, 0x1a, 0x23}, + {0x32, 0x24, 0x2b}, + {0x15, 0x20, 0x1c}, + {0x25, 0x3d, 0x36}, + {0x2d, 0x14, 0x31}, + {0x18, 0x23, 0x17}, + {0x18, 0x05, 0x13}, + {0x34, 0x30, 0x37}, + {0x0e, 0x39, 0x23}, + {0x1d, 0x1f, 0x17}, + {0x01, 0x15, 0x2f}, + {0x0b, 0x3e, 0x1b}, + {0x0d, 0x19, 0x2e}, + {0x31, 0x38, 0x1c}, + {0x15, 0x34, 0x15}, + {0x13, 0x19, 0x29}, + {0x19, 0x14, 0x27}, + {0x15, 0x18, 0x23}, + {0x29, 0x0c, 0x27}, + {0x2d, 0x0e, 0x17}, + {0x34, 0x18, 0x10}, + {0x3b, 0x1e, 0x29}, + {0x34, 0x2c, 0x22}, + {0x31, 0x08, 0x13}, + {0x1d, 0x18, 0x1a}, + {0x1c, 0x0b, 0x2a}, + {0x19, 0x1e, 0x1a}, + {0x23, 0x27, 0x17}, + {0x3b, 0x0e, 0x37}, + {0x19, 0x2b, 0x16}, + {0x2f, 0x08, 0x21}, + {0x37, 0x02, 0x20}, + {0x0b, 0x32, 0x30}, + {0x16, 0x05, 0x30}, + {0x13, 0x05, 0x1a}, + {0x07, 0x39, 0x19}, + {0x0c, 0x3b, 0x2a}, + {0x15, 0x05, 0x30}, + {0x30, 0x05, 0x19}, + {0x13, 0x00, 0x12}, + {0x27, 0x16, 0x2a}, + {0x0f, 0x28, 0x27}, + {0x0c, 0x23, 0x2f}, + {0x39, 0x28, 0x2a}, + {0x24, 0x25, 0x1f}, + {0x18, 0x29, 0x14}, + {0x16, 0x05, 0x1a}, + {0x35, 0x2f, 0x26}, + {0x0a, 0x3a, 0x29}, + {0x34, 0x2c, 0x36}, + {0x2e, 0x3a, 0x15}, + {0x1a, 0x0a, 0x2d}, + {0x16, 0x14, 0x2e}, + {0x35, 0x28, 0x2a}, + {0x35, 0x0f, 0x11}, + {0x11, 0x32, 0x19}, + {0x20, 0x1a, 0x28}, + {0x17, 0x1a, 0x28}, + {0x16, 0x33, 0x25}, + {0x13, 0x2c, 0x29}, + {0x09, 0x16, 0x33}, + {0x1d, 0x27, 0x26}, + {0x15, 0x0c, 0x2f}, + {0x22, 0x1c, 0x19}, + {0x29, 0x33, 0x10}, + {0x2d, 0x11, 0x1b}, + {0x16, 0x19, 0x2e}, + {0x0d, 0x0c, 0x28}, + {0x37, 0x3a, 0x34}, + {0x2a, 0x1d, 0x37}, + {0x30, 0x0a, 0x36}, + {0x24, 0x39, 0x1b}, + {0x39, 0x0a, 0x32}, + {0x11, 0x03, 0x2d}, + {0x32, 0x1d, 0x30}, + {0x38, 0x1e, 0x27}, + {0x2e, 0x17, 0x18}, + {0x16, 0x17, 0x2a}, + {0x36, 0x3b, 0x31}, + {0x17, 0x04, 0x19}, + {0x3a, 0x25, 0x2d}, + {0x00, 0x36, 0x27}, + {0x25, 0x12, 0x33}, + {0x06, 0x0a, 0x14}, + {0x11, 0x05, 0x2f}, + {0x03, 0x35, 0x2f}, + {0x0b, 0x34, 0x29}, + {0x00, 0x31, 0x13}, + {0x27, 0x0f, 0x1c}, + {0x1d, 0x06, 0x2d}, + {0x1c, 0x30, 0x27}, + {0x2f, 0x2a, 0x27}, + {0x16, 0x20, 0x31}, + {0x33, 0x2b, 0x2b}, + {0x05, 0x30, 0x36}, + {0x29, 0x23, 0x35}, + {0x10, 0x16, 0x2f}, + {0x2d, 0x20, 0x29}, + {0x37, 0x13, 0x24}, + {0x2d, 0x0e, 0x25}, + {0x08, 0x0a, 0x18}, + {0x0f, 0x03, 0x1b}, + {0x31, 0x0c, 0x37}, + {0x1e, 0x34, 0x31}, + {0x1b, 0x0e, 0x25}, + {0x1a, 0x07, 0x34}, + {0x0d, 0x3c, 0x33}, + {0x00, 0x3a, 0x36}, + {0x04, 0x27, 0x12}, + {0x23, 0x18, 0x24}, + {0x0d, 0x0b, 0x18}, + {0x31, 0x32, 0x37}, + {0x00, 0x0d, 0x21}, + {0x32, 0x10, 0x12}, + {0x26, 0x0d, 0x19}, + {0x29, 0x24, 0x2b}, + {0x3d, 0x21, 0x1f}, + {0x1e, 0x1b, 0x28}, + {0x0d, 0x12, 0x28}, + {0x35, 0x1e, 0x23}, + {0x0a, 0x2e, 0x22}, + {0x27, 0x27, 0x35}, + {0x01, 0x0e, 0x20}, + {0x31, 0x39, 0x29}, + {0x3b, 0x24, 0x36}, + {0x14, 0x10, 0x33}, + {0x18, 0x2c, 0x26}, + {0x04, 0x2d, 0x15}, + {0x1a, 0x11, 0x37}, + {0x0f, 0x0b, 0x14}, + {0x0e, 0x2c, 0x2c}, + {0x21, 0x17, 0x2c}, + {0x16, 0x21, 0x35}, + {0x3e, 0x10, 0x10}, + {0x0a, 0x05, 0x1e}, + {0x3b, 0x09, 0x13}, + {0x26, 0x18, 0x1e}, + {0x23, 0x0c, 0x1a}, + {0x33, 0x37, 0x1f}, + {0x09, 0x12, 0x35}, + {0x3d, 0x0d, 0x15}, + {0x36, 0x06, 0x24}, + {0x33, 0x30, 0x29}, + {0x3b, 0x0f, 0x28}, + {0x34, 0x2a, 0x2c}, + {0x02, 0x12, 0x35}, + {0x09, 0x22, 0x31}, + {0x3b, 0x31, 0x1c}, + {0x33, 0x22, 0x27}, + {0x3d, 0x34, 0x15}, + {0x14, 0x22, 0x28}, + {0x28, 0x10, 0x1e}, + {0x21, 0x31, 0x10}, + {0x2d, 0x16, 0x21}, + {0x1e, 0x05, 0x33}, + {0x0f, 0x30, 0x31}, + {0x0e, 0x1a, 0x35}, + {0x38, 0x2e, 0x28}, + {0x26, 0x37, 0x1e}, + {0x2b, 0x13, 0x33}, + {0x1f, 0x1e, 0x37}, + {0x0a, 0x28, 0x24}, + {0x32, 0x1c, 0x1a}, + {0x1f, 0x3f, 0x19}, + {0x39, 0x39, 0x29}, + {0x2c, 0x1b, 0x14}, + {0x15, 0x2a, 0x17}, + {0x32, 0x0f, 0x21}, + {0x30, 0x21, 0x18}, + {0x23, 0x2a, 0x27}, + {0x3d, 0x07, 0x10}, + {0x0b, 0x3f, 0x2f}, + {0x31, 0x02, 0x2e}, + {0x08, 0x39, 0x2f}, + {0x3f, 0x20, 0x18}, + {0x2d, 0x34, 0x11}, + {0x2e, 0x34, 0x10}, + {0x26, 0x12, 0x23}, + {0x25, 0x0a, 0x37}, + {0x34, 0x09, 0x25}, + {0x0a, 0x3e, 0x16}, + {0x1a, 0x17, 0x11}, + {0x38, 0x1c, 0x20}, + {0x11, 0x21, 0x26}, + {0x05, 0x0f, 0x18}, + {0x26, 0x2b, 0x32}, + {0x0a, 0x0c, 0x16}, + {0x03, 0x29, 0x1d}, + {0x29, 0x3b, 0x23}, + {0x16, 0x1b, 0x29}, + {0x07, 0x09, 0x17}, + {0x17, 0x2c, 0x1c}, + {0x35, 0x33, 0x30}, + {0x17, 0x12, 0x1e}, + {0x3d, 0x1a, 0x2b}, + {0x21, 0x1d, 0x10}, + {0x0a, 0x08, 0x17}, + {0x14, 0x3c, 0x36}, + {0x28, 0x36, 0x36}, + {0x3b, 0x20, 0x1b}, + {0x13, 0x22, 0x1d}, + {0x13, 0x3a, 0x15}, + {0x02, 0x23, 0x2c}, + {0x3e, 0x19, 0x14}, + {0x39, 0x3c, 0x1a}, + {0x10, 0x08, 0x1e}, + {0x0a, 0x13, 0x29}, + {0x3f, 0x38, 0x2c}, + {0x07, 0x23, 0x1f}, + {0x19, 0x2a, 0x24}, + {0x14, 0x3c, 0x1f}, + {0x0d, 0x04, 0x37}, + {0x1a, 0x2f, 0x28}, + {0x2a, 0x1d, 0x1e}, + {0x11, 0x37, 0x29}, + {0x28, 0x27, 0x12}, + {0x0d, 0x00, 0x26}, + {0x0a, 0x3c, 0x26}, + {0x1f, 0x1c, 0x33}, + {0x04, 0x3a, 0x2c}, + {0x24, 0x3d, 0x2b}, + {0x26, 0x31, 0x2f}, + {0x13, 0x1c, 0x21}, + {0x3e, 0x12, 0x23}, + {0x36, 0x0a, 0x1a}, + {0x2d, 0x1e, 0x19}, + {0x05, 0x1f, 0x1b}, + {0x1e, 0x0a, 0x1f}, + {0x20, 0x08, 0x24}, + {0x2c, 0x0c, 0x33}, + {0x1d, 0x1f, 0x11}, + {0x0e, 0x12, 0x10}, + {0x27, 0x12, 0x19}, + {0x2a, 0x13, 0x31}, + {0x1c, 0x04, 0x30}, + {0x1a, 0x38, 0x1f}, + {0x2c, 0x35, 0x25}, + {0x07, 0x0b, 0x33}, + {0x2d, 0x02, 0x1a}, + {0x2a, 0x35, 0x35}, + {0x16, 0x2f, 0x14}, + {0x11, 0x31, 0x33}, + {0x2c, 0x31, 0x1e}, + {0x3c, 0x3a, 0x27}, + {0x3c, 0x2b, 0x12}, + {0x27, 0x1d, 0x12}, + {0x36, 0x2c, 0x2b}, + {0x25, 0x3b, 0x35}, + {0x12, 0x3d, 0x27}, + {0x13, 0x23, 0x19}, + {0x33, 0x2c, 0x26}, + {0x09, 0x3c, 0x12}, + {0x15, 0x1a, 0x23}, + {0x21, 0x07, 0x1a}, + {0x22, 0x25, 0x20}, + {0x19, 0x1b, 0x2c}, + {0x3a, 0x19, 0x35}, + {0x05, 0x26, 0x1d}, + {0x23, 0x22, 0x25}, + {0x0e, 0x1e, 0x11}, + {0x13, 0x30, 0x12}, + {0x2c, 0x22, 0x25}, + {0x0a, 0x1d, 0x18}, + {0x23, 0x3e, 0x1d}, + {0x02, 0x28, 0x25}, + {0x21, 0x0e, 0x20}, + {0x21, 0x22, 0x37}, + {0x18, 0x33, 0x27}, + {0x23, 0x23, 0x31}, + {0x24, 0x1a, 0x1a}, + {0x3e, 0x25, 0x24}, + {0x24, 0x01, 0x18}, + {0x34, 0x10, 0x22}, + {0x07, 0x00, 0x37}, + {0x06, 0x20, 0x20}, + {0x3a, 0x02, 0x2b}, + {0x07, 0x2c, 0x2c}, + {0x09, 0x2f, 0x2a}, + {0x01, 0x32, 0x2c}, + {0x00, 0x35, 0x13}, + {0x2b, 0x3c, 0x1f}, + {0x36, 0x37, 0x1e}, + {0x20, 0x35, 0x1d}, + {0x0c, 0x07, 0x33}, + {0x16, 0x08, 0x12}, + {0x3f, 0x36, 0x11}, + {0x0b, 0x1f, 0x2d}, + {0x21, 0x20, 0x33}, + {0x17, 0x1a, 0x2e}, + {0x16, 0x01, 0x2f}, + {0x2f, 0x1c, 0x34}, + {0x29, 0x31, 0x2e}, + {0x3b, 0x38, 0x31}, + {0x0d, 0x16, 0x12}, + {0x07, 0x29, 0x24}, + {0x33, 0x3c, 0x34}, + {0x3e, 0x1e, 0x18}, + {0x30, 0x02, 0x34}, + {0x2a, 0x34, 0x1b}, + {0x2e, 0x23, 0x18}, + {0x34, 0x00, 0x1f}, + {0x20, 0x0e, 0x28}, + {0x15, 0x33, 0x37}, + {0x27, 0x35, 0x23}, + {0x37, 0x3e, 0x11}, + {0x32, 0x2e, 0x36}, + {0x3a, 0x02, 0x2b}, + {0x00, 0x36, 0x1d}, + {0x13, 0x29, 0x16}, + {0x08, 0x2b, 0x37}, + {0x08, 0x02, 0x27}, + {0x32, 0x2d, 0x34}, + {0x30, 0x36, 0x29}, + {0x2e, 0x10, 0x12}, + {0x3c, 0x2e, 0x2a}, + {0x04, 0x33, 0x30}, + {0x3f, 0x01, 0x22}, + {0x37, 0x14, 0x1d}, + {0x27, 0x00, 0x2f}, + {0x0c, 0x39, 0x26}, + {0x27, 0x04, 0x21}, + {0x19, 0x08, 0x1d}, + {0x01, 0x04, 0x1e}, + {0x27, 0x1b, 0x2b}, + {0x31, 0x17, 0x1f}, + {0x07, 0x01, 0x2d}, + {0x2e, 0x3b, 0x1f}, + {0x34, 0x24, 0x31}, + {0x32, 0x2b, 0x24}, + {0x0e, 0x07, 0x1e}, + {0x0f, 0x33, 0x10}, + {0x16, 0x21, 0x32}, + {0x39, 0x02, 0x1a}, + {0x33, 0x3d, 0x22}, + {0x0c, 0x25, 0x1a}, + {0x29, 0x29, 0x28}, + {0x3a, 0x32, 0x26}, + {0x0b, 0x13, 0x22}, + {0x1f, 0x0f, 0x1c}, + {0x04, 0x2c, 0x20}, + {0x39, 0x1a, 0x1b}, + {0x1a, 0x2a, 0x1f}, + {0x24, 0x13, 0x1a}, + {0x31, 0x3b, 0x33}, + {0x39, 0x23, 0x28}, + {0x31, 0x07, 0x31}, + {0x1f, 0x10, 0x20}, + {0x29, 0x17, 0x32}, + {0x26, 0x3b, 0x2d}, + {0x02, 0x3c, 0x1c}, + {0x0e, 0x00, 0x20}, + {0x14, 0x3e, 0x37}, + {0x01, 0x0f, 0x2d}, + {0x06, 0x12, 0x27}, + {0x30, 0x13, 0x19}, + {0x00, 0x33, 0x2a}, + {0x0c, 0x07, 0x27}, + {0x11, 0x3a, 0x1c}, + {0x15, 0x0a, 0x13}, + {0x1f, 0x0d, 0x2a}, + {0x37, 0x07, 0x2a}, + {0x34, 0x35, 0x34}, + {0x28, 0x16, 0x27}, + {0x06, 0x02, 0x36}, + {0x09, 0x23, 0x30}, + {0x14, 0x02, 0x28}, + {0x39, 0x32, 0x34}, + {0x24, 0x35, 0x12}, + {0x12, 0x22, 0x26}, + {0x09, 0x07, 0x33}, + {0x0f, 0x3e, 0x1e}, + {0x00, 0x3c, 0x33}, + {0x10, 0x37, 0x14}, + {0x3a, 0x03, 0x25}, + {0x2d, 0x1e, 0x24}, + {0x36, 0x36, 0x26}, + {0x1f, 0x3c, 0x1a}, + {0x37, 0x33, 0x25}, + {0x23, 0x13, 0x1f}, + {0x33, 0x0d, 0x13}, + {0x25, 0x30, 0x1e}, + {0x17, 0x03, 0x18}, + {0x18, 0x18, 0x14}, + {0x30, 0x07, 0x22}, + {0x3e, 0x33, 0x21}, + {0x14, 0x37, 0x16}, + {0x16, 0x00, 0x12}, + {0x2c, 0x12, 0x2f}, + {0x25, 0x3f, 0x1e}, + {0x24, 0x19, 0x16}, + {0x16, 0x0f, 0x35}, + {0x2d, 0x10, 0x11}, + {0x24, 0x2a, 0x28}, + {0x19, 0x25, 0x2e}, + {0x0c, 0x16, 0x1f}, + {0x38, 0x21, 0x36}, + {0x3d, 0x1a, 0x2f}, + {0x3b, 0x32, 0x12}, + {0x36, 0x13, 0x29}, + {0x0e, 0x30, 0x31}, + {0x19, 0x07, 0x2f}, + {0x25, 0x23, 0x28}, + {0x20, 0x08, 0x29}, + {0x2a, 0x00, 0x30}, + {0x30, 0x38, 0x23}, + {0x1e, 0x0f, 0x1f}, + {0x3b, 0x1b, 0x30}, + {0x3a, 0x37, 0x2f}, + {0x39, 0x37, 0x35}, + {0x39, 0x2d, 0x2f}, + {0x1f, 0x2e, 0x1e}, + {0x1a, 0x2b, 0x1e}, + {0x14, 0x17, 0x20}, + {0x2f, 0x03, 0x11}, + {0x1d, 0x00, 0x30}, + {0x17, 0x2b, 0x1d}, + {0x35, 0x28, 0x25}, + {0x3b, 0x0f, 0x11}, + {0x09, 0x04, 0x2e}, + {0x23, 0x11, 0x1e}, + {0x13, 0x37, 0x1e}, + {0x37, 0x37, 0x1e}, + {0x07, 0x01, 0x32}, + {0x14, 0x06, 0x32}, + {0x11, 0x0c, 0x2e}, + {0x36, 0x2e, 0x24}, + {0x15, 0x2a, 0x1c}, + {0x22, 0x15, 0x34}, + {0x2c, 0x1e, 0x35}, + {0x22, 0x27, 0x33}, + {0x19, 0x3f, 0x2d}, + {0x21, 0x33, 0x15}, + {0x26, 0x1a, 0x11}, + {0x16, 0x3e, 0x12}, + {0x2b, 0x24, 0x15}, + {0x3c, 0x0f, 0x2d}, + {0x31, 0x15, 0x36}, + {0x3f, 0x24, 0x1d}, + {0x25, 0x01, 0x37}, + {0x33, 0x16, 0x1a}, + {0x1f, 0x0e, 0x10}, + {0x2f, 0x0b, 0x12}, + {0x2a, 0x1a, 0x25}, + {0x17, 0x0a, 0x35}, + {0x09, 0x28, 0x35}, + {0x02, 0x13, 0x36}, + {0x34, 0x2f, 0x17}, + {0x03, 0x04, 0x31}, + {0x3e, 0x26, 0x11}, + {0x35, 0x33, 0x31}, + {0x22, 0x17, 0x23}, + {0x1d, 0x05, 0x2b}, + {0x2e, 0x27, 0x20}, + {0x03, 0x2b, 0x1d}, + {0x01, 0x19, 0x1e}, + {0x0e, 0x05, 0x18}, + {0x16, 0x25, 0x17}, + {0x02, 0x28, 0x18}, + {0x19, 0x0b, 0x24}, + {0x3e, 0x35, 0x16}, + {0x2e, 0x29, 0x25}, + {0x3e, 0x38, 0x1e}, + {0x3a, 0x2f, 0x12}, + {0x14, 0x17, 0x2d}, + {0x11, 0x12, 0x30}, + {0x15, 0x31, 0x18}, + {0x08, 0x0b, 0x29}, + {0x2d, 0x00, 0x33}, + {0x2c, 0x06, 0x1a}, + {0x14, 0x1c, 0x2e}, + {0x04, 0x08, 0x12}, + {0x1b, 0x2b, 0x2d}, + {0x2a, 0x37, 0x33}, + {0x10, 0x27, 0x2c}, + {0x1d, 0x0e, 0x34}, + {0x20, 0x02, 0x12}, + {0x1e, 0x1a, 0x2e}, + {0x07, 0x0b, 0x10}, + {0x36, 0x1e, 0x33}, + {0x2b, 0x28, 0x1b}, + {0x31, 0x25, 0x1f}, + {0x38, 0x3a, 0x2f}, + {0x39, 0x30, 0x2f}, + {0x12, 0x09, 0x14}, + {0x0e, 0x08, 0x19}, + {0x00, 0x0d, 0x2c}, + {0x1b, 0x0e, 0x34}, + {0x11, 0x25, 0x15}, + {0x0c, 0x2d, 0x26}, + {0x36, 0x2c, 0x16}, + {0x31, 0x31, 0x2c}, + {0x03, 0x1a, 0x16}, + {0x1c, 0x32, 0x14}, + {0x0a, 0x3e, 0x36}, + {0x33, 0x1b, 0x27}, + {0x1f, 0x32, 0x18}, + {0x33, 0x26, 0x33}, + {0x1a, 0x13, 0x1a}, + {0x0f, 0x34, 0x1c}, + {0x35, 0x2c, 0x2f}, + {0x38, 0x03, 0x18}, + {0x15, 0x0f, 0x27}, + {0x31, 0x29, 0x20}, + {0x28, 0x0e, 0x28}, + {0x31, 0x2c, 0x2e}, + {0x15, 0x19, 0x1b}, + {0x10, 0x03, 0x2f}, + {0x2e, 0x2a, 0x32}, + {0x2a, 0x27, 0x1b}, + {0x36, 0x04, 0x1e}, + {0x3b, 0x04, 0x21}, + {0x07, 0x2f, 0x19}, + {0x27, 0x1d, 0x1d}, + {0x3c, 0x3d, 0x2e}, + {0x25, 0x08, 0x32}, + {0x3b, 0x34, 0x2a}, + {0x0c, 0x10, 0x13}, + {0x25, 0x35, 0x1a}, + {0x2f, 0x19, 0x28}, + {0x17, 0x00, 0x2b}, + {0x0a, 0x1c, 0x17}, + {0x0a, 0x11, 0x1b}, + {0x35, 0x13, 0x37}, + {0x29, 0x1c, 0x28}, + {0x0c, 0x31, 0x35}, + {0x3c, 0x10, 0x1a}, + {0x1b, 0x3a, 0x2d}, + {0x3a, 0x1c, 0x18}, + {0x22, 0x10, 0x2d}, + {0x1c, 0x3c, 0x12}, + {0x17, 0x18, 0x2a}, + {0x0b, 0x2b, 0x2f}, + {0x2d, 0x04, 0x2e}, + {0x3c, 0x13, 0x23}, + {0x01, 0x1c, 0x2e}, + {0x14, 0x16, 0x22}, + {0x0c, 0x24, 0x13}, + {0x35, 0x37, 0x34}, + {0x1b, 0x30, 0x1e}, + {0x3a, 0x1c, 0x20}, + {0x06, 0x06, 0x36}, + {0x09, 0x15, 0x1a}, + {0x1b, 0x1a, 0x27}, + {0x0f, 0x33, 0x35}, + {0x37, 0x06, 0x23}, + {0x3a, 0x12, 0x1d}, + {0x00, 0x16, 0x29}, + {0x0e, 0x1d, 0x35}, + {0x3f, 0x38, 0x16}, + {0x2a, 0x3c, 0x34}, + {0x13, 0x32, 0x10}, + {0x17, 0x2c, 0x37}, + {0x29, 0x2a, 0x1e}, + {0x35, 0x2f, 0x2d}, + {0x3c, 0x2a, 0x11}, + {0x28, 0x13, 0x21}, + {0x19, 0x1e, 0x34}, + {0x0c, 0x06, 0x2d}, + {0x09, 0x04, 0x1c}, + {0x1d, 0x2f, 0x26}, + {0x39, 0x07, 0x16}, + {0x14, 0x04, 0x2d}, + {0x3a, 0x2f, 0x2e}, + {0x29, 0x15, 0x35}, + {0x24, 0x02, 0x36}, + {0x3f, 0x02, 0x1a}, + {0x0f, 0x18, 0x24}, + {0x16, 0x1d, 0x19}, + {0x14, 0x16, 0x10}, + {0x29, 0x1b, 0x13}, + {0x15, 0x0e, 0x19}, + {0x3a, 0x2e, 0x2b}, + {0x08, 0x30, 0x15}, + {0x35, 0x16, 0x30}, + {0x2e, 0x18, 0x35}, + {0x3b, 0x0b, 0x1c}, + {0x3a, 0x18, 0x13}, + {0x29, 0x13, 0x1e}, + {0x20, 0x13, 0x27}, + {0x04, 0x1d, 0x34}, + {0x00, 0x38, 0x19}, + {0x08, 0x39, 0x32}, + {0x20, 0x10, 0x26}, + {0x08, 0x02, 0x28}, + {0x3f, 0x0f, 0x16}, + {0x30, 0x1f, 0x19}, + {0x20, 0x2d, 0x10}, + {0x38, 0x17, 0x1c}, + {0x18, 0x31, 0x27}, + {0x33, 0x38, 0x30}, + {0x16, 0x33, 0x23}, + {0x00, 0x01, 0x36}, + {0x0d, 0x02, 0x23}, + {0x39, 0x04, 0x1f}, + {0x0e, 0x30, 0x24}, + {0x06, 0x01, 0x2c}, + {0x34, 0x33, 0x35}, + {0x16, 0x34, 0x2e}, + {0x32, 0x16, 0x24}, + {0x26, 0x39, 0x34}, + {0x1f, 0x3c, 0x1d}, + {0x28, 0x1d, 0x37}, + {0x17, 0x15, 0x2b}, + {0x27, 0x39, 0x30}, + {0x0b, 0x1b, 0x18}, + {0x35, 0x20, 0x2d}, + {0x0b, 0x35, 0x1c}, + {0x03, 0x0e, 0x21}, + {0x06, 0x0c, 0x20}, + {0x02, 0x18, 0x34}, + {0x1e, 0x36, 0x2d}, + {0x16, 0x0c, 0x19}, + {0x25, 0x09, 0x2c}, + {0x37, 0x05, 0x2e}, + {0x2e, 0x2b, 0x2c}, + {0x24, 0x1a, 0x14}, + {0x27, 0x04, 0x10}, + {0x32, 0x38, 0x33}, + {0x37, 0x15, 0x35}, + {0x11, 0x3f, 0x1d}, + {0x23, 0x23, 0x1f}, + {0x29, 0x3f, 0x1d}, + {0x1a, 0x3c, 0x2b}, + {0x1b, 0x2c, 0x2c}, + {0x38, 0x3b, 0x36}, + {0x04, 0x13, 0x33}, + {0x2c, 0x14, 0x12}, + {0x1a, 0x09, 0x1b}, + {0x36, 0x11, 0x24}, + {0x3a, 0x3f, 0x11}, + {0x01, 0x0e, 0x2b}, + {0x3b, 0x03, 0x2a}, + {0x08, 0x0d, 0x2b}, + {0x2b, 0x13, 0x27}, + {0x3a, 0x3c, 0x1c}, + {0x3a, 0x15, 0x2a}, + {0x24, 0x00, 0x17}, + {0x3e, 0x0a, 0x15}, + {0x0c, 0x29, 0x2d}, + {0x1f, 0x15, 0x30}, + {0x35, 0x18, 0x19}, + {0x3d, 0x37, 0x37}, + {0x12, 0x38, 0x1b}, + {0x3b, 0x02, 0x20}, + {0x08, 0x21, 0x19}, + {0x2e, 0x36, 0x1d}, + {0x15, 0x3d, 0x24}, + {0x22, 0x0c, 0x27}, + {0x36, 0x3f, 0x33}, + {0x33, 0x12, 0x11}, + {0x1a, 0x19, 0x1f}, + {0x2b, 0x24, 0x12}, + {0x11, 0x2a, 0x18}, + {0x25, 0x32, 0x2a}, + {0x2c, 0x1a, 0x12}, + {0x26, 0x06, 0x10}, + {0x11, 0x29, 0x33}, + {0x2c, 0x09, 0x14}, + {0x2b, 0x12, 0x2b}, + {0x1d, 0x03, 0x24}, + {0x00, 0x12, 0x15}, + {0x22, 0x3d, 0x26}, + {0x15, 0x37, 0x1a}, + {0x0f, 0x12, 0x37}, + {0x24, 0x01, 0x18}, + {0x2a, 0x17, 0x13}, + {0x14, 0x3b, 0x29}, + {0x2a, 0x19, 0x32}, + {0x2d, 0x17, 0x17}, + {0x0b, 0x2c, 0x33}, + {0x07, 0x2d, 0x34}, + {0x07, 0x38, 0x1d}, + {0x1f, 0x36, 0x22}, + {0x11, 0x0a, 0x17}, + {0x14, 0x11, 0x13}, + {0x2a, 0x17, 0x25}, + {0x01, 0x3a, 0x1c}, + {0x26, 0x27, 0x30}, + {0x2d, 0x3b, 0x35}, + {0x3a, 0x30, 0x34}, + {0x06, 0x3a, 0x1c}, + {0x2d, 0x05, 0x13}, + {0x21, 0x32, 0x12}, + {0x3e, 0x1e, 0x2c}, + {0x3a, 0x3f, 0x2d}, + {0x20, 0x2a, 0x34}, + {0x26, 0x03, 0x1a}, + {0x19, 0x27, 0x2e}, + {0x31, 0x04, 0x26}, + {0x2a, 0x3f, 0x30}, + {0x25, 0x23, 0x2a}, + {0x08, 0x08, 0x35}, + {0x2c, 0x30, 0x1e}, + {0x08, 0x05, 0x18}, + {0x06, 0x09, 0x2d}, + {0x19, 0x00, 0x27}, + {0x0d, 0x10, 0x19}, + {0x1c, 0x00, 0x13}, + {0x3d, 0x0b, 0x24}, + {0x2e, 0x1f, 0x16}, + {0x3d, 0x18, 0x34}, + {0x12, 0x1e, 0x15}, + {0x15, 0x39, 0x25}, + {0x33, 0x0f, 0x17}, + {0x1a, 0x1c, 0x1b}, + {0x37, 0x29, 0x1b}, + {0x3b, 0x38, 0x12}, + {0x1d, 0x22, 0x34}, + {0x26, 0x0a, 0x31}, + {0x16, 0x2d, 0x13}, + {0x0d, 0x20, 0x27}, + {0x24, 0x1d, 0x16}, + {0x2e, 0x2b, 0x18}, + {0x16, 0x2a, 0x1b}, + {0x24, 0x17, 0x36}, + {0x02, 0x05, 0x2b}, + {0x37, 0x1a, 0x17}, + {0x11, 0x3d, 0x2c}, + {0x1e, 0x2f, 0x22}, + {0x2c, 0x29, 0x1a}, + {0x2f, 0x04, 0x25}, + {0x36, 0x0c, 0x35}, + {0x30, 0x3e, 0x12}, + {0x11, 0x30, 0x37}, + {0x12, 0x21, 0x2e}, + {0x21, 0x30, 0x17}, + {0x2c, 0x3d, 0x24}, + {0x11, 0x23, 0x14}, + {0x1a, 0x32, 0x17}, + {0x39, 0x27, 0x18}, + {0x0f, 0x24, 0x19}, + {0x00, 0x3d, 0x37}, + {0x2c, 0x3c, 0x1c}, + {0x0b, 0x39, 0x23}, + {0x0e, 0x04, 0x1f}, + {0x1c, 0x31, 0x14}, + {0x00, 0x04, 0x15}, + {0x26, 0x2a, 0x2a}, + {0x20, 0x25, 0x2a}, + {0x0b, 0x3c, 0x33}, + {0x11, 0x0b, 0x2e}, + {0x37, 0x22, 0x2e}, + {0x0e, 0x22, 0x26}, + {0x18, 0x2d, 0x27}, + {0x06, 0x0c, 0x1c}, + {0x26, 0x18, 0x2f}, + {0x3a, 0x01, 0x2a}, + {0x2f, 0x31, 0x34}, + {0x1f, 0x34, 0x1a}, + {0x31, 0x05, 0x10}, + {0x2e, 0x17, 0x34}, + {0x18, 0x22, 0x23}, + {0x23, 0x21, 0x32}, + {0x07, 0x08, 0x22}, + {0x26, 0x1c, 0x22}, + {0x31, 0x12, 0x2f}, + {0x08, 0x1f, 0x10}, + {0x27, 0x15, 0x2a}, + {0x1f, 0x0b, 0x26}, + {0x2f, 0x14, 0x35}, + {0x24, 0x1f, 0x26}, + {0x3b, 0x23, 0x33}, + {0x20, 0x3e, 0x2d}, + {0x17, 0x0c, 0x15}, + {0x13, 0x39, 0x1a}, + {0x30, 0x14, 0x25}, + {0x09, 0x07, 0x17}, + {0x38, 0x38, 0x1f}, + {0x29, 0x24, 0x27}, + {0x17, 0x27, 0x28}, + {0x1b, 0x12, 0x2a}, + {0x2b, 0x3d, 0x2d}, + {0x19, 0x34, 0x1c}, + {0x01, 0x1d, 0x10}, + {0x08, 0x39, 0x11}, + {0x0e, 0x36, 0x1b}, + {0x26, 0x13, 0x10}, + {0x16, 0x28, 0x1e}, + {0x3c, 0x28, 0x17}, + {0x3e, 0x39, 0x34}, + {0x0a, 0x03, 0x2e}, + {0x37, 0x1a, 0x13}, + {0x2b, 0x33, 0x26}, + {0x13, 0x2c, 0x21}, + {0x25, 0x14, 0x10}, + {0x16, 0x0b, 0x35}, + {0x1d, 0x35, 0x33}, + {0x21, 0x08, 0x33}, + {0x28, 0x21, 0x1a}, + {0x12, 0x0c, 0x1b}, + {0x36, 0x2a, 0x19}, + {0x2c, 0x2b, 0x23}, + {0x01, 0x0f, 0x26}, + {0x17, 0x0c, 0x18}, + {0x09, 0x0f, 0x11}, + {0x2b, 0x24, 0x1c}, + {0x09, 0x09, 0x15}, + {0x36, 0x08, 0x13}, + {0x20, 0x39, 0x21}, + {0x00, 0x3a, 0x1f}, + {0x2b, 0x36, 0x31}, + {0x02, 0x37, 0x13}, + {0x04, 0x34, 0x35}, + {0x37, 0x3d, 0x1a}, + {0x17, 0x3d, 0x13}, + {0x2b, 0x36, 0x2f}, + {0x13, 0x1e, 0x13}, + {0x3e, 0x11, 0x33}, + {0x27, 0x3a, 0x2d}, + {0x1e, 0x31, 0x1a}, + {0x03, 0x03, 0x2d}, + {0x25, 0x37, 0x1f}, + {0x11, 0x01, 0x22}, + {0x1c, 0x12, 0x17}, + {0x30, 0x3a, 0x30}, + {0x17, 0x1d, 0x29}, + {0x0e, 0x13, 0x27}, + {0x1a, 0x2e, 0x24}, + {0x2d, 0x00, 0x1c}, + {0x17, 0x28, 0x1d}, + {0x09, 0x1f, 0x2e}, + {0x1a, 0x2d, 0x26}, + {0x0a, 0x13, 0x32}, + {0x3e, 0x00, 0x27}, + {0x0b, 0x3b, 0x30}, + {0x08, 0x3a, 0x2d}, + {0x22, 0x12, 0x1e}, + {0x34, 0x1d, 0x2b}, + {0x26, 0x22, 0x35}, + {0x17, 0x2c, 0x17}, + {0x29, 0x13, 0x2d}, + {0x2d, 0x10, 0x10}, + {0x20, 0x31, 0x23}, + {0x1e, 0x33, 0x18}, + {0x33, 0x06, 0x2d}, + {0x26, 0x14, 0x27}, + {0x22, 0x1d, 0x2a}, + {0x2d, 0x06, 0x18}, + {0x07, 0x09, 0x2e}, + {0x21, 0x15, 0x2e}, + {0x21, 0x38, 0x23}, + {0x35, 0x0b, 0x34}, + {0x24, 0x0b, 0x22}, + {0x1e, 0x01, 0x17}, + {0x0b, 0x24, 0x11}, + {0x17, 0x07, 0x20}, + {0x14, 0x25, 0x32}, + {0x1a, 0x0e, 0x2f}, + {0x35, 0x17, 0x1f}, + {0x0c, 0x08, 0x21}, + {0x30, 0x35, 0x1f}, + {0x0c, 0x0b, 0x20}, + {0x04, 0x10, 0x11}, + {0x35, 0x11, 0x1e}, + {0x33, 0x3d, 0x16}, + {0x1e, 0x2b, 0x1d}, + {0x1a, 0x19, 0x10}, + {0x04, 0x06, 0x22}, + {0x03, 0x3d, 0x24}, + {0x2a, 0x0e, 0x35}, + {0x03, 0x3e, 0x17}, + {0x0b, 0x18, 0x36}, + {0x3d, 0x0d, 0x26}, + {0x35, 0x12, 0x20}, + {0x1f, 0x0d, 0x16}, + {0x23, 0x32, 0x1a}, + {0x00, 0x3d, 0x26}, + {0x30, 0x19, 0x36}, + {0x12, 0x0e, 0x23}, + {0x01, 0x23, 0x28}, + {0x3b, 0x31, 0x11}, + {0x2d, 0x1c, 0x36}, + {0x2a, 0x05, 0x16}, + {0x14, 0x0e, 0x30}, + {0x3a, 0x37, 0x19}, + {0x1f, 0x30, 0x25}, + {0x10, 0x26, 0x2f}, + {0x22, 0x11, 0x1f}, + {0x2e, 0x2b, 0x1e}, + {0x16, 0x16, 0x21}, + {0x32, 0x18, 0x35}, + {0x23, 0x32, 0x1a}, + {0x3d, 0x0d, 0x19}, + {0x39, 0x09, 0x23}, + {0x30, 0x2e, 0x24}, + {0x1e, 0x0f, 0x24}, + {0x09, 0x21, 0x31}, + {0x05, 0x03, 0x11}, + {0x05, 0x22, 0x2a}, + {0x03, 0x07, 0x37}, + {0x04, 0x08, 0x13}, + {0x05, 0x10, 0x34}, + {0x37, 0x14, 0x29}, + {0x0a, 0x24, 0x32}, + {0x34, 0x1e, 0x1b}, + {0x12, 0x17, 0x2e}, + {0x01, 0x02, 0x13}, + {0x0a, 0x0c, 0x11}, + {0x02, 0x14, 0x13}, + {0x0d, 0x25, 0x23}, + {0x00, 0x07, 0x1a}, + {0x1c, 0x28, 0x35}, + {0x08, 0x0e, 0x2c}, + {0x1b, 0x3c, 0x15}, + {0x1c, 0x19, 0x1d}, + {0x32, 0x13, 0x1a}, + {0x1c, 0x00, 0x37}, + {0x22, 0x1b, 0x35}, + {0x39, 0x3e, 0x14}, + {0x32, 0x06, 0x31}, + {0x17, 0x05, 0x2b}, + {0x01, 0x0f, 0x20}, + {0x1e, 0x0f, 0x34}, + {0x18, 0x03, 0x1f}, + {0x2b, 0x00, 0x14}, + {0x15, 0x3a, 0x30}, + {0x25, 0x30, 0x21}, + {0x0b, 0x00, 0x37}, + {0x24, 0x37, 0x1d}, + {0x29, 0x21, 0x16}, + {0x24, 0x0f, 0x2c}, + {0x3e, 0x15, 0x36}, + {0x3c, 0x2d, 0x23}, + {0x3d, 0x3c, 0x17}, + {0x1a, 0x1c, 0x13}, + {0x0a, 0x29, 0x22}, + {0x25, 0x3f, 0x26}, + {0x3b, 0x39, 0x2f}, + {0x1d, 0x08, 0x16}, + {0x0b, 0x19, 0x14}, + {0x12, 0x01, 0x2c}, + {0x35, 0x11, 0x2a}, + {0x02, 0x00, 0x13}, + {0x39, 0x2a, 0x35}, + {0x07, 0x1a, 0x11}, + {0x24, 0x0e, 0x1e}, + {0x0e, 0x2c, 0x15}, + {0x08, 0x31, 0x1b}, + {0x21, 0x1d, 0x26}, + {0x1d, 0x1c, 0x2a}, + {0x1d, 0x24, 0x13}, + {0x01, 0x00, 0x18}, + {0x28, 0x2a, 0x37}, + {0x15, 0x0f, 0x13}, + {0x10, 0x32, 0x36}, + {0x22, 0x13, 0x31}, + {0x13, 0x05, 0x1e}, + {0x17, 0x35, 0x35}, + {0x3b, 0x0e, 0x24}, + {0x35, 0x3a, 0x1d}, + {0x1b, 0x36, 0x1b}, + {0x03, 0x1d, 0x24}, + {0x0f, 0x16, 0x30}, + {0x2d, 0x09, 0x25}, + {0x05, 0x21, 0x13}, + {0x0a, 0x27, 0x36}, + {0x04, 0x0d, 0x1c}, + {0x06, 0x3e, 0x21}, + {0x2a, 0x27, 0x33}, + {0x28, 0x0e, 0x15}, + {0x0b, 0x17, 0x1d}, + {0x1d, 0x32, 0x2d}, + {0x08, 0x3d, 0x29}, + {0x21, 0x32, 0x17}, + {0x33, 0x31, 0x22}, + {0x0e, 0x03, 0x21}, + {0x0d, 0x0b, 0x16}, + {0x3e, 0x2a, 0x2e}, + {0x19, 0x36, 0x2a}, + {0x0d, 0x00, 0x14}, + {0x22, 0x07, 0x36}, + {0x0a, 0x09, 0x15}, + {0x14, 0x10, 0x22}, + {0x07, 0x16, 0x2c}, + {0x36, 0x13, 0x15}, + {0x09, 0x2f, 0x1b}, + {0x20, 0x3b, 0x2e}, + {0x3a, 0x3a, 0x16}, + {0x0d, 0x15, 0x2a}, + {0x39, 0x13, 0x2b}, + {0x0b, 0x01, 0x2a}, + {0x13, 0x17, 0x1e}, + {0x08, 0x17, 0x1e}, + {0x0c, 0x0f, 0x34}, + {0x1f, 0x31, 0x12}, + {0x07, 0x3a, 0x1d}, + {0x35, 0x1e, 0x12}, + {0x24, 0x2c, 0x15}, + {0x0e, 0x21, 0x19}, + {0x34, 0x3b, 0x33}, + {0x19, 0x0f, 0x28}, + {0x10, 0x2f, 0x2e}, + {0x23, 0x27, 0x31}, + {0x39, 0x2e, 0x18}, + {0x3c, 0x3f, 0x24}, + {0x07, 0x23, 0x30}, + {0x28, 0x13, 0x35}, + {0x13, 0x0a, 0x10}, + {0x35, 0x19, 0x33}, + {0x23, 0x28, 0x29}, + {0x13, 0x2f, 0x1a}, + {0x3a, 0x19, 0x14}, + {0x37, 0x36, 0x26}, + {0x20, 0x3b, 0x15}, + {0x37, 0x39, 0x10}, + {0x3c, 0x21, 0x34}, + {0x1c, 0x38, 0x30}, + {0x15, 0x07, 0x26}, + {0x27, 0x21, 0x19}, + {0x18, 0x11, 0x23}, + {0x30, 0x28, 0x37}, + {0x32, 0x2d, 0x1f}, + {0x2c, 0x3f, 0x30}, + {0x1d, 0x2f, 0x26}, + {0x01, 0x11, 0x1c}, + {0x3b, 0x0f, 0x12}, + {0x2a, 0x17, 0x27}, + {0x05, 0x00, 0x1b}, + {0x25, 0x1c, 0x32}, + {0x04, 0x22, 0x2d}, + {0x10, 0x0f, 0x25}, + {0x0d, 0x39, 0x30}, + {0x0b, 0x2e, 0x27}, + {0x2d, 0x34, 0x15}, + {0x3e, 0x30, 0x36}, + {0x16, 0x26, 0x2a}, + {0x05, 0x3f, 0x2b}, + {0x20, 0x3b, 0x2e}, + {0x3b, 0x1c, 0x2f}, + {0x01, 0x18, 0x16}, + {0x16, 0x3d, 0x10}, + {0x0a, 0x1f, 0x18}, + {0x17, 0x0f, 0x22}, + {0x06, 0x13, 0x11}, + {0x38, 0x21, 0x17}, + {0x17, 0x0a, 0x37}, + {0x1c, 0x19, 0x30}, + {0x16, 0x38, 0x31}, + {0x30, 0x10, 0x36}, + {0x31, 0x2f, 0x26}, + {0x3c, 0x1b, 0x23}, + {0x33, 0x2f, 0x19}, + {0x16, 0x35, 0x25}, + {0x3a, 0x18, 0x1f}, + {0x37, 0x01, 0x1e}, + {0x0d, 0x18, 0x12}, + {0x1f, 0x1c, 0x1b}, + {0x07, 0x34, 0x2d}, + {0x0b, 0x3f, 0x33}, + {0x1e, 0x34, 0x1d}, + {0x2c, 0x13, 0x2c}, + {0x20, 0x20, 0x13}, + {0x20, 0x0f, 0x31}, + {0x08, 0x0f, 0x24}, + {0x18, 0x3d, 0x1c}, + {0x36, 0x34, 0x27}, + {0x33, 0x2a, 0x25}, + {0x2d, 0x30, 0x26}, + {0x3d, 0x37, 0x26}, + {0x25, 0x11, 0x11}, + {0x03, 0x05, 0x18}, + {0x10, 0x04, 0x29}, + {0x07, 0x2e, 0x36}, + {0x2a, 0x29, 0x15}, + {0x3a, 0x0e, 0x33}, + {0x2a, 0x06, 0x29}, + {0x3d, 0x01, 0x29}, + {0x27, 0x0e, 0x16}, + {0x1d, 0x28, 0x1b}, + {0x10, 0x33, 0x2b}, + {0x0c, 0x14, 0x1d}, + {0x15, 0x3f, 0x25}, + {0x37, 0x23, 0x1e}, + {0x04, 0x2c, 0x1c}, + {0x15, 0x34, 0x2a}, + {0x09, 0x2f, 0x15}, + {0x02, 0x3f, 0x14}, + {0x19, 0x2c, 0x33}, + {0x39, 0x32, 0x20}, + {0x2a, 0x18, 0x32}, + {0x17, 0x23, 0x21}, + {0x0b, 0x2d, 0x25}, + {0x24, 0x3a, 0x2d}, + {0x31, 0x3f, 0x34}, + {0x18, 0x19, 0x24}, + {0x1e, 0x15, 0x1a}, + {0x17, 0x33, 0x2b}, + {0x23, 0x09, 0x26}, + {0x1b, 0x0d, 0x15}, + {0x36, 0x26, 0x28}, + {0x3a, 0x1c, 0x14}, + {0x0c, 0x3e, 0x10}, + {0x18, 0x06, 0x35}, + {0x37, 0x26, 0x36}, + {0x21, 0x26, 0x17}, + {0x3d, 0x1c, 0x2c}, + {0x16, 0x25, 0x1d}, + {0x1e, 0x0b, 0x1e}, + {0x1d, 0x0d, 0x32}, + {0x08, 0x1f, 0x1b}, + {0x12, 0x1c, 0x12}, + {0x20, 0x2a, 0x28}, + {0x06, 0x3b, 0x35}, + {0x39, 0x0e, 0x1e}, + {0x31, 0x30, 0x28}, + {0x02, 0x21, 0x14}, + {0x06, 0x1e, 0x29}, + {0x16, 0x09, 0x1c}, + {0x27, 0x32, 0x2d}, + {0x39, 0x03, 0x27}, + {0x29, 0x09, 0x1e}, + {0x1b, 0x11, 0x1c}, + {0x28, 0x3a, 0x2c}, + {0x03, 0x03, 0x18}, + {0x23, 0x09, 0x2f}, + {0x30, 0x17, 0x23}, + {0x0f, 0x25, 0x33}, + {0x06, 0x24, 0x37}, + {0x22, 0x09, 0x33}, + {0x2c, 0x09, 0x2a}, + {0x0c, 0x12, 0x2a}, + {0x28, 0x20, 0x10}, + {0x15, 0x29, 0x33}, + {0x0f, 0x1a, 0x13}, + {0x13, 0x18, 0x36}, + {0x2e, 0x16, 0x13}, + {0x3c, 0x1a, 0x15}, + {0x3a, 0x11, 0x32}, + {0x02, 0x0a, 0x2c}, + {0x19, 0x39, 0x11}, + {0x31, 0x3e, 0x1d}, + {0x32, 0x14, 0x32}, + {0x12, 0x2e, 0x34}, + {0x3e, 0x36, 0x23}, + {0x37, 0x3e, 0x15}, + {0x15, 0x35, 0x34}, + {0x01, 0x3a, 0x2c}, + {0x26, 0x25, 0x22}, + {0x01, 0x2b, 0x37}, + {0x1c, 0x3d, 0x33}, + {0x3e, 0x10, 0x1c}, + {0x26, 0x33, 0x19}, + {0x05, 0x19, 0x17}, + {0x12, 0x38, 0x1c}, + {0x15, 0x3c, 0x32}, + {0x3f, 0x0f, 0x37}, + {0x02, 0x39, 0x32}, + {0x13, 0x00, 0x1d}, + {0x1d, 0x2c, 0x10}, + {0x39, 0x13, 0x31}, + {0x0f, 0x37, 0x19}, + {0x09, 0x0d, 0x2a}, + {0x20, 0x2f, 0x32}, + {0x3b, 0x34, 0x22}, + {0x26, 0x14, 0x10}, + {0x24, 0x3d, 0x22}, + {0x0b, 0x31, 0x23}, + {0x2f, 0x2d, 0x2a}, + {0x30, 0x04, 0x35}, + {0x19, 0x20, 0x2a}, + {0x16, 0x36, 0x37}, + {0x14, 0x28, 0x37}, + {0x11, 0x0b, 0x27}, + {0x1d, 0x06, 0x29}, + {0x35, 0x16, 0x2e}, + {0x24, 0x2e, 0x29}, + {0x36, 0x14, 0x2a}, + {0x21, 0x0c, 0x1f}, + {0x3f, 0x39, 0x19}, + {0x27, 0x10, 0x2a}, + {0x1e, 0x12, 0x34}, + {0x10, 0x24, 0x34}, + {0x1d, 0x13, 0x1d}, + {0x17, 0x16, 0x37}, + {0x27, 0x1b, 0x27}, + {0x07, 0x24, 0x21}, + {0x37, 0x21, 0x11}, + {0x37, 0x28, 0x24}, + {0x19, 0x02, 0x1c}, + {0x14, 0x12, 0x1d}, + {0x1b, 0x24, 0x2e}, + {0x2e, 0x3a, 0x15}, + {0x37, 0x34, 0x21}, + {0x33, 0x2d, 0x29}, + {0x2f, 0x1e, 0x34}, + {0x29, 0x3c, 0x12}, + {0x05, 0x15, 0x20}, + {0x05, 0x3e, 0x19}, + {0x18, 0x0b, 0x30}, + {0x2f, 0x02, 0x27}, + {0x14, 0x1c, 0x34}, + {0x12, 0x20, 0x30}, + {0x2b, 0x22, 0x1b}, + {0x06, 0x31, 0x28}, + {0x15, 0x2d, 0x12}, + {0x01, 0x0e, 0x13}, + {0x13, 0x0c, 0x28}, + {0x07, 0x2a, 0x14}, + {0x1d, 0x36, 0x14}, + {0x15, 0x2b, 0x26}, + {0x03, 0x25, 0x15}, + {0x3e, 0x3b, 0x20}, + {0x35, 0x0c, 0x25}, + {0x2b, 0x16, 0x35}, + {0x1e, 0x31, 0x2c}, + {0x06, 0x03, 0x29}, + {0x24, 0x07, 0x1f}, + {0x32, 0x2f, 0x19}, + {0x25, 0x21, 0x31}, + {0x22, 0x26, 0x1d}, + {0x00, 0x1b, 0x18}, + {0x2a, 0x24, 0x31}, + {0x20, 0x06, 0x2f}, + {0x1e, 0x32, 0x26}, + {0x32, 0x39, 0x12}, + {0x20, 0x01, 0x19}, + {0x0f, 0x15, 0x15}, + {0x27, 0x10, 0x2e}, + {0x09, 0x25, 0x19}, + {0x29, 0x37, 0x30}, + {0x13, 0x1c, 0x1d}, + {0x29, 0x2d, 0x26}, + {0x02, 0x1a, 0x16}, + {0x1d, 0x2b, 0x1c}, + {0x18, 0x04, 0x34}, + {0x28, 0x2a, 0x21}, + {0x15, 0x1b, 0x2e}, + {0x16, 0x01, 0x10}, + {0x05, 0x09, 0x14}, + {0x22, 0x03, 0x22}, + {0x02, 0x1b, 0x34}, + {0x29, 0x2a, 0x23}, + {0x26, 0x36, 0x13}, + {0x23, 0x3d, 0x1a}, + {0x1d, 0x10, 0x24}, + {0x25, 0x2b, 0x37}, + {0x19, 0x24, 0x26}, + {0x28, 0x13, 0x16}, + {0x17, 0x14, 0x19}, + {0x0b, 0x2f, 0x25}, + {0x37, 0x34, 0x37}, + {0x39, 0x21, 0x1b}, + {0x0f, 0x3d, 0x2d}, + {0x0d, 0x10, 0x20}, + {0x05, 0x0b, 0x2d}, + {0x01, 0x12, 0x24}, + {0x18, 0x3d, 0x32}, + {0x09, 0x21, 0x26}, + {0x1a, 0x0e, 0x1f}, + {0x30, 0x06, 0x1f}, + {0x0b, 0x3c, 0x29}, + {0x07, 0x3e, 0x27}, + {0x13, 0x1e, 0x1a}, + {0x13, 0x07, 0x23}, + {0x10, 0x34, 0x1e}, + {0x32, 0x17, 0x23}, + {0x35, 0x16, 0x31}, + {0x32, 0x2e, 0x1b}, + {0x28, 0x0e, 0x22}, + {0x14, 0x3a, 0x23}, + {0x22, 0x03, 0x29}, + {0x2a, 0x10, 0x20}, + {0x3e, 0x3c, 0x27}, + {0x16, 0x20, 0x12}, + {0x3f, 0x24, 0x31}, + {0x0d, 0x2e, 0x32}, + {0x2f, 0x17, 0x2d}, + {0x36, 0x3b, 0x17}, + {0x24, 0x23, 0x18}, + {0x37, 0x1d, 0x13}, + {0x17, 0x3a, 0x1a}, + {0x0a, 0x3d, 0x1e}, + {0x05, 0x12, 0x16}, + {0x33, 0x32, 0x25}, + {0x1d, 0x1f, 0x29}, + {0x34, 0x2c, 0x26}, + {0x20, 0x29, 0x35}, + {0x0e, 0x32, 0x17}, + {0x01, 0x39, 0x2d}, + {0x27, 0x24, 0x23}, + {0x28, 0x3f, 0x18}, + {0x39, 0x38, 0x25}, + {0x23, 0x11, 0x11}, + {0x19, 0x2c, 0x29}, + {0x30, 0x08, 0x28}, + {0x25, 0x27, 0x1d}, + {0x17, 0x25, 0x21}, + {0x09, 0x3d, 0x16}, + {0x1b, 0x0f, 0x2c}, + {0x1b, 0x12, 0x22}, + {0x28, 0x3e, 0x26}, + {0x34, 0x10, 0x1b}, + {0x02, 0x34, 0x15}, + {0x1a, 0x29, 0x19}, + {0x29, 0x11, 0x31}, + {0x12, 0x27, 0x17}, + {0x27, 0x27, 0x2f}, + {0x34, 0x27, 0x24}, + {0x03, 0x19, 0x36}, + {0x17, 0x1d, 0x33}, + {0x19, 0x25, 0x1a}, + {0x2b, 0x39, 0x13}, + {0x3b, 0x33, 0x1d}, + {0x27, 0x31, 0x34}, + {0x28, 0x33, 0x37}, + {0x09, 0x30, 0x1b}, + {0x03, 0x3a, 0x27}, + {0x19, 0x11, 0x1f}, + {0x0b, 0x1a, 0x34}, + {0x3d, 0x2a, 0x15}, + {0x04, 0x24, 0x36}, + {0x30, 0x23, 0x30}, + {0x0f, 0x22, 0x1b}, + {0x3d, 0x3d, 0x24}, + {0x29, 0x1d, 0x12}, + {0x16, 0x19, 0x2e}, + {0x03, 0x12, 0x17}, + {0x18, 0x25, 0x33}, + {0x2f, 0x23, 0x1a}, + {0x1a, 0x35, 0x27}, + {0x21, 0x26, 0x19}, + {0x1b, 0x30, 0x18}, + {0x2b, 0x22, 0x2d}, + {0x2c, 0x1a, 0x34}, + {0x3e, 0x12, 0x19}, + {0x28, 0x27, 0x15}, + {0x1b, 0x11, 0x12}, + {0x17, 0x15, 0x10}, + {0x34, 0x37, 0x25}, + {0x12, 0x3f, 0x15}, + {0x31, 0x0d, 0x37}, + {0x3e, 0x2a, 0x2d}, + {0x0f, 0x24, 0x24}, + {0x3c, 0x3f, 0x1f}, + {0x1d, 0x34, 0x17}, + {0x1a, 0x23, 0x1f}, + {0x37, 0x0f, 0x10}, + {0x32, 0x34, 0x35}, + {0x19, 0x05, 0x22}, + {0x33, 0x16, 0x34}, + {0x1e, 0x14, 0x1e}, + {0x08, 0x13, 0x29}, + {0x3a, 0x37, 0x30}, + {0x1d, 0x36, 0x15}, + {0x29, 0x2e, 0x1d}, + {0x32, 0x2e, 0x23}, + {0x35, 0x17, 0x1c}, + {0x36, 0x1d, 0x13}, + {0x23, 0x34, 0x34}, + {0x24, 0x1a, 0x37}, + {0x2f, 0x26, 0x2e}, + {0x1e, 0x17, 0x1a}, + {0x1f, 0x15, 0x1f}, + {0x2b, 0x1f, 0x19}, + {0x0a, 0x33, 0x1a}, + {0x35, 0x31, 0x24}, + {0x2d, 0x17, 0x2c}, + {0x0c, 0x21, 0x36}, + {0x2c, 0x35, 0x35}, + {0x1b, 0x03, 0x27}, + {0x01, 0x0d, 0x1d}, + {0x1c, 0x0e, 0x11}, + {0x11, 0x2b, 0x10}, + {0x25, 0x3b, 0x20}, + {0x1f, 0x17, 0x19}, + {0x20, 0x08, 0x36}, + {0x13, 0x38, 0x19}, + {0x1b, 0x2b, 0x24}, + {0x0b, 0x1f, 0x29}, + {0x27, 0x15, 0x2c}, + {0x37, 0x39, 0x10}, + {0x3a, 0x15, 0x2e}, + {0x2f, 0x11, 0x36}, + {0x24, 0x04, 0x20}, + {0x3b, 0x2a, 0x35}, + {0x27, 0x35, 0x34}, + {0x0d, 0x1b, 0x20}, + {0x10, 0x22, 0x37}, + {0x1f, 0x38, 0x27}, + {0x31, 0x0f, 0x28}, + {0x28, 0x25, 0x15}, + {0x00, 0x1d, 0x25}, + {0x31, 0x28, 0x28}, + {0x0b, 0x3a, 0x1d}, + {0x2d, 0x13, 0x1b}, + {0x03, 0x37, 0x2e}, + {0x1d, 0x28, 0x19}, + {0x08, 0x2d, 0x22}, + {0x27, 0x39, 0x32}, + {0x3f, 0x2f, 0x1d}, + {0x33, 0x34, 0x28}, + {0x18, 0x08, 0x31}, + {0x23, 0x1f, 0x13}, + {0x0d, 0x2c, 0x23}, + {0x3a, 0x2d, 0x1a}, + {0x02, 0x25, 0x13}, + {0x20, 0x36, 0x34}, + {0x12, 0x2b, 0x2d}, + {0x35, 0x35, 0x34}, + {0x23, 0x20, 0x21}, + {0x3a, 0x19, 0x1b}, + {0x1f, 0x2b, 0x19}, + {0x35, 0x0e, 0x19}, + {0x26, 0x24, 0x37}, + {0x18, 0x08, 0x10}, + {0x0c, 0x16, 0x2d}, + {0x1f, 0x34, 0x21}, + {0x05, 0x38, 0x19}, + {0x14, 0x21, 0x24}, + {0x11, 0x31, 0x14}, + {0x3e, 0x38, 0x29}, + {0x3f, 0x08, 0x25}, + {0x2a, 0x1f, 0x25}, + {0x25, 0x06, 0x28}, + {0x0b, 0x1e, 0x14}, + {0x1a, 0x38, 0x22}, + {0x24, 0x18, 0x29}, + {0x1a, 0x11, 0x20}, + {0x3b, 0x3a, 0x1e}, + {0x1c, 0x26, 0x1a}, + {0x05, 0x32, 0x19}, + {0x39, 0x2a, 0x31}, + {0x09, 0x07, 0x25}, + {0x05, 0x3e, 0x16}, + {0x34, 0x26, 0x14}, + {0x1b, 0x32, 0x26}, + {0x05, 0x08, 0x37}, + {0x0f, 0x03, 0x20}, + {0x2a, 0x39, 0x31}, + {0x08, 0x01, 0x1e}, + {0x1d, 0x23, 0x31}, + {0x28, 0x1b, 0x28}, + {0x1e, 0x37, 0x14}, + {0x13, 0x0e, 0x28}, + {0x2a, 0x3b, 0x37}, + {0x2f, 0x1c, 0x28}, + {0x30, 0x30, 0x1a}, + {0x36, 0x1f, 0x16}, + {0x3e, 0x0d, 0x15}, + {0x2e, 0x16, 0x18}, + {0x15, 0x37, 0x20}, + {0x2a, 0x33, 0x30}, + {0x2b, 0x0e, 0x25}, + {0x18, 0x20, 0x16}, + {0x02, 0x19, 0x25}, + {0x0a, 0x2e, 0x30}, + {0x16, 0x03, 0x11}, + {0x04, 0x27, 0x25}, + {0x1b, 0x1c, 0x21}, + {0x29, 0x04, 0x27}, + {0x3d, 0x20, 0x1e}, + {0x28, 0x33, 0x31}, + {0x1e, 0x39, 0x10}, + {0x31, 0x29, 0x1e}, + {0x06, 0x25, 0x28}, + {0x19, 0x3b, 0x12}, + {0x0b, 0x1b, 0x1c}, + {0x3e, 0x37, 0x20}, + {0x0a, 0x37, 0x33}, + {0x02, 0x2c, 0x25}, + {0x15, 0x18, 0x14}, + {0x3b, 0x20, 0x1c}, + {0x22, 0x3b, 0x1c}, + {0x24, 0x34, 0x35}, + {0x0f, 0x2f, 0x31}, + {0x3b, 0x17, 0x35}, + {0x30, 0x39, 0x37}, + {0x0d, 0x15, 0x11}, + {0x10, 0x03, 0x1e}, + {0x1a, 0x39, 0x33}, + {0x2f, 0x2e, 0x28}, + {0x1c, 0x28, 0x36}, + {0x28, 0x18, 0x1f}, + {0x15, 0x01, 0x30}, + {0x3e, 0x32, 0x28}, + {0x34, 0x2f, 0x23}, + {0x07, 0x0c, 0x36}, + {0x28, 0x2c, 0x34}, + {0x2a, 0x0c, 0x1f}, + {0x3f, 0x20, 0x13}, + {0x2b, 0x17, 0x27}, + {0x28, 0x29, 0x2a}, + {0x3c, 0x13, 0x36}, + {0x26, 0x2d, 0x2a}, + {0x0a, 0x06, 0x1e}, + {0x20, 0x04, 0x1a}, + {0x02, 0x07, 0x35}, + {0x0e, 0x18, 0x30}, + {0x00, 0x34, 0x34}, + {0x2f, 0x14, 0x37}, + {0x21, 0x30, 0x1f}, + {0x15, 0x37, 0x1b}, + {0x3a, 0x0b, 0x32}, + {0x22, 0x22, 0x21}, + {0x1b, 0x35, 0x23}, + {0x0d, 0x03, 0x1c}, + {0x23, 0x3b, 0x13}, + {0x0e, 0x1d, 0x1f}, + {0x1d, 0x3f, 0x2e}, + {0x39, 0x27, 0x2e}, + {0x0f, 0x38, 0x20}, + {0x31, 0x3c, 0x35}, + {0x0b, 0x0f, 0x2e}, + {0x06, 0x06, 0x28}, + {0x25, 0x39, 0x23}, + {0x0a, 0x32, 0x15}, + {0x0f, 0x1d, 0x25}, + {0x0c, 0x0d, 0x34}, + {0x12, 0x2e, 0x21}, + {0x36, 0x18, 0x1f}, + {0x1f, 0x34, 0x1b}, + {0x05, 0x3a, 0x36}, + {0x2b, 0x01, 0x17}, + {0x0e, 0x16, 0x2b}, + {0x0e, 0x0b, 0x26}, + {0x0d, 0x2d, 0x10}, + {0x21, 0x11, 0x27}, + {0x3d, 0x13, 0x32}, + {0x15, 0x25, 0x2a}, + {0x1b, 0x2d, 0x35}, + {0x2c, 0x2b, 0x26}, + {0x26, 0x1f, 0x20}, + {0x22, 0x2b, 0x12}, + {0x3f, 0x3d, 0x27}, + {0x30, 0x0a, 0x36}, + {0x35, 0x1f, 0x17}, + {0x21, 0x08, 0x29}, + {0x1d, 0x20, 0x33}, + {0x34, 0x11, 0x16}, + {0x05, 0x38, 0x2d} +}; void ApplyImageProcessingEffects(struct ImageProcessingContext *context) { @@ -167,7 +3368,7 @@ static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8 highlight) static void ApplyImageEffect_Pointillism(void) { u32 i; - for (i = 0; i < 3200; i++) + for (i = 0; i < NELEMS(sPointillismPoints); i++) AddPointillismPoints(i); } @@ -413,12 +3614,12 @@ static void AddPointillismPoints(u16 arg0) u8 colorType; struct PointillismPoint points[6]; - points[0].column = gPointillismPoints[arg0][0]; - points[0].row = gPointillismPoints[arg0][1]; - points[0].delta = (gPointillismPoints[arg0][2] >> 3) & 7; + points[0].column = sPointillismPoints[arg0][0]; + points[0].row = sPointillismPoints[arg0][1]; + points[0].delta = (sPointillismPoints[arg0][2] >> 3) & 7; - colorType = (gPointillismPoints[arg0][2] >> 1) & 3; - offsetDownLeft = gPointillismPoints[arg0][2] & 1; + colorType = (sPointillismPoints[arg0][2] >> 1) & 3; + offsetDownLeft = sPointillismPoints[arg0][2] & 1; for (i = 1; i < points[0].delta; i++) { if (!offsetDownLeft) @@ -455,7 +3656,7 @@ static void AddPointillismPoints(u16 arg0) { case 0: case 1: - switch (((gPointillismPoints[arg0][2] >> 3) & 7) % 3) + switch (((sPointillismPoints[arg0][2] >> 3) & 7) % 3) { case 0: if (red >= points[i].delta) diff --git a/src/region_map.c b/src/region_map.c index 7a411b8e8..271ce548f 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -40,12 +40,9 @@ struct UnkStruct_20399D4 bool8 regionMapPermissions[4]; u8 field_479B; u8 field_479C; - u8 filler_479D[3]; - u8 field_47A0; - u8 filler_47A1[3]; - u8 field_47A4; - u8 filler_47A5[3]; - u8 field_47A8; + u8 ALIGNED(4) field_47A0; + u8 ALIGNED(4) field_47A4; + u8 ALIGNED(4) field_47A8; u16 field_47AA; u16 field_47AC; u16 field_47AE; @@ -300,8 +297,8 @@ static void sub_80C41D8(u16 a0, u16 a1); static void sub_80C4244(void); static void sub_80C4324(bool8 a0); static void sub_80C4348(void); -static u16 sub_80C4380(); -static u16 sub_80C438C(); +static u16 sub_80C4380(void); +static u16 sub_80C438C(void); static void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc); static void sub_80C440C(u8 taskId); static void sub_80C44E4(u8 taskId); -- cgit v1.2.3 From 4e87e3567f91b0b2ebf792a7a2f9030a63578dfd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 8 Jan 2020 18:29:48 -0500 Subject: Remove comment on sub_8124C1C --- src/party_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/party_menu.c b/src/party_menu.c index 399794b2d..6e0b411bf 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4201,7 +4201,7 @@ static void sub_8124BB0(struct Pokemon *mon, u8 fieldMove) Free(ptr); } -void sub_8124C1C(const u8 *healLocCtrlData) // TODO: confirm the type of data chunk at 0x83F2EE0 +void sub_8124C1C(const u8 *healLocCtrlData) { const struct MapHeader *mapHeader; struct FieldMoveWarpParams *ptr2; -- cgit v1.2.3