diff options
-rw-r--r-- | Makefile | 2 | ||||
-rwxr-xr-x | asm/battle_intro.s | 1667 | ||||
-rw-r--r-- | data/battle_anim_80CA710.s | 13 | ||||
-rw-r--r-- | include/battle_anim_80CA710.h | 2 | ||||
-rw-r--r-- | include/data2.h | 3 | ||||
-rwxr-xr-x | include/ewram.h | 5 | ||||
-rw-r--r-- | include/trainer_card.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/battle/anim/battle_intro.c | 499 | ||||
-rw-r--r-- | src/battle/battle_controller_linkopponent.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_linkpartner.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_wally.c | 4 | ||||
-rw-r--r-- | src/engine/cable_club.c | 6 | ||||
-rw-r--r-- | src/engine/save_menu_util.c | 6 | ||||
-rw-r--r-- | src/engine/trainer_card.c | 555 | ||||
-rw-r--r-- | src/field/item.c | 2 | ||||
-rw-r--r-- | src/field/start_menu.c | 4 | ||||
-rw-r--r-- | src/scene/evolution_scene.c | 3 |
21 files changed, 816 insertions, 1984 deletions
@@ -84,6 +84,8 @@ endif .SUFFIXES: # Don't delete intermediate files .SECONDARY: +# Delete files that weren't built properly +.DELETE_ON_ERROR: # Create build subdirectories $(shell mkdir -p $(addprefix $(BUILD_DIR)/, $(SUBDIRS))) diff --git a/asm/battle_intro.s b/asm/battle_intro.s deleted file mode 100755 index 5b29f56a4..000000000 --- a/asm/battle_intro.s +++ /dev/null @@ -1,1667 +0,0 @@ - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .syntax unified - - .text - - @ intro - - thumb_func_start sub_80E43C0 -sub_80E43C0: @ 80E43C0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080E43D8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E43E0 - ldr r0, _080E43DC @ =sub_80E4C34 - b _080E4408 - .align 2, 0 -_080E43D8: .4byte gBattleTypeFlags -_080E43DC: .4byte sub_80E4C34 -_080E43E0: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _080E4400 - ldr r0, _080E43F8 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - beq _080E4400 - movs r4, 0x3 - ldr r0, _080E43FC @ =task00_battle_intro_80BC6C8 - b _080E4408 - .align 2, 0 -_080E43F8: .4byte gGameVersion -_080E43FC: .4byte task00_battle_intro_80BC6C8 -_080E4400: - ldr r1, _080E4434 @ =gUnknown_083DB56C - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] -_080E4408: - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080E4438 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - strh r0, [r1, 0xC] - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4434: .4byte gUnknown_083DB56C -_080E4438: .4byte gTasks - thumb_func_end sub_80E43C0 - - thumb_func_start sub_80E443C -sub_80E443C: @ 80E443C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080E4474 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080E4478 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _080E447C @ =gBattle_BG2_X - strh r1, [r0] - ldr r0, _080E4480 @ =gBattle_BG2_Y - strh r1, [r0] - ldr r0, _080E4484 @ =REG_BLDCNT - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0xC - ldr r2, _080E4488 @ =0x00003f3f - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080E4474: .4byte gBattle_BG1_X -_080E4478: .4byte gBattle_BG1_Y -_080E447C: .4byte gBattle_BG2_X -_080E4480: .4byte gBattle_BG2_Y -_080E4484: .4byte REG_BLDCNT -_080E4488: .4byte 0x00003f3f - thumb_func_end sub_80E443C - - thumb_func_start task_battle_intro_80BC47C -task_battle_intro_80BC47C: @ 80E448C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E44C4 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 - strh r0, [r1] - ldr r1, _080E44C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - mov r8, r1 - cmp r0, 0x4 - bls _080E44B8 - b _080E46BE -_080E44B8: - lsls r0, 2 - ldr r1, _080E44CC @ =_080E44D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E44C4: .4byte gBattle_BG1_X -_080E44C8: .4byte gTasks -_080E44CC: .4byte _080E44D0 - .align 2, 0 -_080E44D0: - .4byte _080E44E4 - .4byte _080E4514 - .4byte _080E4540 - .4byte _080E4588 - .4byte _080E46B8 -_080E44E4: - ldr r0, _080E44FC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E4500 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x10 - b _080E450A - .align 2, 0 -_080E44FC: .4byte gBattleTypeFlags -_080E4500: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x1 -_080E450A: - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080E46BE -_080E4514: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E452C - b _080E46BE -_080E452C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E453C @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E46BE - .align 2, 0 -_080E453C: .4byte REG_WININ -_080E4540: - ldr r1, _080E457C @ =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4558 - b _080E46BE -_080E4558: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080E4580 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4584 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E46BE - .align 2, 0 -_080E457C: .4byte gBattle_WIN0V -_080E4580: .4byte gUnknown_02024DE8 -_080E4584: .4byte 0x0000fffe -_080E4588: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - mov r5, r8 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r5, 0xE - ldrsh r1, [r2, r5] - mov r12, r0 - cmp r1, 0 - beq _080E45A4 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080E45D2 -_080E45A4: - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080E45C4 - ldr r2, _080E45BC @ =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, _080E45C0 @ =0x0000ffb0 - cmp r1, r0 - beq _080E45D2 - subs r0, r1, 0x2 - b _080E45D0 - .align 2, 0 -_080E45BC: .4byte gBattle_BG1_Y -_080E45C0: .4byte 0x0000ffb0 -_080E45C4: - ldr r2, _080E4690 @ =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, _080E4694 @ =0x0000ffc8 - cmp r1, r0 - beq _080E45D2 - subs r0, r1, 0x1 -_080E45D0: - strh r0, [r2] -_080E45D2: - ldr r2, _080E4698 @ =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E45E6 - ldr r3, _080E469C @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E45E6: - mov r5, r12 - adds r0, r5, r4 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E45FE - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E45FE: - movs r3, 0 - ldr r5, _080E46A0 @ =gScanlineEffect - mov r9, r5 - ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers - mov r6, r9 - adds r5, r1, 0 -_080E460A: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E460A - cmp r3, 0x9F - bgt _080E464E - ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers - ldr r6, _080E46A0 @ =gScanlineEffect - ldr r1, _080E46A8 @ =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_080E4634: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4634 -_080E464E: - mov r3, r12 - adds r0, r3, r4 - lsls r0, 3 - mov r5, r8 - adds r1, r0, r5 - movs r0, 0xC - ldrsh r2, [r1, r0] - cmp r2, 0 - bne _080E46BE - movs r0, 0x3 - mov r3, r9 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E46AC @ =0x0600e000 - ldr r2, _080E46B0 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E46B4 @ =REG_BG1CNT - movs r5, 0x9C - lsls r5, 8 - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0xBC - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - b _080E46BE - .align 2, 0 -_080E4690: .4byte gBattle_BG1_Y -_080E4694: .4byte 0x0000ffc8 -_080E4698: .4byte gBattle_WIN0V -_080E469C: .4byte 0xfffffc04 -_080E46A0: .4byte gScanlineEffect -_080E46A4: .4byte gScanlineEffectRegBuffers -_080E46A8: .4byte gTasks -_080E46AC: .4byte 0x0600e000 -_080E46B0: .4byte 0x05000200 -_080E46B4: .4byte REG_BG1CNT -_080E46B8: - adds r0, r4, 0 - bl sub_80E443C -_080E46BE: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_battle_intro_80BC47C - - thumb_func_start task00_battle_intro_80BC6C8 -task00_battle_intro_80BC6C8: @ 80E46CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E46F8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0xA - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x3 - beq _080E470C - cmp r0, 0x3 - bgt _080E46FC - cmp r0, 0x2 - beq _080E4700 - b _080E4714 - .align 2, 0 -_080E46F8: .4byte gTasks -_080E46FC: - cmp r0, 0x4 - bne _080E4714 -_080E4700: - ldr r1, _080E4708 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - b _080E4712 - .align 2, 0 -_080E4708: .4byte gBattle_BG1_X -_080E470C: - ldr r1, _080E4750 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 -_080E4712: - strh r0, [r1] -_080E4714: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r4, r1, r2 - movs r3, 0xA - ldrsh r1, [r4, r3] - adds r6, r0, 0 - cmp r1, 0x4 - bne _080E4778 - ldr r7, _080E4754 @ =gBattle_BG1_Y - ldrh r0, [r4, 0x14] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E473A - ldr r1, _080E4758 @ =0x000001ff - adds r0, r1 -_080E473A: - asrs r0, 9 - subs r0, 0x8 - strh r0, [r7] - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0xB3 - bgt _080E475C - adds r0, r1, 0x4 - b _080E475E - .align 2, 0 -_080E4750: .4byte gBattle_BG1_X -_080E4754: .4byte gBattle_BG1_Y -_080E4758: .4byte 0x000001ff -_080E475C: - adds r0, r1, 0x6 -_080E475E: - strh r0, [r4, 0x14] - ldr r2, _080E4794 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r3, r0, r2 - movs r4, 0x14 - ldrsh r1, [r3, r4] - movs r0, 0xB4 - lsls r0, 1 - cmp r1, r0 - bne _080E4778 - movs r0, 0 - strh r0, [r3, 0x14] -_080E4778: - adds r0, r6, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _080E4788 - b _080E4996 -_080E4788: - lsls r0, 2 - ldr r1, _080E4798 @ =_080E479C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E4794: .4byte gTasks -_080E4798: .4byte _080E479C - .align 2, 0 -_080E479C: - .4byte _080E47B0 - .4byte _080E47E0 - .4byte _080E480C - .4byte _080E485C - .4byte _080E4990 -_080E47B0: - ldr r1, _080E47CC @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x10 - strh r3, [r2, 0x10] - ldr r0, _080E47D0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E47D4 - strh r3, [r2, 0xC] - b _080E47D8 - .align 2, 0 -_080E47CC: .4byte gTasks -_080E47D0: .4byte gBattleTypeFlags -_080E47D4: - movs r0, 0x1 - strh r0, [r2, 0xC] -_080E47D8: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080E4996 -_080E47E0: - ldr r0, _080E4804 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E47F6 - b _080E4996 -_080E47F6: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4808 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E4996 - .align 2, 0 -_080E4804: .4byte gTasks -_080E4808: .4byte REG_WININ -_080E480C: - ldr r1, _080E484C @ =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4824 - b _080E4996 -_080E4824: - ldr r0, _080E4850 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080E4854 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4858 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4996 - .align 2, 0 -_080E484C: .4byte gBattle_WIN0V -_080E4850: .4byte gTasks -_080E4854: .4byte gUnknown_02024DE8 -_080E4858: .4byte 0x0000fffe -_080E485C: - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r3, [r1, 0xE] - movs r4, 0xE - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _080E4898 - subs r0, r3, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - bne _080E48B8 - ldr r1, _080E488C @ =REG_BLDCNT - ldr r4, _080E4890 @ =0x00001842 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xF - strh r0, [r1] - ldr r0, _080E4894 @ =REG_BLDY - strh r3, [r0] - b _080E48B8 - .align 2, 0 -_080E488C: .4byte REG_BLDCNT -_080E4890: .4byte 0x00001842 -_080E4894: .4byte REG_BLDY -_080E4898: - ldrh r3, [r1, 0x10] - movs r0, 0x1F - ands r0, r3 - cmp r0, 0 - beq _080E48B8 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080E48B8 - adds r0, r3, 0 - adds r0, 0xFF - strh r0, [r1, 0x10] - movs r0, 0x4 - strh r0, [r1, 0x12] -_080E48B8: - ldr r3, _080E4970 @ =gBattle_WIN0V - ldrh r1, [r3] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E48CC - ldr r4, _080E4974 @ =0xfffffc04 - adds r0, r1, r4 - strh r0, [r3] -_080E48CC: - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E48E0 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E48E0: - movs r3, 0 - ldr r4, _080E4978 @ =gScanlineEffect - mov r8, r4 - ldr r0, _080E497C @ =gScanlineEffectRegBuffers - mov r12, r0 - mov r7, r8 - adds r4, r1, 0 -_080E48EE: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E48EE - cmp r3, 0x9F - bgt _080E4932 - ldr r1, _080E497C @ =gScanlineEffectRegBuffers - mov r12, r1 - ldr r7, _080E4978 @ =gScanlineEffect - ldr r1, _080E4980 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r4, r0, r1 -_080E4918: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4918 -_080E4932: - ldr r1, _080E4980 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080E4996 - movs r0, 0x3 - mov r4, r8 - strb r0, [r4, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E4984 @ =0x0600e000 - ldr r2, _080E4988 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E498C @ =REG_BG1CNT - movs r2, 0x9C - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0xBC - lsls r3, 7 - adds r0, r3, 0 - strh r0, [r1] - b _080E4996 - .align 2, 0 -_080E4970: .4byte gBattle_WIN0V -_080E4974: .4byte 0xfffffc04 -_080E4978: .4byte gScanlineEffect -_080E497C: .4byte gScanlineEffectRegBuffers -_080E4980: .4byte gTasks -_080E4984: .4byte 0x0600e000 -_080E4988: .4byte 0x05000200 -_080E498C: .4byte REG_BG1CNT -_080E4990: - adds r0, r5, 0 - bl sub_80E443C -_080E4996: - ldr r0, _080E49B8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r2, r1, r0 - movs r4, 0x8 - ldrsh r0, [r2, r4] - cmp r0, 0x4 - beq _080E49AC - ldr r1, _080E49BC @ =REG_BLDALPHA - ldrh r0, [r2, 0x10] - strh r0, [r1] -_080E49AC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E49B8: .4byte gTasks -_080E49BC: .4byte REG_BLDALPHA - thumb_func_end task00_battle_intro_80BC6C8 - - thumb_func_start task_battle_intro_anim -task_battle_intro_anim: @ 80E49C0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E49F4 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - strh r0, [r1] - ldr r1, _080E49F8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r5, r1, 0 - cmp r0, 0x4 - bls _080E49EA - b _080E4C06 -_080E49EA: - lsls r0, 2 - ldr r1, _080E49FC @ =_080E4A00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E49F4: .4byte gBattle_BG1_X -_080E49F8: .4byte gTasks -_080E49FC: .4byte _080E4A00 - .align 2, 0 -_080E4A00: - .4byte _080E4A14 - .4byte _080E4A6C - .4byte _080E4A9C - .4byte _080E4AEC - .4byte _080E4C00 -_080E4A14: - ldr r1, _080E4A48 @ =REG_BLDCNT - ldr r3, _080E4A4C @ =0x00001842 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _080E4A50 @ =REG_BLDALPHA - ldr r6, _080E4A54 @ =0x00000808 - adds r2, r6, 0 - strh r2, [r0] - adds r1, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r1, _080E4A58 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r3, r0, r1 - strh r2, [r3, 0x10] - ldr r0, _080E4A5C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E4A60 - movs r0, 0x10 - b _080E4A62 - .align 2, 0 -_080E4A48: .4byte REG_BLDCNT -_080E4A4C: .4byte 0x00001842 -_080E4A50: .4byte REG_BLDALPHA -_080E4A54: .4byte 0x00000808 -_080E4A58: .4byte gTasks -_080E4A5C: .4byte gBattleTypeFlags -_080E4A60: - movs r0, 0x1 -_080E4A62: - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080E4C06 -_080E4A6C: - ldr r0, _080E4A94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E4A84 - b _080E4C06 -_080E4A84: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4A98 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - b _080E4C06 - .align 2, 0 -_080E4A94: .4byte gTasks -_080E4A98: .4byte REG_WININ -_080E4A9C: - ldr r1, _080E4ADC @ =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4AB4 - b _080E4C06 -_080E4AB4: - ldr r0, _080E4AE0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080E4AE4 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4AE8 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4C06 - .align 2, 0 -_080E4ADC: .4byte gBattle_WIN0V -_080E4AE0: .4byte gTasks -_080E4AE4: .4byte gUnknown_02024DE8 -_080E4AE8: .4byte 0x0000fffe -_080E4AEC: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r6, 0xE - ldrsh r1, [r2, r6] - mov r12, r0 - cmp r1, 0 - beq _080E4B06 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080E4B26 -_080E4B06: - ldrh r1, [r2, 0x10] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _080E4B26 - ldrh r0, [r2, 0x12] - subs r0, 0x1 - strh r0, [r2, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080E4B26 - adds r0, r1, 0 - adds r0, 0xFF - strh r0, [r2, 0x10] - movs r0, 0x6 - strh r0, [r2, 0x12] -_080E4B26: - ldr r2, _080E4BE0 @ =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E4B3A - ldr r3, _080E4BE4 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E4B3A: - mov r6, r12 - adds r0, r6, r4 - lsls r0, 3 - adds r1, r0, r5 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E4B50 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E4B50: - movs r3, 0 - ldr r6, _080E4BE8 @ =gScanlineEffect - mov r8, r6 - ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers - adds r5, r1, 0 -_080E4B5A: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E4B5A - cmp r3, 0x9F - bgt _080E4B9E - ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers - ldr r6, _080E4BE8 @ =gScanlineEffect - ldr r1, _080E4BF0 @ =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_080E4B84: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4B84 -_080E4B9E: - ldr r1, _080E4BF0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080E4C06 - movs r0, 0x3 - mov r6, r8 - strb r0, [r6, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080E4BF4 @ =0x0600e000 - ldr r2, _080E4BF8 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r1, _080E4BFC @ =REG_BG1CNT - movs r2, 0x9C - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0xBC - lsls r3, 7 - adds r0, r3, 0 - strh r0, [r1] - b _080E4C06 - .align 2, 0 -_080E4BE0: .4byte gBattle_WIN0V -_080E4BE4: .4byte 0xfffffc04 -_080E4BE8: .4byte gScanlineEffect -_080E4BEC: .4byte gScanlineEffectRegBuffers -_080E4BF0: .4byte gTasks -_080E4BF4: .4byte 0x0600e000 -_080E4BF8: .4byte 0x05000200 -_080E4BFC: .4byte REG_BG1CNT -_080E4C00: - adds r0, r4, 0 - bl sub_80E443C -_080E4C06: - ldr r0, _080E4C2C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r2, r1, r0 - movs r6, 0x8 - ldrsh r0, [r2, r6] - cmp r0, 0x4 - beq _080E4C1E - ldr r1, _080E4C30 @ =REG_BLDALPHA - ldrh r0, [r2, 0x10] - strh r0, [r1] -_080E4C1E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E4C2C: .4byte gTasks -_080E4C30: .4byte REG_BLDALPHA - thumb_func_end task_battle_intro_anim - - thumb_func_start sub_80E4C34 -sub_80E4C34: @ 80E4C34 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E4C80 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - ble _080E4CAA - movs r2, 0x10 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _080E4CAA - ldr r2, _080E4C84 @ =gBattle_BG1_X - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080E4C72 - cmp r1, 0x4F - bhi _080E4C8C -_080E4C72: - adds r0, r1, 0x3 - strh r0, [r2] - ldr r1, _080E4C88 @ =gBattle_BG2_X - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - b _080E4CAA - .align 2, 0 -_080E4C80: .4byte gTasks -_080E4C84: .4byte gBattle_BG1_X -_080E4C88: .4byte gBattle_BG2_X -_080E4C8C: - str r5, [sp] - ldr r1, _080E4CCC @ =0x0600e000 - ldr r4, _080E4CD0 @ =0x05000200 - mov r0, sp - adds r2, r4, 0 - bl CpuSet - str r5, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, _080E4CD4 @ =0x0600f000 - adds r2, r4, 0 - bl CpuSet - movs r0, 0x1 - strh r0, [r7, 0x10] -_080E4CAA: - ldr r0, _080E4CD8 @ =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - mov r12, r0 - adds r5, r2, 0 - cmp r1, 0x4 - bls _080E4CC2 - b _080E4EBA -_080E4CC2: - lsls r0, r1, 2 - ldr r1, _080E4CDC @ =_080E4CE0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E4CCC: .4byte 0x0600e000 -_080E4CD0: .4byte 0x05000200 -_080E4CD4: .4byte 0x0600f000 -_080E4CD8: .4byte gTasks -_080E4CDC: .4byte _080E4CE0 - .align 2, 0 -_080E4CE0: - .4byte _080E4CF4 - .4byte _080E4D06 - .4byte _080E4DA8 - .4byte _080E4DEC - .4byte _080E4EB4 -_080E4CF4: - adds r0, r5, r6 - lsls r0, 3 - add r0, r12 - movs r1, 0x10 - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080E4EBA -_080E4D06: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080E4D1C - b _080E4EBA -_080E4D1C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r5, _080E4D8C @ =gSprites - ldr r4, _080E4D90 @ =gSharedMem - ldr r3, _080E4D94 @ =0x0001608a - adds r6, r4, r3 - ldrb r0, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x8 - mov r8, r3 - mov r3, r8 - orrs r0, r3 - strb r0, [r1, 0x1] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r5, 0 - adds r6, 0x1C - adds r0, r6 - ldr r3, _080E4D98 @ =sub_800FE20 - str r3, [r0] - ldr r0, _080E4D9C @ =0x0001608b - adds r4, r0 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r2, r1 - mov r1, r8 - orrs r2, r1 - strb r2, [r0, 0x1] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - str r3, [r0] - ldr r1, _080E4DA0 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080E4DA4 @ =0x00003f06 - b _080E4E94 - .align 2, 0 -_080E4D8C: .4byte gSprites -_080E4D90: .4byte gSharedMem -_080E4D94: .4byte 0x0001608a -_080E4D98: .4byte sub_800FE20 -_080E4D9C: .4byte 0x0001608b -_080E4DA0: .4byte REG_WININ -_080E4DA4: .4byte 0x00003f06 -_080E4DA8: - ldr r1, _080E4DE0 @ =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080E4DC0 - b _080E4EBA -_080E4DC0: - adds r1, r5, r6 - lsls r1, 3 - add r1, r12 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080E4DE4 @ =gUnknown_02024DE8 - ldrh r1, [r2] - ldr r0, _080E4DE8 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080E4EBA - .align 2, 0 -_080E4DE0: .4byte gBattle_WIN0V -_080E4DE4: .4byte gUnknown_02024DE8 -_080E4DE8: .4byte 0x0000fffe -_080E4DEC: - ldr r2, _080E4E9C @ =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080E4E00 - ldr r3, _080E4EA0 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080E4E00: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080E4E16 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080E4E16: - movs r3, 0 - ldr r0, _080E4EA4 @ =gScanlineEffect - mov r9, r0 - ldr r2, _080E4EA8 @ =gScanlineEffectRegBuffers - mov r8, r2 - mov r7, r9 - adds r4, r1, 0 -_080E4E24: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080E4E24 - cmp r3, 0x9F - bgt _080E4E68 - ldr r0, _080E4EA8 @ =gScanlineEffectRegBuffers - mov r8, r0 - ldr r7, _080E4EA4 @ =gScanlineEffect - ldr r1, _080E4EAC @ =gTasks - adds r0, r5, r6 - lsls r0, 3 - adds r4, r0, r1 -_080E4E4E: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080E4E4E -_080E4E68: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080E4EBA - movs r0, 0x3 - mov r2, r9 - strb r0, [r2, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080E4EB0 @ =REG_BG1CNT - movs r3, 0x9C - lsls r3, 8 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0xBC - lsls r2, 7 -_080E4E94: - adds r0, r2, 0 - strh r0, [r1] - b _080E4EBA - .align 2, 0 -_080E4E9C: .4byte gBattle_WIN0V -_080E4EA0: .4byte 0xfffffc04 -_080E4EA4: .4byte gScanlineEffect -_080E4EA8: .4byte gScanlineEffectRegBuffers -_080E4EAC: .4byte gTasks -_080E4EB0: .4byte REG_BG1CNT -_080E4EB4: - adds r0, r6, 0 - bl sub_80E443C -_080E4EBA: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E4C34 - - thumb_func_start unref_sub_80E4EC8 -unref_sub_80E4EC8: @ 80E4EC8 - push {r4,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - movs r4, 0x80 - lsls r4, 7 - str r4, [sp] - movs r4, 0x1E - str r4, [sp, 0x4] - movs r4, 0x1 - str r4, [sp, 0x8] - bl sub_80E4EF8 - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_80E4EC8 - - thumb_func_start sub_80E4EF8 -sub_80E4EF8: @ 80E4EF8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r1 - adds r4, r2, 0 - ldr r1, [sp, 0x24] - mov r8, r1 - ldr r1, [sp, 0x28] - ldr r5, [sp, 0x2C] - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - mov r7, r9 - lsls r7, 24 - adds r0, r7, 0 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - mov r3, r8 - lsls r3, 16 - mov r8, r3 - lsrs r6, r3, 16 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r5, 24 - lsrs r5, 24 - adds r0, r4, 0 - bl GetBankByIdentity - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E4FCC @ =0x040000d4 - ldr r1, _080E4FD0 @ =gUnknown_081FAF4C - lsls r4, 2 - adds r4, r1 - ldr r1, _080E4FD4 @ =gBattleMonForms - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r4] - adds r0, r1 - str r0, [r2] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r2, 0x4] - ldr r0, _080E4FD8 @ =0x80000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - mov r0, r8 - lsrs r0, 21 - lsls r5, 9 - subs r5, r0, r5 - mov r0, r9 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _080E4FBC - mov r9, r1 - mov r1, r10 - lsls r1, 1 - mov r8, r1 - lsls r7, 11 - mov r12, r7 -_080E4F86: - mov r2, r10 - adds r4, r2, 0 - adds r4, 0x8 - adds r1, r0, 0x1 - cmp r2, r4 - bge _080E4FB6 - ldr r3, [sp] - lsls r6, r3, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - add r0, r12 - mov r7, r8 - adds r3, r7, r0 - subs r2, r4, r2 -_080E4FA6: - adds r0, r5, 0 - orrs r0, r6 - strh r0, [r3] - adds r5, 0x1 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E4FA6 -_080E4FB6: - adds r0, r1, 0 - cmp r0, r9 - blt _080E4F86 -_080E4FBC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E4FCC: .4byte 0x040000d4 -_080E4FD0: .4byte gUnknown_081FAF4C -_080E4FD4: .4byte gBattleMonForms -_080E4FD8: .4byte 0x80000400 - thumb_func_end sub_80E4EF8 - - thumb_func_start unref_sub_80E4FDC -unref_sub_80E4FDC: @ 80E4FDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - mov r8, r5 - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - mov r7, r8 - lsls r7, 16 - lsrs r6, r7, 16 - lsls r5, 24 - lsrs r5, 24 - mov r0, r9 - lsls r0, 24 - mov r9, r0 - ldr r4, _080E509C @ =0x040000d4 - ldr r0, _080E50A0 @ =gUnknown_081FAF4C - lsrs r2, 22 - adds r2, r0 - lsrs r3, 13 - ldr r0, [r2] - adds r0, r3 - str r0, [r4] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r4, 0x4] - ldr r0, _080E50A4 @ =0x80000400 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r2, r7, 0 - lsrs r2, 21 - mov r6, r9 - lsrs r6, 15 - subs r4, r2, r6 - lsrs r0, r1, 24 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _080E508C - mov r9, r1 - mov r7, r12 - lsls r7, 1 - mov r8, r7 - lsls r5, 11 - str r5, [sp] -_080E5054: - mov r2, r12 - adds r3, r2, 0 - adds r3, 0x8 - adds r5, r0, 0x1 - cmp r2, r3 - bge _080E5086 - mov r1, r10 - lsls r6, r1, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - ldr r1, [sp] - adds r0, r1, r0 - mov r7, r8 - adds r1, r7, r0 - subs r2, r3, r2 -_080E5076: - adds r0, r4, 0 - orrs r0, r6 - strh r0, [r1] - adds r4, 0x1 - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080E5076 -_080E5086: - adds r0, r5, 0 - cmp r0, r9 - blt _080E5054 -_080E508C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E509C: .4byte 0x040000d4 -_080E50A0: .4byte gUnknown_081FAF4C -_080E50A4: .4byte 0x80000400 - thumb_func_end unref_sub_80E4FDC - - .align 2, 0 @ Don't pad with nop. diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 8f62d92f6..562bd3090 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -4649,16 +4649,3 @@ gBattleAnimSpriteTemplate_83DB550:: @ 83DB550 gUnknown_083DB568:: @ 83DB568 @ seems to be a src element in a LoadPalette call. .2byte 0x7FFF - - .align 2 -gUnknown_083DB56C:: @ 83DB56C - .4byte task_battle_intro_80BC47C - .4byte task_battle_intro_80BC47C - .4byte task00_battle_intro_80BC6C8 - .4byte task00_battle_intro_80BC6C8 - .4byte task00_battle_intro_80BC6C8 - .4byte task_battle_intro_80BC47C - .4byte task_battle_intro_80BC47C - .4byte task_battle_intro_80BC47C - .4byte task_battle_intro_anim - .4byte task_battle_intro_anim diff --git a/include/battle_anim_80CA710.h b/include/battle_anim_80CA710.h index 14a6ca898..58521bfae 100644 --- a/include/battle_anim_80CA710.h +++ b/include/battle_anim_80CA710.h @@ -1,7 +1,7 @@ #ifndef GUARD_BATTLE_ANIM_80CA710_H #define GUARD_BATTLE_ANIM_80CA710_H -void sub_80E4EF8(int, int, int, int, u16, u8, int); +void sub_80E4EF8(u8, u8, u8, u8, u16, u8, u8); s16 sub_81174E0(s16 a); s16 sub_81174C4(s16 a, s16 b); diff --git a/include/data2.h b/include/data2.h index 9f6644714..2fe8d39f8 100644 --- a/include/data2.h +++ b/include/data2.h @@ -47,7 +47,8 @@ extern const u8 gUnknown_081F96C8[]; extern struct CompressedSpriteSheet gUnknown_081FAEA4; extern struct CompressedSpritePalette gUnknown_081FAEAC; extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; -extern void *const gUnknown_081FAF4C[]; +extern u8 *const gUnknown_081FAF4C[]; +//extern u8 (*const gUnknown_081FAF4C[])[0x800]; extern struct BattleMove gBattleMoves[]; // data/graphics/trainers/front_pic_coords.inc diff --git a/include/ewram.h b/include/ewram.h index b07820090..809d4ff66 100755 --- a/include/ewram.h +++ b/include/ewram.h @@ -131,6 +131,11 @@ extern u8 gSharedMem[]; #define ewram16088_2 (*(u8 *)(gSharedMem + 0x16088)) #define ewram16089 (gSharedMem[0x16089]) #define ewram16089_2 (*(u8 *)(gSharedMem + 0x16089)) + +// src/battle/anim/battle_intro.c +#define ewram1608A gSharedMem[0x1608A] +#define ewram1608B gSharedMem[0x1608B] + #define ewram1608Carr(bank) (gSharedMem[0x1608C + bank]) #define EWRAM_1609D (gSharedMem[0x1609D]) #define ewram160A1 (gSharedMem[0x160A1]) diff --git a/include/trainer_card.h b/include/trainer_card.h index b9d3ca081..7ea1d9fc0 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -28,9 +28,9 @@ struct TrainerCard { /*0x30*/ u8 playerName[8]; }; -void sub_8093110(void (*)(void)); -void sub_8093130(u8, void (*)(void)); -void sub_8093390(struct TrainerCard *); +void TrainerCard_ShowPlayerCard(void (*)(void)); +void TrainerCard_ShowLinkCard(u8, void (*)(void)); +void TrainerCard_GenerateCardForPlayer(struct TrainerCard *); u8 sub_80934C4(u8 id); extern struct TrainerCard gTrainerCards[4]; diff --git a/ld_script.txt b/ld_script.txt index 54aca5b2b..6d4e0832f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -301,7 +301,7 @@ SECTIONS { asm/dark.o(.text); asm/ground.o(.text); asm/normal.o(.text); - asm/battle_intro.o(.text); + src/battle/anim/battle_intro.o(.text); src/field/bike.o(.text); src/easy_chat_1.o(.text); src/easy_chat_2.o(.text); @@ -574,6 +574,7 @@ SECTIONS { src/field/rotating_gate.o(.rodata); src/field/item_use.o(.rodata); data/battle_anim_80CA710.o(.rodata); + src/battle/anim/battle_intro.o(.rodata); src/field/bike.o(.rodata); src/easy_chat_1.o(.rodata); src/easy_chat_2.o(.rodata); diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c new file mode 100644 index 000000000..01f823fa7 --- /dev/null +++ b/src/battle/anim/battle_intro.c @@ -0,0 +1,499 @@ +#include "global.h" +#include "constants/battle_constants.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_anim_80CA710.h" +#include "data2.h" +#include "ewram.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" + +extern u16 gBattleTypeFlags; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_WIN0V; +extern u16 gUnknown_02024DE8; +extern u8 gBattleMonForms[]; + +extern void sub_800FE20(struct Sprite *); + +static void BattleIntroTask_ScrollScenery(u8); +static void BattleIntroTask_FadeScenery(u8); +static void BattleIntroTask_ScrollAndFadeScenery(u8); +static void BattleIntroTask_80E4C34(u8); + +static const TaskFunc sBattleIntroTaskFuncs[] = +{ + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollAndFadeScenery, + BattleIntroTask_ScrollAndFadeScenery, +}; + +#define tState data[0] +#define tBgXOffset data[2] +#define tFramesUntilBg1Slide data[3] + +void StartBattleIntroAnim(u8 a) +{ + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + taskId = CreateTask(BattleIntroTask_80E4C34, 0); + } + else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + { + a = 3; + taskId = CreateTask(BattleIntroTask_FadeScenery, 0); + } + else + { + taskId = CreateTask(sBattleIntroTaskFuncs[a], 0); + } + + gTasks[taskId].tState = 0; + gTasks[taskId].data[1] = a; + gTasks[taskId].tBgXOffset = 0; + gTasks[taskId].tFramesUntilBg1Slide = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; +} + +static void EndBattleIntroTask(u8 taskId) +{ + DestroyTask(taskId); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; +} + +static void BattleIntroTask_ScrollScenery(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 6; + + switch (gTasks[taskId].tState) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up the window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + } + else + { + if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else + { + if (gBattle_BG1_Y != 0xFFC8) + gBattle_BG1_Y -= 1; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } +} + +static void BattleIntroTask_FadeScenery(u8 taskId) +{ + s32 i; + + switch (gTasks[taskId].data[1]) + { + case 2: + case 4: + gBattle_BG1_X += 8; + break; + case 3: + gBattle_BG1_X += 6; + break; + } + + if (gTasks[taskId].data[1] == 4) + { + gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; + if (gTasks[taskId].data[6] < 0xB4) + gTasks[taskId].data[6] += 4; + else + gTasks[taskId].data[6] += 6; + if (gTasks[taskId].data[6] == 0x168) + gTasks[taskId].data[6] = 0; + } + + switch (gTasks[taskId].tState) + { + case 0: + gTasks[taskId].data[4] = 16; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + if (gTasks[taskId].tFramesUntilBg1Slide == 0) + { + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0xF; + REG_BLDY = 0; + } + } + else + { + if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 4; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } + + if (gTasks[taskId].tState != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 8; + + switch (gTasks[taskId].tState) + { + case 0: + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0x0808; + REG_BLDY = 0; + gTasks[taskId].data[4] = 0x0808; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + } + else + { + if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 6; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } + + if (gTasks[taskId].tState != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +// Seems to only be used for link battles. +static void BattleIntroTask_80E4C34(u8 taskId) +{ + s32 i; + + if (gTasks[taskId].tState > 1 && gTasks[taskId].data[4] == 0) + { + if ((gBattle_BG1_X & 0x8000) || gBattle_BG1_X < 80) // hmm... + { + gBattle_BG1_X += 3; + gBattle_BG2_X -= 3; + } + else + { + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + CpuFill32(0, (void *)(VRAM + 0xF000), 0x800); + gTasks[taskId].data[4] = 1; + } + } + + switch (gTasks[taskId].tState) + { + case 0: + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + gSprites[ewram1608A].oam.objMode = 2; + gSprites[ewram1608A].callback = sub_800FE20; + gSprites[ewram1608B].oam.objMode = 2; + gSprites[ewram1608B].callback = sub_800FE20; + REG_WININ = 0x3F; + REG_WINOUT = 0x3F06; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } +} + +void unref_sub_80E4EC8(u8 a, u8 b, u8 c, u8 d) +{ + sub_80E4EF8(a, b, c, d, 0x4000, 30, 1); +} + +// draws some 8x8 tilemap +void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g) +{ + u32 tileNum; + s32 x; + s32 y; + u8 bank = GetBankByIdentity(c); + + DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800); + tileNum = e / 32 - g * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} + +void unref_sub_80E4FDC(u8 left, u8 top, u8 c, u8 form, u8 paletteNum, u16 f, u8 bgMap, u8 h) +{ + u32 tileNum; + s32 x; + s32 y; + + DmaCopy16(3, gUnknown_081FAF4C[c] + form * 0x800, (void *)(VRAM + f), 0x800); + tileNum = f / 32 - h * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 69306b725..40f50d7ff 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -93,7 +93,7 @@ extern void move_anim_start_t2_for_situation(); extern void dp01t_0F_4_move_anim(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_803A3A8(struct Sprite *); extern void sub_8044CA0(u8); extern void nullsub_47(void); @@ -1620,7 +1620,7 @@ void LinkOpponentHandleFaintingCry(void) void LinkOpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkOpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index c86c337d9..e39d98997 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -62,7 +62,7 @@ extern u8 move_anim_start_t3(); extern u8 IsBankSpritePresent(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8047858(); extern void move_anim_start_t2_for_situation(); extern void load_gfxc_health_bar(); @@ -1565,7 +1565,7 @@ void LinkPartnerHandleFaintingCry(void) void LinkPartnerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkPartnerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 622e3e9f9..5947053b6 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -108,7 +108,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t7(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8044CA0(u8); extern void nullsub_45(void); extern void sub_8031B74(); @@ -1892,7 +1892,7 @@ void OpponentHandleFaintingCry(void) void OpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; OpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index a5f833b6c..2bdf448db 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -98,7 +98,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t1(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void StoreSpriteCallbackInData(); @@ -2875,7 +2875,7 @@ void PlayerHandleFaintingCry(void) void PlayerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; PlayerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index a4b610752..0d193d68f 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -47,7 +47,7 @@ extern u8 sub_8079E90(); extern void sub_80313A0(struct Sprite *); extern void sub_810BADC(void); extern void sub_8045A5C(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_804777C(); extern void sub_8043DFC(); extern bool8 move_anim_start_t3(); @@ -641,7 +641,7 @@ void SafariHandleFaintingCry(void) void SafariHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; SafariBufferExecCompleted(); } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 6266d955c..4c0adab5e 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -85,7 +85,7 @@ extern void BufferStringBattle(); extern u8 GetBankSide(u8); extern void sub_80304A8(void); extern void sub_8047858(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); @@ -1470,7 +1470,7 @@ void WallyHandleFaintingCry(void) void WallyHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; WallyBufferExecCompleted(); } diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index b12ee38ce..44d832e2b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -374,7 +374,7 @@ void sub_80831F8(u8 taskId) gFieldLinkPlayerCount = GetLinkPlayerCount_2(); gUnknown_03004860 = GetMultiplayerId(); sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *)gBlockSendBuffer); + TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer); gTasks[taskId].func = sub_8083314; } } @@ -395,7 +395,7 @@ static void sub_8083288(u8 taskId) gFieldLinkPlayerCount = GetLinkPlayerCount_2(); gUnknown_03004860 = GetMultiplayerId(); sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *)gBlockSendBuffer); + TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer); gTasks[taskId].func = sub_8083314; sub_8007E9C(2); } @@ -874,7 +874,7 @@ void unref_sub_8083BB0(void) void sub_8083BDC(void) { - sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); + TrainerCard_ShowLinkCard(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); } bool32 sub_8083BF4(u8 linkPlayerIndex) diff --git a/src/engine/save_menu_util.c b/src/engine/save_menu_util.c index 2c5eb6afe..ccf4d9f6f 100644 --- a/src/engine/save_menu_util.c +++ b/src/engine/save_menu_util.c @@ -125,9 +125,9 @@ u16 GetPokedexSeenCount() return pokedexSeenCount; } -void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk) +void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 colon) { - s16 colon = unk; + s16 _colon = colon; playtime = ConvertIntToDecimalString(playtime, hours); // playtime[0] is hours. @@ -136,7 +136,7 @@ void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk) playtime[0] = 0; - if (colon) + if (_colon) playtime[1] = 0xF0; // set middle character to ":" else playtime[1] = 0; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index ab43ac716..9d09575c8 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -26,25 +26,25 @@ typedef void (*Callback)(void); struct Struct2000000 { - /*0x00*/ u8 var_0; - /*0x01*/ bool8 var_1; - /*0x02*/ u8 var_2; - /*0x03*/ bool8 var_3; + /*0x00*/ u8 current_state; + /*0x01*/ bool8 isShowingLinkCard; + /*0x02*/ u8 starCount; + /*0x03*/ bool8 backSideShown; /*0x04*/ u8 var_4; - /*0x05*/ u8 var_5; - /*0x06*/ u8 var_6; - /*0x07*/ bool8 var_7; - /*0x08*/ bool8 var_8; - /*0x09*/ bool8 var_9; - /*0x0A*/ bool8 var_a; - /*0x0B*/ bool8 var_b; - /*0x0C*/ bool8 var_c; - /*0x0D*/ bool8 var_d; - /*0x0E*/ u8 var_e[8]; + /*0x05*/ bool8 showColon; + /*0x06*/ u8 frameCounter; /* Used to flash colon */ + /*0x07*/ bool8 showPokedexCount; + /*0x08*/ bool8 showHallOfFame; + /*0x09*/ bool8 showLinkBattleStatus; + /*0x0A*/ bool8 showBattleTowerStatus; + /*0x0B*/ bool8 showContestRecord; + /*0x0C*/ bool8 showMixingRecord; + /*0x0D*/ bool8 showTradingRecord; + /*0x0E*/ bool8 ownedBadges[8]; /*0x16*/ u8 filler_16[10]; - /*0x20*/ u8 var_20[4][0x10]; + /*0x20*/ u8 easyChatPhrase[4][0x10]; /*0x60*/ Callback *var_60; - /*0x64*/ struct TrainerCard var_64; + /*0x64*/ struct TrainerCard displayedCard; /*0x9C*/ u8 language; // 0x9C }; @@ -57,44 +57,44 @@ extern const u16 gUnknown_083B5F0C[]; extern const u16 gBadgesPalette[]; extern const u16 gUnknown_083B5F4C[]; extern const u16 gUnknown_083B5F6C[]; -extern const u16 gUnknown_083B5F8C[][4]; +extern const u16 gTrainerCardBadgesMap[][4]; const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; -bool8 sub_8093864(struct Task *); -bool8 sub_80938A8(struct Task *); -bool8 sub_80938CC(struct Task *); -bool8 sub_8093918(struct Task *); -bool8 sub_8093938(struct Task *); -bool8 sub_8093954(struct Task *); -bool8 sub_8093980(struct Task *); - -bool8 (*const gUnknown_083B5EBC[])(struct Task *) = -{ - sub_8093864, - sub_80938A8, - sub_80938CC, - sub_8093918, - sub_8093938, - sub_8093954, - sub_8093980, +bool8 TrainerCard_Init(struct Task *); +bool8 TrainerCard_WaitForFadeInToFinish(struct Task *); +bool8 TrainerCard_WaitForKeys(struct Task *); +bool8 TrainerCard_StartFlipAntimation(struct Task *); +bool8 TrainerCard_WaitForFlipToFinish(struct Task *); +bool8 TrainerCard_FadeOut(struct Task *); +bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *); + +bool8 (*const TrainerCard_StateMachine[])(struct Task *) = +{ + TrainerCard_Init, + TrainerCard_WaitForFadeInToFinish, + TrainerCard_WaitForKeys, + TrainerCard_StartFlipAntimation, + TrainerCard_WaitForFlipToFinish, + TrainerCard_FadeOut, + TrainerCard_WaitForFadeOutToFinishAndQuit, }; -bool8 sub_8093AA0(struct Task *); -bool8 sub_8093AF0(struct Task *); -bool8 sub_8093C0C(struct Task *); -bool8 sub_8093C38(struct Task *); -bool8 sub_8093D50(struct Task *); +bool8 TrainerCard_InitFlipAnimation(struct Task *); +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *); +bool8 TrainerCard_SwitchToNewSide(struct Task *); +bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *); +bool8 TrainerCard_FinishFlipAnimation(struct Task *); -bool8 (*const gUnknown_083B5ED8[])(struct Task *) = +bool8 (*const TrainerCard_FlipAnimationStateMachine[])(struct Task *) = { - sub_8093AA0, - sub_8093AF0, - sub_8093C0C, - sub_8093C38, - sub_8093D50, + TrainerCard_InitFlipAnimation, + TrainerCard_ScaleDownFlipAnimation, + TrainerCard_SwitchToNewSide, + TrainerCard_ScaleUpFlipAnimation, + TrainerCard_FinishFlipAnimation, }; // FIXME: Other signature than on save_menu_util.h @@ -103,64 +103,64 @@ u16 GetPokedexSeenCount(void); enum { - TD_0, - TD_1, + TD_SHOWING_LINK_CARD, + TD_CARD_INDEX, TD_CALLBACK, }; static void sub_8093174(void); static void sub_809323C(void); static void sub_8093254(void); -static void sub_80932AC(Callback callBack); -static void sub_80932E4(u8 arg1, Callback callBack); -void sub_8093324(void); +static void TrainerCard_InitScreenForPlayer(Callback callBack); +static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack); +void TrainerCard_FillTrainerCardStruct(void); static void nullsub_60(u8); static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal); -static u8 sub_80934F4(struct TrainerCard *); +static u8 TrainerCard_GetStarCount(struct TrainerCard *); static void sub_8093534(void); static void sub_8093550(void); static void sub_8093598(void); static void sub_80935EC(void); static void sub_8093610(void); static void sub_8093688(void); -void sub_80936D4(void); +static void TrainerCard_FillFlags(void); static void sub_80937A4(void); static void sub_80937BC(void); static void sub_80937D8(void); static void sub_80937F0(void); static void nullsub_15(void); static void sub_8093800(void); -static void sub_809380C(); -static void sub_809382C(u8 taskId); -static void sub_80939A4(void); -static void sub_80939C0(void); -static void sub_80939DC(u8 taskId); -static void sub_8093A28(void); -static u8 sub_8093A48(void); -static void sub_8093A68(u8 taskId); -void sub_8093D7C(void); -static void sub_8093DAC(void); -static void sub_8093DC8(void); -static void sub_8093DEC(void); -static void sub_8093E04(void); -static void sub_8093E28(void); -void sub_8093EA0(void); -static void sub_8093EF8(void); +static void TrainerCard_CreateStateMachine(void); +static void TrainerCard_RunStateMachine(u8 taskId); +static void TrainerCard_CreatePrintPlayTimeTask(void); +static void TrainerCard_DestoryPlayTimeTask(void); +static void TrainerCard_Front_PrintPlayTime(u8 taskId); +static void TrainerCard_CreateFlipAnimationTask(void); +static u8 TrainerCard_HasFlipAnimationFinished(void); +static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId); +static void TrainerCard_FlipAnimationHBlankCallback(void); +static void TrainerCard_DrawCard(void); +static void TrainerCard_DrawCardFront(void); +static void TrainerCard_DrawCardBack(void); +static void TrainerCard_ResetOffsetRegisters(void); +static void TrainerCard_CopyGraphics(void); +static void TrainerCard_LoadPalettes(void); +static void TrainerCard_LoadTrainerGraphics(void); static void sub_8093F14(void); static void sub_8093F48(void); static void sub_8093F64(void); -static void sub_8093F80(void); -static void sub_8093FD0(void); -static void sub_8094038(void); -static void sub_80940E4(void); -static void sub_8094110(void); -static void sub_8094140(void); -static void sub_8094188(void); +static void TrainerCard_LoadTrainerTilemap(void); +static void TrainerCard_DrawStars(void); +static void TrainerCard_DisplayBadges(void); +static void TrainerCard_ClearTrainerGraphics(void); +static void TrainerCard_ClearPokedexLabel(void); +static void TrainerCard_Front_PrintTexts(void); +static void TrainerCard_Back_PrintTexts(void); static void TrainerCard_Front_PrintTrainerID(void); static void TrainerCard_Front_PrintMoney(void); static void TrainerCard_Front_PrintPokedexCount(void); -static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon); -static void sub_809429C(void); +static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon); +static void TrainerCard_PrintEasyChatPhrase(void); static void TrainerCard_Back_PrintName(void); static void TrainerCard_Back_PrintHallOfFameTime_Label(void); static void TrainerCard_Back_PrintHallOfFameTime(void); @@ -176,16 +176,16 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); -void sub_8093110(Callback arg1) +void TrainerCard_ShowPlayerCard(Callback arg1) { - sub_80932AC(arg1); + TrainerCard_InitScreenForPlayer(arg1); SetMainCallback2(sub_8093174); ewram0_2.language = GAME_LANGUAGE; } -void sub_8093130(u8 playerIndex, Callback arg2) +void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { - sub_80932E4(playerIndex, arg2); + TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); SetMainCallback2(sub_8093174); ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } @@ -249,49 +249,49 @@ static void sub_8093254(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ewram0_2.var_6++; - if (ewram0_2.var_6 >= 60) + ewram0_2.frameCounter++; + if (ewram0_2.frameCounter >= 60) { - ewram0_2.var_6 = 0; - ewram0_2.var_5 ^= 1; + ewram0_2.frameCounter = 0; + ewram0_2.showColon ^= 1; } if (ewram0_2.var_4) DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } -static void sub_80932AC(Callback callBack) +static void TrainerCard_InitScreenForPlayer(Callback callBack) { u8 taskId = CreateTask(nullsub_60, 0xFF); struct Task *task = &gTasks[taskId]; - task->data[TD_0] = FALSE; + task->data[TD_SHOWING_LINK_CARD] = FALSE; StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack); } -static void sub_80932E4(u8 arg1, Callback callBack) +static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack) { u8 taskId = CreateTask(nullsub_60, 0xFF); struct Task *task = &gTasks[taskId]; - task->data[TD_0] = TRUE; - task->data[TD_1] = arg1; + task->data[TD_SHOWING_LINK_CARD] = TRUE; + task->data[TD_CARD_INDEX] = arg1; StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack); } -void sub_8093324(void) +void TrainerCard_FillTrainerCardStruct(void) { u8 taskId = FindTaskIdByFunc(nullsub_60); struct Task *task = &gTasks[taskId]; - ewram0_2.var_1 = task->data[TD_0]; + ewram0_2.isShowingLinkCard = task->data[TD_SHOWING_LINK_CARD]; LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&ewram0_2.var_60); - if (ewram0_2.var_1) + if (ewram0_2.isShowingLinkCard) { - ewram0_2.var_64 = gTrainerCards[task->data[TD_1]]; + ewram0_2.displayedCard = gTrainerCards[task->data[TD_CARD_INDEX]]; } else { - sub_8093390(&ewram0_2.var_64); + TrainerCard_GenerateCardForPlayer(&ewram0_2.displayedCard); } } @@ -299,7 +299,7 @@ static void nullsub_60(u8 taskid) { } -void sub_8093390(struct TrainerCard *trainerCard) +void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard) { u32 playTime; bool32 enteredHallOfFame; @@ -370,7 +370,7 @@ void sub_8093390(struct TrainerCard *trainerCard) trainerCard->playerName[i] = gSaveBlock2.playerName[i]; } - trainerCard->stars = sub_80934F4(trainerCard); + trainerCard->stars = TrainerCard_GetStarCount(trainerCard); } u8 sub_80934C4(u8 id) @@ -390,7 +390,7 @@ static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal) return value; } -static u8 sub_80934F4(struct TrainerCard *trainerCard) +static u8 TrainerCard_GetStarCount(struct TrainerCard *trainerCard) { u8 value = 0; @@ -489,53 +489,53 @@ static void sub_8093688(void) { u8 i; - sub_8093324(); - ewram0_2.var_0 = 0; - ewram0_2.var_3 = 0; + TrainerCard_FillTrainerCardStruct(); + ewram0_2.current_state = 0; + ewram0_2.backSideShown = FALSE; ewram0_2.var_4 = FALSE; - ewram0_2.var_2 = ewram0_2.var_64.stars; - ewram0_2.var_5 = 0; - ewram0_2.var_6 = 0; + ewram0_2.starCount = ewram0_2.displayedCard.stars; + ewram0_2.showColon = 0; + ewram0_2.frameCounter = 0; for (i = 0; i < 4; i++) - EasyChat_GetWordText(ewram0_2.var_20[i], ewram0_2.var_64.var_28[i]); - sub_80936D4(); + EasyChat_GetWordText(ewram0_2.easyChatPhrase[i], ewram0_2.displayedCard.var_28[i]); + TrainerCard_FillFlags(); } -void sub_80936D4(void) +static void TrainerCard_FillFlags(void) { - ewram0_2.var_7 = 0; - ewram0_2.var_8 = 0; - ewram0_2.var_9 = 0; - ewram0_2.var_a = 0; - ewram0_2.var_b = 0; - ewram0_2.var_c = 0; - ewram0_2.var_d = 0; - memset(ewram0_2.var_e, 0, sizeof(ewram0_2.var_e)); + ewram0_2.showPokedexCount = 0; + ewram0_2.showHallOfFame = 0; + ewram0_2.showLinkBattleStatus = 0; + ewram0_2.showBattleTowerStatus = 0; + ewram0_2.showContestRecord = 0; + ewram0_2.showMixingRecord = 0; + ewram0_2.showTradingRecord = 0; + memset(ewram0_2.ownedBadges, 0, sizeof(ewram0_2.ownedBadges)); - if (ewram0_2.var_64.hasPokedex) - ewram0_2.var_7++; + if (ewram0_2.displayedCard.hasPokedex) + ewram0_2.showPokedexCount++; - if (ewram0_2.var_64.firstHallOfFameA != 0 - || ewram0_2.var_64.firstHallOfFameB != 0 - || ewram0_2.var_64.firstHallOfFameC != 0) - ewram0_2.var_8++; + if (ewram0_2.displayedCard.firstHallOfFameA != 0 + || ewram0_2.displayedCard.firstHallOfFameB != 0 + || ewram0_2.displayedCard.firstHallOfFameC != 0) + ewram0_2.showHallOfFame++; - if (ewram0_2.var_64.linkBattleWins != 0 || ewram0_2.var_64.linkBattleLosses != 0) - ewram0_2.var_9++; + if (ewram0_2.displayedCard.linkBattleWins != 0 || ewram0_2.displayedCard.linkBattleLosses != 0) + ewram0_2.showLinkBattleStatus++; - if (ewram0_2.var_64.battleTowerWins != 0 || ewram0_2.var_64.battleTowerLosses != 0) - ewram0_2.var_a++; + if (ewram0_2.displayedCard.battleTowerWins != 0 || ewram0_2.displayedCard.battleTowerLosses != 0) + ewram0_2.showBattleTowerStatus++; - if (ewram0_2.var_64.contestsWithFriends != 0) - ewram0_2.var_b++; + if (ewram0_2.displayedCard.contestsWithFriends != 0) + ewram0_2.showContestRecord++; - if (ewram0_2.var_64.pokeblocksWithFriends != 0) - ewram0_2.var_c++; + if (ewram0_2.displayedCard.pokeblocksWithFriends != 0) + ewram0_2.showMixingRecord++; - if (ewram0_2.var_64.pokemonTrades != 0) - ewram0_2.var_d++; + if (ewram0_2.displayedCard.pokemonTrades != 0) + ewram0_2.showTradingRecord++; - if (!ewram0_2.var_1) + if (!ewram0_2.isShowingLinkCard) { u32 badgeFlag; int i = 0; @@ -544,7 +544,7 @@ void sub_80936D4(void) while (1) { if (FlagGet(badgeFlag)) - ewram0_2.var_e[i]++; + ewram0_2.ownedBadges[i]++; badgeFlag++; i++; if (badgeFlag > FLAG_BADGE08_GET) @@ -571,15 +571,15 @@ void sub_80937BC() static void sub_80937D8() { - sub_8093E04(); - sub_8093E28(); + TrainerCard_ResetOffsetRegisters(); + TrainerCard_CopyGraphics(); sub_8093F64(); - sub_8093DAC(); + TrainerCard_DrawCard(); } static void sub_80937F0() { - sub_8093EF8(); + TrainerCard_LoadTrainerGraphics(); } static void nullsub_15(void) @@ -588,144 +588,147 @@ static void nullsub_15(void) static void sub_8093800() { - sub_809380C(); + TrainerCard_CreateStateMachine(); } -static void sub_809380C() +static void TrainerCard_CreateStateMachine(void) { u8 taskId; - taskId = CreateTask(sub_809382C, 0); - sub_809382C(taskId); + taskId = CreateTask(TrainerCard_RunStateMachine, 0); + TrainerCard_RunStateMachine(taskId); } -static void sub_809382C(u8 taskId) +static void TrainerCard_RunStateMachine(u8 taskId) { - while (gUnknown_083B5EBC[ewram0_2.var_0](&gTasks[taskId]) != 0) + while (TrainerCard_StateMachine[ewram0_2.current_state](&gTasks[taskId]) != 0) ; } -bool8 sub_8093864(struct Task *task) +bool8 TrainerCard_Init(struct Task *task) { - ewram0_2.var_5 = gSaveBlock2.playTimeSeconds & 1; - ewram0_2.var_6 = gSaveBlock2.playTimeVBlanks; - sub_80939A4(); + ewram0_2.showColon = gSaveBlock2.playTimeSeconds & 1; + ewram0_2.frameCounter = gSaveBlock2.playTimeVBlanks; + TrainerCard_CreatePrintPlayTimeTask(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_80938A8(struct Task *task) +bool8 TrainerCard_WaitForFadeInToFinish(struct Task *task) { if (!gPaletteFade.active) - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_80938CC(struct Task *task) +bool8 TrainerCard_WaitForKeys(struct Task *task) { if (gMain.newKeys & B_BUTTON) { - ewram0_2.var_0 = 5; + ewram0_2.current_state = 5; /* Jump to fadeout state */ return TRUE; } else if (gMain.newKeys & A_BUTTON) { - if (ewram0_2.var_3 != 0) + /* It appears that it was previously possible to return the the front side + after viewing the back side. This was probably removed due to being + unintuitive. */ + if (ewram0_2.backSideShown) { - ewram0_2.var_0 = 5; + ewram0_2.current_state = 5; /* Jump to fadeout state */ } else { - ewram0_2.var_3 ^= 1; - ewram0_2.var_0 = 3; + ewram0_2.backSideShown ^= 1; /* Switch to back side */ + ewram0_2.current_state = 3; /* Jump to start flip animation state */ } return TRUE; } return FALSE; } -bool8 sub_8093918(struct Task *task) +bool8 TrainerCard_StartFlipAntimation(struct Task *task) { - sub_8093A28(); + TrainerCard_CreateFlipAnimationTask(); PlaySE(SE_CARD); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_8093938(struct Task *task) +bool8 TrainerCard_WaitForFlipToFinish(struct Task *task) { - if (sub_8093A48()) - ewram0_2.var_0 = 2; + if (TrainerCard_HasFlipAnimationFinished()) + ewram0_2.current_state = 2; /* Return to wait for keys state */ return FALSE; } -bool8 sub_8093954(struct Task *task) +bool8 TrainerCard_FadeOut(struct Task *task) { - sub_80939C0(); + TrainerCard_DestoryPlayTimeTask(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_8093980(struct Task *task) +bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *task) { if (!gPaletteFade.active) SetMainCallback2((MainCallback)ewram0_2.var_60); return FALSE; } -static void sub_80939A4(void) +static void TrainerCard_CreatePrintPlayTimeTask(void) { - CreateTask(sub_80939DC, 0); + CreateTask(TrainerCard_Front_PrintPlayTime, 0); BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); } -static void sub_80939C0(void) +static void TrainerCard_DestoryPlayTimeTask(void) { - u8 taskId = FindTaskIdByFunc(sub_80939DC); + u8 taskId = FindTaskIdByFunc(TrainerCard_Front_PrintPlayTime); if (taskId != 0xFF) DestroyTask(taskId); } -static void sub_80939DC(u8 taskId) +static void TrainerCard_Front_PrintPlayTime(u8 taskId) { u8 buffer[32]; struct Task *task = &gTasks[taskId]; - if (ewram0_2.var_5 != task->data[TD_1]) + if (ewram0_2.showColon != task->data[TD_CARD_INDEX]) { - task->data[TD_1] = ewram0_2.var_5; - task->data[TD_0] ^= TRUE; + task->data[TD_CARD_INDEX] = ewram0_2.showColon; + task->data[TD_SHOWING_LINK_CARD] ^= TRUE; } - TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); + TrainerCard_Front_GetPlayTimeString(buffer, task->data[TD_SHOWING_LINK_CARD]); Menu_PrintText(buffer, 10, 12); } -static void sub_8093A28(void) +static void TrainerCard_CreateFlipAnimationTask(void) { u8 taskId; - taskId = CreateTask(sub_8093A68, 0); - sub_8093A68(taskId); + taskId = CreateTask(TrainerCard_RunFlipAnimationStateMachine, 0); + TrainerCard_RunFlipAnimationStateMachine(taskId); } -static u8 sub_8093A48(void) +static u8 TrainerCard_HasFlipAnimationFinished(void) { - if (FindTaskIdByFunc(sub_8093A68) == 0xFF) + if (FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine) == 0xFF) return TRUE; else return FALSE; } -static void sub_8093A68(u8 taskId) +static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId) { - while (gUnknown_083B5ED8[gTasks[taskId].data[0]](&gTasks[taskId]) != 0) + while (TrainerCard_FlipAnimationStateMachine[gTasks[taskId].data[0]](&gTasks[taskId]) != 0) ; } -bool8 sub_8093AA0(struct Task *task) +bool8 TrainerCard_InitFlipAnimation(struct Task *task) { u32 i; @@ -733,14 +736,14 @@ bool8 sub_8093AA0(struct Task *task) ScanlineEffect_Clear(); for (i = 0; i < 0xA0; i++) gScanlineEffectRegBuffers[1][i] = -4; - SetHBlankCallback(sub_8093D7C); + SetHBlankCallback(TrainerCard_FlipAnimationHBlankCallback); ewram0_2.var_4 = TRUE; task->data[0]++; return FALSE; } /* -bool8 sub_8093AF0(struct Task *task) +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { u32 r7; u16 r9; @@ -788,7 +791,7 @@ bool8 sub_8093AF0(struct Task *task) */ __attribute__((naked)) -bool8 sub_8093AF0(struct Task *task) +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -939,18 +942,20 @@ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093C0C(struct Task *task) +bool8 TrainerCard_SwitchToNewSide(struct Task *task) { - sub_80939C0(); - sub_8093DAC(); - if (!ewram0_2.var_3) - sub_80939A4(); + TrainerCard_DestoryPlayTimeTask(); + TrainerCard_DrawCard(); + if (!ewram0_2.backSideShown) { + /* This code never runs because it is impossible to flip the back side back to the front side */ + TrainerCard_CreatePrintPlayTimeTask(); + } task->data[0]++; return TRUE; } __attribute__((naked)) -bool8 sub_8093C38(struct Task *task) +bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1099,19 +1104,19 @@ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093D50(struct Task *task) +bool8 TrainerCard_FinishFlipAnimation(struct Task *task) { u8 taskId; ewram0_2.var_4 = FALSE; SetHBlankCallback(NULL); - sub_8093E04(); - taskId = FindTaskIdByFunc(sub_8093A68); + TrainerCard_ResetOffsetRegisters(); + taskId = FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine); DestroyTask(taskId); return FALSE; } -void sub_8093D7C(void) +static void TrainerCard_FlipAnimationHBlankCallback(void) { u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; @@ -1120,34 +1125,34 @@ void sub_8093D7C(void) REG_BG2VOFS = bgVOffset; } -static void sub_8093DAC(void) +static void TrainerCard_DrawCard(void) { - if (ewram0_2.var_3) - sub_8093DEC(); + if (ewram0_2.backSideShown) + TrainerCard_DrawCardBack(); else - sub_8093DC8(); + TrainerCard_DrawCardFront(); } -static void sub_8093DC8(void) +static void TrainerCard_DrawCardFront(void) { Menu_EraseScreen(); - sub_80940E4(); + TrainerCard_ClearTrainerGraphics(); sub_8093F14(); - sub_8093F80(); - sub_8093FD0(); - sub_8094038(); - sub_8094140(); + TrainerCard_LoadTrainerTilemap(); + TrainerCard_DrawStars(); + TrainerCard_DisplayBadges(); + TrainerCard_Front_PrintTexts(); } -static void sub_8093DEC(void) +static void TrainerCard_DrawCardBack(void) { Menu_EraseScreen(); - sub_80940E4(); + TrainerCard_ClearTrainerGraphics(); sub_8093F48(); - sub_8094188(); + TrainerCard_Back_PrintTexts(); } -static void sub_8093E04(void) +static void TrainerCard_ResetOffsetRegisters(void) { REG_BG0VOFS = -4; REG_BG1HOFS = 0; @@ -1156,13 +1161,13 @@ static void sub_8093E04(void) REG_BG2VOFS = -4; } -static void sub_8093E28(void) +static void TrainerCard_CopyGraphics(void) { const u8 *src; u8 *dst; u32 size; - sub_8093EA0(); + TrainerCard_LoadPalettes(); LoadPalette(gUnknown_083B5F6C, 0xE0, 32); src = gMenuTrainerCard_Gfx; dst = (void *)VRAM; @@ -1187,34 +1192,34 @@ static void sub_8093E28(void) } } -extern const u16 *const gUnknown_083B5EF8[]; +extern const u16 *const gTrainerCardPalettes[]; -void sub_8093EA0(void) +static void TrainerCard_LoadPalettes(void) { - LoadPalette(gUnknown_083B5EF8[ewram0_2.var_2], 0, 48 * 2); + LoadPalette(gTrainerCardPalettes[ewram0_2.starCount], 0, 48 * 2); LoadPalette(gBadgesPalette, 48, 16 * 2); LoadPalette(gUnknown_083B5F4C, 64, 16 * 2); - if (ewram0_2.var_64.gender != MALE) + if (ewram0_2.displayedCard.gender != MALE) LoadPalette(gUnknown_083B5F0C, 16, 16 * 2); } -static void sub_8093EF8(void) +static void TrainerCard_LoadTrainerGraphics(void) { - LoadTrainerGfx_TrainerCard(ewram0_2.var_64.gender, 80, (void *)(VRAM + 0x1880)); + LoadTrainerGfx_TrainerCard(ewram0_2.displayedCard.gender, 80, (void *)(VRAM + 0x1880)); } static void sub_8093F14(void) { const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0}; - CpuFastSet(arr[ewram0_2.var_1], (void *)(VRAM + 0x4800), 0x140); + CpuFastSet(arr[ewram0_2.isShowingLinkCard], (void *)(VRAM + 0x4800), 0x140); } // I don't really know where to put the data. It's in such a weird order. const u8 gUnknown_083B5EF4[] = _(" : "); -const u16 *const gUnknown_083B5EF8[] = +const u16 *const gTrainerCardPalettes[] = { gMenuTrainerCard0Star_Pal, gMenuTrainerCard1Star_Pal, @@ -1227,7 +1232,7 @@ const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal"); const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal"); -const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); +const u16 gTrainerCardBadgesMap[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); static void sub_8093F48(void) { @@ -1239,7 +1244,7 @@ static void sub_8093F64(void) CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320); } -static void sub_8093F80(void) +static void TrainerCard_LoadTrainerTilemap(void) { u16 r5 = 0xC4; u16 *ptr = (u16 *)(VRAM + 0x4000); @@ -1253,11 +1258,11 @@ static void sub_8093F80(void) } } -static void sub_8093FD0(void) +static void TrainerCard_DrawStars(void) { u16 *ptr = (u16 *)(VRAM + 0x4000); s16 i = 15; - s16 var = 15 + ewram0_2.var_2; + s16 var = 15 + ewram0_2.starCount; while (i < var) { @@ -1271,9 +1276,9 @@ static void sub_8093FD0(void) } } -static void sub_8094038(void) +static void TrainerCard_DisplayBadges(void) { - if (ewram0_2.var_1 == 0) + if (!ewram0_2.isShowingLinkCard) { u16 *ptr = (u16 *)(VRAM + 0x4000); s16 i; @@ -1281,18 +1286,18 @@ static void sub_8094038(void) for (i = 0, r2 = 4; i < 8; i++, r2 += 3) { - if (ewram0_2.var_e[i] != 0) + if (ewram0_2.ownedBadges[i] != 0) { - ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000; - ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000; - ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000; - ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000; + ptr[15 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][0] | 0x3000; + ptr[15 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][1] | 0x3000; + ptr[16 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][2] | 0x3000; + ptr[16 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][3] | 0x3000; } } } } -static void sub_80940E4(void) +static void TrainerCard_ClearTrainerGraphics(void) { s16 i; u16 *ptr; @@ -1301,7 +1306,7 @@ static void sub_80940E4(void) *ptr = 0; } -static void sub_8094110(void) +static void TrainerCard_ClearPokedexLabel(void) { u16 *ptr = (u16 *)(VRAM + 0x4800); u16 i; @@ -1313,24 +1318,24 @@ static void sub_8094110(void) } } -static void sub_8094140(void) +static void TrainerCard_Front_PrintTexts(void) { u8 *buffer; BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); buffer = gStringVar1; - StringCopy(buffer, ewram0_2.var_64.playerName); + StringCopy(buffer, ewram0_2.displayedCard.playerName); ConvertInternationalString(buffer, ewram0_2.language); Menu_PrintText(buffer, 7, 5); TrainerCard_Front_PrintTrainerID(); TrainerCard_Front_PrintMoney(); TrainerCard_Front_PrintPokedexCount(); - sub_809429C(); + TrainerCard_PrintEasyChatPhrase(); } -static void sub_8094188(void) +static void TrainerCard_Back_PrintTexts(void) { BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); TrainerCard_Back_PrintName(); @@ -1354,31 +1359,31 @@ static void TrainerCard_Front_PrintTrainerID(void) { u8 buffer[8]; - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); Menu_PrintText(buffer, 20, 2); } static void TrainerCard_Front_PrintMoney(void) { - sub_80B7AEC(ewram0_2.var_64.money, 16, 8); + sub_80B7AEC(ewram0_2.displayedCard.money, 16, 8); } static void TrainerCard_Front_PrintPokedexCount(void) { u8 buffer[16]; - if (ewram0_2.var_7 == FALSE) + if (!ewram0_2.showPokedexCount) { - sub_8094110(); + TrainerCard_ClearPokedexLabel(); } else { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); MenuPrint_RightAligned(buffer, 16, 10); } } -static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) +static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon) { u8 buffer[16]; u16 playTimeHours; @@ -1386,33 +1391,33 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) playTimeHours = gSaveBlock2.playTimeHours; playTimeMinutes = gSaveBlock2.playTimeMinutes; - if (ewram0_2.var_1 != 0) + if (ewram0_2.isShowingLinkCard != 0) { - playTimeHours = ewram0_2.var_64.playTimeHours; - playTimeMinutes = ewram0_2.var_64.playTimeMinutes; + playTimeHours = ewram0_2.displayedCard.playTimeHours; + playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes; } FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon); sub_8072C74(arg1, buffer, 48, 1); } -static void sub_809429C(void) +static void TrainerCard_PrintEasyChatPhrase(void) { u8 *str; - if (ewram0_2.var_1 != 0) + if (ewram0_2.isShowingLinkCard != 0) { str = gStringVar1; - str = StringCopy(str, ewram0_2.var_20[0]); + str = StringCopy(str, ewram0_2.easyChatPhrase[0]); str[0] = 00; str++; - str = StringCopy(str, ewram0_2.var_20[1]); + str = StringCopy(str, ewram0_2.easyChatPhrase[1]); Menu_PrintText(gStringVar1, 2, 14); str = gStringVar1; - str = StringCopy(str, ewram0_2.var_20[2]); + str = StringCopy(str, ewram0_2.easyChatPhrase[2]); str[0] = 00; str++; - str = StringCopy(str, ewram0_2.var_20[3]); + str = StringCopy(str, ewram0_2.easyChatPhrase[3]); Menu_PrintText(gStringVar1, 2, 16); } } @@ -1422,7 +1427,7 @@ static void TrainerCard_Back_PrintName(void) u8 *str; str = gStringVar1; - StringCopy(str, ewram0_2.var_64.playerName); + StringCopy(str, ewram0_2.displayedCard.playerName); ConvertInternationalString(str, ewram0_2.language); #if ENGLISH @@ -1436,7 +1441,7 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { - if (ewram0_2.var_8 != 0) + if (ewram0_2.showHallOfFame != 0) Menu_PrintText(gOtherText_FirstHOF, 3, 5); } @@ -1444,21 +1449,21 @@ static void TrainerCard_Back_PrintHallOfFameTime(void) { u8 *str; - if (ewram0_2.var_8 != 0) + if (ewram0_2.showHallOfFame != 0) { str = gStringVar1; - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); MenuPrint_RightAligned(gStringVar1, 28, 5); } } static void TrainerCard_Back_PrintLinkBattlesLabel(void) { - if (ewram0_2.var_9 != 0) + if (ewram0_2.showLinkBattleStatus != 0) Menu_PrintText(gOtherText_LinkCableBattles, 3, 7); } @@ -1466,19 +1471,19 @@ static void TrainerCard_Back_PrintLinkBattles(void) { u8 buffer[16]; - if (ewram0_2.var_9 != 0) + if (ewram0_2.showLinkBattleStatus != 0) { - ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleWins); + ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleWins); MenuPrint_RightAligned(buffer, 22, 7); - ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleLosses); + ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleLosses); MenuPrint_RightAligned(buffer, 28, 7); } } static void TrainerCard_Back_PrintBattleTower_Label(void) { - if (ewram0_2.var_a != 0) + if (ewram0_2.showBattleTowerStatus != 0) Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15); } @@ -1486,19 +1491,19 @@ static void TrainerCard_Back_PrintBattleTower(void) { u8 buffer[16]; - if (ewram0_2.var_a != 0) + if (ewram0_2.showBattleTowerStatus != 0) { - sub_8072C44(buffer, ewram0_2.var_64.battleTowerWins, 24, 1); + sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1); Menu_PrintTextPixelCoords(buffer, 112, 120, 0); - sub_8072C44(buffer, ewram0_2.var_64.battleTowerLosses, 24, 1); + sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1); Menu_PrintTextPixelCoords(buffer, 149, 120, 0); } } static void TrainerCard_Back_PrintLinkContests_Label(void) { - if (ewram0_2.var_b != 0) + if (ewram0_2.showContestRecord != 0) Menu_PrintText(gOtherText_ContestRecord, 3, 13); } @@ -1506,16 +1511,16 @@ static void TrainerCard_Back_PrintLinkContests(void) { u8 buffer[8]; - if (ewram0_2.var_b != 0) + if (ewram0_2.showContestRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); MenuPrint_RightAligned(buffer, 28, 13); } } static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { - if (ewram0_2.var_c != 0) + if (ewram0_2.showMixingRecord != 0) Menu_PrintText(gOtherText_MixingRecord, 3, 11); } @@ -1523,16 +1528,16 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void) { u8 buffer[8]; - if (ewram0_2.var_c != 0) + if (ewram0_2.showMixingRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); MenuPrint_RightAligned(buffer, 28, 11); } } static void TrainerCard_Back_PrintPokemonTrades_Label(void) { - if (ewram0_2.var_d != 0) + if (ewram0_2.showTradingRecord != 0) Menu_PrintText(gOtherText_TradeRecord, 3, 9); } @@ -1540,9 +1545,9 @@ static void TrainerCard_Back_PrintPokemonTrades(void) { u8 buffer[8]; - if (ewram0_2.var_d != 0) + if (ewram0_2.showTradingRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); MenuPrint_RightAligned(buffer, 28, 9); } } diff --git a/src/field/item.c b/src/field/item.c index 66d7d65df..6ff7a7cbe 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -571,7 +571,7 @@ void SwapRegisteredBike(void) static u16 SanitizeItemId(u16 itemId) { - if (itemId > 0x15C) + if (itemId >= ARRAY_COUNT(gItems)) return 0; else return itemId; diff --git a/src/field/start_menu.c b/src/field/start_menu.c index d6881cb01..2f6f1e7dd 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -395,7 +395,7 @@ static u8 StartMenu_PlayerCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - sub_8093110(sub_805469C); + TrainerCard_ShowPlayerCard(sub_805469C); return 1; } return 0; @@ -443,7 +443,7 @@ static u8 StartMenu_PlayerLinkCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - sub_8093130(gUnknown_03004860, sub_805469C); + TrainerCard_ShowLinkCard(gUnknown_03004860, sub_805469C); return 1; } return 0; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 53eb2f1e8..697806ee1 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -88,8 +88,7 @@ extern u8 gBattleCommunication[]; extern const u8 BattleText_StartEvo[]; extern const u8 BattleText_FinishEvo[]; extern const u8 BattleText_StopEvo[]; -extern void * const gUnknown_081FAF4C[]; -extern const u8* const gBattleStringsTable[]; +extern const u8 *const gBattleStringsTable[]; // this file's functions static void Task_EvolutionScene(u8 taskID); |