diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2019-01-26 20:56:06 +0100 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2019-01-26 20:56:06 +0100 |
commit | 01c3f3fc059b01b17ae7ceb0168be76617e1714d (patch) | |
tree | eb8ec0ef843d99ef6f39de8f20c0dd63ed469c09 | |
parent | 03549349f89ba464b1f4b4f7c87b204f3045741b (diff) |
Document all of frontier pass
-rw-r--r-- | asm/frontier_pass.s | 1335 | ||||
-rw-r--r-- | data/frontier_pass.s | 229 | ||||
-rw-r--r-- | include/graphics.h | 6 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 1 | ||||
-rw-r--r-- | include/string_util.h | 2 | ||||
-rw-r--r-- | include/strings.h | 30 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/frontier_pass.c | 1052 | ||||
-rw-r--r-- | src/pokemon_storage_system.c | 138 | ||||
-rw-r--r-- | src/string_util.c | 2 | ||||
-rw-r--r-- | src/trade.c | 3 | ||||
-rw-r--r-- | sym_ewram.txt | 14 |
12 files changed, 763 insertions, 2052 deletions
diff --git a/asm/frontier_pass.s b/asm/frontier_pass.s deleted file mode 100644 index 7f9cf934b..000000000 --- a/asm/frontier_pass.s +++ /dev/null @@ -1,1335 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - thumb_func_start ShowFrontierMap -ShowFrontierMap: @ 80C6454 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gUnknown_02039CF4 - ldr r0, [r5] - cmp r0, 0 - beq _080C6466 - adds r0, r4, 0 - bl SetMainCallback2 -_080C6466: - ldr r0, =0x00003014 - bl AllocZeroed - str r0, [r5] - str r4, [r0] - bl ResetTasks - ldr r0, =sub_80C67BC - movs r1, 0 - bl CreateTask - ldr r0, =CB2_FrontierPass - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ShowFrontierMap - - thumb_func_start sub_80C6498 -sub_80C6498: @ 80C6498 - push {r4,lr} - bl ResetTasks - ldr r4, =gUnknown_02039CF4 - ldr r0, [r4] - ldr r0, [r0] - bl SetMainCallback2 - ldr r0, [r4] - ldr r2, =0x00003014 - movs r1, 0 - bl memset - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6498 - - thumb_func_start sub_80C64CC -sub_80C64CC: @ 80C64CC - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, =gUnknown_02039CEC - ldr r0, [r0] - ldrh r0, [r0, 0x4] - cmp r0, 0x7 - bls _080C64DC - b _080C6694 -_080C64DC: - lsls r0, 2 - ldr r1, =_080C64F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080C64F0: - .4byte _080C6510 - .4byte _080C6520 - .4byte _080C6526 - .4byte _080C6538 - .4byte _080C65C0 - .4byte _080C65E8 - .4byte _080C6628 - .4byte _080C6678 -_080C6510: - movs r0, 0 - bl SetVBlankCallback - bl ScanlineEffect_Stop - bl SetVBlankHBlankCallbacksToNull - b _080C6694 -_080C6520: - bl sub_80C50D0 - b _080C6694 -_080C6526: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetPaletteFade - bl reset_temp_tile_data_buffers - b _080C6694 -_080C6538: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085713F4 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, =gUnknown_02039CF4 - ldr r1, [r4] - adds r1, 0x12 - movs r0, 0 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, =0x00001012 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, =0x00002012 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _080C6618 - .pool -_080C65C0: - ldr r0, =gUnknown_08571428 - bl InitWindows - bl DeactivateAllTextPrinters - bl sub_80C6B94 - ldr r1, =gUnknown_0856FBBC - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _080C6694 - .pool -_080C65E8: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - cmp r0, 0 - bne _080C669E - ldr r0, =gUnknown_08DE07C8 - movs r2, 0xD0 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - movs r0, 0 - bl stdpal_get - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, =gUnknown_08570E00 - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer -_080C6618: - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _080C6694 - .pool -_080C6628: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - bl sub_80C6974 - ldr r0, =VblankCb_FrontierPass - bl SetVBlankCallback - movs r5, 0x1 - negs r5, r5 - ldr r4, =0x00007fff - adds r0, r5, 0 - movs r1, 0x10 - adds r2, r4, 0 - bl BlendPalettes - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _080C6694 - .pool -_080C6678: - bl UpdatePaletteFade - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080C669E - ldr r0, =gUnknown_02039CEC - ldr r0, [r0] - strh r1, [r0, 0x4] - movs r0, 0x1 - b _080C66A0 - .pool -_080C6694: - ldr r0, =gUnknown_02039CEC - ldr r1, [r0] - ldrh r0, [r1, 0x4] - adds r0, 0x1 - strh r0, [r1, 0x4] -_080C669E: - movs r0, 0 -_080C66A0: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80C64CC - - thumb_func_start sub_80C66AC -sub_80C66AC: @ 80C66AC - push {r4,lr} - sub sp, 0x4 - ldr r0, =gUnknown_02039CEC - ldr r0, [r0] - ldrh r0, [r0, 0x4] - cmp r0, 0x5 - bhi _080C67A4 - lsls r0, 2 - ldr r1, =_080C66CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080C66CC: - .4byte _080C66E4 - .4byte _080C66FC - .4byte _080C6722 - .4byte _080C6732 - .4byte _080C6774 - .4byte _080C6782 -_080C66E4: - movs r0, 0x1 - negs r0, r0 - ldr r1, =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080C67A4 - .pool -_080C66FC: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080C67AE - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl HideBg - movs r0, 0x1 - bl HideBg - movs r0, 0x2 - bl HideBg - b _080C67A4 -_080C6722: - movs r0, 0 - bl SetVBlankCallback - bl ScanlineEffect_Stop - bl SetVBlankHBlankCallbacksToNull - b _080C67A4 -_080C6732: - ldr r4, =gUnknown_02039CF4 - ldr r0, [r4] - ldr r0, [r0, 0x4] - cmp r0, 0 - beq _080C6746 - bl DestroySprite - movs r0, 0 - bl FreeSpriteTilesByTag -_080C6746: - ldr r0, [r4] - ldr r0, [r0, 0xC] - cmp r0, 0 - beq _080C6758 - bl DestroySprite - movs r0, 0x1 - bl FreeSpriteTilesByTag -_080C6758: - ldr r0, [r4] - ldr r0, [r0, 0x8] - cmp r0, 0 - beq _080C676A - bl DestroySprite - movs r0, 0x4 - bl FreeSpriteTilesByTag -_080C676A: - bl FreeAllWindowBuffers - b _080C67A4 - .pool -_080C6774: - bl sub_80C50D0 - bl ResetSpriteData - bl FreeAllSpritePalettes - b _080C67A4 -_080C6782: - movs r0, 0 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - movs r0, 0x2 - bl UnsetBgTilemapBuffer - ldr r0, =gUnknown_02039CEC - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x4] - movs r0, 0x1 - b _080C67B0 - .pool -_080C67A4: - ldr r0, =gUnknown_02039CEC - ldr r1, [r0] - ldrh r0, [r1, 0x4] - adds r0, 0x1 - strh r0, [r1, 0x4] -_080C67AE: - movs r0, 0 -_080C67B0: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80C66AC - - thumb_func_start sub_80C67BC -sub_80C67BC: @ 80C67BC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080C67D6 - b _080C68DA -_080C67D6: - lsls r0, 2 - ldr r1, =_080C67E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080C67E8: - .4byte _080C6800 - .4byte _080C6806 - .4byte _080C686C - .4byte _080C6894 - .4byte _080C68C4 - .4byte _080C68CE -_080C6800: - bl sub_80C64CC - b _080C68C8 -_080C6806: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x2 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C6824 - movs r0, 0x3 - bl PlaySE - movs r0, 0x4 - b _080C68DE - .pool -_080C6824: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C6848 - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r0, 0x5 - bls _080C6844 - movs r0, 0 - bl sub_80C6C70 - b _080C68E0 - .pool -_080C6844: - strh r2, [r4] - b _080C68E0 -_080C6848: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080C68E0 - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r0, 0 - bne _080C6868 - movs r0, 0x1 - bl sub_80C6C70 - b _080C68E0 - .pool -_080C6868: - movs r0, 0x3 - b _080C68DE -_080C686C: - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080C6882 - movs r0, 0 - bl sub_80C6C70 - movs r0, 0 - strh r0, [r4, 0x2] - movs r0, 0x1 - b _080C68DE -_080C6882: - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldrh r0, [r1, 0x22] - adds r0, 0x4 - b _080C68B4 - .pool -_080C6894: - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080C68AA - movs r0, 0x1 - bl sub_80C6C70 - movs r0, 0 - strh r0, [r4, 0x2] - movs r0, 0x1 - b _080C68DE -_080C68AA: - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldrh r0, [r1, 0x22] - subs r0, 0x4 -_080C68B4: - strh r0, [r1, 0x22] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - b _080C68E0 - .pool -_080C68C4: - bl sub_80C66AC -_080C68C8: - cmp r0, 0 - bne _080C68DA - b _080C68E0 -_080C68CE: - adds r0, r2, 0 - bl DestroyTask - bl sub_80C6498 - b _080C68E0 -_080C68DA: - ldrh r0, [r4] - adds r0, 0x1 -_080C68DE: - strh r0, [r4] -_080C68E0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80C67BC - - thumb_func_start sub_80C68E8 -sub_80C68E8: @ 80C68E8 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r2, =0xfffb0000 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0x3 - bls _080C6904 - adds r0, r1, 0 - subs r0, 0xF - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _080C690C -_080C6904: - movs r0, 0x1 - b _080C696E - .pool -_080C690C: - adds r0, r1, 0 - subs r0, 0x12 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3 - bhi _080C691C - movs r0, 0x2 - b _080C696E -_080C691C: - adds r0, r1, 0 - subs r0, 0x16 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _080C692C - movs r0, 0x3 - b _080C696E -_080C692C: - adds r0, r1, 0 - subs r0, 0x1C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _080C693C - movs r0, 0x4 - b _080C696E -_080C693C: - adds r0, r1, 0 - subs r0, 0x1F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _080C694C - movs r0, 0x5 - b _080C696E -_080C694C: - adds r0, r1, 0 - subs r0, 0x22 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bhi _080C695C - movs r0, 0x6 - b _080C696E -_080C695C: - adds r0, r1, 0 - subs r0, 0x19 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080C696C - movs r0, 0 - b _080C696E -_080C696C: - movs r0, 0x7 -_080C696E: - pop {r1} - bx r1 - thumb_func_end sub_80C68E8 - - thumb_func_start sub_80C6974 -sub_80C6974: @ 80C6974 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - movs r7, 0 - bl FreeAllSpritePalettes - ldr r0, =gUnknown_085714E4 - bl LoadSpritePalettes - ldr r6, =gUnknown_085714BC - adds r0, r6, 0 - bl LoadCompressedSpriteSheet - ldr r0, =gUnknown_085715B4 - mov r8, r0 - ldr r4, =gUnknown_02039CF4 - ldr r0, [r4] - ldrb r2, [r0, 0x10] - lsls r2, 4 - adds r2, 0x8 - mov r0, r8 - movs r1, 0x9B - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, [r4] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r2, =gSprites - mov r9, r2 - add r1, r9 - str r1, [r0, 0x4] - ldrb r2, [r1, 0x5] - movs r5, 0xD - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r4] - ldr r1, [r0, 0x4] - adds r1, 0x3F - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r4] - ldr r0, [r0, 0x4] - movs r1, 0x1 - bl StartSpriteAnim - adds r6, 0x8 - adds r0, r6, 0 - bl LoadCompressedSpriteSheet - movs r3, 0x18 - add r8, r3 - ldr r6, =gUnknown_08571650 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - lsls r0, 4 - adds r0, r6 - movs r2, 0x8 - ldrsh r1, [r0, r2] - movs r3, 0xA - ldrsh r2, [r0, r3] - mov r0, r8 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, [r4] - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - add r0, r9 - str r0, [r1, 0xC] - ldrb r1, [r0, 0x5] - ands r5, r1 - strb r5, [r0, 0x5] - ldr r1, [r4] - ldr r0, [r1, 0xC] - ldrb r1, [r1, 0x10] - lsls r1, 4 - adds r1, r6 - ldrb r1, [r1, 0xC] - bl StartSpriteAnim - bl GetCurrentRegionMapSectionId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3A - beq _080C6A40 - cmp r5, 0xCA - beq _080C6A40 - b _080C6B7A -_080C6A40: - ldr r4, =gSaveBlock1Ptr - ldr r2, [r4] - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r0, 0x4 - beq _080C6A52 - cmp r0, 0xE - bne _080C6A98 - movs r7, 0x37 -_080C6A52: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r6, [r2] - adds r0, r6 - ldrh r4, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080C6A66 - adds r0, 0x7 -_080C6A66: - lsls r0, 13 - lsrs r7, r0, 16 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0 - bge _080C6A74 - adds r0, 0x7 -_080C6A74: - lsls r0, 13 - lsrs r4, r0, 16 - movs r5, 0 - b _080C6AF2 - .pool -_080C6A98: - lsls r0, 16 - lsrs r0, 16 - bl sub_80C68E8 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080C6AB4 - subs r0, r5, 0x1 - lsls r0, 4 - adds r0, r6 - ldrh r7, [r0, 0x8] - ldrh r4, [r0, 0xA] - b _080C6AF2 -_080C6AB4: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x25 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bne _080C6ACE - ldrh r0, [r1, 0x28] - adds r0, 0x37 - lsls r0, 16 - lsrs r7, r0, 16 - b _080C6AD0 -_080C6ACE: - ldrh r7, [r1, 0x28] -_080C6AD0: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r4, [r0, 0x2A] - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0 - bge _080C6AE0 - adds r0, 0x7 -_080C6AE0: - lsls r0, 13 - lsrs r7, r0, 16 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0 - bge _080C6AEE - adds r0, 0x7 -_080C6AEE: - lsls r0, 13 - lsrs r4, r0, 16 -_080C6AF2: - ldr r0, =gUnknown_085714D4 - bl LoadCompressedSpriteSheet - mov r1, sp - ldr r0, =gUnknown_085715FC - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - mov r1, sp - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - adds r0, 0x4 - strh r0, [r1, 0x2] - cmp r5, 0 - beq _080C6B2C - lsls r1, r7, 16 - asrs r1, 16 - lsls r2, r4, 16 - b _080C6B3E - .pool -_080C6B2C: - lsls r1, r7, 19 - lsls r2, r4, 19 - movs r0, 0xA0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - movs r3, 0x90 - lsls r3, 14 - adds r2, r3 -_080C6B3E: - asrs r2, 16 - mov r0, sp - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - ldr r4, =gUnknown_02039CF4 - ldr r2, [r4] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, =gSprites - adds r1, r0 - str r1, [r2, 0x8] - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _080C6B7A - ldr r0, [r4] - ldr r0, [r0, 0x8] - movs r1, 0x1 - bl StartSpriteAnim -_080C6B7A: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6974 - - thumb_func_start sub_80C6B94 -sub_80C6B94: @ 80C6B94 - push {r4-r6,lr} - sub sp, 0xC - movs r4, 0 -_080C6B9A: - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6B9A - movs r4, 0 - movs r6, 0 - ldr r5, =gUnknown_08571650 -_080C6BB8: - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r4, r0 - bne _080C6BF0 - lsls r1, r4, 4 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_0857144E - str r0, [sp] - str r6, [sp, 0x4] - adds r1, r5 - ldr r0, [r1] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x4 - bl AddTextPrinterParameterized3 - b _080C6C0E - .pool -_080C6BF0: - lsls r1, r4, 4 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_0857144B - str r0, [sp] - str r6, [sp, 0x4] - adds r1, r5 - ldr r0, [r1] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x4 - bl AddTextPrinterParameterized3 -_080C6C0E: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080C6BB8 - ldr r0, =gUnknown_08571448 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r1, =gUnknown_08571650 - ldr r0, =gUnknown_02039CF4 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - lsls r0, 4 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r4, 0 -_080C6C40: - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6C40 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6B94 - - thumb_func_start sub_80C6C70 -sub_80C6C70: @ 80C6C70 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - lsls r0, 24 - cmp r0, 0 - beq _080C6C8C - ldr r0, =gUnknown_02039CF4 - ldr r4, [r0] - ldrb r5, [r4, 0x10] - adds r0, r5, 0x6 - b _080C6C94 - .pool -_080C6C8C: - ldr r0, =gUnknown_02039CF4 - ldr r4, [r0] - ldrb r5, [r4, 0x10] - adds r0, r5, 0x1 -_080C6C94: - movs r1, 0x7 - bl __modsi3 - strb r0, [r4, 0x10] - lsls r0, r5, 4 - adds r3, r0, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldr r6, =gUnknown_0857144B - str r6, [sp] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x4] - ldr r4, =gUnknown_08571650 - adds r0, r4 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x4 - bl AddTextPrinterParameterized3 - ldr r5, =gUnknown_02039CF4 - ldr r1, [r5] - ldrb r3, [r1, 0x10] - lsls r3, 4 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0x3 - str r0, [sp] - mov r0, r8 - str r0, [sp, 0x4] - ldrb r0, [r1, 0x10] - lsls r0, 4 - adds r0, r4 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x4 - bl AddTextPrinterParameterized3 - ldr r1, [r5] - ldr r2, [r1, 0x4] - ldrb r0, [r1, 0x10] - lsls r0, 4 - adds r0, 0x8 - strh r0, [r2, 0x22] - ldr r0, [r1, 0xC] - ldrb r1, [r1, 0x10] - lsls r1, 4 - adds r1, r4 - ldrb r1, [r1, 0xC] - bl StartSpriteAnim - ldr r1, [r5] - ldr r2, [r1, 0xC] - ldrb r0, [r1, 0x10] - lsls r0, 4 - adds r0, r4 - ldrh r0, [r0, 0x8] - strh r0, [r2, 0x20] - ldr r2, [r1, 0xC] - ldrb r0, [r1, 0x10] - lsls r0, 4 - adds r0, r4 - ldrh r0, [r0, 0xA] - strh r0, [r2, 0x22] - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - subs r6, 0x3 - str r6, [sp] - mov r1, r8 - str r1, [sp, 0x4] - ldr r0, [r5] - ldrb r0, [r0, 0x10] - lsls r0, 4 - adds r4, 0x4 - adds r0, r4 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r4, 0 -_080C6D4A: - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080C6D4A - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x6C - bl PlaySE - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6C70 - - thumb_func_start sub_80C6D80 -sub_80C6D80: @ 80C6D80 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r0, [sp, 0x24] - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x28] - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - movs r0, 0 - movs r1, 0 - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - ldr r1, =0x00ffffff - ldr r0, [sp, 0x1C] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 21 - orrs r0, r1 - str r0, [sp, 0x1C] - ldr r1, =0xffffff00 - add r5, sp, 0x1C - ldr r0, [r5, 0x4] - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - str r0, [r5, 0x4] - adds r0, r5, 0 - bl AddWindow - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r4, r0, 24 - lsrs r4, 24 - mov r0, r9 - lsls r1, r0, 4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - movs r1, 0x7 - bl GetWindowAttribute - adds r6, r0, 0 - ldrb r0, [r5, 0x3] - lsls r0, 5 - adds r0, r6 - mov r8, r0 - ldr r1, [sp, 0x28] - cmp r1, 0 - bne _080C6E04 - add r0, sp, 0x14 - b _080C6E08 - .pool -_080C6E04: - add r0, sp, 0x14 - mov r1, r9 -_080C6E08: - strb r1, [r0] - add r1, sp, 0x14 - movs r2, 0 - movs r0, 0xF - strb r0, [r1, 0x1] - movs r0, 0xE - strb r0, [r1, 0x2] - mov r0, r10 - lsls r4, r0, 24 - lsrs r0, r4, 24 - str r2, [sp] - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - ldr r1, [sp, 0x24] - str r1, [sp, 0x10] - movs r1, 0x1 - movs r3, 0x1 - bl AddTextPrinterParameterized4 - ldr r0, [sp, 0x4C] - mov r10, r4 - cmp r0, 0x6 - bls _080C6E3E - movs r0, 0x6 -_080C6E3E: - ldr r4, [sp, 0x4C] - subs r4, 0x6 - cmp r0, 0 - ble _080C6E70 - adds r5, r0, 0 -_080C6E48: - adds r0, r6, 0 - adds r1, r7, 0 - movs r2, 0x40 - bl CpuSet - adds r1, r7, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x40 - bl CpuSet - adds r6, 0x80 - movs r2, 0x80 - add r8, r2 - movs r0, 0x80 - lsls r0, 1 - adds r7, r0 - subs r5, 0x1 - cmp r5, 0 - bne _080C6E48 -_080C6E70: - cmp r4, 0 - ble _080C6E90 - add r0, sp, 0x18 - mov r2, r9 - lsls r1, r2, 4 - orrs r1, r2 - strh r1, [r0] - lsls r2, r4, 7 - ldr r1, =0x001fffff - ands r2, r1 - movs r1, 0x80 - lsls r1, 17 - orrs r2, r1 - adds r1, r7, 0 - bl CpuSet -_080C6E90: - mov r1, r10 - lsrs r0, r1, 24 - bl RemoveWindow - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6D80 - - thumb_func_start sub_80C6EAC -sub_80C6EAC: @ 80C6EAC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r0, [sp, 0x20] - str r1, [sp, 0x24] - adds r6, r3, 0 - ldr r0, [sp, 0x4C] - mov r9, r0 - ldr r1, [sp, 0x50] - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x28] - lsls r6, 24 - lsrs r6, 24 - mov r2, r9 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r0, 0 - movs r1, 0 - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - ldr r0, [sp, 0x20] - bl StringLength_Multibyte - lsls r0, 24 - ldr r2, =0x00ffffff - ldr r1, [sp, 0x18] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x18] - ldr r1, =0xffffff00 - add r2, sp, 0x18 - mov r8, r2 - ldr r0, [r2, 0x4] - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r5, [sp, 0x18] - lsrs r5, 24 - lsls r5, 5 - mov r0, r8 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r6, 4 - orrs r1, r6 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - movs r1, 0x7 - bl GetWindowAttribute - adds r7, r0, 0 - mov r0, r8 - ldrb r0, [r0, 0x3] - lsls r0, 5 - mov r8, r0 - add r8, r7 - add r0, sp, 0x14 - movs r1, 0 - strb r6, [r0] - mov r2, r9 - strb r2, [r0, 0x1] - mov r2, r10 - strb r2, [r0, 0x2] - str r1, [sp] - str r1, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - ldr r0, [sp, 0x20] - str r0, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x2 - bl AddTextPrinterParameterized4 - lsrs r5, 1 - adds r0, r7, 0 - ldr r1, [sp, 0x24] - adds r2, r5, 0 - bl CpuSet - ldr r2, [sp, 0x24] - ldr r0, [sp, 0x28] - adds r1, r2, r0 - mov r0, r8 - adds r2, r5, 0 - bl CpuSet - adds r0, r4, 0 - bl RemoveWindow - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80C6EAC - - .align 2, 0 @ Don't pad with nop. diff --git a/data/frontier_pass.s b/data/frontier_pass.s deleted file mode 100644 index 411c5c69d..000000000 --- a/data/frontier_pass.s +++ /dev/null @@ -1,229 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -.macro unk_trainer_card_struct text1, text2, short1, short2, short3, short4 - .4byte \text1 - .4byte \text2 - .2byte \short1 - .2byte \short2 - .2byte \short3 - .2byte \short4 -.endm - - .align 2 -gUnknown_0856FB7C:: @ 856FB7C - .incbin "graphics/frontier_pass/map_heads.gbapal" - - .align 2 -gUnknown_0856FB9C:: @ 856FB9C - .incbin "graphics/frontier_pass/map_heads_female.gbapal" - - .align 2 -gUnknown_0856FBBC:: @ 856FBBC - .incbin "graphics/frontier_pass/map_screen.4bpp.lz" - - .align 2 -gFrontierPassCursor_Gfx:: @ 8570BA8 - .incbin "graphics/frontier_pass/cursor.4bpp.lz" - - .align 2 -gUnknown_08570C44:: @ 8570C44 - .incbin "graphics/frontier_pass/map_heads.4bpp.lz" - - .align 2 -gFrontierPassMapCursor_Gfx:: @ 8570D00 - .incbin "graphics/frontier_pass/map_cursor.4bpp.lz" - - .align 2 -gUnknown_08570E00:: @ 8570E00 - .incbin "graphics/frontier_pass/map_screen.bin.lz" - - .align 2 -gUnknown_08571060:: @ 8571060 - .incbin "graphics/frontier_pass/small_map_and_card.bin.lz" - - .align 2 -gUnknown_08571298:: @ 8571298 - .incbin "graphics/frontier_pass/unknown_571298.bin" - - .align 2 -gUnknown_085712C0:: @ 85712C0 - .incbin "graphics/frontier_pass/record_frame.bin.lz" - - .align 2 -gUnknown_085712F8:: @ 85712F8 - .incbin "graphics/frontier_pass/small_map_and_card_affine.bin.lz" - -gUnknown_085713E0:: @ 85713E0 - .2byte 0x00d8, 0x0020, 0x00d8, 0x0080 - - .align 2 -gUnknown_085713E8:: @ 85713E8 - .4byte 0x000011f8, 0x000021e1, 0x00000bd6 - - .align 2 -gUnknown_085713F4:: @ 85713F4 - .4byte 0x000001f8, 0x000011e1, 0x000021d2 - - .align 2 -gUnknown_08571400:: @ 8571400 - window_template 0x00, 0x02, 0x03, 0x0c, 0x03, 0x0f, 0x0001 - window_template 0x00, 0x02, 0x0a, 0x0c, 0x03, 0x0f, 0x0026 - window_template 0x00, 0x02, 0x0d, 0x0c, 0x04, 0x0f, 0x004b - window_template 0x00, 0x00, 0x12, 0x1e, 0x03, 0x0f, 0x007c - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - - .align 2 -gUnknown_08571428:: @ 8571428 - window_template 0x00, 0x00, 0x01, 0x0f, 0x05, 0x0f, 0x0001 - window_template 0x00, 0x14, 0x01, 0x0a, 0x0e, 0x0f, 0x004d - window_template 0x00, 0x02, 0x10, 0x1a, 0x04, 0x0f, 0x00da - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - -gUnknown_08571448:: @ 8571448 - .byte 0x00, 0x02, 0x03 - -gUnknown_0857144B:: @ 857144B - .byte 0x00, 0x01, 0x09 - -gUnknown_0857144E:: @ 857144E - .byte 0x00, 0x04, 0x05 - - .align 2 -gUnknown_08571454:: @ 8571454 - .2byte 0x001c, 0x004c, 0x0084, 0x00dc, 0x0054, 0x0084, 0x0084, 0x00dc, 0x0050, 0x0066, 0x0014, 0x006c, 0x0000, 0x0010, 0x0098, 0x00f0 - .2byte 0x006c, 0x0086, 0x0014, 0x006c, 0x0018, 0x0030, 0x0014, 0x006c, 0x0032, 0x0042, 0x0014, 0x0024, 0x0042, 0x0052, 0x0020, 0x0030 - .2byte 0x0032, 0x0042, 0x002c, 0x003c, 0x0042, 0x0052, 0x0038, 0x0048, 0x0032, 0x0042, 0x0044, 0x0054, 0x0042, 0x0052, 0x0050, 0x0060 - .2byte 0x0032, 0x0042, 0x005c, 0x006c - - .align 2 -gUnknown_085714BC:: @ 85714BC - obj_tiles gFrontierPassCursor_Gfx, 0x100, 0 - obj_tiles gFrontierPassMapCursor_Gfx, 0x400, 1 - obj_tiles gFrontierPassMedals_Gfx, 0x380, 2 - - .align 2 -gUnknown_085714D4:: @ 85714D4 - obj_tiles gUnknown_08570C44, 0x100, 4 - null_obj_tiles - - .align 2 -gUnknown_085714E4:: @ 85714E4 - obj_pal gFrontierPassCursor_Pal, 0 - obj_pal gFrontierPassMapCursor_Pal, 1 - obj_pal gFrontierPassMedalsSilver_Pal, 2 - obj_pal gFrontierPassMedalsGold_Pal, 3 - obj_pal gUnknown_0856FB7C, 4 - obj_pal gUnknown_0856FB9C, 5 - null_obj_pal - - .align 2 -gSpriteAnim_857151C:: @ 857151C - .2byte 0x0000, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_8571524:: @ 8571524 - .2byte 0x0000, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_857152C:: @ 857152C - .2byte 0x0004, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_8571534:: @ 8571534 - .2byte 0x0008, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_857153C:: @ 857153C - .2byte 0x000c, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_8571544:: @ 8571544 - .2byte 0x0010, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_857154C:: @ 857154C - .2byte 0x0014, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_8571554:: @ 8571554 - .2byte 0x0018, 0x0000, 0xffff, 0x0000 - - .align 2 -gSpriteAnim_857155C:: @ 857155C - .2byte 0x0000, 0x002d, 0x0008, 0x002d, 0xfffe, 0x0000 - - .align 2 -gSpriteAnim_8571568:: @ 8571568 - .2byte 0x0010, 0x002d, 0x0018, 0x002d, 0xfffe, 0x0000 - - .align 2 -gSpriteAnimTable_08571574:: @ 8571574 - .4byte gSpriteAnim_8571524 - .4byte gSpriteAnim_857152C - - .align 2 -gSpriteAnimTable_0857157C:: @ 857157C - .4byte gSpriteAnim_8571524 - .4byte gSpriteAnim_857152C - .4byte gSpriteAnim_8571534 - .4byte gSpriteAnim_857153C - .4byte gSpriteAnim_8571544 - .4byte gSpriteAnim_857154C - .4byte gSpriteAnim_8571554 - - .align 2 -gSpriteAnimTable_08571598:: @ 8571598 - .4byte gSpriteAnim_857155C - .4byte gSpriteAnim_8571568 - - .align 2 -gSpriteAffineAnim_085715A0:: @ 85715A0 - .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000 - - .align 2 -gSpriteAffineAnimTable_085715B0:: @ 85715B0 - .4byte gSpriteAffineAnim_085715A0 - - .align 2 -gUnknown_085715B4:: @ 85715B4 - spr_template 0, 0, gUnknown_0852490C, gSpriteAnimTable_08571574, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 1, 1, gUnknown_08524934, gSpriteAnimTable_08571598, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_085715E4:: @ 85715E4 - spr_template 2, 2, gUnknown_0852490C, gSpriteAnimTable_0857157C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_085715FC:: @ 85715FC - spr_template 4, 4, gUnknown_0852490C, gSpriteAnimTable_08571574, NULL, gDummySpriteAffineAnimTable, nullsub_39 - - .align 2 -gUnknown_08571614:: @ 8571614 - .4byte gUnknown_085EDA96 - .4byte gUnknown_085ED932 - .4byte gUnknown_085ED94D - .4byte gUnknown_085ED961 - .4byte gUnknown_085ED977 - .4byte gUnknown_085ED993 - .4byte gUnknown_085ED9AF - .4byte gUnknown_085ED9C7 - .4byte gUnknown_085ED9E5 - .4byte gUnknown_085EDA02 - .4byte gUnknown_085EDA21 - .4byte gUnknown_085EDA3C - .4byte gUnknown_085EDA5E - .4byte gUnknown_085EDA78 - .4byte gUnknown_085ED931 - - .align 2 -gUnknown_08571650:: @ 8571650 - unk_trainer_card_struct gUnknown_085EDAB1, gUnknown_085EDB0F, 0x59, 0x28, 1, 0 - unk_trainer_card_struct gUnknown_085EDABE, gUnknown_085EDB4E, 0x21, 0x2A, 1, 0 - unk_trainer_card_struct gUnknown_085EDACA, gUnknown_085EDB8B, 0x78, 0x56, 0, 0 - unk_trainer_card_struct gUnknown_085EDAD8, gUnknown_085EDBC2, 0x72, 0x3B, 0, 0 - unk_trainer_card_struct gUnknown_085EDAE5, gUnknown_085EDC00, 0x19, 0x43, 0, 0 - unk_trainer_card_struct gUnknown_085EDAF4, gUnknown_085EDC45, 0x39, 0x39, 1, 0 - unk_trainer_card_struct gUnknown_085EDB00, gUnknown_085EDC84, 0x86, 0x29, 1, 0 diff --git a/include/graphics.h b/include/graphics.h index ed91b06c1..cfe73c6c3 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4866,6 +4866,12 @@ extern const u32 gUnknown_08DE2084[]; extern const u32 gUnknown_08DE3350[]; extern const u32 gUnknown_08DE3374[]; extern const u32 gUnknown_08DE3060[]; +extern const u32 gFrontierPassMedals_Gfx[]; extern const u16 gUnknown_08DE07C8[][16]; +extern const u16 gFrontierPassCursor_Pal[]; +extern const u16 gFrontierPassMedalsGold_Pal[]; +extern const u16 gFrontierPassMedalsSilver_Pal[]; +extern const u16 gFrontierPassMapCursor_Pal[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index a85ee5ff4..4c319e59d 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -25,6 +25,7 @@ struct PokemonStorage extern struct PokemonStorage *gPokemonStoragePtr; +void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4); u8 CountMonsInBox(u8 boxId); s16 GetFirstFreeBoxSpot(u8 boxId); u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); diff --git a/include/string_util.h b/include/string_util.h index d7a005ec5..b921d2391 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -34,7 +34,7 @@ u8 *StringFill(u8 *dest, u8 c, u16 n); u8 *StringCopyPadded(u8 *dest, const u8 *src, u8 c, u16 n); u8 *StringFillWithTerminator(u8 *dest, u16 n); u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n); -u32 StringLength_Multibyte(u8 *str); +u32 StringLength_Multibyte(const u8 *str); u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color); bool32 IsStringJapanese(u8 *str); bool32 sub_800924C(u8 *str, s32 n); diff --git a/include/strings.h b/include/strings.h index 2c07eb68e..74f3ca727 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2252,5 +2252,35 @@ extern const u8 gText_BattlePtsWon[]; extern const u8 gText_SymbolsEarned[]; extern const u8 gText_BattleRecord[]; extern const u8 gText_BattlePoints[]; +extern const u8 gUnknown_085EDA96[]; +extern const u8 gUnknown_085ED932[]; +extern const u8 gUnknown_085ED94D[]; +extern const u8 gUnknown_085ED961[]; +extern const u8 gUnknown_085ED977[]; +extern const u8 gUnknown_085ED993[]; +extern const u8 gUnknown_085ED9AF[]; +extern const u8 gUnknown_085ED9C7[]; +extern const u8 gUnknown_085ED9E5[]; +extern const u8 gUnknown_085EDA02[]; +extern const u8 gUnknown_085EDA21[]; +extern const u8 gUnknown_085EDA3C[]; +extern const u8 gUnknown_085EDA5E[]; +extern const u8 gUnknown_085EDA78[]; +extern const u8 gUnknown_085ED931[]; +extern const u8 gUnknown_085EDAB1[]; +extern const u8 gUnknown_085EDB0F[]; +extern const u8 gUnknown_085EDABE[]; +extern const u8 gUnknown_085EDB4E[]; +extern const u8 gUnknown_085EDACA[]; +extern const u8 gUnknown_085EDB8B[]; +extern const u8 gUnknown_085EDAD8[]; +extern const u8 gUnknown_085EDBC2[]; +extern const u8 gUnknown_085EDAE5[]; +extern const u8 gUnknown_085EDC00[]; +extern const u8 gUnknown_085EDAF4[]; +extern const u8 gUnknown_085EDC45[]; +extern const u8 gUnknown_085EDB00[]; +extern const u8 gUnknown_085EDC84[]; + #endif // GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index e199c8fe5..844c64fb5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -126,7 +126,6 @@ SECTIONS { src/pokedex.o(.text); src/trainer_card.o(.text); src/frontier_pass.o(.text); - asm/frontier_pass.o(.text); src/pokemon_storage_system.o(.text); src/pokemon_icon.o(.text); src/script_movement.o(.text); @@ -460,7 +459,7 @@ SECTIONS { src/option_menu.o(.rodata); src/pokedex.o(.rodata); src/trainer_card.o(.rodata); - data/frontier_pass.o(.rodata); + src/frontier_pass.o(.rodata); src/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); src/fldeff_cut.o(.rodata); diff --git a/src/frontier_pass.c b/src/frontier_pass.c index f9d56a272..a0f6af73c 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -2,6 +2,7 @@ #include "gpu_regs.h" #include "main.h" #include "trainer_card.h" +#include "battle_anim.h" #include "event_data.h" #include "recorded_battle.h" #include "alloc.h" @@ -41,6 +42,15 @@ enum WINDOW_COUNT }; +// Windows displayed in the facilities map view. +enum +{ + MAP_WINDOW_0, + MAP_WINDOW_NAME, + MAP_WINDOW_DESCRIPTION, + MAP_WINDOW_COUNT +}; + enum { CURSOR_AREA_NOTHING, @@ -91,42 +101,425 @@ struct FrontierPassSaved s16 cursorY; }; -extern struct FrontierPassData *gUnknown_02039CEC; -extern struct FrontierPassGfx *gUnknown_02039CF0; -extern struct FrontierPassSaved gUnknown_02039CF8; +struct FrontierMapData +{ + void (*callback)(void); + struct Sprite *cursorSprite; + struct Sprite *playerHeadSprite; + struct Sprite *mapIndicatorSprite; + u8 cursorPos; + u8 unused; + u8 tilemapBuff0[0x1000]; + u8 tilemapBuff1[0x1000]; + u8 tilemapBuff2[0x1000]; +}; + +static EWRAM_DATA struct FrontierPassData *sPassData = NULL; +static EWRAM_DATA struct FrontierPassGfx *sPassGfx = NULL; +static EWRAM_DATA struct FrontierMapData *sMapData = NULL; +static EWRAM_DATA struct FrontierPassSaved sSavedPassData = {0}; // This file's functions. -u32 AllocateFrontierPassData(void (*callback)(void)); -void ShowFrontierMap(void (*callback)(void)); -void CB2_InitFrontierPass(void); -void sub_80C629C(void); -void FreeCursorAndSymbolSprites(void); -void LoadCursorAndSymbolSprites(void); -u32 FreeFrontierPassData(void); -bool32 InitFrontierPass(void); -bool32 HideFrontierPass(void); -void Task_HandleFrontierPassInput(u8 taskId); -void Task_DoFadeEffect(u8 taskId); -void sub_80C6104(u8 cursorArea, u8 previousCursorArea); -void PrintAreaDescription(u8 cursorArea); -void sub_80C5F58(bool8 arg0, bool8 arg1); +static u32 AllocateFrontierPassData(void (*callback)(void)); +static void ShowFrontierMap(void (*callback)(void)); +static void CB2_InitFrontierPass(void); +static void sub_80C629C(void); +static void FreeCursorAndSymbolSprites(void); +static void LoadCursorAndSymbolSprites(void); +static u32 FreeFrontierPassData(void); +static bool32 InitFrontierPass(void); +static bool32 HideFrontierPass(void); +static void Task_HandleFrontierPassInput(u8 taskId); +static void Task_DoFadeEffect(u8 taskId); +static void sub_80C6104(u8 cursorArea, u8 previousCursorArea); +static void PrintAreaDescription(u8 cursorArea); +static void sub_80C5F58(bool8 arg0, bool8 arg1); +static void SpriteCb_Dummy(struct Sprite *sprite); // Const rom data. -extern const s16 gUnknown_085713E0[][2]; -extern const struct BgTemplate gUnknown_085713E8[3]; -extern const struct WindowTemplate gUnknown_08571400[]; -extern const u32 gUnknown_085712F8[]; -extern const u32 gUnknown_085712C0[]; -extern const u32 gUnknown_08571060[]; -extern const u8 gUnknown_08571448[][3]; -extern const u8 *const gUnknown_08571614[]; -extern const struct SpritePalette gUnknown_085714E4[]; -extern const struct CompressedSpriteSheet gUnknown_085714BC[]; -extern const struct SpriteTemplate gUnknown_085715B4[2]; -extern const struct SpriteTemplate gUnknown_085715E4; +static const u16 sMaleHeadPalette[] = INCBIN_U16("graphics/frontier_pass/map_heads.gbapal"); +static const u16 sFemaleHeadPalette[] = INCBIN_U16("graphics/frontier_pass/map_heads_female.gbapal"); +static const u32 gUnknown_0856FBBC[] = INCBIN_U32("graphics/frontier_pass/map_screen.4bpp.lz"); +static const u32 sCursorGfx[] = INCBIN_U32("graphics/frontier_pass/cursor.4bpp.lz"); +static const u32 sHeadsGfx[] = INCBIN_U32("graphics/frontier_pass/map_heads.4bpp.lz"); +static const u32 sMapCursorGfx[] = INCBIN_U32("graphics/frontier_pass/map_cursor.4bpp.lz"); +static const u32 gUnknown_08570E00[] = INCBIN_U32("graphics/frontier_pass/map_screen.bin.lz"); +static const u32 gUnknown_08571060[] = INCBIN_U32("graphics/frontier_pass/small_map_and_card.bin.lz"); +static const u32 gUnknown_08571298[] = INCBIN_U32("graphics/frontier_pass/unknown_571298.bin"); +static const u32 gUnknown_085712C0[] = INCBIN_U32("graphics/frontier_pass/record_frame.bin.lz"); +static const u32 gUnknown_085712F8[] = INCBIN_U32("graphics/frontier_pass/small_map_and_card_affine.bin.lz"); + +static const s16 gUnknown_085713E0[][2] = {{216, 32}, {216, 128}}; + +static const struct BgTemplate sPassBgTemplates[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 1, + .paletteMode = 1, + .priority = 0, + .baseTile = 0 + }, +}; + +static const struct BgTemplate sMapBgTemplates[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate sPassWindowTemplates[] = +{ + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 3, + .width = 12, + .height = 3, + .paletteNum = 15, + .baseBlock = 0x1, + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 10, + .width = 12, + .height = 3, + .paletteNum = 15, + .baseBlock = 0x26, + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 13, + .width = 12, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x4B, + }, + { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 18, + .width = 30, + .height = 3, + .paletteNum = 15, + .baseBlock = 0x7C, + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sMapWindowTemplates[] = +{ + { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 1, + .width = 15, + .height = 5, + .paletteNum = 15, + .baseBlock = 0x1, + }, + { + .bg = 0, + .tilemapLeft = 20, + .tilemapTop = 1, + .width = 10, + .height = 14, + .paletteNum = 15, + .baseBlock = 0x4D, + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 16, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 0xDA, + }, + DUMMY_WIN_TEMPLATE +}; + +static const u8 sTextColors[][3] = +{ + {0, 2, 3}, + {0, 1, 9}, + {0, 4, 5}, +}; + +struct +{ + s16 yStart; + s16 yEnd; + s16 xStart; + s16 xEnd; +} +static const sPassAreasLayout[] = +{ + {28, 76, 132, 220}, + {84, 132, 132, 220}, + {80, 102, 20, 108}, + {0, 16, 152, 240}, + {108, 134, 20, 108}, + {24, 48, 20, 108}, + {50, 66, 20, 36}, + {66, 82, 32, 48}, + {50, 66, 44, 60}, + {66, 82, 56, 72}, + {50, 66, 68, 84}, + {66, 82, 80, 96}, + {50, 66, 92, 108}, +}; + +static const struct CompressedSpriteSheet sCursorSpriteSheets[] = +{ + {sCursorGfx, 0x100, 0}, + {sMapCursorGfx, 0x400, 1}, + {gFrontierPassMedals_Gfx, 0x380, 2}, +}; + +static const struct CompressedSpriteSheet sHeadsSpriteSheet[] = +{ + {sHeadsGfx, 0x100, 4}, + {} +}; + +static const struct SpritePalette sSpritePalettes[] = +{ + {gFrontierPassCursor_Pal, 0}, + {gFrontierPassMapCursor_Pal, 1}, + {gFrontierPassMedalsSilver_Pal, 2}, + {gFrontierPassMedalsGold_Pal, 3}, + {sMaleHeadPalette, 4}, + {sFemaleHeadPalette, 5}, + {} +}; + +static const union AnimCmd sSpriteAnim_857151C[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8571524[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_857152C[] = +{ + ANIMCMD_FRAME(4, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8571534[] = +{ + ANIMCMD_FRAME(8, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_857153C[] = +{ + ANIMCMD_FRAME(12, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8571544[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_857154C[] = +{ + ANIMCMD_FRAME(20, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8571554[] = +{ + ANIMCMD_FRAME(24, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_857155C[] = +{ + ANIMCMD_FRAME(0, 45), + ANIMCMD_FRAME(8, 45), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sSpriteAnim_8571568[] = +{ + ANIMCMD_FRAME(16, 45), + ANIMCMD_FRAME(24, 45), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_8571574[] = +{ + sSpriteAnim_8571524, + sSpriteAnim_857152C +}; + +static const union AnimCmd *const sSpriteAnimTable_857157C[] = +{ + sSpriteAnim_8571524, + sSpriteAnim_857152C, + sSpriteAnim_8571534, + sSpriteAnim_857153C, + sSpriteAnim_8571544, + sSpriteAnim_857154C, + sSpriteAnim_8571554 +}; + +static const union AnimCmd *const sSpriteAnimTable_8571598[] = +{ + sSpriteAnim_857155C, + sSpriteAnim_8571568 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_85715A0[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_85715B0[] = +{ + sSpriteAffineAnim_85715A0 +}; + +static const struct SpriteTemplate sSpriteTemplates_Cursors[] = +{ + { + .tileTag = 0, + .paletteTag = 0, + .oam = &gUnknown_0852490C, + .anims = sSpriteAnimTable_8571574, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 1, + .paletteTag = 1, + .oam = &gUnknown_08524934, + .anims = sSpriteAnimTable_8571598, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +static const struct SpriteTemplate sSpriteTemplate_Medal = +{ + .tileTag = 2, + .paletteTag = 2, + .oam = &gUnknown_0852490C, + .anims = sSpriteAnimTable_857157C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct SpriteTemplate sSpriteTemplate_Head = +{ + .tileTag = 4, + .paletteTag = 4, + .oam = &gUnknown_0852490C, + .anims = sSpriteAnimTable_8571574, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_Dummy, +}; + +static const u8 *const sPassAreaDescriptions[] = +{ + gUnknown_085EDA96, + gUnknown_085ED932, + gUnknown_085ED94D, + gUnknown_085ED961, + gUnknown_085ED977, + gUnknown_085ED993, + gUnknown_085ED9AF, + gUnknown_085ED9C7, + gUnknown_085ED9E5, + gUnknown_085EDA02, + gUnknown_085EDA21, + gUnknown_085EDA3C, + gUnknown_085EDA5E, + gUnknown_085EDA78, + gUnknown_085ED931, +}; + +struct +{ + const u8 *name; + const u8 *description; + s16 x; + s16 y; + u8 animNum; +} static const sMapLandmarks[] = +{ + {gUnknown_085EDAB1, gUnknown_085EDB0F, 0x59, 0x28, 1}, + {gUnknown_085EDABE, gUnknown_085EDB4E, 0x21, 0x2A, 1}, + {gUnknown_085EDACA, gUnknown_085EDB8B, 0x78, 0x56, 0}, + {gUnknown_085EDAD8, gUnknown_085EDBC2, 0x72, 0x3B, 0}, + {gUnknown_085EDAE5, gUnknown_085EDC00, 0x19, 0x43, 0}, + {gUnknown_085EDAF4, gUnknown_085EDC45, 0x39, 0x39, 1}, + {gUnknown_085EDB00, gUnknown_085EDC84, 0x86, 0x29, 1}, +}; // code -void sub_80C50D0(void) +static void ResetGpuRegsAndBgs(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BG3CNT, 0); @@ -160,102 +553,102 @@ void ShowFrontierPass(void (*callback)(void)) SetMainCallback2(CB2_InitFrontierPass); } -void LeaveFrontierPass(void) +static void LeaveFrontierPass(void) { - SetMainCallback2(gUnknown_02039CEC->callback); + SetMainCallback2(sPassData->callback); FreeFrontierPassData(); } -u32 AllocateFrontierPassData(void (*callback)(void)) +static u32 AllocateFrontierPassData(void (*callback)(void)) { u8 i; - if (gUnknown_02039CEC != NULL) + if (sPassData != NULL) return 1; - gUnknown_02039CEC = AllocZeroed(sizeof(*gUnknown_02039CEC)); - if (gUnknown_02039CEC == NULL) + sPassData = AllocZeroed(sizeof(*sPassData)); + if (sPassData == NULL) return 2; - gUnknown_02039CEC->callback = callback; + sPassData->callback = callback; i = GetCurrentRegionMapSectionId(); if (i != MAPSEC_BATTLE_FRONTIER && i != MAPSEC_ARTISAN_CAVE) { - gUnknown_02039CEC->cursorX = 176; - gUnknown_02039CEC->cursorY = 104; + sPassData->cursorX = 176; + sPassData->cursorY = 104; } else { - gUnknown_02039CEC->cursorX = 176; - gUnknown_02039CEC->cursorY = 48; + sPassData->cursorX = 176; + sPassData->cursorY = 48; } - gUnknown_02039CEC->battlePoints = gSaveBlock2Ptr->frontier.battlePoints; - gUnknown_02039CEC->hasBattleRecord = CanCopyRecordedBattleSaveData(); - gUnknown_02039CEC->unkE = 0; - gUnknown_02039CEC->trainerStars = CountPlayerTrainerStars(); + sPassData->battlePoints = gSaveBlock2Ptr->frontier.battlePoints; + sPassData->hasBattleRecord = CanCopyRecordedBattleSaveData(); + sPassData->unkE = 0; + sPassData->trainerStars = CountPlayerTrainerStars(); for (i = 0; i < 7; i++) { if (FlagGet(FLAG_SYS_TOWER_SILVER + i * 2)) - gUnknown_02039CEC->facilitySymbols[i]++; + sPassData->facilitySymbols[i]++; if (FlagGet(FLAG_SYS_TOWER_GOLD + i * 2)) - gUnknown_02039CEC->facilitySymbols[i]++; + sPassData->facilitySymbols[i]++; } return 0; } -u32 FreeFrontierPassData(void) +static u32 FreeFrontierPassData(void) { - if (gUnknown_02039CEC == NULL) + if (sPassData == NULL) return 1; - memset(gUnknown_02039CEC, 0, sizeof(*gUnknown_02039CEC)); // Why clear data, if it's going to be freed anyway? - FREE_AND_SET_NULL(gUnknown_02039CEC); + memset(sPassData, 0, sizeof(*sPassData)); // Why clear data, if it's going to be freed anyway? + FREE_AND_SET_NULL(sPassData); return 0; } -u32 AllocateFrontierPassGfx(void) +static u32 AllocateFrontierPassGfx(void) { - if (gUnknown_02039CF0 != NULL) + if (sPassGfx != NULL) return 1; - gUnknown_02039CF0 = AllocZeroed(sizeof(*gUnknown_02039CF0)); - if (gUnknown_02039CF0 == NULL) + sPassGfx = AllocZeroed(sizeof(*sPassGfx)); + if (sPassGfx == NULL) return 2; return 0; } -u32 FreeFrontierPassGfx(void) +static u32 FreeFrontierPassGfx(void) { FreeAllWindowBuffers(); - if (gUnknown_02039CF0 == NULL) + if (sPassGfx == NULL) return 1; - if (gUnknown_02039CF0->unk28 != NULL) - FREE_AND_SET_NULL(gUnknown_02039CF0->unk28); - if (gUnknown_02039CF0->unk24 != NULL) - FREE_AND_SET_NULL(gUnknown_02039CF0->unk24); - if (gUnknown_02039CF0->unk20 != NULL) - FREE_AND_SET_NULL(gUnknown_02039CF0->unk20); + if (sPassGfx->unk28 != NULL) + FREE_AND_SET_NULL(sPassGfx->unk28); + if (sPassGfx->unk24 != NULL) + FREE_AND_SET_NULL(sPassGfx->unk24); + if (sPassGfx->unk20 != NULL) + FREE_AND_SET_NULL(sPassGfx->unk20); - memset(gUnknown_02039CF0, 0, sizeof(*gUnknown_02039CF0)); // Why clear data, if it's going to be freed anyway? - FREE_AND_SET_NULL(gUnknown_02039CF0); + memset(sPassGfx, 0, sizeof(*sPassGfx)); // Why clear data, if it's going to be freed anyway? + FREE_AND_SET_NULL(sPassGfx); return 0; } -void VblankCb_FrontierPass(void) +static void VblankCb_FrontierPass(void) { - if (gUnknown_02039CF0->setAffine) + if (sPassGfx->setAffine) { SetBgAffine(2, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0], - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1], - gUnknown_02039CF0->unk2E, - gUnknown_02039CF0->unk30, + gUnknown_085713E0[sPassData->unkE - 1][0] << 8, + gUnknown_085713E0[sPassData->unkE - 1][1] << 8, + gUnknown_085713E0[sPassData->unkE - 1][0], + gUnknown_085713E0[sPassData->unkE - 1][1], + sPassGfx->unk2E, + sPassGfx->unk30, 0); } LoadOam(); @@ -263,14 +656,14 @@ void VblankCb_FrontierPass(void) TransferPlttBuffer(); } -void CB2_FrontierPass(void) +static void CB2_FrontierPass(void) { RunTasks(); AnimateSprites(); BuildOamBuffer(); } -void CB2_InitFrontierPass(void) +static void CB2_InitFrontierPass(void) { if (InitFrontierPass()) { @@ -279,7 +672,7 @@ void CB2_InitFrontierPass(void) } } -void CB2_HideFrontierPass(void) +static void CB2_HideFrontierPass(void) { if (HideFrontierPass()) { @@ -287,11 +680,11 @@ void CB2_HideFrontierPass(void) } } -bool32 InitFrontierPass(void) +static bool32 InitFrontierPass(void) { u32 sizeOut = 0; - switch (gUnknown_02039CEC->state) + switch (sPassData->state) { case 0: SetVBlankCallback(NULL); @@ -300,7 +693,7 @@ bool32 InitFrontierPass(void) DisableInterrupts(INTR_FLAG_HBLANK); break; case 1: - sub_80C50D0(); + ResetGpuRegsAndBgs(); break; case 2: ResetTasks(); @@ -314,20 +707,20 @@ bool32 InitFrontierPass(void) break; case 4: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(1, gUnknown_085713E8, ARRAY_COUNT(gUnknown_085713E8)); - SetBgTilemapBuffer(1, gUnknown_02039CF0->tilemapBuff1); - SetBgTilemapBuffer(2, gUnknown_02039CF0->tilemapBuff2); - SetBgTilemapBuffer(3, gUnknown_02039CF0->tilemapBuff3); + InitBgsFromTemplates(1, sPassBgTemplates, ARRAY_COUNT(sPassBgTemplates)); + SetBgTilemapBuffer(1, sPassGfx->tilemapBuff1); + SetBgTilemapBuffer(2, sPassGfx->tilemapBuff2); + SetBgTilemapBuffer(3, sPassGfx->tilemapBuff3); SetBgAttribute(2, BG_ATTR_WRAPAROUND, 1); break; case 5: - InitWindows(gUnknown_08571400); + InitWindows(sPassWindowTemplates); DeactivateAllTextPrinters(); break; case 6: - gUnknown_02039CF0->unk20 = malloc_and_decompress(gUnknown_085712F8, &sizeOut); - gUnknown_02039CF0->unk24 = malloc_and_decompress(gUnknown_08571060, &sizeOut); - gUnknown_02039CF0->unk28 = malloc_and_decompress(gUnknown_085712C0, &sizeOut); + sPassGfx->unk20 = malloc_and_decompress(gUnknown_085712F8, &sizeOut); + sPassGfx->unk24 = malloc_and_decompress(gUnknown_08571060, &sizeOut); + sPassGfx->unk28 = malloc_and_decompress(gUnknown_085712C0, &sizeOut); decompress_and_copy_tile_data_to_vram(1, gUnknown_08DE08C8, 0, 0, 0); decompress_and_copy_tile_data_to_vram(2, gUnknown_08DE2084, 0, 0, 0); break; @@ -343,13 +736,13 @@ bool32 InitFrontierPass(void) break; case 8: LoadPalette(gUnknown_08DE07C8[0], 0, 0x1A0); - LoadPalette(gUnknown_08DE07C8[1 + gUnknown_02039CEC->trainerStars], 0x10, 0x20); + LoadPalette(gUnknown_08DE07C8[1 + sPassData->trainerStars], 0x10, 0x20); LoadPalette(stdpal_get(0), 0xF0, 0x20); sub_80C629C(); - sub_80C6104(gUnknown_02039CEC->cursorArea, gUnknown_02039CEC->previousCursorArea); - if (gUnknown_02039CEC->unkE == 1 || gUnknown_02039CEC->unkE == 2) + sub_80C6104(sPassData->cursorArea, sPassData->previousCursorArea); + if (sPassData->unkE == 1 || sPassData->unkE == 2) { - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return TRUE; } break; @@ -369,26 +762,26 @@ bool32 InitFrontierPass(void) if (UpdatePaletteFade()) return FALSE; - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return TRUE; } - gUnknown_02039CEC->state++; + sPassData->state++; return FALSE; } -bool32 HideFrontierPass(void) +static bool32 HideFrontierPass(void) { - switch (gUnknown_02039CEC->state) + switch (sPassData->state) { case 0: - if (gUnknown_02039CEC->unkE != 1 && gUnknown_02039CEC->unkE != 2) + if (sPassData->unkE != 1 && sPassData->unkE != 2) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); } else { - gUnknown_02039CEC->state = 2; + sPassData->state = 2; return FALSE; } break; @@ -409,7 +802,7 @@ bool32 HideFrontierPass(void) FreeCursorAndSymbolSprites(); break; case 4: - sub_80C50D0(); + ResetGpuRegsAndBgs(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -419,34 +812,25 @@ bool32 HideFrontierPass(void) UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(2); FreeFrontierPassGfx(); - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return TRUE; } - gUnknown_02039CEC->state++; + sPassData->state++; return FALSE; } -struct -{ - s16 yStart; - s16 yEnd; - s16 xStart; - s16 xEnd; -} -extern const gUnknown_08571454[]; - -u8 GetCursorAreaFromCoords(s16 x, s16 y) +static u8 GetCursorAreaFromCoords(s16 x, s16 y) { u8 i; // Minus/Plus 1, because the table doesn't take into account the nothing field. for (i = 0; i < CURSOR_AREA_COUNT - 1; i++) { - if (gUnknown_08571454[i].yStart <= y && gUnknown_08571454[i].yEnd >= y - && gUnknown_08571454[i].xStart <= x && gUnknown_08571454[i].xEnd >= x) + if (sPassAreasLayout[i].yStart <= y && sPassAreasLayout[i].yEnd >= y + && sPassAreasLayout[i].xStart <= x && sPassAreasLayout[i].xEnd >= x) { - if (i >= CURSOR_AREA_SYMBOL - 1 && gUnknown_02039CEC->facilitySymbols[i - CURSOR_AREA_SYMBOL + 1] == 0) + if (i >= CURSOR_AREA_SYMBOL - 1 && sPassData->facilitySymbols[i - CURSOR_AREA_SYMBOL + 1] == 0) break; return i + 1; @@ -463,7 +847,7 @@ void CB2_ReshowFrontierPass(void) if (!InitFrontierPass()) return; - switch (gUnknown_02039CEC->unkE) + switch (sPassData->unkE) { case 1: case 2: @@ -472,7 +856,7 @@ void CB2_ReshowFrontierPass(void) break; case 3: default: - gUnknown_02039CEC->unkE = 0; + sPassData->unkE = 0; taskId = CreateTask(Task_HandleFrontierPassInput, 0); break; } @@ -480,12 +864,12 @@ void CB2_ReshowFrontierPass(void) SetMainCallback2(CB2_FrontierPass); } -void CB2_ReturnFromRecord(void) +static void CB2_ReturnFromRecord(void) { - AllocateFrontierPassData(gUnknown_02039CF8.callback); - gUnknown_02039CEC->cursorX = gUnknown_02039CF8.cursorX; - gUnknown_02039CEC->cursorY = gUnknown_02039CF8.cursorY; - memset(&gUnknown_02039CF8, 0, sizeof(gUnknown_02039CF8)); + AllocateFrontierPassData(sSavedPassData.callback); + sPassData->cursorX = sSavedPassData.cursorX; + sPassData->cursorY = sSavedPassData.cursorY; + memset(&sSavedPassData, 0, sizeof(sSavedPassData)); switch (InBattlePyramid()) { case 1: @@ -502,20 +886,20 @@ void CB2_ReturnFromRecord(void) SetMainCallback2(CB2_ReshowFrontierPass); } -void CB2_ShowFrontierPassFeature(void) +static void CB2_ShowFrontierPassFeature(void) { if (!HideFrontierPass()) return; - switch (gUnknown_02039CEC->unkE) + switch (sPassData->unkE) { case 1: ShowFrontierMap(CB2_ReshowFrontierPass); break; case 3: - gUnknown_02039CF8.callback = gUnknown_02039CEC->callback; - gUnknown_02039CF8.cursorX = gUnknown_02039CEC->cursorX; - gUnknown_02039CF8.cursorY = gUnknown_02039CEC->cursorY; + sSavedPassData.callback = sPassData->callback; + sSavedPassData.cursorX = sPassData->cursorX; + sSavedPassData.cursorY = sPassData->cursorY; FreeFrontierPassData(); PlayRecordedBattle(CB2_ReturnFromRecord); break; @@ -525,20 +909,20 @@ void CB2_ShowFrontierPassFeature(void) } } -bool32 TryCallPassAreaFunction(u8 taskId, u8 cursorArea) +static bool32 TryCallPassAreaFunction(u8 taskId, u8 cursorArea) { switch (cursorArea) { case CURSOR_AREA_RECORD: - if (!gUnknown_02039CEC->hasBattleRecord) + if (!sPassData->hasBattleRecord) return FALSE; - gUnknown_02039CEC->unkE = 3; + sPassData->unkE = 3; DestroyTask(taskId); SetMainCallback2(CB2_ShowFrontierPassFeature); break; case CURSOR_AREA_MAP: case CURSOR_AREA_CARD: - gUnknown_02039CEC->unkE = cursorArea; + sPassData->unkE = cursorArea; gTasks[taskId].func = Task_DoFadeEffect; gTasks[taskId].data[0] = FALSE; break; @@ -546,56 +930,56 @@ bool32 TryCallPassAreaFunction(u8 taskId, u8 cursorArea) return FALSE; } - gUnknown_02039CEC->cursorX = gUnknown_02039CF0->cursorSprite->pos1.x; - gUnknown_02039CEC->cursorY = gUnknown_02039CF0->cursorSprite->pos1.y; + sPassData->cursorX = sPassGfx->cursorSprite->pos1.x; + sPassData->cursorY = sPassGfx->cursorSprite->pos1.y; return TRUE; } -void Task_HandleFrontierPassInput(u8 taskId) +static void Task_HandleFrontierPassInput(u8 taskId) { u8 var = FALSE; // Reused, first informs whether the cursor moves, then used as the new cursor area. - if (gMain.heldKeys & DPAD_UP && gUnknown_02039CF0->cursorSprite->pos1.y >= 9) + if (gMain.heldKeys & DPAD_UP && sPassGfx->cursorSprite->pos1.y >= 9) { - gUnknown_02039CF0->cursorSprite->pos1.y -= 2; - if (gUnknown_02039CF0->cursorSprite->pos1.y <= 7) - gUnknown_02039CF0->cursorSprite->pos1.y = 2; + sPassGfx->cursorSprite->pos1.y -= 2; + if (sPassGfx->cursorSprite->pos1.y <= 7) + sPassGfx->cursorSprite->pos1.y = 2; var = TRUE; } - if (gMain.heldKeys & DPAD_DOWN && gUnknown_02039CF0->cursorSprite->pos1.y <= 135) + if (gMain.heldKeys & DPAD_DOWN && sPassGfx->cursorSprite->pos1.y <= 135) { - gUnknown_02039CF0->cursorSprite->pos1.y += 2; - if (gUnknown_02039CF0->cursorSprite->pos1.y >= 137) - gUnknown_02039CF0->cursorSprite->pos1.y = 136; + sPassGfx->cursorSprite->pos1.y += 2; + if (sPassGfx->cursorSprite->pos1.y >= 137) + sPassGfx->cursorSprite->pos1.y = 136; var = TRUE; } - if (gMain.heldKeys & DPAD_LEFT && gUnknown_02039CF0->cursorSprite->pos1.x >= 6) + if (gMain.heldKeys & DPAD_LEFT && sPassGfx->cursorSprite->pos1.x >= 6) { - gUnknown_02039CF0->cursorSprite->pos1.x -= 2; - if (gUnknown_02039CF0->cursorSprite->pos1.x <= 4) - gUnknown_02039CF0->cursorSprite->pos1.x = 5; + sPassGfx->cursorSprite->pos1.x -= 2; + if (sPassGfx->cursorSprite->pos1.x <= 4) + sPassGfx->cursorSprite->pos1.x = 5; var = TRUE; } - if (gMain.heldKeys & DPAD_RIGHT && gUnknown_02039CF0->cursorSprite->pos1.x <= 231) + if (gMain.heldKeys & DPAD_RIGHT && sPassGfx->cursorSprite->pos1.x <= 231) { - gUnknown_02039CF0->cursorSprite->pos1.x += 2; - if (gUnknown_02039CF0->cursorSprite->pos1.x >= 233) - gUnknown_02039CF0->cursorSprite->pos1.x = 232; + sPassGfx->cursorSprite->pos1.x += 2; + if (sPassGfx->cursorSprite->pos1.x >= 233) + sPassGfx->cursorSprite->pos1.x = 232; var = TRUE; } if (!var) // Cursor did not change. { - if (gUnknown_02039CEC->cursorArea != CURSOR_AREA_NOTHING && gMain.newKeys & A_BUTTON) + if (sPassData->cursorArea != CURSOR_AREA_NOTHING && gMain.newKeys & A_BUTTON) { - if (gUnknown_02039CEC->cursorArea <= CURSOR_AREA_RECORD) // Map, Card, Record + if (sPassData->cursorArea <= CURSOR_AREA_RECORD) // Map, Card, Record { PlaySE(SE_SELECT); - if (TryCallPassAreaFunction(taskId, gUnknown_02039CEC->cursorArea)) + if (TryCallPassAreaFunction(taskId, sPassData->cursorArea)) return; } - else if (gUnknown_02039CEC->cursorArea == CURSOR_AREA_CANCEL) + else if (sPassData->cursorArea == CURSOR_AREA_CANCEL) { PlaySE(SE_PC_OFF); SetMainCallback2(CB2_HideFrontierPass); @@ -613,22 +997,22 @@ void Task_HandleFrontierPassInput(u8 taskId) } else { - var = GetCursorAreaFromCoords(gUnknown_02039CF0->cursorSprite->pos1.x - 5, gUnknown_02039CF0->cursorSprite->pos1.y + 5); - if (gUnknown_02039CEC->cursorArea != var) + var = GetCursorAreaFromCoords(sPassGfx->cursorSprite->pos1.x - 5, sPassGfx->cursorSprite->pos1.y + 5); + if (sPassData->cursorArea != var) { PrintAreaDescription(var); - gUnknown_02039CEC->previousCursorArea = gUnknown_02039CEC->cursorArea; - gUnknown_02039CEC->cursorArea = var; - sub_80C6104(gUnknown_02039CEC->cursorArea, gUnknown_02039CEC->previousCursorArea); + sPassData->previousCursorArea = sPassData->cursorArea; + sPassData->cursorArea = var; + sub_80C6104(sPassData->cursorArea, sPassData->previousCursorArea); } } } -void Task_DoFadeEffect(u8 taskId) +static void Task_DoFadeEffect(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (gUnknown_02039CEC->state) + switch (sPassData->state) { case 0: if (!data[0]) @@ -655,16 +1039,16 @@ void Task_DoFadeEffect(u8 taskId) BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_WHITE); } - gUnknown_02039CF0->setAffine = TRUE; - gUnknown_02039CF0->unk2E = sub_8151624(data[1]); - gUnknown_02039CF0->unk30 = sub_8151624(data[2]); + sPassGfx->setAffine = TRUE; + sPassGfx->unk2E = sub_8151624(data[1]); + sPassGfx->unk30 = sub_8151624(data[2]); break; case 1: UpdatePaletteFade(); data[1] += data[3]; data[2] += data[4]; - gUnknown_02039CF0->unk2E = sub_8151624(data[1]); - gUnknown_02039CF0->unk30 = sub_8151624(data[2]); + sPassGfx->unk2E = sub_8151624(data[1]); + sPassGfx->unk30 = sub_8151624(data[2]); if (!data[0]) { if (data[1] <= 0x1FC) @@ -677,8 +1061,8 @@ void Task_DoFadeEffect(u8 taskId) } break; case 2: - if (gUnknown_02039CF0->setAffine) // Nonsensical check. - gUnknown_02039CF0->setAffine = FALSE; + if (sPassGfx->setAffine) // Nonsensical check. + sPassGfx->setAffine = FALSE; if (UpdatePaletteFade()) return; if (!data[0]) @@ -689,18 +1073,18 @@ void Task_DoFadeEffect(u8 taskId) else { sub_80C5F58(FALSE, FALSE); - gUnknown_02039CEC->unkE = 0; + sPassData->unkE = 0; gTasks[taskId].func = Task_HandleFrontierPassInput; } SetBgAttribute(2, BG_ATTR_WRAPAROUND, 0); - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return; } - gUnknown_02039CEC->state++; + sPassData->state++; } -void ShowAndPrintWindows(void) +static void ShowAndPrintWindows(void) { s32 x; u8 i; @@ -712,19 +1096,19 @@ void ShowAndPrintWindows(void) } x = GetStringCenterAlignXOffset(1, gText_SymbolsEarned, 0x60); - AddTextPrinterParameterized3(WINDOW_EARNED_SYMBOLS, 1, x, 5, gUnknown_08571448[0], 0, gText_SymbolsEarned); + AddTextPrinterParameterized3(WINDOW_EARNED_SYMBOLS, 1, x, 5, sTextColors[0], 0, gText_SymbolsEarned); x = GetStringCenterAlignXOffset(1, gText_BattleRecord, 0x60); - AddTextPrinterParameterized3(WINDOW_BATTLE_RECORD, 1, x, 5, gUnknown_08571448[0], 0, gText_BattleRecord); + AddTextPrinterParameterized3(WINDOW_BATTLE_RECORD, 1, x, 5, sTextColors[0], 0, gText_BattleRecord); - AddTextPrinterParameterized3(WINDOW_BATTLE_POINTS, 8, 5, 4, gUnknown_08571448[0], 0, gText_BattlePoints); - ConvertIntToDecimalStringN(gStringVar4, gUnknown_02039CEC->battlePoints, STR_CONV_MODE_LEFT_ALIGN, 5); + AddTextPrinterParameterized3(WINDOW_BATTLE_POINTS, 8, 5, 4, sTextColors[0], 0, gText_BattlePoints); + ConvertIntToDecimalStringN(gStringVar4, sPassData->battlePoints, STR_CONV_MODE_LEFT_ALIGN, 5); x = GetStringRightAlignXOffset(8, gStringVar4, 0x5B); - AddTextPrinterParameterized3(WINDOW_BATTLE_POINTS, 8, x, 16, gUnknown_08571448[0], 0, gStringVar4); + AddTextPrinterParameterized3(WINDOW_BATTLE_POINTS, 8, x, 16, sTextColors[0], 0, gStringVar4); - gUnknown_02039CEC->cursorArea = GetCursorAreaFromCoords(gUnknown_02039CEC->cursorX - 5, gUnknown_02039CEC->cursorY + 5); - gUnknown_02039CEC->previousCursorArea = CURSOR_AREA_NOTHING; - PrintAreaDescription(gUnknown_02039CEC->cursorArea); + sPassData->cursorArea = GetCursorAreaFromCoords(sPassData->cursorX - 5, sPassData->cursorY + 5); + sPassData->previousCursorArea = CURSOR_AREA_NOTHING; + PrintAreaDescription(sPassData->cursorArea); for (i = 0; i < WINDOW_COUNT; i++) CopyWindowToVram(i, 3); @@ -732,31 +1116,31 @@ void ShowAndPrintWindows(void) CopyBgTilemapBufferToVram(0); } -void PrintAreaDescription(u8 cursorArea) +static void PrintAreaDescription(u8 cursorArea) { FillWindowPixelBuffer(WINDOW_DESCRIPTION, 0); - if (cursorArea == CURSOR_AREA_RECORD && !gUnknown_02039CEC->hasBattleRecord) - AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, gUnknown_08571448[1], 0, gUnknown_08571614[0]); + if (cursorArea == CURSOR_AREA_RECORD && !sPassData->hasBattleRecord) + AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, sTextColors[1], 0, sPassAreaDescriptions[0]); else if (cursorArea != CURSOR_AREA_NOTHING) - AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, gUnknown_08571448[1], 0, gUnknown_08571614[cursorArea]); + AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, sTextColors[1], 0, sPassAreaDescriptions[cursorArea]); CopyWindowToVram(WINDOW_DESCRIPTION, 3); CopyBgTilemapBufferToVram(0); } -void sub_80C5F58(bool8 arg0, bool8 arg1) +static void sub_80C5F58(bool8 arg0, bool8 arg1) { - switch (gUnknown_02039CEC->unkE) + switch (sPassData->unkE) { case 1: if (arg0) - CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_02039CF0->unk20, 16, 3, 12, 7, 16); + CopyToBgTilemapBufferRect_ChangePalette(2, sPassGfx->unk20, 16, 3, 12, 7, 16); else FillBgTilemapBufferRect(2, 0, 16, 3, 12, 7, 16); break; case 2: if (arg0) - CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_02039CF0->unk20 + 84, 16, 10, 12, 7, 16); + CopyToBgTilemapBufferRect_ChangePalette(2, sPassGfx->unk20 + 84, 16, 10, 12, 7, 16); else FillBgTilemapBufferRect(2, 0, 16, 10, 12, 7, 16); break; @@ -768,10 +1152,10 @@ void sub_80C5F58(bool8 arg0, bool8 arg1) if (arg1) { SetBgAffine(2, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0], - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1], + gUnknown_085713E0[sPassData->unkE - 1][0] << 8, + gUnknown_085713E0[sPassData->unkE - 1][1] << 8, + gUnknown_085713E0[sPassData->unkE - 1][0], + gUnknown_085713E0[sPassData->unkE - 1][1], sub_8151624(0x1FC), sub_8151624(0x1FC), 0); @@ -779,38 +1163,38 @@ void sub_80C5F58(bool8 arg0, bool8 arg1) else { SetBgAffine(2, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1] << 8, - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][0], - gUnknown_085713E0[gUnknown_02039CEC->unkE - 1][1], + gUnknown_085713E0[sPassData->unkE - 1][0] << 8, + gUnknown_085713E0[sPassData->unkE - 1][1] << 8, + gUnknown_085713E0[sPassData->unkE - 1][0], + gUnknown_085713E0[sPassData->unkE - 1][1], sub_8151624(0x100), sub_8151624(0x100), 0); } } -void sub_80C6104(u8 cursorArea, u8 previousCursorArea) +static void sub_80C6104(u8 cursorArea, u8 previousCursorArea) { bool32 var; switch (previousCursorArea) { case CURSOR_AREA_MAP: - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk24, 16, 3, 12, 7, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24, 16, 3, 12, 7, 17); var = TRUE; break; case CURSOR_AREA_CARD: - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk24 + 336, 16, 10, 12, 7, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 336, 16, 10, 12, 7, 17); var = TRUE; break; case CURSOR_AREA_RECORD: - if (!gUnknown_02039CEC->hasBattleRecord) + if (!sPassData->hasBattleRecord) { var = FALSE; } else { - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk28, 2, 10, 12, 3, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk28, 2, 10, 12, 3, 17); var = TRUE; } break; @@ -832,18 +1216,18 @@ void sub_80C6104(u8 cursorArea, u8 previousCursorArea) switch (cursorArea) { case CURSOR_AREA_MAP: - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk24 + 168, 16, 3, 12, 7, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 168, 16, 3, 12, 7, 17); var = TRUE; break; case CURSOR_AREA_CARD: - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk24 + 504, 16, 10, 12, 7, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 504, 16, 10, 12, 7, 17); var = TRUE; break; case CURSOR_AREA_RECORD: - if (!gUnknown_02039CEC->hasBattleRecord) + if (!sPassData->hasBattleRecord) return; - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_02039CF0->unk28 + 72, 2, 10, 12, 3, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk28 + 72, 2, 10, 12, 3, 17); var = TRUE; break; case CURSOR_AREA_CANCEL: @@ -865,56 +1249,56 @@ void sub_80C6104(u8 cursorArea, u8 previousCursorArea) CopyBgTilemapBufferToVram(1); } -void sub_80C629C(void) +static void sub_80C629C(void) { CopyToBgTilemapBuffer(1, gUnknown_08DE3060, 0, 0); - sub_80C6104(gUnknown_02039CEC->cursorArea, gUnknown_02039CEC->previousCursorArea); - sub_80C5F58(TRUE, gUnknown_02039CEC->unkE); + sub_80C6104(sPassData->cursorArea, sPassData->previousCursorArea); + sub_80C5F58(TRUE, sPassData->unkE); ShowAndPrintWindows(); CopyBgTilemapBufferToVram(1); } -void LoadCursorAndSymbolSprites(void) +static void LoadCursorAndSymbolSprites(void) { u8 spriteId; u8 i = 0; FreeAllSpritePalettes(); ResetAffineAnimData(); - LoadSpritePalettes(gUnknown_085714E4); - LoadCompressedSpriteSheet(&gUnknown_085714BC[0]); - LoadCompressedSpriteSheet(&gUnknown_085714BC[2]); - spriteId = CreateSprite(&gUnknown_085715B4[0], gUnknown_02039CEC->cursorX, gUnknown_02039CEC->cursorY, 0); - gUnknown_02039CF0->cursorSprite = &gSprites[spriteId]; - gUnknown_02039CF0->cursorSprite->oam.priority = 0; + LoadSpritePalettes(sSpritePalettes); + LoadCompressedSpriteSheet(&sCursorSpriteSheets[0]); + LoadCompressedSpriteSheet(&sCursorSpriteSheets[2]); + spriteId = CreateSprite(&sSpriteTemplates_Cursors[0], sPassData->cursorX, sPassData->cursorY, 0); + sPassGfx->cursorSprite = &gSprites[spriteId]; + sPassGfx->cursorSprite->oam.priority = 0; for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { - if (gUnknown_02039CEC->facilitySymbols[i] != 0) + if (sPassData->facilitySymbols[i] != 0) { - struct SpriteTemplate sprite = gUnknown_085715E4; + struct SpriteTemplate sprite = sSpriteTemplate_Medal; - sprite.paletteTag += gUnknown_02039CEC->facilitySymbols[i] - 1; - spriteId = CreateSprite(&sprite, gUnknown_08571454[i + CURSOR_AREA_SYMBOL - 1].xStart + 8, gUnknown_08571454[i + CURSOR_AREA_SYMBOL - 1].yStart + 6, i + 1); - gUnknown_02039CF0->symbolSprites[i] = &gSprites[spriteId]; - gUnknown_02039CF0->symbolSprites[i]->oam.priority = 2; - StartSpriteAnim(gUnknown_02039CF0->symbolSprites[i], i); + sprite.paletteTag += sPassData->facilitySymbols[i] - 1; + spriteId = CreateSprite(&sprite, sPassAreasLayout[i + CURSOR_AREA_SYMBOL - 1].xStart + 8, sPassAreasLayout[i + CURSOR_AREA_SYMBOL - 1].yStart + 6, i + 1); + sPassGfx->symbolSprites[i] = &gSprites[spriteId]; + sPassGfx->symbolSprites[i]->oam.priority = 2; + StartSpriteAnim(sPassGfx->symbolSprites[i], i); } } } -void FreeCursorAndSymbolSprites(void) +static void FreeCursorAndSymbolSprites(void) { u8 i = 0; - DestroySprite(gUnknown_02039CF0->cursorSprite); - gUnknown_02039CF0->cursorSprite = NULL; + DestroySprite(sPassGfx->cursorSprite); + sPassGfx->cursorSprite = NULL; for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { - if (gUnknown_02039CF0->symbolSprites[i] != NULL) + if (sPassGfx->symbolSprites[i] != NULL) { - DestroySprite(gUnknown_02039CF0->symbolSprites[i]); - gUnknown_02039CF0->symbolSprites[i] = NULL; + DestroySprite(sPassGfx->symbolSprites[i]); + sPassGfx->symbolSprites[i] = NULL; } } FreeAllSpritePalettes(); @@ -922,62 +1306,42 @@ void FreeCursorAndSymbolSprites(void) FreeSpriteTilesByTag(0); } -void nullsub_39(void) +static void SpriteCb_Dummy(struct Sprite *sprite) { } // Frontier Map code. -struct FrontierMapData -{ - void (*callback)(void); - struct Sprite *cursorSprite; - struct Sprite *playerHeadSprite; - struct Sprite *mapIndicatorSprite; - u8 cursorPos; - u8 unk11; - u8 tilemapBuff0[0x1000]; - u8 tilemapBuff1[0x1000]; - u8 tilemapBuff2[0x1000]; -}; - -extern struct FrontierMapData *gUnknown_02039CF4; - // Forward declarations. -void sub_80C67BC(u8 taskId); -void sub_80C6B94(void); -void sub_80C6974(void); -void sub_80C6C70(u8 direction); - -extern const struct BgTemplate gUnknown_085713F4[3]; -extern const struct WindowTemplate gUnknown_08571428[]; -extern const u32 gUnknown_0856FBBC[]; -extern const u32 gUnknown_08570E00[]; +static void Task_HandleFrontierMap(u8 taskId); +static void PrintOnFrontierMap(void); +static void InitFrontierMapSprites(void); +static void HandleFrontierMapCursorMove(u8 direction); -void ShowFrontierMap(void (*callback)(void)) +static void ShowFrontierMap(void (*callback)(void)) { - if (gUnknown_02039CF4 != NULL) + if (sMapData != NULL) SetMainCallback2(callback); // This line doesn't make sense at all, since it gets overwritten later anyway. - gUnknown_02039CF4 = AllocZeroed(sizeof(*gUnknown_02039CF4)); - gUnknown_02039CF4->callback = callback; + sMapData = AllocZeroed(sizeof(*sMapData)); + sMapData->callback = callback; ResetTasks(); - CreateTask(sub_80C67BC, 0); + CreateTask(Task_HandleFrontierMap, 0); SetMainCallback2(CB2_FrontierPass); } -void sub_80C6498(void) +static void FreeFrontierMap(void) { ResetTasks(); - SetMainCallback2(gUnknown_02039CF4->callback); - memset(gUnknown_02039CF4, 0, sizeof(*gUnknown_02039CF4)); // Pointless memory clear. - FREE_AND_SET_NULL(gUnknown_02039CF4); + SetMainCallback2(sMapData->callback); + memset(sMapData, 0, sizeof(*sMapData)); // Pointless memory clear. + FREE_AND_SET_NULL(sMapData); } -bool32 sub_80C64CC(void) +static bool32 InitFrontierMap(void) { - switch (gUnknown_02039CEC->state) + switch (sPassData->state) { case 0: SetVBlankCallback(NULL); @@ -985,7 +1349,7 @@ bool32 sub_80C64CC(void) SetVBlankHBlankCallbacksToNull(); break; case 1: - sub_80C50D0(); + ResetGpuRegsAndBgs(); break; case 2: ResetSpriteData(); @@ -995,10 +1359,10 @@ bool32 sub_80C64CC(void) break; case 3: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_085713F4, ARRAY_COUNT(gUnknown_085713F4)); - SetBgTilemapBuffer(0, gUnknown_02039CF4->tilemapBuff0); - SetBgTilemapBuffer(1, gUnknown_02039CF4->tilemapBuff1); - SetBgTilemapBuffer(2, gUnknown_02039CF4->tilemapBuff2); + InitBgsFromTemplates(0, sMapBgTemplates, ARRAY_COUNT(sMapBgTemplates)); + SetBgTilemapBuffer(0, sMapData->tilemapBuff0); + SetBgTilemapBuffer(1, sMapData->tilemapBuff1); + SetBgTilemapBuffer(2, sMapData->tilemapBuff2); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); @@ -1007,9 +1371,9 @@ bool32 sub_80C64CC(void) CopyBgTilemapBufferToVram(2); break; case 4: - InitWindows(gUnknown_08571428); + InitWindows(sMapWindowTemplates); DeactivateAllTextPrinters(); - sub_80C6B94(); + PrintOnFrontierMap(); decompress_and_copy_tile_data_to_vram(1, gUnknown_0856FBBC, 0, 0, 0); break; case 5: @@ -1025,7 +1389,7 @@ bool32 sub_80C64CC(void) ShowBg(0); ShowBg(1); ShowBg(2); - sub_80C6974(); + InitFrontierMapSprites(); SetVBlankCallback(VblankCb_FrontierPass); BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_WHITE); @@ -1033,17 +1397,17 @@ bool32 sub_80C64CC(void) case 7: if (UpdatePaletteFade()) return FALSE; - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return TRUE; } - gUnknown_02039CEC->state++; + sPassData->state++; return FALSE; } -bool32 sub_80C66AC(void) +static bool32 ExitFrontierMap(void) { - switch (gUnknown_02039CEC->state) + switch (sPassData->state) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITE); @@ -1062,25 +1426,25 @@ bool32 sub_80C66AC(void) SetVBlankHBlankCallbacksToNull(); break; case 3: - if (gUnknown_02039CF4->cursorSprite != NULL) + if (sMapData->cursorSprite != NULL) { - DestroySprite(gUnknown_02039CF4->cursorSprite); + DestroySprite(sMapData->cursorSprite); FreeSpriteTilesByTag(0); } - if (gUnknown_02039CF4->mapIndicatorSprite != NULL) + if (sMapData->mapIndicatorSprite != NULL) { - DestroySprite(gUnknown_02039CF4->mapIndicatorSprite); + DestroySprite(sMapData->mapIndicatorSprite); FreeSpriteTilesByTag(1); } - if (gUnknown_02039CF4->playerHeadSprite != NULL) + if (sMapData->playerHeadSprite != NULL) { - DestroySprite(gUnknown_02039CF4->playerHeadSprite); + DestroySprite(sMapData->playerHeadSprite); FreeSpriteTilesByTag(4); } FreeAllWindowBuffers(); break; case 4: - sub_80C50D0(); + ResetGpuRegsAndBgs(); ResetSpriteData(); FreeAllSpritePalettes(); break; @@ -1088,22 +1452,22 @@ bool32 sub_80C66AC(void) UnsetBgTilemapBuffer(0); UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(2); - gUnknown_02039CEC->state = 0; + sPassData->state = 0; return TRUE; } - gUnknown_02039CEC->state++; + sPassData->state++; return FALSE; } -void sub_80C67BC(u8 taskId) +static void Task_HandleFrontierMap(u8 taskId) { s16 *data = gTasks[taskId].data; switch (data[0]) { case 0: - if (sub_80C64CC()) + if (InitFrontierMap()) break; return; case 1: @@ -1114,15 +1478,15 @@ void sub_80C67BC(u8 taskId) } else if (gMain.newKeys & DPAD_DOWN) { - if (gUnknown_02039CF4->cursorPos >= NUM_FRONTIER_FACILITIES - 1) - sub_80C6C70(0); + if (sMapData->cursorPos >= NUM_FRONTIER_FACILITIES - 1) + HandleFrontierMapCursorMove(0); else data[0] = 2; } else if (gMain.newKeys & DPAD_UP) { - if (gUnknown_02039CF4->cursorPos == 0) - sub_80C6C70(1); + if (sMapData->cursorPos == 0) + HandleFrontierMapCursorMove(1); else data[0] = 3; } @@ -1130,43 +1494,43 @@ void sub_80C67BC(u8 taskId) case 2: if (data[1] > 3) { - sub_80C6C70(0); + HandleFrontierMapCursorMove(0); data[1] = 0; data[0] = 1; } else { - gUnknown_02039CF4->cursorSprite->pos1.y += 4; + sMapData->cursorSprite->pos1.y += 4; data[1]++; } return; case 3: if (data[1] > 3) { - sub_80C6C70(1); + HandleFrontierMapCursorMove(1); data[1] = 0; data[0] = 1; } else { - gUnknown_02039CF4->cursorSprite->pos1.y -= 4; + sMapData->cursorSprite->pos1.y -= 4; data[1]++; } return; case 4: - if (sub_80C66AC()) + if (ExitFrontierMap()) break; return; case 5: DestroyTask(taskId); - sub_80C6498(); + FreeFrontierMap(); return; } data[0]++; } -u8 sub_80C68E8(u16 mapNum) // id + 1, zero means not a frontier map number +static u8 MapNumToFrontierFacilityId(u16 mapNum) // id + 1, zero means not a frontier map number { if ((mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM)) || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2))) @@ -1203,19 +1567,7 @@ u8 sub_80C68E8(u16 mapNum) // id + 1, zero means not a frontier map number return 0; } -struct -{ - const u8 *name; - const u8 *description; - s16 x; - s16 y; - u8 animNum; -} extern const gUnknown_08571650[]; - -extern const struct CompressedSpriteSheet gUnknown_085714D4[]; -extern const struct SpriteTemplate gUnknown_085715FC; - -void sub_80C6974(void) +static void InitFrontierMapSprites(void) { struct SpriteTemplate sprite; u8 spriteId; @@ -1223,20 +1575,20 @@ void sub_80C6974(void) s16 x = 0, y; FreeAllSpritePalettes(); - LoadSpritePalettes(gUnknown_085714E4); + LoadSpritePalettes(sSpritePalettes); - LoadCompressedSpriteSheet(&gUnknown_085714BC[0]); - spriteId = CreateSprite(&gUnknown_085715B4[0], 155, (gUnknown_02039CF4->cursorPos * 16) + 8, 2); - gUnknown_02039CF4->cursorSprite = &gSprites[spriteId]; - gUnknown_02039CF4->cursorSprite->oam.priority = 0; - gUnknown_02039CF4->cursorSprite->hFlip = TRUE; - StartSpriteAnim(gUnknown_02039CF4->cursorSprite, 1); + LoadCompressedSpriteSheet(&sCursorSpriteSheets[0]); + spriteId = CreateSprite(&sSpriteTemplates_Cursors[0], 155, (sMapData->cursorPos * 16) + 8, 2); + sMapData->cursorSprite = &gSprites[spriteId]; + sMapData->cursorSprite->oam.priority = 0; + sMapData->cursorSprite->hFlip = TRUE; + StartSpriteAnim(sMapData->cursorSprite, 1); - LoadCompressedSpriteSheet(&gUnknown_085714BC[1]); - spriteId = CreateSprite(&gUnknown_085715B4[1], gUnknown_08571650[gUnknown_02039CF4->cursorPos].x, gUnknown_08571650[gUnknown_02039CF4->cursorPos].y, 1); - gUnknown_02039CF4->mapIndicatorSprite = &gSprites[spriteId]; - gUnknown_02039CF4->mapIndicatorSprite->oam.priority = 0; - StartSpriteAnim(gUnknown_02039CF4->mapIndicatorSprite, gUnknown_08571650[gUnknown_02039CF4->cursorPos].animNum); + LoadCompressedSpriteSheet(&sCursorSpriteSheets[1]); + spriteId = CreateSprite(&sSpriteTemplates_Cursors[1], sMapLandmarks[sMapData->cursorPos].x, sMapLandmarks[sMapData->cursorPos].y, 1); + sMapData->mapIndicatorSprite = &gSprites[spriteId]; + sMapData->mapIndicatorSprite->oam.priority = 0; + StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum); // Create player indicator head sprite only if it's in vicinity of battle frontier. id = GetCurrentRegionMapSectionId(); @@ -1257,11 +1609,11 @@ void sub_80C6974(void) } else { - id = sub_80C68E8(mapNum); + id = MapNumToFrontierFacilityId(mapNum); if (id != 0) { - x = gUnknown_08571650[id - 1].x; - y = gUnknown_08571650[id - 1].y; + x = sMapLandmarks[id - 1].x; + y = sMapLandmarks[id - 1].y; } else { @@ -1278,8 +1630,8 @@ void sub_80C6974(void) } } - LoadCompressedSpriteSheet(gUnknown_085714D4); - sprite = gUnknown_085715FC; + LoadCompressedSpriteSheet(sHeadsSpriteSheet); + sprite = sSpriteTemplate_Head; sprite.paletteTag = gSaveBlock2Ptr->playerGender + 4; if (id != 0) { @@ -1292,22 +1644,14 @@ void sub_80C6974(void) spriteId = CreateSprite(&sprite, x + 20, y + 36, 0); } - gUnknown_02039CF4->playerHeadSprite = &gSprites[spriteId]; - gUnknown_02039CF4->playerHeadSprite->oam.priority = 0; + sMapData->playerHeadSprite = &gSprites[spriteId]; + sMapData->playerHeadSprite->oam.priority = 0; if (gSaveBlock2Ptr->playerGender != MALE) - StartSpriteAnim(gUnknown_02039CF4->playerHeadSprite, 1); + StartSpriteAnim(sMapData->playerHeadSprite, 1); } } -enum -{ - MAP_WINDOW_0, - MAP_WINDOW_NAME, - MAP_WINDOW_DESCRIPTION, - MAP_WINDOW_COUNT -}; - -void sub_80C6B94(void) +static void PrintOnFrontierMap(void) { u8 i; @@ -1319,13 +1663,13 @@ void sub_80C6B94(void) for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { - if (i == gUnknown_02039CF4->cursorPos) - AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (i * 16) + 1, gUnknown_08571448[2], 0, gUnknown_08571650[i].name); + if (i == sMapData->cursorPos) + AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (i * 16) + 1, sTextColors[2], 0, sMapLandmarks[i].name); else - AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (i * 16) + 1, gUnknown_08571448[1], 0, gUnknown_08571650[i].name); + AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (i * 16) + 1, sTextColors[1], 0, sMapLandmarks[i].name); } - AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, gUnknown_08571448[0], 0, gUnknown_08571650[gUnknown_02039CF4->cursorPos].description); + AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description); for (i = 0; i < MAP_WINDOW_COUNT; i++) CopyWindowToVram(i, 3); @@ -1333,31 +1677,31 @@ void sub_80C6B94(void) CopyBgTilemapBufferToVram(0); } -void sub_80C6C70(u8 direction) +static void HandleFrontierMapCursorMove(u8 direction) { u8 oldCursorPos, i; if (direction) { - oldCursorPos = gUnknown_02039CF4->cursorPos; - gUnknown_02039CF4->cursorPos = (oldCursorPos + 6) % NUM_FRONTIER_FACILITIES; + oldCursorPos = sMapData->cursorPos; + sMapData->cursorPos = (oldCursorPos + 6) % NUM_FRONTIER_FACILITIES; } else { - oldCursorPos = gUnknown_02039CF4->cursorPos; - gUnknown_02039CF4->cursorPos = (oldCursorPos + 1) % NUM_FRONTIER_FACILITIES; + oldCursorPos = sMapData->cursorPos; + sMapData->cursorPos = (oldCursorPos + 1) % NUM_FRONTIER_FACILITIES; } - AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (oldCursorPos * 16) + 1, gUnknown_08571448[1], 0, gUnknown_08571650[oldCursorPos].name); - AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (gUnknown_02039CF4->cursorPos * 16) + 1, gUnknown_08571448[2], 0, gUnknown_08571650[gUnknown_02039CF4->cursorPos].name); + AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (oldCursorPos * 16) + 1, sTextColors[1], 0, sMapLandmarks[oldCursorPos].name); + AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (sMapData->cursorPos * 16) + 1, sTextColors[2], 0, sMapLandmarks[sMapData->cursorPos].name); - gUnknown_02039CF4->cursorSprite->pos1.y = (gUnknown_02039CF4->cursorPos * 16) + 8; + sMapData->cursorSprite->pos1.y = (sMapData->cursorPos * 16) + 8; - StartSpriteAnim(gUnknown_02039CF4->mapIndicatorSprite, gUnknown_08571650[gUnknown_02039CF4->cursorPos].animNum); - gUnknown_02039CF4->mapIndicatorSprite->pos1.x = gUnknown_08571650[gUnknown_02039CF4->cursorPos].x; - gUnknown_02039CF4->mapIndicatorSprite->pos1.y = gUnknown_08571650[gUnknown_02039CF4->cursorPos].y; + StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum); + sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x; + sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y; FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, 0); - AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, gUnknown_08571448[0], 0, gUnknown_08571650[gUnknown_02039CF4->cursorPos].description); + AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description); for (i = 0; i < 3; i++) CopyWindowToVram(i, 3); diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index dc2e80a61..78fec2fc5 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1541,7 +1541,7 @@ static const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cu static const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp"); // code -void sub_80C6D80(u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4) +void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4) { s32 i, val, val2; u16 windowId; @@ -1586,121 +1586,29 @@ void sub_80C6D80(u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4) RemoveWindow(windowId); } -NAKED -void sub_80C6EAC() +// Unused +void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr3) { - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - str r0, [sp, 0x20]\n\ - str r1, [sp, 0x24]\n\ - adds r6, r3, 0\n\ - ldr r0, [sp, 0x4C]\n\ - mov r9, r0\n\ - ldr r1, [sp, 0x50]\n\ - mov r10, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp, 0x28]\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - mov r2, r9\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r9, r2\n\ - mov r0, r10\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - movs r0, 0\n\ - movs r1, 0\n\ - str r0, [sp, 0x18]\n\ - str r1, [sp, 0x1C]\n\ - ldr r0, [sp, 0x20]\n\ - bl StringLength_Multibyte\n\ - lsls r0, 24\n\ - ldr r2, =0x00ffffff\n\ - ldr r1, [sp, 0x18]\n\ - ands r1, r2\n\ - orrs r1, r0\n\ - str r1, [sp, 0x18]\n\ - ldr r1, =0xffffff00\n\ - add r2, sp, 0x18\n\ - mov r8, r2\n\ - ldr r0, [r2, 0x4]\n\ - ands r0, r1\n\ - movs r1, 0x2\n\ - orrs r0, r1\n\ - str r0, [r2, 0x4]\n\ - ldr r5, [sp, 0x18]\n\ - lsrs r5, 24\n\ - lsls r5, 5\n\ - mov r0, r8\n\ - bl AddWindow\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r1, r6, 4\n\ - orrs r1, r6\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r4, 0\n\ - bl FillWindowPixelBuffer\n\ - adds r0, r4, 0\n\ - movs r1, 0x7\n\ - bl GetWindowAttribute\n\ - adds r7, r0, 0\n\ - mov r0, r8\n\ - ldrb r0, [r0, 0x3]\n\ - lsls r0, 5\n\ - mov r8, r0\n\ - add r8, r7\n\ - add r0, sp, 0x14\n\ - movs r1, 0\n\ - strb r6, [r0]\n\ - mov r2, r9\n\ - strb r2, [r0, 0x1]\n\ - mov r2, r10\n\ - strb r2, [r0, 0x2]\n\ - str r1, [sp]\n\ - str r1, [sp, 0x4]\n\ - str r0, [sp, 0x8]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - str r0, [sp, 0xC]\n\ - ldr r0, [sp, 0x20]\n\ - str r0, [sp, 0x10]\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - movs r2, 0\n\ - movs r3, 0x2\n\ - bl AddTextPrinterParameterized4\n\ - lsrs r5, 1\n\ - adds r0, r7, 0\n\ - ldr r1, [sp, 0x24]\n\ - adds r2, r5, 0\n\ - bl CpuSet\n\ - ldr r2, [sp, 0x24]\n\ - ldr r0, [sp, 0x28]\n\ - adds r1, r2, r0\n\ - mov r0, r8\n\ - adds r2, r5, 0\n\ - bl CpuSet\n\ - adds r0, r4, 0\n\ - bl RemoveWindow\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool"); + u32 var; + u8 windowId; + u8 txtColor[3]; + u8 *tileData1, *tileData2; + struct WindowTemplate winTemplate = {0}; + + winTemplate.width = StringLength_Multibyte(string); + winTemplate.height = 2; + var = winTemplate.width * 32; + windowId = AddWindow(&winTemplate); + FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3); + tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); + tileData2 = (winTemplate.width * 32) + tileData1; + txtColor[0] = arg3; + txtColor[1] = clr2; + txtColor[2] = clr3; + AddTextPrinterParameterized4(windowId, 1, 0, 2, 0, 0, txtColor, -1, string); + CpuCopy16(tileData1, dst, var); + CpuCopy16(tileData2, dst + arg2, var); + RemoveWindow(windowId); } u8 CountMonsInBox(u8 boxId) diff --git a/src/string_util.c b/src/string_util.c index 8ce9a97ed..39d235ab8 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -587,7 +587,7 @@ u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n) return dest; } -u32 StringLength_Multibyte(u8 *str) +u32 StringLength_Multibyte(const u8 *str) { u32 length = 0; diff --git a/src/trade.c b/src/trade.c index 99c9f6088..70b57fbc7 100644 --- a/src/trade.c +++ b/src/trade.c @@ -26,6 +26,7 @@ #include "pokedex.h" #include "pokemon_icon.h" #include "pokemon_summary_screen.h" +#include "pokemon_storage_system.h" #include "random.h" #include "rom_8011DC0.h" #include "save.h" @@ -49,8 +50,6 @@ #define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20)) -extern void sub_80C6D80(const u8 *, u8 *, u8, u8, u8); - struct InGameTrade { /*0x00*/ u8 name[11]; /*0x0C*/ u16 species; diff --git a/sym_ewram.txt b/sym_ewram.txt index 75a44bb97..9e836d0fe 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -154,19 +154,7 @@ gUnknown_02039B88: @ 2039B88 .space 0x160 .include "src/trainer_card.o" - -gUnknown_02039CEC: @ 2039CEC - .space 0x4 - -gUnknown_02039CF0: @ 2039CF0 - .space 0x4 - -gUnknown_02039CF4: @ 2039CF4 - .space 0x4 - -gUnknown_02039CF8: @ 2039CF8 - .space 0x8 - + .include "src/frontier_pass.o" .include "src/pokemon_storage_system.o" .include "src/script_movement.o" .include "src/fldeff_cut.o" |