diff options
-rw-r--r-- | asm/crt0.s | 73 | ||||
-rw-r--r-- | asm/region_map.s | 13825 | ||||
-rw-r--r-- | berry_fix/payload/asm/crt0.s | 8 | ||||
-rw-r--r-- | berry_fix/payload/src/main.c | 4 | ||||
-rw-r--r-- | common_syms/image_processing_effects.txt | 10 | ||||
-rw-r--r-- | constants/version.inc | 92 | ||||
-rw-r--r-- | data/region_map.s | 4370 | ||||
-rw-r--r-- | data/strings.s | 75 | ||||
-rw-r--r-- | data/text/map_section_names.inc | 327 | ||||
-rw-r--r-- | include/constants/region_map.h | 6 | ||||
-rw-r--r-- | include/field_effect.h | 1 | ||||
-rw-r--r-- | include/image_processing_effects.h | 53 | ||||
-rw-r--r-- | include/map_preview_screen.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/region_map.h | 82 | ||||
-rw-r--r-- | include/strings.h | 30 | ||||
-rw-r--r-- | ld_script.txt | 8 | ||||
-rw-r--r-- | src/data/text/map_section_names.h | 109 | ||||
-rw-r--r-- | src/image_processing_effects.c | 4425 | ||||
-rw-r--r-- | src/main.c | 4 | ||||
-rw-r--r-- | src/map_preview_screen.c | 2 | ||||
-rw-r--r-- | src/party_menu.c | 2 | ||||
-rw-r--r-- | src/quest_log.c | 4 | ||||
-rw-r--r-- | src/region_map.c | 4399 | ||||
-rw-r--r-- | sym_common.txt | 33 | ||||
-rw-r--r-- | sym_ewram.txt | 29 |
26 files changed, 9139 insertions, 18834 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/asm/region_map.s b/asm/region_map.s deleted file mode 100644 index 662c65fa7..000000000 --- a/asm/region_map.s +++ /dev/null @@ -1,13825 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .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} - 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} - 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 - 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} - 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} - 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} - 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} - 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_83F1B1C - 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_83F1B1C - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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 - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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} - 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/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/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/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/data/region_map.s b/data/region_map.s deleted file mode 100644 index 5d28f9503..000000000 --- a/data/region_map.s +++ /dev/null @@ -1,4370 +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 - - .include "data/text/map_section_names.inc" - -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 - -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 - - .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 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 - - .align 2 -gUnknown_83F1B00:: @ 83F1B00 - .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 - -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 - .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, 0x4000 - -gUnknown_83F1CA4:: @ 83F1CA4 - .2byte 0x4044, 0x4246 - -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 - -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/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/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..bd087bd60 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -89,6 +89,9 @@ #define MAPSEC_SKY_PILLAR 0x55 #define MAPSEC_SECRET_BASE 0x56 #define MAPSEC_DYNAMIC 0x57 + +#define MAPSECS_KANTO 0x58 + #define MAPSEC_PALLET_TOWN 0x58 #define MAPSEC_VIRIDIAN_CITY 0x59 #define MAPSEC_PEWTER_CITY 0x5A @@ -144,6 +147,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/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/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/include/map_preview_screen.h b/include/map_preview_screen.h index 5ab5584e5..ea85baf71 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 * GetDungeonMapPreviewScreenInfo(u8 mapsec); #endif //GUARD_MAP_PREVIEW_SCREEN_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 67287b6c4..dd4fe491b 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -24,77 +24,25 @@ 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 +enum { + MAPPERM_0, + MAPPERM_1, + MAPPERM_2, + MAPPERM_3 +}; + +enum { + REGIONMAP_KANTO, + REGIONMAP_SEVII123, + REGIONMAP_SEVII45, + REGIONMAP_SEVII67 +}; // 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 *, u16, u16); -bool32 sub_8124668(u8 mapSecId); -void GetMapNameGeneric(u8 *, u8); +u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); +u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); void sub_80BFF50(u8 a0, void (*a1)(void)); void MCB2_FlyMap(void); diff --git a/include/strings.h b/include/strings.h index 90fd49b52..8911a7c93 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1003,4 +1003,34 @@ extern const u8 gText_UnionRoomTradesBattles[]; extern const u8 gText_LinkBattles[]; extern const u8 gText_LinkCableBattles[]; +// region_map +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/ld_script.txt b/ld_script.txt index e3ac7b14c..aeb11a271 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1,5 +1,3 @@ -ENTRY(Start) - gNumMusicPlayers = 4; gMaxLines = 0; @@ -182,7 +180,8 @@ SECTIONS { src/menu_helpers.o(.text); asm/script_pokemon_util_80BF8FC.o(.text); src/heal_location.o(.text); - asm/region_map.o(.text); + src/region_map.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); @@ -479,7 +478,8 @@ SECTIONS { src/mon_markings.o(.rodata); src/mail.o(.rodata); src/heal_location.o(.rodata); - data/region_map.o(.rodata); + src/region_map.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/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/image_processing_effects.c b/src/image_processing_effects.c new file mode 100644 index 000000000..fdd62f7a5 --- /dev/null +++ b/src/image_processing_effects.c @@ -0,0 +1,4425 @@ +#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*); + +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) +{ + 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 < NELEMS(sPointillismPoints); 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 = sPointillismPoints[arg0][0]; + points[0].row = sPointillismPoints[arg0][1]; + points[0].delta = (sPointillismPoints[arg0][2] >> 3) & 7; + + colorType = (sPointillismPoints[arg0][2] >> 1) & 3; + offsetDownLeft = sPointillismPoints[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 (((sPointillismPoints[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/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; 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/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; 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 new file mode 100644 index 000000000..271ce548f --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,4399 @@ +#include "global.h" +#include "palette.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "task.h" +#include "m4a.h" +#include "malloc.h" +#include "overworld.h" +#include "event_data.h" +#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" +#include "strings.h" +#include "map_preview_screen.h" +#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) ({ \ + if (ptr) { \ + FREE_AND_SET_NULL(ptr); \ + } \ +}) + +struct UnkStruct_20399D4 +{ + u8 field_0000[19]; + u8 field_0013[19]; + u16 layouts[5][600]; + // Inefficiency: these should be u8 or have half the elements each + u16 bgTilemapBuffers[3][BG_SCREEN_SIZE]; + u8 mapType; + bool8 regionMapPermissions[4]; + u8 field_479B; + u8 field_479C; + u8 ALIGNED(4) field_47A0; + u8 ALIGNED(4) field_47A4; + u8 ALIGNED(4) field_47A8; + u16 field_47AA; + u16 field_47AC; + u16 field_47AE; + u16 field_47B0; + u8 filler_47B2[6]; + TaskFunc field_47B8; + MainCallback savedCallback; +}; // size = 0x47C0 + +struct SelectionCursorSubspriteData +{ + u8 tiles[0x400]; + struct Sprite * sprite; + u16 tileTag; + u16 paletteTag; + s16 xCoord; +}; + +struct UnkStruct_20399D8 +{ + u8 bgTiles[0x1000]; + u16 tileMap[0x258]; + struct SelectionCursorSubspriteData selectionCursorSubspriteData[2]; + u8 field_1CC8; + u8 selectionCursorLoadState; + u8 field_1CCA; + u8 field_1CCB; + u8 field_1CCC; + u8 field_1CCD; + u16 field_1CCE; + TaskFunc field_1CD0; + u16 field_1CD4[4]; + u16 field_1CDC; +}; // size = 0x1CE0 + +struct GpuWindowParams +{ + u16 v0; + u16 v2; + u16 v4; + u16 v6; +}; + +struct UnkStruct_83F1B3C +{ + u16 id; + const u8 *name; + const u8 *desc; +}; + +struct DungeonMapPreviewManagerStruct +{ + 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; + u16 field_3D4E[0x30]; + u8 filler_3DAE[0x60]; + u16 field_3E0E; + u16 field_3E10; + u16 field_3E12; + u16 field_3E14; + 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 + +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]; + u16 field_018[0x400]; + u16 field_818[0x258]; + TaskFunc field_CC8; + u8 field_CCC; + u8 field_CCD; + u8 field_CCE; + u8 field_CCF; + u8 field_CD0; +}; // size = 0xCD4 + +struct UnkStruct_20399E4 +{ + s16 field_000; + s16 field_002; + u16 field_004; + u16 field_006; + s16 field_008; + s16 field_00A; + u16 field_00C; + u8 field_00E; + u8 (*field_010)(void); + u16 field_014; + u16 field_016; + u16 field_018; + struct Sprite * field_01C; + u16 field_020; + u16 field_022; + u16 field_024[0x80]; +}; // size = 0x124 + +struct UnkStruct_20399E8 +{ + s16 field_00; + s16 field_02; + struct Sprite * field_04; + u16 field_08; + u16 field_0A; + u16 field_0C[0x40]; +}; // size = 0x8C + +struct UnkStruct_20399EC_140 +{ + 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]; + struct UnkStruct_20399EC_140 field_140[25]; + struct UnkStruct_20399EC_140 field_2D0[25]; + u8 field_460; + u8 filler_461[2]; + u8 field_463; + u8 filler_464[4]; + 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; +}; + +struct UnkStruct_20399FC +{ + u8 field_0; + u8 field_1; + u8 field_2; +}; + +static EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; +static EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = 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; +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); +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 NullVBlankHBlankCallbacks(void); +static void sub_80C08F4(void); +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 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); +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 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 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); +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 GetMapCursorX(void); +static u16 GetMapCursorY(void); +static u16 sub_80C3520(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 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); +static void sub_80C4348(void); +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); +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 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); +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" + +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 unref_83EF37C[] = { + RGB(0, 0, 31), + RGB(0, 12, 31), + RGB_WHITE, + RGB_WHITE +}; +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 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 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"); +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, + .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 + } +}; + +static 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 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[] = { + sTextColor_Green, + gUnknown_83F1A98 +}; + +static 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 bool8 sRegionMapPermissions[3][4] = { + {TRUE , TRUE , TRUE , FALSE}, + {FALSE, FALSE, FALSE, FALSE}, + {FALSE, FALSE, FALSE, TRUE } +}; + +static const struct GpuWindowParams sStdWindowDims[3] = { + {0x18, 0x10, 0x90, 0x20}, + {0x18, 0x20, 0x90, 0x30}, + {0x00, 0x00, 0x00, 0x00} +}; + +static const struct OamData sSelectionCursorOam = { + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32) +}; + +static const union AnimCmd gUnknown_83F1B2C[] = { + ANIMCMD_FRAME(0x00, 20), + ANIMCMD_FRAME(0x10, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSelectionCursorAnims[] = { + gUnknown_83F1B2C +}; + +static const struct UnkStruct_83F1B3C sDungeonHighlights[] = { + { + .id = MAPSEC_VIRIDIAN_FOREST, + .name = gMapSecName_ViridianForest, + .desc = gText_RegionMap_AreaDesc_ViridianForest + }, { + .id = MAPSEC_MT_MOON, + .name = gMapSecName_MtMoon, + .desc = gText_RegionMap_AreaDesc_MtMoon + }, { + .id = MAPSEC_DIGLETTS_CAVE, + .name = gMapSecName_DiglettsCave, + .desc = gText_RegionMap_AreaDesc_DiglettsCave + }, { + .id = MAPSEC_KANTO_VICTORY_ROAD, + .name = gMapSecName_VictoryRoad, + .desc = gText_RegionMap_AreaDesc_VictoryRoad + }, { + .id = MAPSEC_POKEMON_MANSION, + .name = gMapSecName_PokemonMansion, + .desc = gText_RegionMap_AreaDesc_PokemonMansion + }, { + .id = MAPSEC_KANTO_SAFARI_ZONE, + .name = gMapSecName_SafariZone, + .desc = gText_RegionMap_AreaDesc_SafariZone + }, { + .id = MAPSEC_ROCK_TUNNEL, + .name = gMapSecName_RockTunnel, + .desc = gText_RegionMap_AreaDesc_RockTunnel + }, { + .id = MAPSEC_SEAFOAM_ISLANDS, + .name = gMapSecName_SeafoamIslands, + .desc = gText_RegionMap_AreaDesc_SeafoamIslands + }, { + .id = MAPSEC_POKEMON_TOWER, + .name = gMapSecName_PokemonTower, + .desc = gText_RegionMap_AreaDesc_PokemonTower + }, { + .id = MAPSEC_CERULEAN_CAVE, + .name = gMapSecName_CeruleanCave, + .desc = gText_RegionMap_AreaDesc_CeruleanCave + }, { + .id = MAPSEC_POWER_PLANT, + .name = gMapSecName_PowerPlant, + .desc = gText_RegionMap_AreaDesc_PowerPlant + }, { + .id = MAPSEC_MT_EMBER, + .name = gMapSecName_MtEmber, + .desc = gText_RegionMap_AreaDesc_MtEmber + }, { + .id = MAPSEC_BERRY_FOREST, + .name = gMapSecName_BerryForest, + .desc = gText_RegionMap_AreaDesc_BerryForest + }, { + .id = MAPSEC_ICEFALL_CAVE, + .name = gMapSecName_IcefallCave, + .desc = gText_RegionMap_AreaDesc_IcefallCave + }, { + .id = MAPSEC_LOST_CAVE, + .name = gMapSecName_LostCave, + .desc = gText_RegionMap_AreaDesc_LostCave + }, { + .id = MAPSEC_TANOBY_CHAMBERS, + .name = gMapSecName_TanobyChambers, + .desc = gText_RegionMap_AreaDesc_TanobyRuins + }, { + .id = MAPSEC_ALTERING_CAVE, + .name = gMapSecName_AlteringCave, + .desc = gText_RegionMap_AreaDesc_AlteringCave + }, { + .id = MAPSEC_PATTERN_BUSH, + .name = gMapSecName_PatternBush, + .desc = gText_RegionMap_AreaDesc_PatternBush + }, { + .id = MAPSEC_DOTTED_HOLE, + .name = gMapSecName_DottedHole, + .desc = gText_RegionMap_AreaDesc_DottedHole + } +}; + +static const struct OamData gUnknown_83F1C20 = { + .shape = SPRITE_SHAPE(32x64), + .size = SPRITE_SIZE(32x64) +}; + +static const union AnimCmd gAnimCmd_83F1C28[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gUnknown_83F1C30[] = { + gAnimCmd_83F1C28 +}; + +static const struct GpuWindowParams gUnknown_83F1C34 = { + 0x18, 0x10, 0xD8, 0xA0 +}; + +static const struct OamData gUnknown_83F1C3C = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +static const union AnimCmd gAnimCmd_83F1C44[] = { + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gUnknown_83F1C50[] = { + gAnimCmd_83F1C44 +}; + +static const struct OamData gUnknown_83F1C54 = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +static const union AnimCmd gAnimCmd_83F1C5C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_83F1C64[] = { + gAnimCmd_83F1C5C +}; + +static const struct OamData gUnknown_83F1C68 = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 2 +}; + +static const struct OamData gUnknown_83F1C70 = { + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .priority = 2 +}; + +static const union AnimCmd gAnimCmd_83F1C78[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(4, 60), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gAnimCmd_83F1C84[] = { + ANIMCMD_FRAME(1, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gAnimCmd_83F1C8C[] = { + ANIMCMD_FRAME(0, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gUnknown_83F1C94[] = { + gAnimCmd_83F1C78 +}; + +static const union AnimCmd *const gUnknown_83F1C98[] = { + gAnimCmd_83F1C84, + gAnimCmd_83F1C8C +}; + +static const u16 sWinFlags[] = { + DISPCNT_WIN0_ON, + DISPCNT_WIN1_ON +}; + +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 sMapNames[] = { + [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 +}; + +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}, + [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}, +}; + +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}, + [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} +}; + +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, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_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} + } +}; + +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}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_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} + } +}; + +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}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_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} + } +}; + +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}, + {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_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} + } +}; + +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}, + [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) +{ + 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++; + } +} + +static 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)); +} + +static 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->mapType = kind; + gUnknown_20399D4->field_47A0 = 0; + gUnknown_20399D4->field_47A4 = 0; + gUnknown_20399D4->field_47A8 = 0; + sub_80BFFD0(); + SetMainCallback2(CB2_OpenRegionMap); + } +} + +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->mapType = kind; + gUnknown_20399D4->field_47A0 = 0; + gUnknown_20399D4->field_47A4 = 0; + gUnknown_20399D4->field_47A8 = 0; + gUnknown_20399D4->savedCallback = cb; + sub_80BFFD0(); + SetMainCallback2(CB2_OpenRegionMap); + } +} + +static void sub_80BFFD0(void) +{ + u8 i; + u8 j; + u8 r7; + + switch (gUnknown_20399D4->mapType) + { + 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->regionMapPermissions[i] = sRegionMapPermissions[gUnknown_20399D4->mapType][i]; + } + if (!FlagGet(FLAG_SYS_SEVII_MAP_123)) + gUnknown_20399D4->regionMapPermissions[MAPPERM_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; +} + +static void CB2_OpenRegionMap(void) +{ + switch (gUnknown_20399D4->field_47A4) + { + case 0: + NullVBlankHBlankCallbacks(); + break; + case 1: + ResetGpu(); + break; + case 2: + ResetOamForRegionMap(); + break; + case 3: + if (!HandleLoadRegionMapGfx()) + return; + break; + case 4: + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + break; + case 5: + sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D4->field_479B]); + CopyBgTilemapBufferToVram(0); + if (gUnknown_20399D4->mapType != 0) + { + sub_80C0CC8(1, gUnknown_20399D4->layouts[4]); + CopyBgTilemapBufferToVram(1); + } + break; + case 6: + sub_80C0B18(); + PutWindowTilemap(0); + break; + case 7: + sub_80C0BB0(); + PutWindowTilemap(1); + break; + case 8: + if (GetRegionMapPermission(MAPPERM_2) == TRUE) + SetBg0andBg3Visibility(1); + break; + default: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C03E8(); + sub_80C08F4(); + break; + } + gUnknown_20399D4->field_47A4++; +} + +static bool8 HandleLoadRegionMapGfx(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->mapType != 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->mapType != 0) + { + DecompressAndCopyTileDataToVram(1, gUnknown_83F1978, 0, 0, 0); + } + break; + case 4: + if (FreeTempTileDataBuffersIfPossible() == TRUE) + return FALSE; + break; + case 5: + LZ77UnCompWram(sRegionMapLayout_Kanto, gUnknown_20399D4->layouts[0]); + break; + case 6: + LZ77UnCompWram(sRegionMapLayout_Sevii123, gUnknown_20399D4->layouts[1]); + break; + case 7: + LZ77UnCompWram(sRegionMapLayout_Sevii45, gUnknown_20399D4->layouts[2]); + break; + case 8: + LZ77UnCompWram(sRegionMapLayout_Sevii67, gUnknown_20399D4->layouts[3]); + break; + default: + LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->layouts[4]); + return TRUE; + } + gUnknown_20399D4->field_47A8++; + return FALSE; +} + +static void sub_80C03E8(void) +{ + CreateTask(gUnknown_20399D4->field_47B8, 0); + SetMainCallback2(sub_80C08B4); +} + +static bool32 sub_80C0410(void) +{ + if (GetSelectedMapSection(GetWhichRegionMap(), 0, GetMapCursorY(), GetMapCursorX()) == 99) + return FALSE; + else + return TRUE; +} + +static 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 (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE) + PlaySE(SE_W255); + else if (GetMapCursorX() == 21 && GetMapCursorY() == 13) + PlaySE(SE_W255); + } +} + +static void sub_80C04E4(u8 taskId) +{ + switch (gUnknown_20399D4->field_47A0) + { + case 0: + 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->regionMapPermissions[MAPPERM_2] == TRUE) + { + sub_80C2208(taskId, gUnknown_20399D4->field_47B8); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C4E74(gText_RegionMap_Space); + sub_80C4ED0(FALSE); + sub_80C4324(FALSE); + sub_80C3154(FALSE); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); + } + 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 2: + break; + case 3: + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0B9C(); + sub_80C0450(); + if (GetMapSecUnderCursor() != MAPSEC_NONE) + { + if (GetRegionMapPermission(MAPPERM_1) == TRUE) + { + if (sub_80C3AC8(1) == 2) + { + sub_80C4E74(gText_RegionMap_AButtonGuide); + } + else + { + sub_80C4E74(gText_RegionMap_Space); + } + } + } + else + { + if (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE) + { + sub_80C4E74(gText_RegionMap_AButtonSwitch); + } + else if (GetMapCursorX() == 21 && GetMapCursorY() == 13) + { + sub_80C4E74(gText_RegionMap_AButtonCancel); + } + else + { + sub_80C4E74(gText_RegionMap_Space); + } + } + break; + case 4: + if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->regionMapPermissions[MAPPERM_1] == TRUE) + { + RegionMapCreateDungeonMapPreview(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 (GetRegionMapPermission(MAPPERM_2) == 1) + { + sub_80C2C1C(taskId); + // FIXME: goto required to match + // 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; + } +} + +static void sub_80C07D0(TaskFunc taskFunc) +{ + gUnknown_20399D4->field_47B8 = taskFunc; +} + +TaskFunc sub_80C07E4(void) +{ + return gUnknown_20399D4->field_47B8; +} + +static void sub_80C07F8(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399D4->field_47B8; +} + +static void sub_80C0820(u8 taskId) +{ + if (GetRegionMapPermission(MAPPERM_2) == TRUE) + sub_80C25BC(); + sub_80C4A04(); + sub_80C3188(); + sub_80C4348(); + sub_80C4D30(); + DestroyTask(taskId); + FreeAllWindowBuffers(); + if (gUnknown_20399D4->savedCallback == NULL) + SetMainCallback2(gMain.savedCallback); + else + SetMainCallback2(gUnknown_20399D4->savedCallback); + FREE_IF_NOT_NULL(gUnknown_20399D4); +} + +static void sub_80C0898(void) +{ + FREE_IF_NOT_NULL(gUnknown_20399D4); +} + +static void sub_80C08B4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80C08CC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void NullVBlankHBlankCallbacks(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +static void sub_80C08F4(void) +{ + SetVBlankCallback(sub_80C08CC); +} + +static void ResetGpu(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); + SetBgTilemapBuffers(); + sub_80C0AB8(); +} + +static void SetBgTilemapBuffers(void) +{ + SetBgTilemapBuffer(0, gUnknown_20399D4->bgTilemapBuffers[0]); + SetBgTilemapBuffer(1, gUnknown_20399D4->bgTilemapBuffers[1]); + SetBgTilemapBuffer(2, gUnknown_20399D4->bgTilemapBuffers[2]); +} + +static void ResetOamForRegionMap(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +static void SetBg0andBg3Visibility(u8 mode) +{ + switch (mode) + { + case 0: + ShowBg(0); + ShowBg(3); + break; + case 1: + HideBg(0); + HideBg(3); + break; + } +} + +static void sub_80C0AB8(void) +{ + sub_80C4BE4(); + sub_80C4C2C(0, 0x11, 0xc0); + sub_80C4C48(6); + sub_80C4C74(0x39, 0x39); + sub_80C4C88(0x1b); + SetGpuWindowDims(0, &sStdWindowDims[0]); + SetGpuWindowDims(1, &sStdWindowDims[1]); + sub_80C4C9C(0, 0); + if (GetMapSecUnderCursor() != MAPSEC_NONE) + sub_80C4C9C(1, 0); +} + +static void sub_80C0B18(void) +{ + ClearWindowTilemap(0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + if (sub_80C3520() == MAPSEC_NONE) + { + SetGpuWindowDims(0, &sStdWindowDims[2]); + } + else + { + GetMapName(gUnknown_20399D4->field_0000, sub_80C3520(), 0); + AddTextPrinterParameterized3(0, 2, 2, 2, sTextColor_White, 0, gUnknown_20399D4->field_0000); + PutWindowTilemap(0); + CopyWindowToVram(0, 2); + SetGpuWindowDims(0, &sStdWindowDims[0]); + } +} + +static void sub_80C0B9C(void) +{ + SetGpuWindowDims(1, &sStdWindowDims[1]); +} + +static 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 = GetMapSecUnderCursor(); + if (mapsecId != MAPSEC_NONE) + { + descOffset = mapsecId - MAPSECS_KANTO; + sub_80C4C9C(1, 0); + gUnknown_20399D4->field_47AC = 1; + 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, sMapNames[descOffset]); + AddTextPrinterParameterized3(1, 2, 12, 2, gUnknown_83F1A9C[sub_80C3AC8(1) - 2], 0, gUnknown_20399D4->field_0013); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); + } +} + +static void sub_80C0CA0(void) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + CopyWindowToVram(0, 3); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + CopyWindowToVram(1, 3); +} + +static void sub_80C0CC8(u8 bg, u16 *map) +{ + s16 i; + s16 j; + u8 r4; + u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[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->regionMapPermissions[MAPPERM_0] == TRUE) + { + 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 == REGIONMAP_SEVII45 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 13, 11, 3, 2); + if (r4 == REGIONMAP_SEVII67 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3); +} + +static bool8 GetRegionMapPermission(u8 attr) +{ + return gUnknown_20399D4->regionMapPermissions[attr]; +} + +static u8 GetWhichRegionMap(void) +{ + return gUnknown_20399D4->field_479B; +} + +static u8 sub_80C0E34(void) +{ + return gUnknown_20399D4->field_479C; +} + +static void SetWhichRegionMap(u8 a0) +{ + gUnknown_20399D4->field_479B = a0; +} + +static void sub_80C0E5C(u8 a0) +{ + gUnknown_20399D4->field_479C = a0; +} + +static 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->selectionCursorSubspriteData[0].xCoord = 0x58; + gUnknown_20399D8->selectionCursorSubspriteData[1].xCoord = 0x98; + switch (gUnknown_20399D8->field_1CCC) + { + case 1: + LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->tileMap); + gUnknown_20399D8->field_1CCE = 6; + break; + case 2: // never reached + 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->tileMap); + break; + } + 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(gText_RegionMap_AButtonOK); + gTasks[taskId].func = sub_80C1098; +} + +static void sub_80C0FE0(void) +{ + sub_80C4BE4(); + sub_80C4C2C(27, 4, 64); + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); +} + +static bool8 sub_80C1014(void) +{ + if (gUnknown_20399D8->field_1CCD < 16) + { + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); + gUnknown_20399D8->field_1CCD += 2; + return FALSE; + } + else + { + return TRUE; + } +} + +static bool8 sub_80C1058(void) +{ + if (gUnknown_20399D8->field_1CCD >= 2) + { + gUnknown_20399D8->field_1CCD -= 2; + sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD); + return FALSE; + } + else + { + return TRUE; + } +} + +static void sub_80C1098(u8 taskId) +{ + switch (gUnknown_20399D8->field_1CC8) + { + case 0: + NullVBlankHBlankCallbacks(); + sub_80C4E18(gText_RegionMap_UpDownPick); + gUnknown_20399D8->field_1CC8++; + break; + case 1: + LoadBgTiles(2, gUnknown_20399D8->bgTiles, 0x1000, 0x000); + gUnknown_20399D8->field_1CC8++; + break; + case 2: + sub_80C1324(2, gUnknown_20399D8->tileMap); + 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 (LoadAndCreateSelectionCursorSpriteGfx() == TRUE) + { + gUnknown_20399D8->field_1CC8++; + } + break; + case 9: + if (sub_80C1478() == TRUE) + { + SetWhichRegionMap(gUnknown_20399D8->field_1CCA); + if (sub_80C0E34() == gUnknown_20399D8->field_1CCA) + { + sub_80C4324(FALSE); + sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE); + sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE); + } + gUnknown_20399D8->field_1CC8++; + } + break; + case 10: + if (sub_80C12EC() == TRUE) + { + DestroySelectionCursorSprites(); + sub_80C0FE0(); + gUnknown_20399D8->field_1CC8++; + } + break; + case 11: + if (sub_80C1058() == TRUE) + { + gUnknown_20399D8->field_1CC8++; + } + break; + case 12: + sub_80C3154(FALSE); + gUnknown_20399D8->field_1CC8++; + break; + default: + sub_80C1280(taskId); + break; + } +} + +static void sub_80C1280(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399D8->field_1CD0; + HideBg(2); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C4E74(gText_RegionMap_AButtonSwitch); + sub_80C0AB8(); + sub_80C0B9C(); + SetGpuWindowDims(0, &sStdWindowDims[2]); + FREE_IF_NOT_NULL(gUnknown_20399D8); +} + +static 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; + } +} + +static void sub_80C1324(u8 bg, u16 *map) +{ + s16 i; + s16 j; + u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[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]; + } + } +} + +static void sub_80C1390(void) +{ + 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; + 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); + SetGpuWindowDims(1, &data); +} + +static 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; + } +} + +static bool8 sub_80C1478(void) +{ + bool8 r6 = FALSE; + 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; + 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->layouts[gUnknown_20399D8->field_1CCA]); + CopyBgTilemapBufferToVram(0); + sub_80C48BC(255, 25, TRUE); + sub_80C4960(255, 25, TRUE); + return TRUE; + } + if (r6) + { + sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D8->field_1CCA]); + sub_80C4E74(gText_RegionMap_AButtonOK); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(3); + 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); + else + sub_80C4324(FALSE); + SetGpuWindowDims(1, &data); + return FALSE; +} + +static void SpriteCB_SelectionCursor(struct Sprite * sprite) +{ + sprite->pos1.y = gUnknown_20399D8->field_1CD4[1] + 16; +} + +static bool8 LoadAndCreateSelectionCursorSpriteGfx(void) +{ + switch (gUnknown_20399D8->selectionCursorLoadState) + { + case 0: + LZ77UnCompWram(sSelectionCursorLeftTiles, gUnknown_20399D8->selectionCursorSubspriteData[0].tiles); + break; + case 1: + LZ77UnCompWram(sSelectionCursorRightTiles, gUnknown_20399D8->selectionCursorSubspriteData[1].tiles); + break; + case 2: + CreateSelectionCursorSubsprite(0, 2, 2); + CreateSelectionCursorSubsprite(1, 3, 3); + break; + default: + return TRUE; + } + gUnknown_20399D8->selectionCursorLoadState++; + return FALSE; +} + +static void CreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag) +{ + RealCreateSelectionCursorSubsprite(whichSprite, tileTag, paletteTag); +} + +static void RealCreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + + struct SpriteSheet spriteSheet = { + .data = gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tiles, + .size = 0x400, + .tag = tileTag + }; + struct SpritePalette spritePalette = { + .data = sSelectionCursorPals, + .tag = paletteTag + }; + struct SpriteTemplate template = { + .tileTag = tileTag, + .paletteTag = paletteTag, + .oam = &sSelectionCursorOam, + .anims = sSelectionCursorAnims, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SelectionCursor + }; + + gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tileTag = tileTag; + gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].paletteTag = paletteTag; + + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + + 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 DestroySelectionCursorSprites(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + if (gUnknown_20399D8->selectionCursorSubspriteData[i].sprite != NULL) + { + DestroySprite(gUnknown_20399D8->selectionCursorSubspriteData[i].sprite); + FreeSpriteTilesByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].tileTag); + FreeSpritePaletteByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].paletteTag); + } + } +} + +static const u8 *GetDungeonFlavorText(u16 mapsec) +{ + u8 i; + for (i = 0; i < NELEMS(sDungeonHighlights); i++) + { + if (sDungeonHighlights[i].id == mapsec) + return sDungeonHighlights[i].desc; + } + return gText_RegionMap_NoData; +} + +static const u8 *GetDungeonName(u16 mapsec) +{ + u8 i; + for (i = 0; i < NELEMS(sDungeonHighlights); i++) + { + if (sDungeonHighlights[i].id == mapsec) + return sDungeonHighlights[i].name; + } + return gText_RegionMap_NoData; +} + +static void RegionMapCreateDungeonMapPreview(u8 a0, u8 taskId, TaskFunc taskFunc) +{ + u8 r0; + sDungeonMapPreviewManager = AllocZeroed(sizeof(struct DungeonMapPreviewManagerStruct)); + r0 = GetMapSecUnderCursor(); + if (r0 == MAPSEC_TANOBY_CHAMBERS) + r0 = MAPSEC_MONEAN_CHAMBER; + 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 = Task_PrepDungeonMapPreviewAndFlavorText; +} + +static bool8 HandleLoadMapPreviewScreenGfx(void) +{ + switch (sDungeonMapPreviewManager->field_3D4A) + { + case 0: + LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilesptr, sDungeonMapPreviewManager->tiles); + break; + case 1: + LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilemapptr, sDungeonMapPreviewManager->tilemap); + break; + case 2: + LoadBgTiles(2, sDungeonMapPreviewManager->tiles, 0x3840, 0x000); + break; + case 3: + LoadPalette(sDungeonMapPreviewManager->mapPreviewInfo->palptr, 0xD0, 0x60); + break; + default: + return TRUE; + } + sDungeonMapPreviewManager->field_3D4A++; + return FALSE; +} + +static void Task_PrepDungeonMapPreviewAndFlavorText(u8 taskId) +{ + switch (sDungeonMapPreviewManager->dungeonMapPreviewPrepState) + { + case 0: + NullVBlankHBlankCallbacks(); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 1: + if (HandleLoadMapPreviewScreenGfx() == TRUE) + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 2: + sub_80C1E94(); + sub_80C4E74(gText_RegionMap_AButtonCancel2); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 3: + CopyMapPreviewTilemapToBgTilemapBuffer(2, sDungeonMapPreviewManager->tilemap); + CopyBgTilemapBufferToVram(2); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 4: + ShowBg(2); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 5: + sub_80C08F4(); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 6: + if (sub_80C1F80(FALSE) == TRUE) + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + case 7: + gTasks[taskId].func = Task_DrawDungeonMapPreviewAndFlavorText; + break; + case 8: + if (sub_80C1F80(TRUE) == TRUE) + { + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + } + break; + case 9: + DestroyMapPreviewAssets(taskId); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + break; + } +} + +static void Task_DrawDungeonMapPreviewAndFlavorText(u8 taskId) +{ + switch (sDungeonMapPreviewManager->dungeonMapPreviewDrawState) + { + case 0: + sDungeonMapPreviewManager->field_3E0E = 0x0133; + sDungeonMapPreviewManager->field_3E10 = 0x0100; + sDungeonMapPreviewManager->field_3E12 = 0x00F0; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; + break; + case 1: + if (sDungeonMapPreviewManager->field_3D4C++ > 40) + { + sDungeonMapPreviewManager->field_3D4C = 0; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; + } + break; + case 2: + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + PutWindowTilemap(2); + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; + break; + case 3: + if (sDungeonMapPreviewManager->field_3D4C > 25) + { + AddTextPrinterParameterized3(2, 2, 4, 0, sTextColor_Green, -1, GetDungeonName(GetMapSecUnderCursor())); + AddTextPrinterParameterized3(2, 2, 2, 14, sTextColor_White, -1, GetDungeonFlavorText(GetMapSecUnderCursor())); + CopyWindowToVram(2, 3); + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; + } + else if (sDungeonMapPreviewManager->field_3D4C > 20) + { + 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); + } + sDungeonMapPreviewManager->field_3D4C++; + break; + case 4: + if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) + { + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + sDungeonMapPreviewManager->dungeonMapPreviewPrepState++; + sDungeonMapPreviewManager->dungeonMapPreviewDrawState++; + } + break; + default: + gTasks[taskId].func = Task_PrepDungeonMapPreviewAndFlavorText; + break; + } +} + +static void DestroyMapPreviewAssets(u8 taskId) +{ + gTasks[taskId].func = sDungeonMapPreviewManager->savedTask; + HideBg(2); + sub_80C4B30(0); + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0AB8(); + sub_80C0B9C(); + sub_80C4E74(gText_RegionMap_AButtonGuide); + FREE_IF_NOT_NULL(sDungeonMapPreviewManager); +} + +static void CopyMapPreviewTilemapToBgTilemapBuffer(u8 bgId, const u16 * tilemap) +{ + CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); +} + +static void sub_80C1E94(void) +{ + u16 r4; + u16 r0; + sub_80C4BE4(); + sub_80C4C2C(0, 17, 192); + sub_80C4C48(sDungeonMapPreviewManager->field_3E14); + sub_80C4C74(0, 13); + sub_80C4C88(59); + sub_80C4C9C(1, 0); + 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 GpuWindowParams data; + + if (!a0) + { + if (sDungeonMapPreviewManager->field_3D4B < 8) + { + 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 + { + return TRUE; + } + } + else + { + if (sDungeonMapPreviewManager->field_3D4B == 0) + { + return TRUE; + } + else + { + 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 = 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; +} + +static void nullsub_63(struct Sprite * sprite) +{ + +} + +static 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; +} + +static 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(); + SetBg0andBg3Visibility(1); + gUnknown_20399E0->field_CC8 = taskFunc; + gTasks[taskId].func = sub_80C267C; +} + +static 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; + } +} + +static 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; +} + +static void sub_80C24BC(void) +{ + 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; + data.v6 = 0xA0; + sub_80C4C2C(0, 2, 0); + sub_80C4C74(18, 0); + sub_80C4C88(16); + SetGpuWindowDims(0, &data); + sub_80C4C9C(0, 0); +} + +static void sub_80C253C(void) +{ + 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); + SetGpuWindowDims(0, &data); + sub_80C4C9C(0, 0); +} + +static void sub_80C2594(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399E0->field_CC8; +} + +static 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); +} + +static 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); + } + } +} + +static void sub_80C267C(u8 taskId) +{ + switch (gUnknown_20399E0->field_CCC) + { + case 0: + NullVBlankHBlankCallbacks(); + 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(FALSE); + sub_80C3154(FALSE); + gUnknown_20399E0->field_CCC++; + break; + case 8: + gUnknown_20399E0->field_CD0 = 15; + sub_80C253C(); + SetBg0andBg3Visibility(0); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); + gUnknown_20399E0->field_CCC++; + break; + case 9: + sub_80C4E18(gText_RegionMap_DPadMove); + if (sub_80C3AC8(1) != 2) + sub_80C4E74(gText_RegionMap_Space); + else + sub_80C4E74(gText_RegionMap_AButtonGuide); + 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; + } +} + +static 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; +} + +static void sub_80C2B48(void) +{ + 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; + SetGpuWindowDims(0, &data); +} + +static void sub_80C2B9C(void) +{ + 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; + data.v6 = 0xA0; + sub_80C4C2C(0, 2, 0); + sub_80C4C74(18, 0); + sub_80C4C88(16); + SetGpuWindowDims(0, &data); + sub_80C4C9C(0, 0); +} + +static void sub_80C2C1C(u8 taskId) +{ + gTasks[taskId].func = sub_80C2C7C; +} + +static 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); +} + +static 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(TRUE); + sub_80C3154(TRUE); + sub_80C4960(255, 25, TRUE); + sub_80C48BC(255, 25, TRUE); + 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; + } +} + + +static 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; +} + +static 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; + } +} + +static 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; + 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(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + sub_80C309C(); +} + +static 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); +} + +static void sub_80C3154(bool8 a0) +{ + gUnknown_20399E4->field_01C->invisible = a0; +} + +static void sub_80C3178(void) +{ + gUnknown_20399E4->field_00E = 0; +} + +static 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); +} + +static 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 (GetRegionMapPermission(MAPPERM_0) == TRUE) + { + PlaySE(SE_W063B); + ret = 5; + } + } + } + else if (!JOY_NEW(B_BUTTON)) + { + if (JOY_REPT(START_BUTTON)) + { + sub_80C3418(); + 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(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + return 3; + } + else if (JOY_NEW(SELECT_BUTTON) && gUnknown_20399D4->savedCallback == CB2_ReturnToField) + { + ret = 6; + } + } + else + { + ret = 6; + } + if (ret == 1) + { + gUnknown_20399E4->field_00C = 4; + gUnknown_20399E4->field_010 = sub_80C3348; + } + return ret; +} + +static 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 = 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(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000)); + gUnknown_20399E4->field_010 = sub_80C31C0; + return 3; +} + +static u8 sub_80C3400(void) +{ + return gUnknown_20399E4->field_010(); +} + +static void sub_80C3418(void) +{ + if (GetRegionMapPermission(MAPPERM_0) == 1) + { + gUnknown_20399E4->field_00E++; + gUnknown_20399E4->field_00E %= 3; + if (gUnknown_20399E4->field_00E == 0 && GetWhichRegionMap() != 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 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); +} + +static u16 GetMapCursorX(void) +{ + return gUnknown_20399E4->field_000; +} + +static u16 GetMapCursorY(void) +{ + return gUnknown_20399E4->field_002; +} + +static 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 = 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 GetMapSecUnderCursor(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 = 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; +} + +static 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 (!GetRegionMapPermission(MAPPERM_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; + } +} + +static 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; + } +} + +static 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; + } +} + +static u16 GetPlayerCurrentMapSectionId(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; +} + +static void GetPlayerPositionOnRegionMap(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 / sMapSectionDimensions[gUnknown_20399E4->field_014][0]; + if (divisor == 0) + divisor = 1; + x /= divisor; + 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 >= 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 GetPlayerPositionOnRegionMap_HandleOverrides(void) +{ + switch (GetPlayerCurrentMapSectionId()) + { + 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 + { + GetPlayerPositionOnRegionMap(); + } + 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 + { + GetPlayerPositionOnRegionMap(); + } + break; + case MAPSEC_ROUTE_6: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 14; + gUnknown_20399E4->field_002 = 7; + } + else + { + GetPlayerPositionOnRegionMap(); + } + break; + case MAPSEC_ROUTE_7: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 13; + gUnknown_20399E4->field_002 = 6; + } + else + { + GetPlayerPositionOnRegionMap(); + } + break; + case MAPSEC_ROUTE_8: + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN)) + { + gUnknown_20399E4->field_000 = 15; + gUnknown_20399E4->field_002 = 6; + } + else + { + GetPlayerPositionOnRegionMap(); + } + break; + default: + GetPlayerPositionOnRegionMap(); + break; + } + gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000); +} + +static u8 GetSelectedMapSection(u8 whichMap, u8 layer, s16 y, s16 x) +{ + switch (whichMap) + { + case 0: + return sRegionMapSections_Kanto[layer][y][x]; + case 1: + return sRegionMapSections_Sevii123[layer][y][x]; + case 2: + return sRegionMapSections_Sevii45[layer][y][x]; + case 3: + return sRegionMapSections_Sevii67[layer][y][x]; + default: + return MAPSEC_NONE; + } +} + +static 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 = GetMapCursorX(); + gUnknown_20399E8->field_02 = GetMapCursorY(); + sub_80C4244(); +} + +static 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); +} + +static void sub_80C4324(bool8 a0) +{ + gUnknown_20399E8->field_04->invisible = a0; +} + +static 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); +} + +static u16 sub_80C4380(void) +{ + return gUnknown_20399E8->field_00; +} + +static u16 sub_80C438C(void) +{ + return gUnknown_20399E8->field_02; +} + +static 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; +} + +static void sub_80C440C(u8 taskId) +{ + switch (gUnknown_20399EC->field_463) + { + case 0: + NullVBlankHBlankCallbacks(); + 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; + } +} + +static void sub_80C44E4(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399EC->field_468; +} + +static 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_2D0[a1].field_8 = &gSprites[spriteId]; + gSprites[spriteId].invisible = TRUE; + gUnknown_20399EC->field_2D0[a1].field_4 = a0; +} + +static 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 = 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); + gUnknown_20399EC->field_140[a1].field_8 = &gSprites[spriteId]; + gSprites[spriteId].invisible = TRUE; + gUnknown_20399EC->field_140[a1].field_4 = a0; +} + +static void sub_80C4750(void) +{ + u16 i, j, k; + u8 r7 = 0; + if (GetRegionMapPermission(MAPPERM_3)) + { + for (i = 0; i < 4; i++) + { + for (j = 0; j < 15; j++) + { + for (k = 0; k < 22; k++) + { + if (sub_80C35DC(GetSelectedMapSection(i, 0, j, k)) == 2) + { + sub_80C450C(i, r7, k, j, r7 + 10, 10); + r7++; + } + } + } + } + } +} + +static 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 = GetSelectedMapSection(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_140[r6].field_8, 1); + } + r6++; + } + } + } +} + +static 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; + } +} + +static 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; + } +} + +static 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); +} + +static 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; +} + +static 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; +} + +static void sub_80C4BB8(void) +{ + u8 i; + for (i = 0; i < 3; i++) + { + FREE_IF_NOT_NULL(gUnknown_20399F0[i]); + } +} + +static void sub_80C4BE4(void) +{ + struct GpuWindowParams data = {}; + sub_80C4C2C(0, 0, 0); + sub_80C4C48(0); + SetGpuWindowDims(0, &data); + SetGpuWindowDims(1, &data); + sub_80C4C74(0, 0); + sub_80C4C9C(0, 1); + sub_80C4C9C(1, 1); +} + +static void sub_80C4C2C(u8 a0, u16 a1, u16 a2) +{ + u16 regval = a0 << 8; + regval |= a1; + regval |= a2; + SetGpuReg(REG_OFFSET_BLDCNT, regval); +} + +static void sub_80C4C48(u16 a0) +{ + SetGpuReg(REG_OFFSET_BLDY, a0); +} + +static void sub_80C4C5C(u16 a0, u16 a1) +{ + u16 regval = a0 << 8; + regval |= a1; + SetGpuReg(REG_OFFSET_BLDALPHA, regval); +} + +static void sub_80C4C74(u16 a0, u16 a1) +{ + u16 regval = a1 << 8; + regval |= a0; + SetGpuReg(REG_OFFSET_WININ, regval); +} + +static void sub_80C4C88(u16 a0) +{ + SetGpuReg(REG_OFFSET_WINOUT, a0); +} + +static void sub_80C4C9C(u8 a0, u8 a1) +{ + u16 data[2]; + memcpy(data, sWinFlags, 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; + } +} + +static void SetGpuWindowDims(u8 winIdx, const struct GpuWindowParams *data) +{ + SetGpuReg(sWinRegs[winIdx][0], (data->v2 << 8) | data->v6); + SetGpuReg(sWinRegs[winIdx][1], (data->v0 << 8) | data->v4); +} + +static void sub_80C4D30(void) +{ + sub_80C4BB8(); + sub_80C4BE4(); +} + +static 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, sMapNames[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); +} + +static void sub_80C4E18(const u8 *str) +{ + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE) + FillWindowPixelBuffer(3, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(3, PIXEL_FILL(15)); + AddTextPrinterParameterized3(3, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(3, 2); +} + +static void sub_80C4E74(const u8 *str) +{ + if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE) + FillWindowPixelBuffer(4, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(4, PIXEL_FILL(15)); + AddTextPrinterParameterized3(4, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(4, 3); +} + +static 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); +} + +static void sub_80C4F08(u8 taskId) +{ + switch (gUnknown_20399FC->field_0) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C4398(GetWhichRegionMap(), 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 (GetRegionMapPermission(MAPPERM_2) == TRUE) + { + sub_80C2208(taskId, sub_80C07E4()); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gText_RegionMap_DPadMove); + sub_80C48BC(GetWhichRegionMap(), 25, FALSE); + sub_80C4960(GetWhichRegionMap(), 25, FALSE); + } + gUnknown_20399FC->field_0++; + break; + case 2: + sub_80C4E74(gText_RegionMap_AButtonOK); + 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 (GetMapCursorX() == 21 && GetMapCursorY() == 13) + { + PlaySE(SE_W255); + sub_80C4E74(gText_RegionMap_AButtonCancel); + } + else if (sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) + { + sub_80C4E74(gText_RegionMap_AButtonOK); + } + else + { + sub_80C4E74(gText_RegionMap_Space); + } + break; + case 4: + 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)) + { + 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(GetWhichRegionMap(), taskId, sub_80C07F8); + break; + } + break; + case 5: + if (GetRegionMapPermission(MAPPERM_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; + } +} + +static void sub_80C51E8(void) +{ + gUnknown_20399FC = AllocZeroed(sizeof(struct UnkStruct_20399FC)); + gUnknown_20399FC->field_0 = 0; + gUnknown_20399FC->field_1 = 0; +} + +static void sub_80C5208(u8 taskId) +{ + if (GetRegionMapPermission(MAPPERM_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); +} + +static void sub_80C527C(u16 mapsec) +{ + u16 idx = mapsec - MAPSECS_KANTO; + if (sMapsecToSpawn[idx][2]) + { + sub_805546C(sMapsecToSpawn[idx][2]); + sub_8124C1C(sMapsecToSpawn[idx]); + } + else + { + warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1); + } + sub_80842C8(); +} 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 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 |