From e9ec2a1a561d3041b8df2cb512a0e03ff5bca74b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 17 Aug 2017 21:05:59 +0200 Subject: start decompiling battle transition --- asm/battle_tower.s | 2 +- asm/battle_transition.s | 923 ++++---------------------------------------- data/battle_transition.s | 122 +++--- include/battle_transition.h | 4 +- include/rom4.h | 2 +- ld_script.txt | 1 + src/battle_setup.c | 4 +- src/battle_transition.c | 302 +++++++++++++++ 8 files changed, 451 insertions(+), 909 deletions(-) create mode 100644 src/battle_transition.c diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 15cb95854..3f019e1ea 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_811AAE8 + bl IsBattleTransitionDone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index a4b4d1666..207b4013f 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -6,774 +6,11 @@ .text - thumb_func_start sub_811AABC -sub_811AABC: @ 811AABC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AAD0 @ =gMain - ldr r1, _0811AAD4 @ =sub_8054398 - str r1, [r2, 0x4] - bl sub_811AB20 - pop {r0} - bx r0 - .align 2, 0 -_0811AAD0: .4byte gMain -_0811AAD4: .4byte sub_8054398 - thumb_func_end sub_811AABC - - thumb_func_start sub_811AAD8 -sub_811AAD8: @ 811AAD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_811AB20 - pop {r0} - bx r0 - thumb_func_end sub_811AAD8 - - thumb_func_start sub_811AAE8 -sub_811AAE8: @ 811AAE8 - push {lr} - ldr r0, _0811AB0C @ =sub_811AB50 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0811AB10 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0811AB14 - movs r0, 0 - b _0811AB1C - .align 2, 0 -_0811AB0C: .4byte sub_811AB50 -_0811AB10: .4byte gTasks -_0811AB14: - adds r0, r2, 0 - bl DestroyTask - movs r0, 0x1 -_0811AB1C: - pop {r1} - bx r1 - thumb_func_end sub_811AAE8 - - thumb_func_start sub_811AB20 -sub_811AB20: @ 811AB20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0811AB48 @ =sub_811AB50 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AB4C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811AB48: .4byte sub_811AB50 -_0811AB4C: .4byte gTasks - thumb_func_end sub_811AB20 - - thumb_func_start sub_811AB50 -sub_811AB50: @ 811AB50 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AB80 @ =gUnknown_083FD794 - ldr r2, _0811AB84 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AB62: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AB62 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AB80: .4byte gUnknown_083FD794 -_0811AB84: .4byte gTasks - thumb_func_end sub_811AB50 - - thumb_func_start sub_811AB88 -sub_811AB88: @ 811AB88 - push {r4,lr} - adds r4, r0, 0 - bl sub_807DE10 - ldr r0, _0811ABB4 @ =gPlttBufferFaded - ldr r1, _0811ABB8 @ =gPlttBufferUnfaded - ldr r2, _0811ABBC @ =0x04000100 - bl CpuSet - ldr r1, _0811ABC0 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0811ABC4 - movs r0, 0x2 - strh r0, [r4, 0x8] - movs r0, 0x1 - b _0811ABD2 - .align 2, 0 -_0811ABB4: .4byte gPlttBufferFaded -_0811ABB8: .4byte gPlttBufferUnfaded -_0811ABBC: .4byte 0x04000100 -_0811ABC0: .4byte gUnknown_083FD70C -_0811ABC4: - movs r1, 0x4 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 -_0811ABD2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811AB88 - - thumb_func_start sub_811ABD8 -sub_811ABD8: @ 811ABD8 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811ABF8 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811ABFC - movs r0, 0 - b _0811AC04 - .align 2, 0 -_0811ABF8: .4byte gUnknown_083FD70C -_0811ABFC: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 -_0811AC04: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811ABD8 - - thumb_func_start sub_811AC0C -sub_811AC0C: @ 811AC0C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811AC30 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC30: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC0C - - thumb_func_start sub_811AC34 -sub_811AC34: @ 811AC34 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _0811AC60 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0811AC58 - movs r0, 0x1 - strh r0, [r4, 0x26] -_0811AC58: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC60: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC34 - - thumb_func_start sub_811AC64 -sub_811AC64: @ 811AC64 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0811AC98 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0811AC9C - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_811D4C8 - b _0811ACAC - .align 2, 0 -_0811AC98: .4byte gTasks -_0811AC9C: - bl sub_811D52C - lsls r0, 24 - cmp r0, 0 - beq _0811ACAC - adds r0, r4, 0 - bl DestroyTask -_0811ACAC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811AC64 - - thumb_func_start sub_811ACB4 -sub_811ACB4: @ 811ACB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ACE4 @ =gUnknown_083FD7A4 - ldr r2, _0811ACE8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ACC6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ACC6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ACE4: .4byte gUnknown_083FD7A4 -_0811ACE8: .4byte gTasks - thumb_func_end sub_811ACB4 - - thumb_func_start sub_811ACEC -sub_811ACEC: @ 811ACEC - ldr r2, _0811AD18 @ =REG_MOSAIC - movs r1, 0 - strh r1, [r2] - subs r2, 0x42 - ldrh r1, [r2] - movs r3, 0x40 - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - movs r0, 0x1 - bx lr - .align 2, 0 -_0811AD18: .4byte REG_MOSAIC - thumb_func_end sub_811ACEC - - thumb_func_start sub_811AD1C -sub_811AD1C: @ 811AD1C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r2, [r4, r1] - cmp r2, 0 - beq _0811AD32 - subs r0, 0x1 - strh r0, [r4, 0xA] - b _0811AD70 -_0811AD32: - movs r0, 0x4 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0811AD54 - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811AD54: - ldr r2, _0811AD7C @ =REG_MOSAIC - ldrh r0, [r4, 0xC] - movs r1, 0xF - ands r1, r0 - lsls r0, r1, 4 - adds r0, r1 - strh r0, [r2] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xE - ble _0811AD70 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811AD70: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AD7C: .4byte REG_MOSAIC - thumb_func_end sub_811AD1C - - thumb_func_start sub_811AD80 -sub_811AD80: @ 811AD80 - push {lr} - ldr r0, _0811ADA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AD9C - ldr r0, _0811ADA8 @ =sub_811ACB4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AD9C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811ADA4: .4byte gPaletteFade -_0811ADA8: .4byte sub_811ACB4 - thumb_func_end sub_811AD80 - - thumb_func_start sub_811ADAC -sub_811ADAC: @ 811ADAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ADDC @ =gUnknown_083FD7B0 - ldr r2, _0811ADE0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ADBE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ADBE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ADDC: .4byte gUnknown_083FD7B0 -_0811ADE0: .4byte gTasks - thumb_func_end sub_811ADAC - - thumb_func_start sub_811ADE4 -sub_811ADE4: @ 811ADE4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0811AE54 @ =gUnknown_03005560 - ldr r1, _0811AE58 @ =0x0200c000 - movs r2, 0x14 - ldrsh r1, [r1, r2] - str r4, [sp] - movs r2, 0xA0 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AE5C @ =sub_811AEE0 - bl SetVBlankCallback - ldr r0, _0811AE60 @ =sub_811AF18 - bl SetHBlankCallback - ldr r3, _0811AE64 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AE68 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AE6C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AE54: .4byte gUnknown_03005560 -_0811AE58: .4byte 0x0200c000 -_0811AE5C: .4byte sub_811AEE0 -_0811AE60: .4byte sub_811AF18 -_0811AE64: .4byte 0x04000208 -_0811AE68: .4byte 0x04000200 -_0811AE6C: .4byte REG_DISPSTAT - thumb_func_end sub_811ADE4 - - thumb_func_start sub_811AE70 -sub_811AE70: @ 811AE70 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _0811AED0 @ =0x0200c000 - ldrb r1, [r4] - movs r1, 0 - strb r1, [r4] - ldrh r1, [r0, 0xA] - adds r1, 0x4 - strh r1, [r0, 0xA] - ldrh r1, [r0, 0xC] - adds r1, 0x8 - strh r1, [r0, 0xC] - ldr r3, _0811AED4 @ =gUnknown_03004DE0 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r5, 0xA - ldrsh r2, [r0, r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AED8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AEBE - ldr r0, _0811AEDC @ =sub_811ADAC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AEBE: - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AED0: .4byte 0x0200c000 -_0811AED4: .4byte gUnknown_03004DE0 -_0811AED8: .4byte gPaletteFade -_0811AEDC: .4byte sub_811ADAC - thumb_func_end sub_811AE70 - - thumb_func_start sub_811AEE0 -sub_811AEE0: @ 811AEE0 - push {lr} - bl sub_811D67C - ldr r0, _0811AF08 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811AF02 - ldr r1, _0811AF0C @ =0x040000d4 - ldr r0, _0811AF10 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811AF14 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811AF02: - pop {r0} - bx r0 - .align 2, 0 -_0811AF08: .4byte 0x0200c000 -_0811AF0C: .4byte 0x040000d4 -_0811AF10: .4byte gUnknown_03004DE0 -_0811AF14: .4byte 0x800000a0 - thumb_func_end sub_811AEE0 - - thumb_func_start sub_811AF18 -sub_811AF18: @ 811AF18 - ldr r1, _0811AF38 @ =gUnknown_03004DE0 - ldr r0, _0811AF3C @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811AF40 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811AF38: .4byte gUnknown_03004DE0 -_0811AF3C: .4byte REG_VCOUNT -_0811AF40: .4byte REG_BG1HOFS - thumb_func_end sub_811AF18 - - thumb_func_start sub_811AF44 -sub_811AF44: @ 811AF44 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AF74 @ =gUnknown_083FD7B8 - ldr r2, _0811AF78 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AF56: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AF56 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AF74: .4byte gUnknown_083FD7B8 -_0811AF78: .4byte gTasks - thumb_func_end sub_811AF44 - - thumb_func_start sub_811AF7C -sub_811AF7C: @ 811AF7C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0811AFE4 @ =0x0200c000 - ldr r0, _0811AFE8 @ =gUnknown_03005560 - movs r2, 0x16 - ldrsh r1, [r1, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - ldr r0, _0811AFEC @ =sub_811B08C - bl SetVBlankCallback - ldr r0, _0811AFF0 @ =sub_811B0C4 - bl SetHBlankCallback - ldr r3, _0811AFF4 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AFF8 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AFFC @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AFE4: .4byte 0x0200c000 -_0811AFE8: .4byte gUnknown_03005560 -_0811AFEC: .4byte sub_811B08C -_0811AFF0: .4byte sub_811B0C4 -_0811AFF4: .4byte 0x04000208 -_0811AFF8: .4byte 0x04000200 -_0811AFFC: .4byte REG_DISPSTAT - thumb_func_end sub_811AF7C - - thumb_func_start sub_811B000 -sub_811B000: @ 811B000 - push {r4-r7,lr} - ldr r2, _0811B07C @ =0x0200c000 - ldrb r1, [r2] - movs r1, 0 - strb r1, [r2] - ldrh r4, [r0, 0xA] - ldrh r2, [r0, 0xC] - lsls r3, r2, 16 - asrs r3, 24 - movs r5, 0x84 - lsls r5, 5 - adds r1, r4, r5 - strh r1, [r0, 0xA] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r1 - strh r2, [r0, 0xC] - movs r5, 0 - lsls r7, r3, 16 -_0811B026: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r2, _0811B080 @ =gUnknown_03004DE0 - lsls r1, r5, 1 - adds r1, r2 - ldr r6, _0811B07C @ =0x0200c000 - ldrh r2, [r6, 0x16] - adds r0, r2 - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x84 - lsls r1, 5 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811B026 - ldr r0, _0811B084 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811B06A - ldr r0, _0811B088 @ =sub_811AF44 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B06A: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B07C: .4byte 0x0200c000 -_0811B080: .4byte gUnknown_03004DE0 -_0811B084: .4byte gPaletteFade -_0811B088: .4byte sub_811AF44 - thumb_func_end sub_811B000 - thumb_func_start sub_811B08C -sub_811B08C: @ 811B08C + thumb_func_start VBlankCB_Phase2_Transition2 +VBlankCB_Phase2_Transition2: @ 811B08C push {lr} - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r0, _0811B0B4 @ =0x0200c000 ldrb r0, [r0] cmp r0, 0 @@ -796,10 +33,10 @@ _0811B0B4: .4byte 0x0200c000 _0811B0B8: .4byte 0x040000d4 _0811B0BC: .4byte gUnknown_03004DE0 _0811B0C0: .4byte 0x800000a0 - thumb_func_end sub_811B08C + thumb_func_end VBlankCB_Phase2_Transition2 - thumb_func_start sub_811B0C4 -sub_811B0C4: @ 811B0C4 + thumb_func_start HBlankCB_Phase2_Transition2 +HBlankCB_Phase2_Transition2: @ 811B0C4 ldr r1, _0811B0E4 @ =gUnknown_03004DE0 ldr r0, _0811B0E8 @ =REG_VCOUNT ldrh r0, [r0] @@ -820,10 +57,10 @@ sub_811B0C4: @ 811B0C4 _0811B0E4: .4byte gUnknown_03004DE0 _0811B0E8: .4byte REG_VCOUNT _0811B0EC: .4byte REG_BG1VOFS - thumb_func_end sub_811B0C4 + thumb_func_end HBlankCB_Phase2_Transition2 - thumb_func_start sub_811B0F0 -sub_811B0F0: @ 811B0F0 + thumb_func_start Phase2Task_Transition3 +Phase2Task_Transition3: @ 811B0F0 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -850,7 +87,7 @@ _0811B102: .align 2, 0 _0811B120: .4byte gUnknown_083FD7C0 _0811B124: .4byte gTasks - thumb_func_end sub_811B0F0 + thumb_func_end Phase2Task_Transition3 thumb_func_start sub_811B128 sub_811B128: @ 811B128 @@ -1264,7 +501,7 @@ _0811B426: strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 - ldr r0, _0811B4A0 @ =sub_811B0F0 + ldr r0, _0811B4A0 @ =Phase2Task_Transition3 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -1296,7 +533,7 @@ _0811B490: .4byte gUnknown_03004DE0 _0811B494: .4byte 0x040000b0 _0811B498: .4byte 0x0000c5ff _0811B49C: .4byte 0x00007fff -_0811B4A0: .4byte sub_811B0F0 +_0811B4A0: .4byte Phase2Task_Transition3 _0811B4A4: .4byte sub_811B54C thumb_func_end sub_811B3EC @@ -1313,7 +550,7 @@ sub_811B4A8: @ 811B4A8 ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811B50C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -1399,8 +636,8 @@ _0811B570: .4byte REG_WIN0H _0811B574: .4byte 0xa2400001 thumb_func_end sub_811B54C - thumb_func_start sub_811B578 -sub_811B578: @ 811B578 + thumb_func_start Phase2Task_Transition4 +Phase2Task_Transition4: @ 811B578 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -1427,7 +664,7 @@ _0811B58A: .align 2, 0 _0811B5A8: .4byte gUnknown_083FD7D8 _0811B5AC: .4byte gTasks - thumb_func_end sub_811B578 + thumb_func_end Phase2Task_Transition4 thumb_func_start sub_811B5B0 sub_811B5B0: @ 811B5B0 @@ -1543,7 +780,7 @@ sub_811B688: @ 811B688 cmp r0, 0 bne _0811B6A8 bl sub_811D6D4 - ldr r0, _0811B6B0 @ =sub_811B578 + ldr r0, _0811B6B0 @ =Phase2Task_Transition4 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -1553,7 +790,7 @@ _0811B6A8: pop {r1} bx r1 .align 2, 0 -_0811B6B0: .4byte sub_811B578 +_0811B6B0: .4byte Phase2Task_Transition4 thumb_func_end sub_811B688 thumb_func_start FldEff_Pokeball @@ -1711,8 +948,8 @@ _0811B7E0: .4byte REG_BG0CNT _0811B7E4: .4byte 0x0000f001 thumb_func_end sub_811B720 - thumb_func_start sub_811B7E8 -sub_811B7E8: @ 811B7E8 + thumb_func_start Phase2Task_Transition5 +Phase2Task_Transition5: @ 811B7E8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -1739,7 +976,7 @@ _0811B7FA: .align 2, 0 _0811B818: .4byte gUnknown_083FD7F8 _0811B81C: .4byte gTasks - thumb_func_end sub_811B7E8 + thumb_func_end Phase2Task_Transition5 thumb_func_start sub_811B820 sub_811B820: @ 811B820 @@ -2257,7 +1494,7 @@ sub_811BBEC: @ 811BBEC strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 - ldr r0, _0811BC28 @ =sub_811B7E8 + ldr r0, _0811BC28 @ =Phase2Task_Transition5 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -2269,7 +1506,7 @@ sub_811BBEC: @ 811BBEC _0811BC1C: .4byte 0x040000b0 _0811BC20: .4byte 0x0000c5ff _0811BC24: .4byte 0x00007fff -_0811BC28: .4byte sub_811B7E8 +_0811BC28: .4byte Phase2Task_Transition5 thumb_func_end sub_811BBEC thumb_func_start sub_811BC2C @@ -2285,7 +1522,7 @@ sub_811BC2C: @ 811BC2C ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811BCA0 @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -2338,8 +1575,8 @@ _0811BCB4: .4byte REG_WIN0H _0811BCB8: .4byte 0xa2400001 thumb_func_end sub_811BC2C - thumb_func_start sub_811BCBC -sub_811BCBC: @ 811BCBC + thumb_func_start Phase2Task_Transition6 +Phase2Task_Transition6: @ 811BCBC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -2366,7 +1603,7 @@ _0811BCCE: .align 2, 0 _0811BCEC: .4byte gUnknown_083FD814 _0811BCF0: .4byte gTasks - thumb_func_end sub_811BCBC + thumb_func_end Phase2Task_Transition6 thumb_func_start sub_811BCF4 sub_811BCF4: @ 811BCF4 @@ -2500,7 +1737,7 @@ _0811BDEC: ands r0, r1 cmp r0, 0 bne _0811BE0E - ldr r0, _0811BE38 @ =sub_811BCBC + ldr r0, _0811BE38 @ =Phase2Task_Transition6 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -2523,13 +1760,13 @@ _0811BE28: .4byte 0x0200c000 _0811BE2C: .4byte 0x1fff0000 _0811BE30: .4byte gUnknown_03004DE0 _0811BE34: .4byte gPaletteFade -_0811BE38: .4byte sub_811BCBC +_0811BE38: .4byte Phase2Task_Transition6 thumb_func_end sub_811BD60 thumb_func_start sub_811BE3C sub_811BE3C: @ 811BE3C push {lr} - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r0, _0811BE64 @ =0x0200c000 ldrb r0, [r0] cmp r0, 0 @@ -2578,8 +1815,8 @@ _0811BE98: .4byte REG_VCOUNT _0811BE9C: .4byte REG_BG1VOFS thumb_func_end sub_811BE74 - thumb_func_start sub_811BEA0 -sub_811BEA0: @ 811BEA0 + thumb_func_start Phase2Task_Transition7 +Phase2Task_Transition7: @ 811BEA0 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -2606,7 +1843,7 @@ _0811BEB2: .align 2, 0 _0811BED0: .4byte gUnknown_083FD81C _0811BED4: .4byte gTasks - thumb_func_end sub_811BEA0 + thumb_func_end Phase2Task_Transition7 thumb_func_start sub_811BED8 sub_811BED8: @ 811BED8 @@ -2746,7 +1983,7 @@ sub_811BFC4: @ 811BFC4 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 - ldr r0, _0811C000 @ =sub_811BEA0 + ldr r0, _0811C000 @ =Phase2Task_Transition7 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -2758,7 +1995,7 @@ sub_811BFC4: @ 811BFC4 _0811BFF4: .4byte 0x040000b0 _0811BFF8: .4byte 0x0000c5ff _0811BFFC: .4byte 0x00007fff -_0811C000: .4byte sub_811BEA0 +_0811C000: .4byte Phase2Task_Transition7 thumb_func_end sub_811BFC4 thumb_func_start sub_811C004 @@ -2774,7 +2011,7 @@ sub_811C004: @ 811C004 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811C06C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -2823,8 +2060,8 @@ _0811C084: .4byte REG_WIN0H _0811C088: .4byte 0xa2400001 thumb_func_end sub_811C004 - thumb_func_start sub_811C08C -sub_811C08C: @ 811C08C + thumb_func_start Phase2Task_Transition12 +Phase2Task_Transition12: @ 811C08C push {lr} lsls r0, 24 lsrs r0, 24 @@ -2840,10 +2077,10 @@ sub_811C08C: @ 811C08C bx r0 .align 2, 0 _0811C0A8: .4byte gTasks - thumb_func_end sub_811C08C + thumb_func_end Phase2Task_Transition12 - thumb_func_start sub_811C0AC -sub_811C0AC: @ 811C0AC + thumb_func_start Phase2Task_Transition13 +Phase2Task_Transition13: @ 811C0AC push {lr} lsls r0, 24 lsrs r0, 24 @@ -2859,10 +2096,10 @@ sub_811C0AC: @ 811C0AC bx r0 .align 2, 0 _0811C0C8: .4byte gTasks - thumb_func_end sub_811C0AC + thumb_func_end Phase2Task_Transition13 - thumb_func_start sub_811C0CC -sub_811C0CC: @ 811C0CC + thumb_func_start Phase2Task_Transition14 +Phase2Task_Transition14: @ 811C0CC push {lr} lsls r0, 24 lsrs r0, 24 @@ -2878,10 +2115,10 @@ sub_811C0CC: @ 811C0CC bx r0 .align 2, 0 _0811C0E8: .4byte gTasks - thumb_func_end sub_811C0CC + thumb_func_end Phase2Task_Transition14 - thumb_func_start sub_811C0EC -sub_811C0EC: @ 811C0EC + thumb_func_start Phase2Task_Transition15 +Phase2Task_Transition15: @ 811C0EC push {lr} lsls r0, 24 lsrs r0, 24 @@ -2897,10 +2134,10 @@ sub_811C0EC: @ 811C0EC bx r0 .align 2, 0 _0811C108: .4byte gTasks - thumb_func_end sub_811C0EC + thumb_func_end Phase2Task_Transition15 - thumb_func_start sub_811C10C -sub_811C10C: @ 811C10C + thumb_func_start Phase2Task_Transition16 +Phase2Task_Transition16: @ 811C10C push {lr} lsls r0, 24 lsrs r0, 24 @@ -2916,7 +2153,7 @@ sub_811C10C: @ 811C10C bx r0 .align 2, 0 _0811C128: .4byte gTasks - thumb_func_end sub_811C10C + thumb_func_end Phase2Task_Transition16 thumb_func_start sub_811C12C sub_811C12C: @ 811C12C @@ -3614,7 +2851,7 @@ sub_811C670: @ 811C670 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811C6E0 @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -3679,7 +2916,7 @@ sub_811C700: @ 811C700 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811C75C @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -4114,8 +3351,8 @@ sub_811CA44: @ 811CA44 _0811CA58: .4byte gSprites thumb_func_end sub_811CA44 - thumb_func_start sub_811CA5C -sub_811CA5C: @ 811CA5C + thumb_func_start Phase2Task_Transition8 +Phase2Task_Transition8: @ 811CA5C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -4142,7 +3379,7 @@ _0811CA6E: .align 2, 0 _0811CA8C: .4byte gUnknown_083FD8A4 _0811CA90: .4byte gTasks - thumb_func_end sub_811CA5C + thumb_func_end Phase2Task_Transition8 thumb_func_start sub_811CA94 sub_811CA94: @ 811CA94 @@ -4331,7 +3568,7 @@ sub_811CBE8: @ 811CBE8 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 - ldr r0, _0811CC24 @ =sub_811CA5C + ldr r0, _0811CC24 @ =Phase2Task_Transition8 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -4343,7 +3580,7 @@ sub_811CBE8: @ 811CBE8 _0811CC18: .4byte 0x040000b0 _0811CC1C: .4byte 0x0000c5ff _0811CC20: .4byte 0x00007fff -_0811CC24: .4byte sub_811CA5C +_0811CC24: .4byte Phase2Task_Transition8 thumb_func_end sub_811CBE8 thumb_func_start sub_811CC28 @@ -4359,7 +3596,7 @@ sub_811CC28: @ 811CC28 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811CC90 @ =REG_WININ ldr r1, _0811CC94 @ =0x0200c000 ldrh r0, [r1, 0x2] @@ -4432,8 +3669,8 @@ _0811CCD4: .4byte REG_VCOUNT _0811CCD8: .4byte REG_BG1HOFS thumb_func_end sub_811CCB0 - thumb_func_start sub_811CCDC -sub_811CCDC: @ 811CCDC + thumb_func_start Phase2Task_Transition9 +Phase2Task_Transition9: @ 811CCDC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -4460,7 +3697,7 @@ _0811CCEE: .align 2, 0 _0811CD0C: .4byte gUnknown_083FD8B0 _0811CD10: .4byte gTasks - thumb_func_end sub_811CCDC + thumb_func_end Phase2Task_Transition9 thumb_func_start sub_811CD14 sub_811CD14: @ 811CD14 @@ -4673,7 +3910,7 @@ sub_811CEB0: @ 811CEB0 cmp r0, 0x10 bls _0811CED4 bl sub_811D6D4 - ldr r0, _0811CEE0 @ =sub_811CCDC + ldr r0, _0811CEE0 @ =Phase2Task_Transition9 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -4684,7 +3921,7 @@ _0811CED4: bx r1 .align 2, 0 _0811CEDC: .4byte 0x0200c000 -_0811CEE0: .4byte sub_811CCDC +_0811CEE0: .4byte Phase2Task_Transition9 thumb_func_end sub_811CEB0 thumb_func_start sub_811CEE4 @@ -4700,7 +3937,7 @@ sub_811CEE4: @ 811CEE4 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811CF54 @ =REG_BLDCNT ldr r1, _0811CF58 @ =0x0200c000 ldrh r0, [r1, 0xE] @@ -4755,7 +3992,7 @@ _0811CF70: .4byte 0xa2400001 thumb_func_start sub_811CF74 sub_811CF74: @ 811CF74 push {lr} - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r1, _0811CFA4 @ =REG_BLDY ldr r2, _0811CFA8 @ =0x0200c000 ldrh r0, [r2, 0x12] @@ -4928,8 +4165,8 @@ _0811D0B0: .4byte gUnknown_03004DE0 _0811D0B4: .4byte 0x0200c000 thumb_func_end sub_811CFD0 - thumb_func_start sub_811D0B8 -sub_811D0B8: @ 811D0B8 + thumb_func_start Phase2Task_Transition10 +Phase2Task_Transition10: @ 811D0B8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -4956,7 +4193,7 @@ _0811D0CA: .align 2, 0 _0811D0E8: .4byte gUnknown_083FD8D4 _0811D0EC: .4byte gTasks - thumb_func_end sub_811D0B8 + thumb_func_end Phase2Task_Transition10 thumb_func_start sub_811D0F0 sub_811D0F0: @ 811D0F0 @@ -5053,7 +4290,7 @@ sub_811D19C: @ 811D19C cmp r1, 0 bne _0811D1BC bl sub_811D6D4 - ldr r0, _0811D1C4 @ =sub_811D0B8 + ldr r0, _0811D1C4 @ =Phase2Task_Transition10 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -5063,11 +4300,11 @@ _0811D1BC: pop {r1} bx r1 .align 2, 0 -_0811D1C4: .4byte sub_811D0B8 +_0811D1C4: .4byte Phase2Task_Transition10 thumb_func_end sub_811D19C - thumb_func_start sub_811D1C8 -sub_811D1C8: @ 811D1C8 + thumb_func_start Phase2Task_Transition11 +Phase2Task_Transition11: @ 811D1C8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 @@ -5094,7 +4331,7 @@ _0811D1DA: .align 2, 0 _0811D1F8: .4byte gUnknown_083FD8E0 _0811D1FC: .4byte gTasks - thumb_func_end sub_811D1C8 + thumb_func_end Phase2Task_Transition11 thumb_func_start sub_811D200 sub_811D200: @ 811D200 @@ -5342,7 +4579,7 @@ sub_811D3B0: @ 811D3B0 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] bl sub_811D6D4 - ldr r0, _0811D3F8 @ =sub_811D1C8 + ldr r0, _0811D3F8 @ =Phase2Task_Transition11 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -5353,7 +4590,7 @@ sub_811D3B0: @ 811D3B0 _0811D3EC: .4byte 0x040000b0 _0811D3F0: .4byte 0x0000c5ff _0811D3F4: .4byte 0x00007fff -_0811D3F8: .4byte sub_811D1C8 +_0811D3F8: .4byte Phase2Task_Transition11 _0811D3FC: ldrh r0, [r2, 0x8] adds r0, 0x1 @@ -5407,7 +4644,7 @@ sub_811D438: @ 811D438 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_811D67C + bl VBlankCB_BattleTransition ldr r2, _0811D4AC @ =0x0200c000 ldrb r0, [r2] cmp r0, 0 @@ -5695,15 +4932,15 @@ _0811D674: .4byte gUnknown_083FD708 _0811D678: .4byte 0x0200c014 thumb_func_end sub_811D658 - thumb_func_start sub_811D67C -sub_811D67C: @ 811D67C + thumb_func_start VBlankCB_BattleTransition +VBlankCB_BattleTransition: @ 811D67C push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 - thumb_func_end sub_811D67C + thumb_func_end VBlankCB_BattleTransition thumb_func_start sub_811D690 sub_811D690: @ 811D690 diff --git a/data/battle_transition.s b/data/battle_transition.s index 0d463ddef..11d3bfe37 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -36,67 +36,67 @@ gUnknown_083FD708:: @ 83FD708 .4byte 0x0200c000 .align 2 -gUnknown_083FD70C:: @ 83FD70C - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - - .align 2 -gBattleTransitionFuncs:: @ 83FD750 - .4byte sub_811ACB4 - .4byte sub_811ADAC - .4byte sub_811AF44 - .4byte sub_811B0F0 - .4byte sub_811B578 - .4byte sub_811B7E8 - .4byte sub_811BCBC - .4byte sub_811BEA0 - .4byte sub_811CA5C - .4byte sub_811CCDC - .4byte sub_811D0B8 - .4byte sub_811D1C8 - .4byte sub_811C08C - .4byte sub_811C0AC - .4byte sub_811C0CC - .4byte sub_811C0EC - .4byte sub_811C10C - - .align 2 -gUnknown_083FD794:: @ 83FD794 - .4byte sub_811AB88 - .4byte sub_811ABD8 - .4byte sub_811AC0C - .4byte sub_811AC34 - - .align 2 -gUnknown_083FD7A4:: @ 83FD7A4 - .4byte sub_811ACEC - .4byte sub_811AD1C - .4byte sub_811AD80 - - .align 2 -gUnknown_083FD7B0:: @ 83FD7B0 - .4byte sub_811ADE4 - .4byte sub_811AE70 - - .align 2 -gUnknown_083FD7B8:: @ 83FD7B8 - .4byte sub_811AF7C - .4byte sub_811B000 +sPhase1_Tasks:: @ 83FD70C + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + .4byte Phase1Task_TransitionAll + + .align 2 +sPhase2_Tasks:: @ 83FD750 + .4byte Phase2Task_Transition0 + .4byte Phase2Task_Transition1 + .4byte Phase2Task_Transition2 + .4byte Phase2Task_Transition3 + .4byte Phase2Task_Transition4 + .4byte Phase2Task_Transition5 + .4byte Phase2Task_Transition6 + .4byte Phase2Task_Transition7 + .4byte Phase2Task_Transition8 + .4byte Phase2Task_Transition9 + .4byte Phase2Task_Transition10 + .4byte Phase2Task_Transition11 + .4byte Phase2Task_Transition12 + .4byte Phase2Task_Transition13 + .4byte Phase2Task_Transition14 + .4byte Phase2Task_Transition15 + .4byte Phase2Task_Transition16 + + .align 2 +sMainTransitionPhases:: @ 83FD794 + .4byte Transition_Phase1 + .4byte Transition_WaitForPhase1 + .4byte Transition_Phase2 + .4byte Transition_WaitForPhase2 + + .align 2 +sPhase2_Transition0_Funcs:: @ 83FD7A4 + .4byte Phase2_Transition0_Func1 + .4byte Phase2_Transition0_Func2 + .4byte Phase2_Transition0_Func3 + + .align 2 +sPhase2_Transition1_Funcs:: @ 83FD7B0 + .4byte Phase2_Transition1_Func1 + .4byte Phase2_Transition1_Func2 + + .align 2 +sPhase2_Transition2_Funcs:: @ 83FD7B8 + .4byte Phase2_Transition2_Func1 + .4byte Phase2_Transition2_Func2 .align 2 gUnknown_083FD7C0:: @ 83FD7C0 diff --git a/include/battle_transition.h b/include/battle_transition.h index b01378505..bc78bd06e 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -3,6 +3,8 @@ void sub_811AABC(u8); void sub_811AAD8(u8); -u8 sub_811AAE8(void); +bool8 IsBattleTransitionDone(void); + +#define B_TRANSITION_WILD 8 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/rom4.h b/include/rom4.h index 8d5b1bfa2..daccad7e9 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -120,7 +120,7 @@ bool32 is_c1_link_related_active(void); // c1_overworld_normal // c1_overworld // c2_overworld_basic -// sub_8054398 +void sub_8054398(void); void c2_overworld(void); // set_callback1 // sub_80543DC diff --git a/ld_script.txt b/ld_script.txt index babcf5861..ed18398b2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -227,6 +227,7 @@ SECTIONS { src/coins.o(.text); src/landmark.o(.text); src/fldeff_strength.o(.text); + src/battle_transition.o(.text); asm/battle_transition.o(.text); src/battle_811DA74.o(.text); asm/battle_message.o(.text); diff --git a/src/battle_setup.c b/src/battle_setup.c index 04674e739..31c127416 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -438,7 +438,7 @@ void task01_battle_start(u8 taskId) } break; case 1: - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); @@ -827,7 +827,7 @@ void CB2_StartFirstBattle(void) UpdatePaletteFade(); RunTasks(); - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = HandleFirstBattleEnd; diff --git a/src/battle_transition.c b/src/battle_transition.c new file mode 100644 index 000000000..35d3baf0c --- /dev/null +++ b/src/battle_transition.c @@ -0,0 +1,302 @@ +#include "global.h" +#include "main.h" +#include "rom4.h" +#include "task.h" +#include "palette.h" +#include "trig.h" + +void sub_807DE10(void); +void dp12_8087EA4(void); + +typedef bool8 (*TransitionState)(struct Task* task); + +extern const TransitionState sMainTransitionPhases[]; +extern const TransitionState sPhase2_Transition0_Funcs[]; +extern const TransitionState sPhase2_Transition1_Funcs[]; +extern const TransitionState sPhase2_Transition2_Funcs[]; + +extern const TaskFunc sPhase1_Tasks[]; +extern const TaskFunc sPhase2_Tasks[]; + +extern u8 ewram[]; +extern s16 gUnknown_03005560[]; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +struct TransitionData +{ + vs8 field_0; // now that's interesting + s8 field_1; + s16 field_2; + s16 field_4; + s16 field_6; + s16 field_8; + s16 field_A; + s16 field_C; + s16 field_E; + s16 field_10; + s16 field_12; + s16 field_14; + s16 field_16; + s16 field_18; +}; + +#define TRANSITION_STRUCT (*(struct TransitionData *) (&ewram[0xC000])) + +// this file's functions +static void LaunchBattleTransitionTask(u8 transitionID); +static void Task_BattleTransitionMain(u8 taskID); +void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +bool8 sub_811D52C(void); +void sub_811D658(void); +static void VBlankCB_Phase2_Transition1(void); +static void HBlankCB_Phase2_Transition1(void); +void VBlankCB_Phase2_Transition2(void); +void HBlankCB_Phase2_Transition2(void); +void VBlankCB_BattleTransition(void); +void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); + +void sub_811AABC(u8 transitionID) +{ + gMain.callback2 = sub_8054398; + LaunchBattleTransitionTask(transitionID); +} + +void sub_811AAD8(u8 transitionID) +{ + LaunchBattleTransitionTask(transitionID); +} + +#define tState data[0] +#define tTransitionID data[1] +#define tTransitionDone data[15] + +bool8 IsBattleTransitionDone(void) +{ + u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain); + if (gTasks[taskID].tTransitionDone) + { + DestroyTask(taskID); + return 1; + } + else + return 0; +} + +static void LaunchBattleTransitionTask(u8 transitionID) +{ + u8 taskID = CreateTask(Task_BattleTransitionMain, 2); + gTasks[taskID].tTransitionID = transitionID; +} + +static void Task_BattleTransitionMain(u8 taskID) +{ + while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Transition_Phase1(struct Task* task) +{ + sub_807DE10(); + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); + if (sPhase1_Tasks[task->tTransitionID] != NULL) + { + CreateTask(sPhase1_Tasks[task->tTransitionID], 4); + task->tState++; + return 0; + } + else + { + task->tState = 2; + return 1; + } +} + +bool8 Transition_WaitForPhase1(struct Task* task) +{ + if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) + { + task->tState++; + return 1; + } + else + return 0; +} + +bool8 Transition_Phase2(struct Task* task) +{ + CreateTask(sPhase2_Tasks[task->tTransitionID], 0); + task->tState++; + return 0; +} + +bool8 Transition_WaitForPhase2(struct Task* task) +{ + task->tTransitionDone = 0; + if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) + task->tTransitionDone = 1; + return 0; +} + +void Phase1Task_TransitionAll(u8 taskID) +{ + if (gTasks[taskID].tState == 0) + { + gTasks[taskID].tState++; + sub_811D4C8(0, 0, 3, 2, 2); + } + else if (sub_811D52C()) + DestroyTask(taskID); +} + +void Phase2Task_Transition0(u8 taskID) +{ + while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition0_Func1(struct Task* task) +{ + REG_MOSAIC = 0; + REG_BG1CNT |= 0x40; + REG_BG2CNT |= 0x40; + REG_BG3CNT |= 0x40; + task->tState++; + return 1; +} + +bool8 Phase2_Transition0_Func2(struct Task* task) +{ + if (task->data[1] != 0) + task->data[1]--; + else + { + task->data[1] = 4; + if (++task->data[2] == 10) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0); + REG_MOSAIC = (task->data[2] & 15) * 17; + if (task->data[2] > 14) + task->tState++; + } + return 0; +} + +bool8 Phase2_Transition0_Func3(struct Task* task) +{ + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); + DestroyTask(taskID); + } + return 0; +} + +void Phase2Task_Transition1(u8 taskID) +{ + while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition1_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + + SetVBlankCallback(VBlankCB_Phase2_Transition1); + SetHBlankCallback(HBlankCB_Phase2_Transition1); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 3; + REG_IME = savedIME; + REG_DISPSTAT |= 0x18; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition1_Func2(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + task->data[1] += 4; + task->data[2] += 8; + + sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition1); + DestroyTask(taskID); + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +static void VBlankCB_Phase2_Transition1(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition1(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +void Phase2Task_Transition2(u8 taskID) +{ + while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition2_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + + SetVBlankCallback(VBlankCB_Phase2_Transition2); + SetHBlankCallback(HBlankCB_Phase2_Transition2); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 3; + REG_IME = savedIME; + REG_DISPSTAT |= 0x18; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition2_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4; + + TRANSITION_STRUCT.field_0 = 0; + r4 = task->data[1]; + r3 = task->data[2] >> 8; + task->data[1] += 4224; + task->data[2] += 384; + + for (i = 0; i < 160; i++, r4 += 4224) + { + u16 var = r4 / 256; + gUnknown_03004DE0[0][i] = Sin(var, r3) + TRANSITION_STRUCT.field_16; + } + + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From 6ce3827987f48f4ba13f67d38382decd8206d00d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 18 Aug 2017 18:25:44 +0200 Subject: cam fixed a function yay --- src/battle_transition.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_transition.c b/src/battle_transition.c index 35d3baf0c..47adccf21 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -41,7 +41,7 @@ struct TransitionData s16 field_18; }; -#define TRANSITION_STRUCT (*(struct TransitionData *) (&ewram[0xC000])) +#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) // this file's functions static void LaunchBattleTransitionTask(u8 transitionID); @@ -291,7 +291,7 @@ bool8 Phase2_Transition2_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_03004DE0[0][i] = Sin(var, r3) + TRANSITION_STRUCT.field_16; + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); } if (!gPaletteFade.active) -- cgit v1.2.3 From f25425cf7de8da73f371ab587275f45e774070a0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 18 Aug 2017 19:42:44 +0200 Subject: started transition3 phase2 --- asm/battle_transition.s | 266 +++-------------------------------------------- data/battle_transition.s | 14 +-- src/battle_transition.c | 90 +++++++++++++++- 3 files changed, 110 insertions(+), 260 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 207b4013f..1fc26d5e7 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,245 +7,9 @@ .text - thumb_func_start VBlankCB_Phase2_Transition2 -VBlankCB_Phase2_Transition2: @ 811B08C - push {lr} - bl VBlankCB_BattleTransition - ldr r0, _0811B0B4 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811B0AE - ldr r1, _0811B0B8 @ =0x040000d4 - ldr r0, _0811B0BC @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811B0C0 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B0AE: - pop {r0} - bx r0 - .align 2, 0 -_0811B0B4: .4byte 0x0200c000 -_0811B0B8: .4byte 0x040000d4 -_0811B0BC: .4byte gUnknown_03004DE0 -_0811B0C0: .4byte 0x800000a0 - thumb_func_end VBlankCB_Phase2_Transition2 - - thumb_func_start HBlankCB_Phase2_Transition2 -HBlankCB_Phase2_Transition2: @ 811B0C4 - ldr r1, _0811B0E4 @ =gUnknown_03004DE0 - ldr r0, _0811B0E8 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811B0EC @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811B0E4: .4byte gUnknown_03004DE0 -_0811B0E8: .4byte REG_VCOUNT -_0811B0EC: .4byte REG_BG1VOFS - thumb_func_end HBlankCB_Phase2_Transition2 - - thumb_func_start Phase2Task_Transition3 -Phase2Task_Transition3: @ 811B0F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B120 @ =gUnknown_083FD7C0 - ldr r2, _0811B124 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B102: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B102 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B120: .4byte gUnknown_083FD7C0 -_0811B124: .4byte gTasks - thumb_func_end Phase2Task_Transition3 - - thumb_func_start sub_811B128 -sub_811B128: @ 811B128 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r3, 0x10 - strh r3, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0x10] - movs r0, 0x80 - lsls r0, 7 - strh r0, [r4, 0x12] - ldr r1, _0811B1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r0, _0811B1C0 @ =0x00003f41 - strh r0, [r1, 0xE] - lsls r3, 8 - strh r3, [r1, 0x10] - movs r1, 0 - add r5, sp, 0x4 - add r6, sp, 0x8 - ldr r3, _0811B1C4 @ =gUnknown_03005560 - movs r2, 0xF0 -_0811B168: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B168 - ldr r0, _0811B1C8 @ =sub_811B520 - bl SetVBlankCallback - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_811D6A8 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811B1CC @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811B1D0 @ =gUnknown_083FBB88 - ldr r1, [sp, 0x8] - movs r2, 0xB0 - lsls r2, 2 - bl CpuSet - ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B1BC: .4byte 0x0200c000 -_0811B1C0: .4byte 0x00003f41 -_0811B1C4: .4byte gUnknown_03005560 -_0811B1C8: .4byte sub_811B520 -_0811B1CC: .4byte 0x01000400 -_0811B1D0: .4byte gUnknown_083FBB88 -_0811B1D4: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B128 - - thumb_func_start sub_811B1D8 -sub_811B1D8: @ 811B1D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r5, _0811B260 @ =gUnknown_083FDB44 - add r1, sp, 0xC - add r0, sp, 0x8 - bl sub_811D6A8 - movs r1, 0 - ldr r0, [sp, 0x8] - mov r9, r0 - ldr r6, _0811B264 @ =gUnknown_03004DE0 - mov r8, r6 - movs r0, 0xF0 - lsls r0, 8 - mov r12, r0 -_0811B1FE: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811B204: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - add r1, r9 - ldrh r0, [r5] - mov r6, r12 - orrs r0, r6 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r5, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1D - ble _0811B204 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811B1FE - movs r6, 0x10 - ldrsh r2, [r7, r6] - movs r1, 0x12 - ldrsh r0, [r7, r1] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - mov r0, r8 - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0x1 - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B260: .4byte gUnknown_083FDB44 -_0811B264: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B1D8 - thumb_func_start sub_811B268 -sub_811B268: @ 811B268 + thumb_func_start Phase2_Transition3_Func3 +Phase2_Transition3_Func3: @ 811B268 push {r4,lr} sub sp, 0x8 adds r2, r0, 0 @@ -316,10 +80,10 @@ _0811B2AE: _0811B2E8: .4byte 0x0200c000 _0811B2EC: .4byte 0xffffff00 _0811B2F0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B268 + thumb_func_end Phase2_Transition3_Func3 - thumb_func_start sub_811B2F4 -sub_811B2F4: @ 811B2F4 + thumb_func_start Phase2_Transition3_Func4 +Phase2_Transition3_Func4: @ 811B2F4 push {r4,r5,lr} sub sp, 0x8 adds r3, r0, 0 @@ -389,10 +153,10 @@ _0811B338: _0811B374: .4byte 0x0200c000 _0811B378: .4byte 0xffffff00 _0811B37C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B2F4 + thumb_func_end Phase2_Transition3_Func4 - thumb_func_start sub_811B380 -sub_811B380: @ 811B380 + thumb_func_start Phase2_Transition3_Func5 +Phase2_Transition3_Func5: @ 811B380 push {r4-r7,lr} sub sp, 0x8 adds r4, r0, 0 @@ -445,10 +209,10 @@ _0811B3CE: _0811B3E0: .4byte 0x0200c000 _0811B3E4: .4byte 0xffffff00 _0811B3E8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B380 + thumb_func_end Phase2_Transition3_Func5 - thumb_func_start sub_811B3EC -sub_811B3EC: @ 811B3EC + thumb_func_start Phase2_Transition3_Func6 +Phase2_Transition3_Func6: @ 811B3EC push {r4,lr} adds r4, r0, 0 ldr r0, _0811B488 @ =0x0200c000 @@ -535,7 +299,7 @@ _0811B498: .4byte 0x0000c5ff _0811B49C: .4byte 0x00007fff _0811B4A0: .4byte Phase2Task_Transition3 _0811B4A4: .4byte sub_811B54C - thumb_func_end sub_811B3EC + thumb_func_end Phase2_Transition3_Func6 thumb_func_start sub_811B4A8 sub_811B4A8: @ 811B4A8 @@ -594,8 +358,8 @@ _0811B518: .4byte 0x800000a0 _0811B51C: .4byte REG_WININ thumb_func_end sub_811B4A8 - thumb_func_start sub_811B520 -sub_811B520: @ 811B520 + thumb_func_start VBlankCB_Phase2_Transition3 +VBlankCB_Phase2_Transition3: @ 811B520 push {lr} bl sub_811B4A8 ldr r1, _0811B53C @ =0x040000b0 @@ -613,7 +377,7 @@ _0811B53C: .4byte 0x040000b0 _0811B540: .4byte gUnknown_03005560 _0811B544: .4byte REG_BG0HOFS _0811B548: .4byte 0xa2400001 - thumb_func_end sub_811B520 + thumb_func_end VBlankCB_Phase2_Transition3 thumb_func_start sub_811B54C sub_811B54C: @ 811B54C diff --git a/data/battle_transition.s b/data/battle_transition.s index 11d3bfe37..975de2997 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -99,13 +99,13 @@ sPhase2_Transition2_Funcs:: @ 83FD7B8 .4byte Phase2_Transition2_Func2 .align 2 -gUnknown_083FD7C0:: @ 83FD7C0 - .4byte sub_811B128 - .4byte sub_811B1D8 - .4byte sub_811B268 - .4byte sub_811B2F4 - .4byte sub_811B380 - .4byte sub_811B3EC +sPhase2_Transition3_Funcs:: @ 83FD7C0 + .4byte Phase2_Transition3_Func1 + .4byte Phase2_Transition3_Func2 + .4byte Phase2_Transition3_Func3 + .4byte Phase2_Transition3_Func4 + .4byte Phase2_Transition3_Func5 + .4byte Phase2_Transition3_Func6 .align 2 gUnknown_083FD7D8:: @ 83FD7D8 diff --git a/src/battle_transition.c b/src/battle_transition.c index 47adccf21..ed6bdf387 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -14,6 +14,7 @@ extern const TransitionState sMainTransitionPhases[]; extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; +extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -49,12 +50,16 @@ static void Task_BattleTransitionMain(u8 taskID); void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); bool8 sub_811D52C(void); void sub_811D658(void); + static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); -void VBlankCB_Phase2_Transition2(void); -void HBlankCB_Phase2_Transition2(void); +static void VBlankCB_Phase2_Transition2(void); +static void HBlankCB_Phase2_Transition2(void); +void VBlankCB_Phase2_Transition3(void); + void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); +void sub_811D6A8(u16** a0, u16** a1); void sub_811AABC(u8 transitionID) { @@ -300,3 +305,84 @@ bool8 Phase2_Transition2_Func2(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +static void VBlankCB_Phase2_Transition2(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition2(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +void Phase2Task_Transition3(u8 taskID) +{ + while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +extern const u8 gUnknown_083FBB88[]; +extern const u16 gFieldEffectObjectPalette10[]; + +bool8 Phase2_Transition3_Func1(struct Task* task) +{ + u16 i; + u16 *dst1, *dst2; + + sub_811D658(); + dp12_8087EA4(); + + task->data[1] = 16; + task->data[2] = 0; + task->data[4] = 0; + task->data[5] = 0x4000; + TRANSITION_STRUCT.field_2 = 63; + TRANSITION_STRUCT.field_4 = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.field_8 = 160; + TRANSITION_STRUCT.field_E = 0x3F41; + TRANSITION_STRUCT.field_10 = task->data[1] * 256; // 16 * 256 = 0x1000 + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 240; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition3); + + sub_811D6A8(&dst1, & dst2); + CpuFill16(0, dst1, 0x800); + CpuSet(gUnknown_083FBB88, dst2, 0x2C0); + LoadPalette(gFieldEffectObjectPalette10, 240, 32); + + task->tState++; + return 0; +} + +extern const u16 gUnknown_083FDB44[]; + +bool8 Phase2_Transition3_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* var; + + var = gUnknown_083FDB44; + sub_811D6A8(&dst1, &dst2); + for (i = 0; i < 20; i++) + { + for (j = 0; j < 30; j++, var++) + { + dst1[i * 32 + j] = *var | 0xF000; + } + } + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + + task->tState++; + return 1; +} -- cgit v1.2.3 From ba11084ec89d5480eeba516d78bb6980d8e12ee4 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 19 Aug 2017 17:46:21 +0200 Subject: crazy vram shaenigans --- asm/battle_transition.s | 1000 +--------------------------------------------- data/battle_transition.s | 24 +- src/battle_transition.c | 439 +++++++++++++++++++- 3 files changed, 464 insertions(+), 999 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 1fc26d5e7..0a1a71d7d 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -8,978 +8,8 @@ - thumb_func_start Phase2_Transition3_Func3 -Phase2_Transition3_Func3: @ 811B268 - push {r4,lr} - sub sp, 0x8 - adds r2, r0, 0 - ldr r1, _0811B2E8 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r3, [r2, 0xE] - movs r4, 0xE - ldrsh r0, [r2, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B28C - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B296 -_0811B28C: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r0, 0x2 - strh r0, [r2, 0xE] -_0811B296: - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r4, 0x10] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF - ble _0811B2AE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811B2AE: - ldrh r0, [r2, 0x10] - adds r0, 0x8 - strh r0, [r2, 0x10] - ldr r0, _0811B2EC @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r2, 0x12] - adds r1, r3 - strh r1, [r2, 0x12] - ldr r0, _0811B2F0 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r2, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B2E8: .4byte 0x0200c000 -_0811B2EC: .4byte 0xffffff00 -_0811B2F0: .4byte gUnknown_03004DE0 - thumb_func_end Phase2_Transition3_Func3 - - thumb_func_start Phase2_Transition3_Func4 -Phase2_Transition3_Func4: @ 811B2F4 - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r0, 0 - ldr r1, _0811B374 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B318 - subs r0, r2, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B322 -_0811B318: - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - movs r0, 0x2 - strh r0, [r3, 0xE] -_0811B322: - ldrh r0, [r3, 0xA] - lsls r1, r0, 8 - ldrh r2, [r3, 0xC] - orrs r1, r2 - strh r1, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bne _0811B338 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_0811B338: - ldrh r0, [r3, 0x10] - adds r0, 0x8 - strh r0, [r3, 0x10] - ldr r5, _0811B378 @ =0xffffff00 - adds r1, r5, 0 - ldrh r0, [r3, 0x12] - adds r1, r0 - strh r1, [r3, 0x12] - ldr r0, _0811B37C @ =gUnknown_03004DE0 - movs r5, 0x10 - ldrsh r2, [r3, r5] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B374: .4byte 0x0200c000 -_0811B378: .4byte 0xffffff00 -_0811B37C: .4byte gUnknown_03004DE0 - thumb_func_end Phase2_Transition3_Func4 - - thumb_func_start Phase2_Transition3_Func5 -Phase2_Transition3_Func5: @ 811B380 - push {r4-r7,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, _0811B3E0 @ =0x0200c000 - ldrb r0, [r5] - movs r7, 0 - strb r7, [r5] - ldrh r0, [r4, 0x10] - adds r0, 0x8 - strh r0, [r4, 0x10] - ldr r0, _0811B3E4 @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r4, 0x12] - adds r1, r3 - strh r1, [r4, 0x12] - ldr r0, _0811B3E8 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r4, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r6, 0xA0 - str r6, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _0811B3CE - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - strh r6, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - strh r7, [r4, 0xE] -_0811B3CE: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B3E0: .4byte 0x0200c000 -_0811B3E4: .4byte 0xffffff00 -_0811B3E8: .4byte gUnknown_03004DE0 - thumb_func_end Phase2_Transition3_Func5 - - thumb_func_start Phase2_Transition3_Func6 -Phase2_Transition3_Func6: @ 811B3EC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - movs r3, 0 - strb r3, [r0] - ldrh r2, [r4, 0xC] - movs r0, 0xC - ldrsh r1, [r4, r0] - ldr r0, _0811B48C @ =0x000003ff - cmp r1, r0 - bgt _0811B40A - adds r0, r2, 0 - adds r0, 0x80 - strh r0, [r4, 0xC] -_0811B40A: - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B426 - ldrh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 24 - subs r0, r1, r0 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0811B426 - strh r3, [r4, 0xA] -_0811B426: - ldr r0, _0811B490 @ =gUnknown_03004DE0 - movs r1, 0xA - ldrsh r3, [r4, r1] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D764 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B462 - ldr r1, _0811B494 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B498 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B49C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811B4A0 @ =Phase2Task_Transition3 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B462: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B476 - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811B4A4 @ =sub_811B54C - bl SetVBlankCallback -_0811B476: - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B488: .4byte 0x0200c000 -_0811B48C: .4byte 0x000003ff -_0811B490: .4byte gUnknown_03004DE0 -_0811B494: .4byte 0x040000b0 -_0811B498: .4byte 0x0000c5ff -_0811B49C: .4byte 0x00007fff -_0811B4A0: .4byte Phase2Task_Transition3 -_0811B4A4: .4byte sub_811B54C - thumb_func_end Phase2_Transition3_Func6 - - thumb_func_start sub_811B4A8 -sub_811B4A8: @ 811B4A8 - push {lr} - ldr r1, _0811B500 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B504 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B508 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811B50C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811B4DE - ldr r1, _0811B510 @ =0x040000d4 - ldr r0, _0811B514 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811B518 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B4DE: - ldr r1, _0811B51C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - adds r1, 0xC - ldrh r0, [r2, 0xE] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x10] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811B500: .4byte 0x040000b0 -_0811B504: .4byte 0x0000c5ff -_0811B508: .4byte 0x00007fff -_0811B50C: .4byte 0x0200c000 -_0811B510: .4byte 0x040000d4 -_0811B514: .4byte gUnknown_03004DE0 -_0811B518: .4byte 0x800000a0 -_0811B51C: .4byte REG_WININ - thumb_func_end sub_811B4A8 - - thumb_func_start VBlankCB_Phase2_Transition3 -VBlankCB_Phase2_Transition3: @ 811B520 - push {lr} - bl sub_811B4A8 - ldr r1, _0811B53C @ =0x040000b0 - ldr r0, _0811B540 @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B544 @ =REG_BG0HOFS - str r0, [r1, 0x4] - ldr r0, _0811B548 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B53C: .4byte 0x040000b0 -_0811B540: .4byte gUnknown_03005560 -_0811B544: .4byte REG_BG0HOFS -_0811B548: .4byte 0xa2400001 - thumb_func_end VBlankCB_Phase2_Transition3 - - thumb_func_start sub_811B54C -sub_811B54C: @ 811B54C - push {lr} - bl sub_811B4A8 - ldr r1, _0811B568 @ =0x040000b0 - ldr r0, _0811B56C @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B570 @ =REG_WIN0H - str r0, [r1, 0x4] - ldr r0, _0811B574 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B568: .4byte 0x040000b0 -_0811B56C: .4byte gUnknown_03005560 -_0811B570: .4byte REG_WIN0H -_0811B574: .4byte 0xa2400001 - thumb_func_end sub_811B54C - - thumb_func_start Phase2Task_Transition4 -Phase2Task_Transition4: @ 811B578 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B5A8 @ =gUnknown_083FD7D8 - ldr r2, _0811B5AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B58A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B58A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B5A8: .4byte gUnknown_083FD7D8 -_0811B5AC: .4byte gTasks - thumb_func_end Phase2Task_Transition4 - - thumb_func_start sub_811B5B0 -sub_811B5B0: @ 811B5B0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811B5F0 @ =gUnknown_083FC108 - ldr r1, [sp, 0x8] - movs r2, 0x20 - bl CpuSet - movs r0, 0 - str r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, _0811B5F4 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B5F0: .4byte gUnknown_083FC108 -_0811B5F4: .4byte 0x05000200 -_0811B5F8: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B5B0 - - thumb_func_start sub_811B5FC -sub_811B5FC: @ 811B5FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r1, _0811B67C @ =gUnknown_083FD7E4 - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811B680 @ =gUnknown_083FD7E8 - adds r0, r4, 0 - movs r2, 0xA - bl memcpy - bl Random - movs r5, 0x1 - ands r5, r0 - movs r1, 0 - mov r8, r4 - ldr r6, _0811B684 @ =gUnknown_0202FF84 -_0811B62A: - lsls r5, 16 - asrs r5, 16 - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - str r0, [r6] - lsls r4, r1, 16 - asrs r4, 16 - lsls r0, r4, 5 - adds r0, 0x10 - str r0, [r6, 0x4] - str r5, [r6, 0x8] - lsls r0, r4, 1 - add r0, r8 - movs r1, 0 - ldrsh r0, [r0, r1] - str r0, [r6, 0xC] - movs r0, 0x2D - bl FieldEffectStart - adds r4, 0x1 - lsls r4, 16 - movs r0, 0x1 - eors r5, r0 - lsls r5, 16 - lsrs r5, 16 - lsrs r1, r4, 16 - asrs r4, 16 - cmp r4, 0x4 - ble _0811B62A - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B67C: .4byte gUnknown_083FD7E4 -_0811B680: .4byte gUnknown_083FD7E8 -_0811B684: .4byte gUnknown_0202FF84 - thumb_func_end sub_811B5FC - - thumb_func_start sub_811B688 -sub_811B688: @ 811B688 - push {lr} - movs r0, 0x2D - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _0811B6A8 - bl sub_811D6D4 - ldr r0, _0811B6B0 @ =Phase2Task_Transition4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B6A8: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811B6B0: .4byte Phase2Task_Transition4 - thumb_func_end sub_811B688 - - thumb_func_start FldEff_Pokeball -FldEff_Pokeball: @ 811B6B4 - push {r4,r5,lr} - ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C - ldr r5, _0811B714 @ =gUnknown_0202FF84 - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r5, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0811B718 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5, 0xC] - strh r0, [r4, 0x30] - ldr r0, _0811B71C @ =0x0000ffff - strh r0, [r4, 0x32] - adds r0, r4, 0 - bl InitSpriteAffineAnim - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B710: .4byte gSpriteTemplate_83FD98C -_0811B714: .4byte gUnknown_0202FF84 -_0811B718: .4byte gSprites -_0811B71C: .4byte 0x0000ffff - thumb_func_end FldEff_Pokeball - - thumb_func_start sub_811B720 -sub_811B720: @ 811B720 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0811B740 @ =gUnknown_083FD7F2 - mov r0, sp - movs r2, 0x4 - bl memcpy - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B744 - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _0811B7D6 - .align 2, 0 -_0811B740: .4byte gUnknown_083FD7F2 -_0811B744: - ldrh r0, [r4, 0x20] - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r0, 0xF0 - bhi _0811B7B2 - asrs r0, r1, 19 - lsls r0, 16 - ldrh r1, [r4, 0x22] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r0, 16 - asrs r5, r0, 16 - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r5, r0 - beq _0811B7B2 - strh r2, [r4, 0x32] - ldr r0, _0811B7E0 @ =REG_BG0CNT - ldrh r2, [r0] - lsrs r2, 8 - movs r0, 0x1F - ands r2, r0 - lsls r2, 11 - movs r0, 0xC0 - lsls r0, 19 - adds r2, r0 - lsls r1, 16 - asrs r1, 16 - subs r0, r1, 0x2 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - ldr r6, _0811B7E4 @ =0x0000f001 - adds r3, r6, 0 - strh r3, [r0] - subs r0, r1, 0x1 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - lsls r0, r1, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r1, 0x1 - lsls r1, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r2 - strh r3, [r1] -_0811B7B2: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, 0xF - lsls r0, 16 - movs r1, 0x87 - lsls r1, 17 - cmp r0, r1 - bls _0811B7D6 - adds r0, r4, 0 - movs r1, 0x2D - bl FieldEffectStop -_0811B7D6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811B7E0: .4byte REG_BG0CNT -_0811B7E4: .4byte 0x0000f001 - thumb_func_end sub_811B720 - - thumb_func_start Phase2Task_Transition5 -Phase2Task_Transition5: @ 811B7E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B818 @ =gUnknown_083FD7F8 - ldr r2, _0811B81C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B7FA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B7FA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B818: .4byte gUnknown_083FD7F8 -_0811B81C: .4byte gTasks - thumb_func_end Phase2Task_Transition5 - - thumb_func_start sub_811B820 -sub_811B820: @ 811B820 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0 - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - ldr r0, _0811B874 @ =0x0000f0f1 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811B878 @ =gUnknown_03005560 - ldr r2, _0811B87C @ =0x0000f3f4 -_0811B844: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B844 - ldr r0, _0811B880 @ =sub_811BC2C - bl SetVBlankCallback - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0x78 - strh r0, [r1, 0x2C] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B870: .4byte 0x0200c000 -_0811B874: .4byte 0x0000f0f1 -_0811B878: .4byte gUnknown_03005560 -_0811B87C: .4byte 0x0000f3f4 -_0811B880: .4byte sub_811BC2C - thumb_func_end sub_811B820 - - thumb_func_start sub_811B884 -sub_811B884: @ 811B884 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811B904 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811B908 @ =gUnknown_03004DE0 -_0811B8B0: - movs r3, 0x2A - ldrsh r2, [r4, r3] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - movs r3, 0xF0 - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811B8B0 - ldr r2, _0811B904 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811B8F2 - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811B8F2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B904: .4byte 0x0200c000 -_0811B908: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B884 - - thumb_func_start sub_811B90C -sub_811B90C: @ 811B90C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811B988 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0xF0 - bl sub_811D8FC - adds r6, r4, 0 - ldr r5, _0811B98C @ =gUnknown_03004DE0 - mov r8, r5 - add r5, sp, 0xC -_0811B946: - movs r1, 0x78 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x4F - ble _0811B95C - ldrh r1, [r4, 0x28] - movs r3, 0xF0 -_0811B95C: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - add r2, r8 - lsls r1, 16 - asrs r1, 8 - lsls r0, r3, 16 - asrs r3, r0, 16 - orrs r3, r1 - strh r3, [r2] - ldrb r0, [r5] - cmp r0, 0 - bne _0811B990 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r5] - b _0811B946 - .align 2, 0 -_0811B988: .4byte 0x0200c000 -_0811B98C: .4byte gUnknown_03004DE0 -_0811B990: - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x9F - ble _0811B9AA - movs r0, 0xF0 - strh r0, [r4, 0x2C] - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811B9D0 -_0811B9AA: - movs r2, 0x2A - ldrsh r0, [r4, r2] - cmp r0, r1 - bge _0811B9D0 - ldr r4, _0811B9E8 @ =gUnknown_03004DE0 - ldr r2, _0811B9EC @ =0x0200c000 -_0811B9B6: - ldrh r0, [r2, 0x2A] - adds r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r5, 0x2E - ldrsh r0, [r2, r5] - cmp r1, r0 - blt _0811B9B6 -_0811B9D0: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B9E8: .4byte gUnknown_03004DE0 -_0811B9EC: .4byte 0x0200c000 - thumb_func_end sub_811B90C - - thumb_func_start sub_811B9F0 -sub_811B9F0: @ 811B9F0 + thumb_func_start Phase2_Transition5_Func4 +Phase2_Transition5_Func4: @ 811B9F0 push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 @@ -1043,10 +73,10 @@ _0811BA56: .align 2, 0 _0811BA68: .4byte 0x0200c000 _0811BA6C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B9F0 + thumb_func_end Phase2_Transition5_Func4 - thumb_func_start sub_811BA70 -sub_811BA70: @ 811BA70 + thumb_func_start Phase2_Transition5_Func5 +Phase2_Transition5_Func5: @ 811BA70 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1168,10 +198,10 @@ _0811BB3A: .align 2, 0 _0811BB58: .4byte gUnknown_03004DE0 _0811BB5C: .4byte 0x0200c000 - thumb_func_end sub_811BA70 + thumb_func_end Phase2_Transition5_Func5 - thumb_func_start sub_811BB60 -sub_811BB60: @ 811BB60 + thumb_func_start Phase2_Transition5_Func6 +Phase2_Transition5_Func6: @ 811BB60 push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 @@ -1242,10 +272,10 @@ _0811BBD2: .align 2, 0 _0811BBE4: .4byte 0x0200c000 _0811BBE8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BB60 + thumb_func_end Phase2_Transition5_Func6 - thumb_func_start sub_811BBEC -sub_811BBEC: @ 811BBEC + thumb_func_start Phase2_Transition5_Func7 +Phase2_Transition5_Func7: @ 811BBEC push {lr} ldr r1, _0811BC1C @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -1271,10 +301,10 @@ _0811BC1C: .4byte 0x040000b0 _0811BC20: .4byte 0x0000c5ff _0811BC24: .4byte 0x00007fff _0811BC28: .4byte Phase2Task_Transition5 - thumb_func_end sub_811BBEC + thumb_func_end Phase2_Transition5_Func7 - thumb_func_start sub_811BC2C -sub_811BC2C: @ 811BC2C + thumb_func_start VBlankCB_Phase2_Transition5 +VBlankCB_Phase2_Transition5: @ 811BC2C push {r4,lr} ldr r4, _0811BC94 @ =0x040000b0 ldrh r1, [r4, 0xA] @@ -1337,7 +367,7 @@ _0811BCAC: .4byte 0x800000a0 _0811BCB0: .4byte REG_WININ _0811BCB4: .4byte REG_WIN0H _0811BCB8: .4byte 0xa2400001 - thumb_func_end sub_811BC2C + thumb_func_end VBlankCB_Phase2_Transition5 thumb_func_start Phase2Task_Transition6 Phase2Task_Transition6: @ 811BCBC diff --git a/data/battle_transition.s b/data/battle_transition.s index 975de2997..d71fa3594 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -108,10 +108,10 @@ sPhase2_Transition3_Funcs:: @ 83FD7C0 .4byte Phase2_Transition3_Func6 .align 2 -gUnknown_083FD7D8:: @ 83FD7D8 - .4byte sub_811B5B0 - .4byte sub_811B5FC - .4byte sub_811B688 +sPhase2_Transition4_Funcs:: @ 83FD7D8 + .4byte Phase2_Transition4_Func1 + .4byte Phase2_Transition4_Func2 + .4byte Phase2_Transition4_Func3 .align 1 gUnknown_083FD7E4:: @ 83FD7E4 @@ -132,14 +132,14 @@ gUnknown_083FD7F2:: @ 83FD7F2 .2byte -8 .align 2 -gUnknown_083FD7F8:: @ 83FD7F8 - .4byte sub_811B820 - .4byte sub_811B884 - .4byte sub_811B90C - .4byte sub_811B9F0 - .4byte sub_811BA70 - .4byte sub_811BB60 - .4byte sub_811BBEC +sPhase2_Transition5_Funcs:: @ 83FD7F8 + .4byte Phase2_Transition5_Func1 + .4byte Phase2_Transition5_Func2 + .4byte Phase2_Transition5_Func3 + .4byte Phase2_Transition5_Func4 + .4byte Phase2_Transition5_Func5 + .4byte Phase2_Transition5_Func6 + .4byte Phase2_Transition5_Func7 .align 2 gUnknown_083FD814:: @ 83FD814 diff --git a/src/battle_transition.c b/src/battle_transition.c index ed6bdf387..fb20853a5 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -4,6 +4,9 @@ #include "task.h" #include "palette.h" #include "trig.h" +#include "field_effect.h" +#include "rng.h" +#include "sprite.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -15,6 +18,8 @@ extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; extern const TransitionState sPhase2_Transition3_Funcs[]; +extern const TransitionState sPhase2_Transition4_Funcs[]; +extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -40,6 +45,17 @@ struct TransitionData s16 field_14; s16 field_16; s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; + s16 field_20; + s16 field_22; + s16 field_24; + s16 field_26; + s16 field_28; + s16 field_2A; + s16 field_2C; + s16 field_2E; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -55,11 +71,17 @@ static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); -void VBlankCB_Phase2_Transition3(void); +void VBlankCB0_Phase2_Transition3(void); +void VBlankCB1_Phase2_Transition3(void); +void VBlankCB_Phase2_Transition5(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); +void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +void sub_811D6D4(void); +void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); void sub_811AABC(u8 transitionID) { @@ -353,7 +375,7 @@ bool8 Phase2_Transition3_Func1(struct Task* task) gUnknown_03005560[i] = 240; } - SetVBlankCallback(VBlankCB_Phase2_Transition3); + SetVBlankCallback(VBlankCB0_Phase2_Transition3); sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); @@ -386,3 +408,416 @@ bool8 Phase2_Transition3_Func2(struct Task* task) task->tState++; return 1; } + +bool8 Phase2_Transition3_Func3(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[2]++; + task->data[3] = 2; + } + TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + if (task->data[2] > 15) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func4(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[1]--; + task->data[3] = 2; + } + TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + if (task->data[1] == 0) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + if (task->data[5] <= 0) + { + task->tState++; + task->data[1] = 160; + task->data[2] = 256; + task->data[3] = 0; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[2] < 1024) + task->data[2] += 128; + if (task->data[1] != 0) + { + task->data[1] -= (task->data[2] >> 8); + if (task->data[1] < 0) + task->data[1] = 0; + } + sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + if (task->data[1] == 0) + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition3)); + } + if (task->data[3] == 0) + { + task->data[3]++; + SetVBlankCallback(VBlankCB1_Phase2_Transition3); + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +static void Transition3_Vblank(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.field_2; + REG_WINOUT = TRANSITION_STRUCT.field_4; + REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_BLDCNT = TRANSITION_STRUCT.field_E; + REG_BLDALPHA = TRANSITION_STRUCT.field_10; +} + +void VBlankCB0_Phase2_Transition3(void) +{ + Transition3_Vblank(); + DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); +} + +void VBlankCB1_Phase2_Transition3(void) +{ + Transition3_Vblank(); + DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); +} + +void Phase2Task_Transition4(u8 taskID) +{ + while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +extern const u8 gUnknown_083FC108[]; + +bool8 Phase2_Transition4_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FC108, dst2, 0x20); + CpuFill32(0, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return 0; +} + +extern const s16 gUnknown_083FD7E4[2]; +extern const s16 gUnknown_083FD7F2[2]; +extern const s16 gUnknown_083FD7E8[5]; + +bool8 Phase2_Transition4_Func2(struct Task* task) +{ + s16 i; + s16 rand; + s16 arr0[2]; + s16 arr1[5]; + + memcpy(arr0, gUnknown_083FD7E4, sizeof(gUnknown_083FD7E4)); + memcpy(arr1, gUnknown_083FD7E8, sizeof(gUnknown_083FD7E8)); + rand = Random() & 1; + for (i = 0; i <= 4; i++, rand ^= 1) + { + gUnknown_0202FF84[0] = arr0[rand]; // x + gUnknown_0202FF84[1] = (i * 32) + 16; // y + gUnknown_0202FF84[2] = rand; + gUnknown_0202FF84[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + + task->tState++; + return 0; +} + +bool8 Phase2_Transition4_Func3(struct Task* task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); + } + return 0; +} + +extern const struct SpriteTemplate gSpriteTemplate_83FD98C; + +bool8 FldEff_Pokeball(void) +{ + u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + gSprites[spriteID].oam.priority = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].data0 = gUnknown_0202FF84[2]; + gSprites[spriteID].data1 = gUnknown_0202FF84[3]; + gSprites[spriteID].data2 = -1; + InitSpriteAffineAnim(&gSprites[spriteID]); + StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); + return 0; +} + +#ifdef NONMATCHING +void sub_811B720(struct Sprite* sprite) +{ + s16 arr0[2]; + + memcpy(arr0, gUnknown_083FD7F2, sizeof(gUnknown_083FD7F2)); + if (sprite->data1 != 0) + sprite->data1--; + else + { + if (sprite->pos1.x < 240) + { + s32 posY = sprite->pos1.y >> 3; + s32 posX = sprite->pos1.x >> 3; + if ((posX >> 3) != sprite->data2) + { + u32 var; + + sprite->data2 = (posX); + var = (((REG_BG0CNT >> 8) & 0x1F) << 10); + + vram[MULTI_DIM_ARR(posY - 2, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY - 1, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY - 0, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY + 0, 32, posX)] = 0xF001; + } + } + sprite->pos1.x += arr0[sprite->data0]; + if (sprite->pos1.x + 15 > 270) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} +#else +__attribute__((naked)) +void sub_811B720(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x4\n\ + adds r4, r0, 0\n\ + ldr r1, _0811B740 @ =gUnknown_083FD7F2\n\ + mov r0, sp\n\ + movs r2, 0x4\n\ + bl memcpy\n\ + ldrh r1, [r4, 0x30]\n\ + movs r2, 0x30\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0\n\ + beq _0811B744\n\ + subs r0, r1, 0x1\n\ + strh r0, [r4, 0x30]\n\ + b _0811B7D6\n\ + .align 2, 0\n\ +_0811B740: .4byte gUnknown_083FD7F2\n\ +_0811B744:\n\ + ldrh r0, [r4, 0x20]\n\ + lsls r1, r0, 16\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0xF0\n\ + bhi _0811B7B2\n\ + asrs r0, r1, 19\n\ + lsls r0, 16\n\ + ldrh r1, [r4, 0x22]\n\ + lsls r1, 16\n\ + asrs r1, 19\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + lsrs r2, r0, 16\n\ + asrs r5, r0, 16\n\ + movs r3, 0x32\n\ + ldrsh r0, [r4, r3]\n\ + cmp r5, r0\n\ + beq _0811B7B2\n\ + strh r2, [r4, 0x32]\n\ + ldr r0, _0811B7E0 @ =REG_BG0CNT\n\ + ldrh r2, [r0]\n\ + lsrs r2, 8\n\ + movs r0, 0x1F\n\ + ands r2, r0\n\ + lsls r2, 11\n\ + movs r0, 0xC0\n\ + lsls r0, 19\n\ + adds r2, r0\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + subs r0, r1, 0x2\n\ + lsls r0, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldr r6, _0811B7E4 @ =0x0000f001\n\ + adds r3, r6, 0\n\ + strh r3, [r0]\n\ + subs r0, r1, 0x1\n\ + lsls r0, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r3, [r0]\n\ + lsls r0, r1, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r3, [r0]\n\ + adds r1, 0x1\n\ + lsls r1, 5\n\ + adds r1, r5\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + strh r3, [r1]\n\ +_0811B7B2:\n\ + movs r1, 0x2E\n\ + ldrsh r0, [r4, r1]\n\ + lsls r0, 1\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + ldrh r2, [r4, 0x20]\n\ + adds r0, r2\n\ + strh r0, [r4, 0x20]\n\ + adds r0, 0xF\n\ + lsls r0, 16\n\ + movs r1, 0x87\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bls _0811B7D6\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl FieldEffectStop\n\ +_0811B7D6:\n\ + add sp, 0x4\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0811B7E0: .4byte 0x04000008\n\ +_0811B7E4: .4byte 0x0000f001\n\ + .syntax divided"); +} +#endif // NONMATCHING + +void Phase2Task_Transition5(u8 taskID) +{ + while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition5_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.field_2 = 0; + TRANSITION_STRUCT.field_4 = 63; + TRANSITION_STRUCT.field_6 = -3855; + TRANSITION_STRUCT.field_8 = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 0xF3F4; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition5); + TRANSITION_STRUCT.field_2C = 120; + + task->tState++; + return 1; +} + +bool8 Phase2_Transition5_Func2(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 + 1) | 0x7800; + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C += 16; + if (TRANSITION_STRUCT.field_2C >= 240) + { + TRANSITION_STRUCT.field_2E = 0; + task->tState++; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func3(struct Task* task) +{ + s16 r1, r3; + vu8 var = 0; + + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); + + while (1) + { + r1 = 120, r3 = TRANSITION_STRUCT.field_28 + 1; + if (TRANSITION_STRUCT.field_2E >= 80) + r1 = TRANSITION_STRUCT.field_28, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + if (var != 0) + break; + var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.field_2E += 8; + if (TRANSITION_STRUCT.field_2E >= 160) + { + TRANSITION_STRUCT.field_2C = 240; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.field_2A < TRANSITION_STRUCT.field_2E) + { + gUnknown_03004DE0[0][++TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + } + } + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From c87e2d89e33b07ea9cbb9c73ecfdb95d7bc8d4b9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 19 Aug 2017 23:10:26 +0200 Subject: cam help plox, ninja shift --- asm/battle_transition.s | 562 +---------------------------------------------- data/battle_transition.s | 6 +- src/battle_transition.c | 180 ++++++++++++++- 3 files changed, 185 insertions(+), 563 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 0a1a71d7d..37f50ebd9 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,558 +7,8 @@ .text - - thumb_func_start Phase2_Transition5_Func4 -Phase2_Transition5_Func4: @ 811B9F0 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BA68 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0xA0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BA6C @ =gUnknown_03004DE0 -_0811BA1A: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - lsls r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BA1A - ldr r2, _0811BA68 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - subs r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - cmp r0, 0 - bgt _0811BA56 - movs r0, 0xA0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BA56: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BA68: .4byte 0x0200c000 -_0811BA6C: .4byte gUnknown_03004DE0 - thumb_func_end Phase2_Transition5_Func4 - - thumb_func_start Phase2_Transition5_Func5 -Phase2_Transition5_Func5: @ 811BA70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r8, r0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811BAF0 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl sub_811D8FC - ldr r3, _0811BAF4 @ =gUnknown_03004DE0 - mov r9, r3 - mov r10, r4 - add r6, sp, 0xC -_0811BAAE: - movs r5, 0x2A - ldrsh r0, [r4, r5] - lsls r0, 1 - mov r7, r9 - adds r5, r0, r7 - ldrb r1, [r5] - ldrh r2, [r4, 0x28] - adds r3, r2, 0 - movs r7, 0x2E - ldrsh r0, [r4, r7] - cmp r0, 0x50 - bgt _0811BACA - movs r2, 0x78 - adds r1, r3, 0 -_0811BACA: - lsls r0, r2, 16 - asrs r0, 8 - lsls r1, 16 - asrs r1, 16 - orrs r1, r0 - movs r3, 0 - strh r1, [r5] - ldrb r0, [r6] - cmp r0, 0 - bne _0811BAF8 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r6] - b _0811BAAE - .align 2, 0 -_0811BAF0: .4byte 0x0200c000 -_0811BAF4: .4byte gUnknown_03004DE0 -_0811BAF8: - ldrh r0, [r4, 0x2E] - subs r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bgt _0811BB12 - strh r3, [r4, 0x2C] - mov r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0811BB3A -_0811BB12: - movs r3, 0x2A - ldrsh r0, [r4, r3] - cmp r0, r2 - ble _0811BB3A - ldr r4, _0811BB58 @ =gUnknown_03004DE0 - ldr r2, _0811BB5C @ =0x0200c000 - adds r3, r1, 0 -_0811BB20: - ldrh r0, [r2, 0x2A] - subs r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r7, 0x2E - ldrsh r0, [r2, r7] - cmp r1, r0 - bgt _0811BB20 -_0811BB3A: - mov r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r10 - strb r0, [r2] - movs r0, 0 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BB58: .4byte gUnknown_03004DE0 -_0811BB5C: .4byte 0x0200c000 - thumb_func_end Phase2_Transition5_Func5 - - thumb_func_start Phase2_Transition5_Func6 -Phase2_Transition5_Func6: @ 811BB60 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BBE4 @ =0x0200c000 - ldrb r0, [r4] - movs r1, 0 - strb r1, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2C - ldrsh r3, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BBE8 @ =gUnknown_03004DE0 -_0811BB88: - movs r2, 0x78 - ldrh r3, [r4, 0x28] - movs r1, 0x28 - ldrsh r0, [r4, r1] - cmp r0, 0x77 - ble _0811BB98 - movs r2, 0 - movs r3, 0xF0 -_0811BB98: - movs r0, 0x2A - ldrsh r1, [r4, r0] - lsls r1, 1 - adds r1, r5 - lsls r2, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r2 - strh r0, [r1] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BB88 - ldr r2, _0811BBE4 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - movs r1, 0x28 - ldrsh r0, [r2, r1] - cmp r0, 0x78 - ble _0811BBD2 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BBD2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BBE4: .4byte 0x0200c000 -_0811BBE8: .4byte gUnknown_03004DE0 - thumb_func_end Phase2_Transition5_Func6 - - thumb_func_start Phase2_Transition5_Func7 -Phase2_Transition5_Func7: @ 811BBEC - push {lr} - ldr r1, _0811BC1C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BC20 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BC24 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811BC28 @ =Phase2Task_Transition5 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BC1C: .4byte 0x040000b0 -_0811BC20: .4byte 0x0000c5ff -_0811BC24: .4byte 0x00007fff -_0811BC28: .4byte Phase2Task_Transition5 - thumb_func_end Phase2_Transition5_Func7 - - thumb_func_start VBlankCB_Phase2_Transition5 -VBlankCB_Phase2_Transition5: @ 811BC2C - push {r4,lr} - ldr r4, _0811BC94 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811BC98 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811BC9C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811BCA0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811BC62 - ldr r1, _0811BCA4 @ =0x040000d4 - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811BCAC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BC62: - ldr r1, _0811BCB0 @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811BCB4 @ =REG_WIN0H - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811BCB8 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811BC94: .4byte 0x040000b0 -_0811BC98: .4byte 0x0000c5ff -_0811BC9C: .4byte 0x00007fff -_0811BCA0: .4byte 0x0200c000 -_0811BCA4: .4byte 0x040000d4 -_0811BCA8: .4byte gUnknown_03004DE0 -_0811BCAC: .4byte 0x800000a0 -_0811BCB0: .4byte REG_WININ -_0811BCB4: .4byte REG_WIN0H -_0811BCB8: .4byte 0xa2400001 - thumb_func_end VBlankCB_Phase2_Transition5 - - thumb_func_start Phase2Task_Transition6 -Phase2Task_Transition6: @ 811BCBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BCEC @ =gUnknown_083FD814 - ldr r2, _0811BCF0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BCCE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BCCE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BCEC: .4byte gUnknown_083FD814 -_0811BCF0: .4byte gTasks - thumb_func_end Phase2Task_Transition6 - - thumb_func_start sub_811BCF4 -sub_811BCF4: @ 811BCF4 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - ldr r4, _0811BD48 @ =gUnknown_03005560 - ldr r3, _0811BD4C @ =0x0200c000 -_0811BD06: - lsls r0, r2, 1 - adds r0, r4 - ldrh r1, [r3, 0x16] - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x9F - bls _0811BD06 - ldr r0, _0811BD50 @ =sub_811BE3C - bl SetVBlankCallback - ldr r0, _0811BD54 @ =sub_811BE74 - bl SetHBlankCallback - ldr r2, _0811BD58 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811BD5C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811BD48: .4byte gUnknown_03005560 -_0811BD4C: .4byte 0x0200c000 -_0811BD50: .4byte sub_811BE3C -_0811BD54: .4byte sub_811BE74 -_0811BD58: .4byte 0x04000200 -_0811BD5C: .4byte REG_DISPSTAT - thumb_func_end sub_811BCF4 - - thumb_func_start sub_811BD60 -sub_811BD60: @ 811BD60 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, _0811BE28 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r6, 0xC] - lsls r1, r2, 16 - asrs r0, r1, 24 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r6, 0xA] - movs r0, 0xC0 - lsls r0, 1 - mov r8, r0 - movs r5, 0x80 - lsls r5, 3 - adds r0, r4, r5 - strh r0, [r6, 0xA] - ldr r0, _0811BE2C @ =0x1fff0000 - cmp r1, r0 - bgt _0811BD9A - movs r1, 0xC0 - lsls r1, 1 - adds r0, r2, r1 - strh r0, [r6, 0xC] -_0811BD9A: - movs r5, 0 - lsls r7, r3, 16 -_0811BD9E: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r1, _0811BE30 @ =gUnknown_03004DE0 - lsls r2, r5, 1 - adds r2, r1 - ldr r1, _0811BE28 @ =0x0200c000 - ldrh r1, [r1, 0x16] - adds r0, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811BD9E - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x51 - bne _0811BDEC - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811BDEC: - movs r5, 0x10 - ldrsh r0, [r6, r5] - cmp r0, 0 - beq _0811BE0E - ldr r0, _0811BE34 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811BE0E - ldr r0, _0811BE38 @ =Phase2Task_Transition6 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811BE0E: - ldr r0, _0811BE28 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BE28: .4byte 0x0200c000 -_0811BE2C: .4byte 0x1fff0000 -_0811BE30: .4byte gUnknown_03004DE0 -_0811BE34: .4byte gPaletteFade -_0811BE38: .4byte Phase2Task_Transition6 - thumb_func_end sub_811BD60 - - thumb_func_start sub_811BE3C -sub_811BE3C: @ 811BE3C + thumb_func_start VBlankCB_Phase2_Transition6 +VBlankCB_Phase2_Transition6: @ 811BE3C push {lr} bl VBlankCB_BattleTransition ldr r0, _0811BE64 @ =0x0200c000 @@ -583,10 +33,10 @@ _0811BE64: .4byte 0x0200c000 _0811BE68: .4byte 0x040000d4 _0811BE6C: .4byte gUnknown_03004DE0 _0811BE70: .4byte 0x800000a0 - thumb_func_end sub_811BE3C + thumb_func_end VBlankCB_Phase2_Transition6 - thumb_func_start sub_811BE74 -sub_811BE74: @ 811BE74 + thumb_func_start HBlankCB_Phase2_Transition6 +HBlankCB_Phase2_Transition6: @ 811BE74 ldr r1, _0811BE94 @ =gUnknown_03004DE0 ldr r0, _0811BE98 @ =REG_VCOUNT ldrh r0, [r0] @@ -607,7 +57,7 @@ sub_811BE74: @ 811BE74 _0811BE94: .4byte gUnknown_03004DE0 _0811BE98: .4byte REG_VCOUNT _0811BE9C: .4byte REG_BG1VOFS - thumb_func_end sub_811BE74 + thumb_func_end HBlankCB_Phase2_Transition6 thumb_func_start Phase2Task_Transition7 Phase2Task_Transition7: @ 811BEA0 diff --git a/data/battle_transition.s b/data/battle_transition.s index d71fa3594..187915f92 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -142,9 +142,9 @@ sPhase2_Transition5_Funcs:: @ 83FD7F8 .4byte Phase2_Transition5_Func7 .align 2 -gUnknown_083FD814:: @ 83FD814 - .4byte sub_811BCF4 - .4byte sub_811BD60 +sPhase2_Transition6_Funcs:: @ 83FD814 + .4byte Phase2_Transition6_Func1 + .4byte Phase2_Transition6_Func2 .align 2 gUnknown_083FD81C:: @ 83FD81C diff --git a/src/battle_transition.c b/src/battle_transition.c index fb20853a5..fa911d411 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -20,6 +20,7 @@ extern const TransitionState sPhase2_Transition2_Funcs[]; extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; +extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -69,11 +70,17 @@ void sub_811D658(void); static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); + static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); -void VBlankCB0_Phase2_Transition3(void); -void VBlankCB1_Phase2_Transition3(void); -void VBlankCB_Phase2_Transition5(void); + +static void VBlankCB0_Phase2_Transition3(void); +static void VBlankCB1_Phase2_Transition3(void); + +static void VBlankCB_Phase2_Transition5(void); + +void VBlankCB_Phase2_Transition6(void); +void HBlankCB_Phase2_Transition6(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); @@ -510,7 +517,7 @@ static void Transition3_Vblank(void) REG_BLDALPHA = TRANSITION_STRUCT.field_10; } -void VBlankCB0_Phase2_Transition3(void) +static void VBlankCB0_Phase2_Transition3(void) { Transition3_Vblank(); DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); @@ -821,3 +828,168 @@ bool8 Phase2_Transition5_Func3(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +bool8 Phase2_Transition5_Func4(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 << 8) | 0xF0; + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C -= 16; + if (TRANSITION_STRUCT.field_2C <= 0) + { + TRANSITION_STRUCT.field_2E = 160; + task->tState++; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func5(struct Task* task) +{ + s16 r1, r2, r3; + vu8 var = 0; + + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); + + while (1) + { + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF, r2 = TRANSITION_STRUCT.field_28; + if (TRANSITION_STRUCT.field_2E <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.field_28; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + r3 = 0; + if (var != 0) + break; + var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.field_2E -= 8; + if (TRANSITION_STRUCT.field_2E <= 0) + { + TRANSITION_STRUCT.field_2C = r3; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.field_2A > TRANSITION_STRUCT.field_2E) + { + gUnknown_03004DE0[0][--TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + } + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); + do + { + s16 r2, r3; + + r2 = 120, r3 = TRANSITION_STRUCT.field_28; + if (TRANSITION_STRUCT.field_28 >= 120) + r2 = 0, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r2 << 8); + + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C += 16; + if (TRANSITION_STRUCT.field_28 > 120) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func7(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); + return 0; +} + +static void VBlankCB_Phase2_Transition5(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.field_2; + REG_WINOUT = TRANSITION_STRUCT.field_4; + REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +void Phase2Task_Transition6(u8 taskID) +{ + while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition6_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition6); + SetHBlankCallback(HBlankCB_Phase2_Transition6); + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + task->tState++; + return 1; +} + +bool8 Phase2_Transition6_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4, r8; + + TRANSITION_STRUCT.field_0 = 0; + + r3 = task->data[2] >> 8; + r4 = task->data[1]; + r8 = 384; + task->data[1] += 0x400; + if (task->data[2] <= 0x1FFF) + task->data[2] += 0x180; + + for (i = 0; i < 160; i++, r4 += r8) + { + s16 sinResult = Sin(r4 >> 8, r3); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + sinResult; + } + + if (++task->data[3] == 81) + { + task->data[4]++; + BeginNormalPaletteFade(-1, -2, 0, 0x10, 0); + } + + if (task->data[4] != 0 && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From f84d0541314b043fa3ef4e2b9a56809f278787f9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 17:27:54 +0200 Subject: mugshots tasks done --- asm/battle_transition.s | 1223 ------------------------------------------- data/battle_transition.s | 72 +-- include/battle_transition.h | 16 +- include/songs.h | 2 +- src/battle_transition.c | 619 ++++++++++++++++------ 5 files changed, 524 insertions(+), 1408 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 37f50ebd9..ab4e54964 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,1229 +7,6 @@ .text - thumb_func_start VBlankCB_Phase2_Transition6 -VBlankCB_Phase2_Transition6: @ 811BE3C - push {lr} - bl VBlankCB_BattleTransition - ldr r0, _0811BE64 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811BE5E - ldr r1, _0811BE68 @ =0x040000d4 - ldr r0, _0811BE6C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811BE70 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BE5E: - pop {r0} - bx r0 - .align 2, 0 -_0811BE64: .4byte 0x0200c000 -_0811BE68: .4byte 0x040000d4 -_0811BE6C: .4byte gUnknown_03004DE0 -_0811BE70: .4byte 0x800000a0 - thumb_func_end VBlankCB_Phase2_Transition6 - - thumb_func_start HBlankCB_Phase2_Transition6 -HBlankCB_Phase2_Transition6: @ 811BE74 - ldr r1, _0811BE94 @ =gUnknown_03004DE0 - ldr r0, _0811BE98 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811BE9C @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811BE94: .4byte gUnknown_03004DE0 -_0811BE98: .4byte REG_VCOUNT -_0811BE9C: .4byte REG_BG1VOFS - thumb_func_end HBlankCB_Phase2_Transition6 - - thumb_func_start Phase2Task_Transition7 -Phase2Task_Transition7: @ 811BEA0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BED0 @ =gUnknown_083FD81C - ldr r2, _0811BED4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BEB2: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BEB2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BED0: .4byte gUnknown_083FD81C -_0811BED4: .4byte gTasks - thumb_func_end Phase2Task_Transition7 - - thumb_func_start sub_811BED8 -sub_811BED8: @ 811BED8 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811BF20 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811BF24 @ =gUnknown_03005560 - movs r2, 0xF2 -_0811BEFC: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811BEFC - ldr r0, _0811BF28 @ =sub_811C004 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811BF20: .4byte 0x0200c000 -_0811BF24: .4byte gUnknown_03005560 -_0811BF28: .4byte sub_811C004 - thumb_func_end sub_811BED8 - - thumb_func_start sub_811BF2C -sub_811BF2C: @ 811BF2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r1, _0811BFBC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811BFC0 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xC] - ldrb r5, [r4, 0xC] - adds r0, 0x10 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xA] - adds r0, 0x8 - strh r0, [r4, 0xA] - movs r6, 0 - movs r0, 0x1 - mov r8, r0 -_0811BF52: - adds r0, r5, 0 - movs r1, 0x28 - bl Sin - ldrh r1, [r4, 0xA] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _0811BF68 - movs r1, 0 -_0811BF68: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811BF72 - movs r1, 0xF0 -_0811BF72: - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 8 - movs r2, 0xF1 - orrs r1, r2 - strh r1, [r7] - cmp r0, 0xEF - bgt _0811BF86 - movs r0, 0 - mov r8, r0 -_0811BF86: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, 0x2 - cmp r6, 0x9F - bls _0811BF52 - mov r1, r8 - cmp r1, 0 - beq _0811BFA4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811BFA4: - ldr r0, _0811BFBC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BFBC: .4byte 0x0200c000 -_0811BFC0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BF2C - - thumb_func_start sub_811BFC4 -sub_811BFC4: @ 811BFC4 - push {lr} - ldr r1, _0811BFF4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BFF8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BFFC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811C000 @ =Phase2Task_Transition7 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BFF4: .4byte 0x040000b0 -_0811BFF8: .4byte 0x0000c5ff -_0811BFFC: .4byte 0x00007fff -_0811C000: .4byte Phase2Task_Transition7 - thumb_func_end sub_811BFC4 - - thumb_func_start sub_811C004 -sub_811C004: @ 811C004 - push {r4,lr} - ldr r4, _0811C060 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C064 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C068 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811C06C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C03A - ldr r1, _0811C070 @ =0x040000d4 - ldr r0, _0811C074 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C078 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C03A: - ldr r1, _0811C07C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C080 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C084 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C088 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C060: .4byte 0x040000b0 -_0811C064: .4byte 0x0000c5ff -_0811C068: .4byte 0x00007fff -_0811C06C: .4byte 0x0200c000 -_0811C070: .4byte 0x040000d4 -_0811C074: .4byte gUnknown_03004DE0 -_0811C078: .4byte 0x800000a0 -_0811C07C: .4byte REG_WININ -_0811C080: .4byte gUnknown_03005560 -_0811C084: .4byte REG_WIN0H -_0811C088: .4byte 0xa2400001 - thumb_func_end sub_811C004 - - thumb_func_start Phase2Task_Transition12 -Phase2Task_Transition12: @ 811C08C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0A8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0A8: .4byte gTasks - thumb_func_end Phase2Task_Transition12 - - thumb_func_start Phase2Task_Transition13 -Phase2Task_Transition13: @ 811C0AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x1 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0C8: .4byte gTasks - thumb_func_end Phase2Task_Transition13 - - thumb_func_start Phase2Task_Transition14 -Phase2Task_Transition14: @ 811C0CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0E8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x2 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0E8: .4byte gTasks - thumb_func_end Phase2Task_Transition14 - - thumb_func_start Phase2Task_Transition15 -Phase2Task_Transition15: @ 811C0EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C108 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x3 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C108: .4byte gTasks - thumb_func_end Phase2Task_Transition15 - - thumb_func_start Phase2Task_Transition16 -Phase2Task_Transition16: @ 811C10C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C128 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x4 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C128: .4byte gTasks - thumb_func_end Phase2Task_Transition16 - - thumb_func_start sub_811C12C -sub_811C12C: @ 811C12C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811C15C @ =gUnknown_083FD828 - ldr r2, _0811C160 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811C13E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C13E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C15C: .4byte gUnknown_083FD828 -_0811C160: .4byte gTasks - thumb_func_end sub_811C12C - - thumb_func_start sub_811C164 -sub_811C164: @ 811C164 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - adds r0, r4, 0 - bl sub_811C7B0 - movs r0, 0 - strh r0, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0xC] - movs r0, 0xEF - strh r0, [r4, 0xE] - ldr r1, _0811C1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - movs r0, 0x3E - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811C1C0 @ =gUnknown_03005560 - ldr r2, _0811C1C4 @ =0x0000f0f1 -_0811C196: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811C196 - ldr r0, _0811C1C8 @ =sub_811C670 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C1BC: .4byte 0x0200c000 -_0811C1C0: .4byte gUnknown_03005560 -_0811C1C4: .4byte 0x0000f0f1 -_0811C1C8: .4byte sub_811C670 - thumb_func_end sub_811C164 - - thumb_func_start sub_811C1CC -sub_811C1CC: @ 811C1CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r8, r0 - ldr r6, _0811C284 @ =gUnknown_083FDFF4 - add r1, sp, 0x4 - mov r0, sp - bl sub_811D6A8 - ldr r0, _0811C288 @ =gUnknown_083FC348 - ldr r1, [sp, 0x4] - movs r2, 0xF0 - bl CpuSet - ldr r1, _0811C28C @ =gUnknown_083FDB00 - mov r2, r8 - movs r3, 0x26 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0811C290 @ =gUnknown_083FDB14 - ldr r0, _0811C294 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xFA - movs r2, 0xC - bl LoadPalette - movs r1, 0 - ldr r5, [sp] - ldr r0, _0811C298 @ =sub_811C77C - mov r12, r0 - movs r2, 0xF0 - lsls r2, 8 - adds r7, r2, 0 -_0811C222: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811C228: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r6] - orrs r0, r7 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r6, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1F - ble _0811C228 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811C222 - ldr r2, _0811C29C @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811C2A0 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - mov r0, r12 - bl SetHBlankCallback - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C284: .4byte gUnknown_083FDFF4 -_0811C288: .4byte gUnknown_083FC348 -_0811C28C: .4byte gUnknown_083FDB00 -_0811C290: .4byte gUnknown_083FDB14 -_0811C294: .4byte gSaveBlock2 -_0811C298: .4byte sub_811C77C -_0811C29C: .4byte 0x04000200 -_0811C2A0: .4byte REG_DISPSTAT - thumb_func_end sub_811C1CC - - thumb_func_start sub_811C2A4 -sub_811C2A4: @ 811C2A4 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C384 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811C388 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xA] - ldrb r5, [r4, 0xA] - adds r0, 0x10 - strh r0, [r4, 0xA] - movs r6, 0 -_0811C2BC: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xC] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _0811C2D2 - movs r2, 0x1 -_0811C2D2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811C2DC - movs r2, 0xF0 -_0811C2DC: - strh r2, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x4F - bls _0811C2BC - cmp r6, 0x9F - bhi _0811C334 -_0811C2F6: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xE] - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r1, 0 - bge _0811C30C - movs r2, 0 -_0811C30C: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811C316 - movs r2, 0xEF -_0811C316: - lsls r0, r2, 16 - asrs r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x9F - bls _0811C2F6 -_0811C334: - ldrh r1, [r4, 0xC] - adds r1, 0x8 - strh r1, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x8 - strh r0, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _0811C34C - movs r0, 0xF0 - strh r0, [r4, 0xC] -_0811C34C: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0811C358 - movs r0, 0 - strh r0, [r4, 0xE] -_0811C358: - ldr r0, [r4, 0xC] - cmp r0, 0xF0 - bne _0811C364 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C364: - ldr r1, _0811C384 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C384: .4byte 0x0200c000 -_0811C388: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C2A4 - - thumb_func_start sub_811C38C -sub_811C38C: @ 811C38C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, _0811C3F8 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - ldr r2, _0811C3FC @ =gUnknown_03004DE0 - adds r5, r0, 0 - movs r3, 0xF0 -_0811C39E: - strh r3, [r2] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, 0x2 - cmp r1, 0x9F - bls _0811C39E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - strh r1, [r4, 0xE] - ldrh r0, [r5, 0x18] - subs r0, 0x8 - strh r0, [r5, 0x18] - ldrh r0, [r5, 0x1A] - adds r0, 0x8 - strh r0, [r5, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r1, 0 - bl sub_811CA10 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl sub_811CA10 - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA28 - movs r0, 0x68 - bl PlaySE - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C3F8: .4byte 0x0200c000 -_0811C3FC: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C38C - - thumb_func_start sub_811C400 -sub_811C400: @ 811C400 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C438 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C42E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0x24 - ldrsh r0, [r4, r1] - bl sub_811CA28 -_0811C42E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C438: .4byte 0x0200c000 - thumb_func_end sub_811C400 - - thumb_func_start sub_811C43C -sub_811C43C: @ 811C43C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r7, _0811C4D0 @ =0x0200c000 - ldrh r0, [r7, 0x18] - subs r0, 0x8 - movs r1, 0 - mov r8, r1 - strh r0, [r7, 0x18] - ldrh r0, [r7, 0x1A] - adds r0, 0x8 - strh r0, [r7, 0x1A] - movs r1, 0x24 - ldrsh r0, [r6, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C4C4 - ldrb r0, [r7] - movs r0, 0 - strb r0, [r7] - movs r0, 0 - bl SetVBlankCallback - ldr r1, _0811C4D4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C4D8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C4DC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r4, _0811C4E0 @ =gUnknown_03004DE0 - movs r5, 0xA0 - lsls r5, 1 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r0, 0xF0 - lsls r0, 3 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - ldr r1, _0811C4E4 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, _0811C4E8 @ =REG_BLDY - mov r1, r8 - strh r1, [r0] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - strh r1, [r6, 0xE] - strh r1, [r6, 0x10] - movs r0, 0xBF - strh r0, [r7, 0xE] - ldr r0, _0811C4EC @ =sub_811C700 - bl SetVBlankCallback -_0811C4C4: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C4D0: .4byte 0x0200c000 -_0811C4D4: .4byte 0x040000b0 -_0811C4D8: .4byte 0x0000c5ff -_0811C4DC: .4byte 0x00007fff -_0811C4E0: .4byte gUnknown_03004DE0 -_0811C4E4: .4byte REG_WIN0H -_0811C4E8: .4byte REG_BLDY -_0811C4EC: .4byte sub_811C700 - thumb_func_end sub_811C43C - - thumb_func_start sub_811C4F0 -sub_811C4F0: @ 811C4F0 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C5AC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - movs r6, 0x1 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrh r2, [r4, 0x10] - movs r3, 0x10 - ldrsh r0, [r4, r3] - adds r7, r1, 0 - cmp r0, 0x4F - bgt _0811C51A - adds r0, r2, 0x2 - strh r0, [r4, 0x10] -_0811C51A: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _0811C526 - movs r0, 0x50 - strh r0, [r4, 0x10] -_0811C526: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - movs r1, 0x1 - ands r0, r1 - ldrh r2, [r4, 0x10] - cmp r0, 0 - beq _0811C58C - movs r3, 0 - lsls r0, r2, 16 - movs r6, 0 - cmp r0, 0 - blt _0811C58C - movs r2, 0x50 - mov r12, r2 - ldr r5, _0811C5B0 @ =gUnknown_03004DE0 -_0811C546: - lsls r0, r3, 16 - asrs r2, r0, 16 - mov r3, r12 - subs r1, r3, r2 - adds r0, r2, 0 - adds r0, 0x50 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - asrs r1, 15 - adds r1, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C568 - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C568: - lsls r0, r3, 16 - asrs r0, 15 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C57A - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C57A: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - ldrh r2, [r4, 0x10] - cmp r0, r1 - ble _0811C546 -_0811C58C: - cmp r2, 0x50 - bne _0811C59A - cmp r6, 0 - bne _0811C59A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C59A: - ldrb r0, [r7] - adds r0, 0x1 - ldrb r1, [r7] - strb r0, [r7] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C5AC: .4byte 0x0200c000 -_0811C5B0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C4F0 - - thumb_func_start sub_811C5B4 -sub_811C5B4: @ 811C5B4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _0811C5E0 @ =0x0200c000 - ldrb r0, [r4] - movs r6, 0 - strb r6, [r4] - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811C5E4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - movs r0, 0xFF - strh r0, [r4, 0xE] - strh r6, [r5, 0xE] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811C5E0: .4byte 0x0200c000 -_0811C5E4: .4byte 0x00007fff - thumb_func_end sub_811C5B4 - - thumb_func_start sub_811C5E8 -sub_811C5E8: @ 811C5E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C628 @ =0x0200c000 - ldrb r0, [r5] - movs r0, 0 - strb r0, [r5] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811C62C @ =gUnknown_03004DE0 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0xF - ble _0811C616 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C616: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C628: .4byte 0x0200c000 -_0811C62C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C5E8 - - thumb_func_start sub_811C630 -sub_811C630: @ 811C630 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C664 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C668 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C66C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, [r4] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C664: .4byte 0x040000b0 -_0811C668: .4byte 0x0000c5ff -_0811C66C: .4byte 0x00007fff - thumb_func_end sub_811C630 - - thumb_func_start sub_811C670 -sub_811C670: @ 811C670 - push {r4,lr} - ldr r4, _0811C6D4 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C6D8 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C6DC @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811C6E0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C6A6 - ldr r1, _0811C6E4 @ =0x040000d4 - ldr r0, _0811C6E8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C6EC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C6A6: - ldr r1, _0811C6F0 @ =REG_BG0VOFS - ldrh r0, [r2, 0x1C] - strh r0, [r1] - adds r1, 0x36 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C6F4 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C6F8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C6FC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C6D4: .4byte 0x040000b0 -_0811C6D8: .4byte 0x0000c5ff -_0811C6DC: .4byte 0x00007fff -_0811C6E0: .4byte 0x0200c000 -_0811C6E4: .4byte 0x040000d4 -_0811C6E8: .4byte gUnknown_03004DE0 -_0811C6EC: .4byte 0x800000a0 -_0811C6F0: .4byte REG_BG0VOFS -_0811C6F4: .4byte gUnknown_03005560 -_0811C6F8: .4byte REG_WIN0H -_0811C6FC: .4byte 0xa2400001 - thumb_func_end sub_811C670 - - thumb_func_start sub_811C700 -sub_811C700: @ 811C700 - push {r4,lr} - ldr r4, _0811C750 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C754 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C758 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811C75C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C736 - ldr r1, _0811C760 @ =0x040000d4 - ldr r0, _0811C764 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C768 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C736: - ldr r1, _0811C76C @ =REG_BLDCNT - ldrh r0, [r2, 0xE] - strh r0, [r1] - ldr r0, _0811C770 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C774 @ =REG_BLDY - str r0, [r4, 0x4] - ldr r0, _0811C778 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C750: .4byte 0x040000b0 -_0811C754: .4byte 0x0000c5ff -_0811C758: .4byte 0x00007fff -_0811C75C: .4byte 0x0200c000 -_0811C760: .4byte 0x040000d4 -_0811C764: .4byte gUnknown_03004DE0 -_0811C768: .4byte 0x800000a0 -_0811C76C: .4byte REG_BLDCNT -_0811C770: .4byte gUnknown_03005560 -_0811C774: .4byte REG_BLDY -_0811C778: .4byte 0xa2400001 - thumb_func_end sub_811C700 - - thumb_func_start sub_811C77C -sub_811C77C: @ 811C77C - push {lr} - ldr r0, _0811C790 @ =REG_VCOUNT - ldrh r0, [r0] - cmp r0, 0x4F - bhi _0811C79C - ldr r0, _0811C794 @ =REG_BG0HOFS - ldr r1, _0811C798 @ =0x0200c000 - ldrh r1, [r1, 0x18] - b _0811C7A2 - .align 2, 0 -_0811C790: .4byte REG_VCOUNT -_0811C794: .4byte REG_BG0HOFS -_0811C798: .4byte 0x0200c000 -_0811C79C: - ldr r0, _0811C7A8 @ =REG_BG0HOFS - ldr r1, _0811C7AC @ =0x0200c000 - ldrh r1, [r1, 0x1A] -_0811C7A2: - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0811C7A8: .4byte REG_BG0HOFS -_0811C7AC: .4byte 0x0200c000 - thumb_func_end sub_811C77C thumb_func_start sub_811C7B0 sub_811C7B0: @ 811C7B0 diff --git a/data/battle_transition.s b/data/battle_transition.s index 187915f92..94b242ed3 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -69,11 +69,11 @@ sPhase2_Tasks:: @ 83FD750 .4byte Phase2Task_Transition9 .4byte Phase2Task_Transition10 .4byte Phase2Task_Transition11 - .4byte Phase2Task_Transition12 - .4byte Phase2Task_Transition13 - .4byte Phase2Task_Transition14 - .4byte Phase2Task_Transition15 - .4byte Phase2Task_Transition16 + .4byte Phase2Task_Transition_Sydney + .4byte Phase2Task_Transition_Phoebe + .4byte Phase2Task_Transition_Glacia + .4byte Phase2Task_Transition_Drake + .4byte Phase2Task_Transition_Steven .align 2 sMainTransitionPhases:: @ 83FD794 @@ -147,23 +147,23 @@ sPhase2_Transition6_Funcs:: @ 83FD814 .4byte Phase2_Transition6_Func2 .align 2 -gUnknown_083FD81C:: @ 83FD81C - .4byte sub_811BED8 - .4byte sub_811BF2C - .4byte sub_811BFC4 +sPhase2_Transition7_Funcs:: @ 83FD81C + .4byte Phase2_Transition7_Func1 + .4byte Phase2_Transition7_Func2 + .4byte Phase2_Transition7_Func3 .align 2 -gUnknown_083FD828:: @ 83FD828 - .4byte sub_811C164 - .4byte sub_811C1CC - .4byte sub_811C2A4 - .4byte sub_811C38C - .4byte sub_811C400 - .4byte sub_811C43C - .4byte sub_811C4F0 - .4byte sub_811C5B4 - .4byte sub_811C5E8 - .4byte sub_811C630 +sPhase2_Mugshot_Transition_Funcs:: @ 83FD828 + .4byte Phase2_Mugshot_Func1 + .4byte Phase2_Mugshot_Func2 + .4byte Phase2_Mugshot_Func3 + .4byte Phase2_Mugshot_Func4 + .4byte Phase2_Mugshot_Func5 + .4byte Phase2_Mugshot_Func6 + .4byte Phase2_Mugshot_Func7 + .4byte Phase2_Mugshot_Func8 + .4byte Phase2_Mugshot_Func9 + .4byte Phase2_Mugshot_Func10 gUnknown_083FD850:: @ 83FD850 .byte TRAINER_PIC_SIDNEY @@ -342,45 +342,45 @@ gFieldEffectObjectPaletteInfo10:: @ 83FDA18 obj_pal gFieldEffectObjectPalette10, 0x1009 .align 2 -Unknown_83FDA20: +sMugshotPal_Sydney: .incbin "graphics/battle_transitions/sidney_bg.gbapal" .align 2 -Unknown_83FDA40: +sMugshotPal_Phoebe: .incbin "graphics/battle_transitions/phoebe_bg.gbapal" .align 2 -Unknown_83FDA60: +sMugshotPal_Glacia: .incbin "graphics/battle_transitions/glacia_bg.gbapal" .align 2 -Unknown_83FDA80: +sMugshotPal_Drake: .incbin "graphics/battle_transitions/drake_bg.gbapal" .align 2 -Unknown_83FDAA0: +sMugshotPal_Steven: .incbin "graphics/battle_transitions/steven_bg.gbapal" .align 2 -Unknown_83FDAC0: +sMugshotPal_Brendan: .incbin "graphics/battle_transitions/brendan_bg.gbapal" .align 2 -Unknown_83FDAE0: +sMugshotPal_May: .incbin "graphics/battle_transitions/may_bg.gbapal" .align 2 -gUnknown_083FDB00:: @ 83FDB00 - .4byte Unknown_83FDA20 - .4byte Unknown_83FDA40 - .4byte Unknown_83FDA60 - .4byte Unknown_83FDA80 - .4byte Unknown_83FDAA0 +sOpponentMugshotsPals:: @ 83FDB00 + .4byte sMugshotPal_Sydney + .4byte sMugshotPal_Phoebe + .4byte sMugshotPal_Glacia + .4byte sMugshotPal_Drake + .4byte sMugshotPal_Steven .align 2 -gUnknown_083FDB14:: @ 83FDB14 - .4byte Unknown_83FDAC0 - .4byte Unknown_83FDAE0 +sPlayerMugshotsPals:: @ 83FDB14 + .4byte sMugshotPal_Brendan + .4byte sMugshotPal_May .align 2 UnusedTrainerPalette: diff --git a/include/battle_transition.h b/include/battle_transition.h index bc78bd06e..a709a2f7b 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -5,6 +5,20 @@ void sub_811AABC(u8); void sub_811AAD8(u8); bool8 IsBattleTransitionDone(void); -#define B_TRANSITION_WILD 8 +enum // TRANSITION_MUGSHOT +{ + MUGSHOT_SYDNEY, + MUGSHOT_PHOEBE, + MUGSHOT_GLACIA, + MUGSHOT_DRAKE, + MUGSHOT_STEVEN, +}; + +#define B_TRANSITION_WILD 8 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 13 +#define B_TRANSITION_DRAKE 14 +#define B_TRANSITION_STEVEN 15 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/songs.h b/include/songs.h index 8cf7ee5e9..a287f6436 100644 --- a/include/songs.h +++ b/include/songs.h @@ -107,7 +107,7 @@ enum SE_C_PIKON, SE_REAPOKE, SE_OP_BASYU, - SE_BT_START, + /*0x68*/ SE_BT_START, SE_DENDOU, SE_JIHANKI, SE_TAMA, diff --git a/src/battle_transition.c b/src/battle_transition.c index fa911d411..5cb9de1bb 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_transition.h" #include "main.h" #include "rom4.h" #include "task.h" @@ -7,6 +8,8 @@ #include "field_effect.h" #include "rng.h" #include "sprite.h" +#include "sound.h" +#include "songs.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -21,6 +24,8 @@ extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; +extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -34,14 +39,14 @@ struct TransitionData { vs8 field_0; // now that's interesting s8 field_1; - s16 field_2; - s16 field_4; + s16 WININ; + s16 WINOUT; s16 field_6; - s16 field_8; + s16 WIN0V; s16 field_A; s16 field_C; - s16 field_E; - s16 field_10; + s16 BLDCNT; + s16 BLDALPHA; s16 field_12; s16 field_14; s16 field_16; @@ -79,8 +84,14 @@ static void VBlankCB1_Phase2_Transition3(void); static void VBlankCB_Phase2_Transition5(void); -void VBlankCB_Phase2_Transition6(void); -void HBlankCB_Phase2_Transition6(void); +static void VBlankCB_Phase2_Transition6(void); +static void HBlankCB_Phase2_Transition6(void); + +static void VBlankCB_Phase2_Transition7(void); + +static void VBlankCB0_Phase2_Mugshots(void); +static void VBlankCB1_Phase2_Mugshots(void); +static void HBlankCB_Phase2_Mugshots(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); @@ -89,6 +100,12 @@ void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void Phase2Task_MugShotTransition(u8 taskID); +void sub_811C7B0(struct Task* task); + +void sub_811CA10(s16 spriteID, s16 value); +void sub_811CA28(s16 spriteID); +s16 sub_811CA44(s16 spriteID); void sub_811AABC(u8 transitionID) { @@ -370,12 +387,12 @@ bool8 Phase2_Transition3_Func1(struct Task* task) task->data[2] = 0; task->data[4] = 0; task->data[5] = 0x4000; - TRANSITION_STRUCT.field_2 = 63; - TRANSITION_STRUCT.field_4 = 0; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; TRANSITION_STRUCT.field_6 = 240; - TRANSITION_STRUCT.field_8 = 160; - TRANSITION_STRUCT.field_E = 0x3F41; - TRANSITION_STRUCT.field_10 = task->data[1] * 256; // 16 * 256 = 0x1000 + TRANSITION_STRUCT.WIN0V = 160; + TRANSITION_STRUCT.BLDCNT = 0x3F41; + TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000 for (i = 0; i < 160; i++) { @@ -424,7 +441,7 @@ bool8 Phase2_Transition3_Func3(struct Task* task) task->data[2]++; task->data[3] = 2; } - TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; if (task->data[2] > 15) task->tState++; task->data[4] += 8; @@ -444,7 +461,7 @@ bool8 Phase2_Transition3_Func4(struct Task* task) task->data[1]--; task->data[3] = 2; } - TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; if (task->data[1] == 0) task->tState++; task->data[4] += 8; @@ -510,11 +527,11 @@ static void Transition3_Vblank(void) VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.field_0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); - REG_WININ = TRANSITION_STRUCT.field_2; - REG_WINOUT = TRANSITION_STRUCT.field_4; - REG_WIN0V = TRANSITION_STRUCT.field_8; - REG_BLDCNT = TRANSITION_STRUCT.field_E; - REG_BLDALPHA = TRANSITION_STRUCT.field_10; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; } static void VBlankCB0_Phase2_Transition3(void) @@ -601,7 +618,12 @@ bool8 FldEff_Pokeball(void) return 0; } -#ifdef NONMATCHING +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + void sub_811B720(struct Sprite* sprite) { s16 arr0[2]; @@ -611,135 +633,31 @@ void sub_811B720(struct Sprite* sprite) sprite->data1--; else { - if (sprite->pos1.x < 240) + if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240) { - s32 posY = sprite->pos1.y >> 3; - s32 posX = sprite->pos1.x >> 3; - if ((posX >> 3) != sprite->data2) + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data2) { u32 var; + u16 *ptr; - sprite->data2 = (posX); - var = (((REG_BG0CNT >> 8) & 0x1F) << 10); + sprite->data2 = posX; + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + ptr = (u16 *)(VRAM + var); - vram[MULTI_DIM_ARR(posY - 2, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY - 1, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY - 0, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY + 0, 32, posX)] = 0xF001; + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); } } sprite->pos1.x += arr0[sprite->data0]; - if (sprite->pos1.x + 15 > 270) + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) FieldEffectStop(sprite, FLDEFF_POKEBALL); } } -#else -__attribute__((naked)) -void sub_811B720(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - adds r4, r0, 0\n\ - ldr r1, _0811B740 @ =gUnknown_083FD7F2\n\ - mov r0, sp\n\ - movs r2, 0x4\n\ - bl memcpy\n\ - ldrh r1, [r4, 0x30]\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - beq _0811B744\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _0811B7D6\n\ - .align 2, 0\n\ -_0811B740: .4byte gUnknown_083FD7F2\n\ -_0811B744:\n\ - ldrh r0, [r4, 0x20]\n\ - lsls r1, r0, 16\n\ - lsrs r0, r1, 16\n\ - cmp r0, 0xF0\n\ - bhi _0811B7B2\n\ - asrs r0, r1, 19\n\ - lsls r0, 16\n\ - ldrh r1, [r4, 0x22]\n\ - lsls r1, 16\n\ - asrs r1, 19\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - lsrs r2, r0, 16\n\ - asrs r5, r0, 16\n\ - movs r3, 0x32\n\ - ldrsh r0, [r4, r3]\n\ - cmp r5, r0\n\ - beq _0811B7B2\n\ - strh r2, [r4, 0x32]\n\ - ldr r0, _0811B7E0 @ =REG_BG0CNT\n\ - ldrh r2, [r0]\n\ - lsrs r2, 8\n\ - movs r0, 0x1F\n\ - ands r2, r0\n\ - lsls r2, 11\n\ - movs r0, 0xC0\n\ - lsls r0, 19\n\ - adds r2, r0\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - subs r0, r1, 0x2\n\ - lsls r0, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - ldr r6, _0811B7E4 @ =0x0000f001\n\ - adds r3, r6, 0\n\ - strh r3, [r0]\n\ - subs r0, r1, 0x1\n\ - lsls r0, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - strh r3, [r0]\n\ - lsls r0, r1, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - strh r3, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 5\n\ - adds r1, r5\n\ - lsls r1, 1\n\ - adds r1, r2\n\ - strh r3, [r1]\n\ -_0811B7B2:\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 1\n\ - add r0, sp\n\ - ldrh r0, [r0]\n\ - ldrh r2, [r4, 0x20]\n\ - adds r0, r2\n\ - strh r0, [r4, 0x20]\n\ - adds r0, 0xF\n\ - lsls r0, 16\n\ - movs r1, 0x87\n\ - lsls r1, 17\n\ - cmp r0, r1\n\ - bls _0811B7D6\n\ - adds r0, r4, 0\n\ - movs r1, 0x2D\n\ - bl FieldEffectStop\n\ -_0811B7D6:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0811B7E0: .4byte 0x04000008\n\ -_0811B7E4: .4byte 0x0000f001\n\ - .syntax divided"); -} -#endif // NONMATCHING void Phase2Task_Transition5(u8 taskID) { @@ -753,10 +671,10 @@ bool8 Phase2_Transition5_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); - TRANSITION_STRUCT.field_2 = 0; - TRANSITION_STRUCT.field_4 = 63; + TRANSITION_STRUCT.WININ = 0; + TRANSITION_STRUCT.WINOUT = 63; TRANSITION_STRUCT.field_6 = -3855; - TRANSITION_STRUCT.field_8 = 160; + TRANSITION_STRUCT.WIN0V = 160; for (i = 0; i < 160; i++) { @@ -927,9 +845,9 @@ static void VBlankCB_Phase2_Transition5(void) VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.field_0 != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); - REG_WININ = TRANSITION_STRUCT.field_2; - REG_WINOUT = TRANSITION_STRUCT.field_4; - REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; REG_WIN0H = gUnknown_03004DE0[1][0]; DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } @@ -964,7 +882,8 @@ bool8 Phase2_Transition6_Func1(struct Task* task) bool8 Phase2_Transition6_Func2(struct Task* task) { u8 i; - u16 r3, r4, r8; + s16 r3; + u16 r4, r8; TRANSITION_STRUCT.field_0 = 0; @@ -977,8 +896,11 @@ bool8 Phase2_Transition6_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += r8) { - s16 sinResult = Sin(r4 >> 8, r3); - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + sinResult; + // todo: fix the asm + s16 var = r4 >> 8; + asm(""); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + asm(""); } if (++task->data[3] == 81) @@ -993,3 +915,406 @@ bool8 Phase2_Transition6_Func2(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +static void VBlankCB_Phase2_Transition6(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition6(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +void Phase2Task_Transition7(u8 taskID) +{ + while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition7_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 242; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition7); + + task->tState++; + return 1; +} + +bool8 Phase2_Transition7_Func2(struct Task* task) +{ + u8 i, r5; + u16* toStore; + bool8 nextFunc; + + TRANSITION_STRUCT.field_0 = 0; + toStore = gUnknown_03004DE0[0]; + r5 = task->data[2]; + task->data[2] += 16; + task->data[1] += 8; + + for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++) + { + s16 value = task->data[1] + Sin(r5, 40); + if (value < 0) + value = 0; + if (value > 240) + value = 240; + *toStore = (value << 8) | (0xF1); + if (value < 240) + nextFunc = FALSE; + } + if (nextFunc) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition7_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); + return 0; +} + +static void VBlankCB_Phase2_Transition7(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +#define tMugshotID data[15] + +void Phase2Task_Transition_Sydney(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Phoebe(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Glacia(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Drake(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Steven(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_MugShotTransition(u8 taskID) +{ + while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Mugshot_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + sub_811C7B0(task); + + task->data[1] = 0; + task->data[2] = 1; + task->data[3] = 239; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 62; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0xF0F1; + } + + SetVBlankCallback(VBlankCB0_Phase2_Mugshots); + + task->tState++; + return 0; +} + +extern const u8 gUnknown_083FC348[]; +extern const u16 gUnknown_083FDFF4[]; +extern const u8 * const sOpponentMugshotsPals[]; +extern const u8 * const sPlayerMugshotsPals[2]; + +bool8 Phase2_Mugshot_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* var; + + var = gUnknown_083FDFF4; + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FC348, dst2, 0xF0); + LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++, var++) + { + dst1[i * 32 + j] = *var | 0xF000; + } + } + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + SetHBlankCallback(HBlankCB_Phase2_Mugshots); + task->tState++; + return 0; +} + +bool8 Phase2_Mugshot_Func3(struct Task* task) +{ + u8 i, r5; + u16* toStore; + s16 value; + s32 mergedValue; + + TRANSITION_STRUCT.field_0 = 0; + + toStore = gUnknown_03004DE0[0]; + r5 = task->data[1]; + task->data[1] += 0x10; + + for (i = 0; i < 80; i++, toStore++, r5 += 0x10) + { + value = task->data[2] + Sin(r5, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; i++, toStore++, r5 += 0x10) + { + value = task->data[3] - Sin(r5, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + + task->data[2] += 8; + task->data[3] -= 8; + if (task->data[2] > 0xF0) + task->data[2] = 0xF0; + if (task->data[3] < 0) + task->data[3] = 0; + mergedValue = *(s32*)(&task->data[2]); + if (mergedValue == 0xF0) + task->tState++; + + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func4(struct Task* task) +{ + u8 i; + u16* toStore; + + TRANSITION_STRUCT.field_0 = 0; + + for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + { + *toStore = 0xF0; + } + + task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + sub_811CA10(task->data[13], 0); + sub_811CA10(task->data[14], 1); + sub_811CA28(task->data[13]); + + PlaySE(SE_BT_START); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->data[13])) + { + task->tState++; + sub_811CA28(task->data[14]); + } + return 0; +} + +bool8 Phase2_Mugshot_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->data[14])) + { + TRANSITION_STRUCT.field_0 = 0; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gUnknown_03004DE0[0], 0, 0x140); + memset(gUnknown_03004DE0[1], 0, 0x140); + REG_WIN0H = 0xF0; + REG_BLDY = 0; + task->tState++; + task->data[3] = 0; + task->data[4] = 0; + TRANSITION_STRUCT.BLDCNT = 0xBF; + SetVBlankCallback(VBlankCB1_Phase2_Mugshots); + } + return 0; +} + +bool8 Phase2_Mugshot_Func7(struct Task* task) +{ + bool32 r6; + + TRANSITION_STRUCT.field_0 = 0; + r6 = TRUE; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + if (task->data[4] < 0x50) + task->data[4] += 2; + if (task->data[4] > 0x50) + task->data[4] = 0x50; + + if (++task->data[3] & 1) + { + s16 i; + for (i = 0, r6 = FALSE; i <= task->data[4]; i++) + { + s16 index1 = 0x50 - i; + s16 index2 = 0x50 + i; + if (gUnknown_03004DE0[0][index1] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index1]++; + } + if (gUnknown_03004DE0[0][index2] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index2]++; + } + } + } + + if (task->data[4] == 0x50 && !r6) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func8(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + BlendPalettes(-1, 0x10, 0x7FFF); + TRANSITION_STRUCT.BLDCNT = 0xFF; + task->data[3] = 0; + + task->tState++; + return 1; +} + +bool8 Phase2_Mugshot_Func9(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + task->data[3]++; + memset(gUnknown_03004DE0[0], task->data[3], 0x140); + if (task->data[3] > 15) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func10(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(task->func)); + return 0; +} + +static void VBlankCB0_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BG0VOFS = TRANSITION_STRUCT.field_1C; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); +} + +static void HBlankCB_Phase2_Mugshots(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = TRANSITION_STRUCT.field_18; + else + REG_BG0HOFS = TRANSITION_STRUCT.field_1A; +} -- cgit v1.2.3 From 169714a6d4f2fcaef2f55baf6954620f8b9655e7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 21:32:41 +0200 Subject: mugshots done, moved some data to C --- asm/battle_transition.s | 369 +------------------------------------------- data/battle_transition.s | 78 +--------- include/battle_transition.h | 8 +- include/field_effect.h | 2 +- ld_script.txt | 1 + src/battle_transition.c | 283 ++++++++++++++++++++++++++------- src/field_effect.c | 10 +- src/main_menu.c | 4 +- 8 files changed, 242 insertions(+), 513 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index ab4e54964..cc3c98062 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,371 +7,6 @@ .text - - thumb_func_start sub_811C7B0 -sub_811C7B0: @ 811C7B0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, _0811C8EC @ =gUnknown_083FD850 - movs r2, 0x26 - ldrsh r1, [r4, r2] - mov r8, r1 - add r0, r8 - ldrb r0, [r0] - ldr r2, _0811C8F0 @ =gUnknown_083FD86A - lsls r1, 2 - mov r8, r1 - adds r1, r2 - ldrh r1, [r1] - subs r1, 0x20 - lsls r1, 16 - asrs r1, 16 - adds r2, 0x2 - add r2, r8 - ldrh r2, [r2] - adds r2, 0x2A - lsls r2, 16 - asrs r2, 16 - ldr r5, _0811C8F4 @ =0x0200c03c - str r5, [sp] - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _0811C8F8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0x88 - lsls r1, 1 - str r5, [sp] - movs r2, 0x6A - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r3, 0x22 - ldrsh r0, [r4, r3] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r1, _0811C8FC @ =gSprites - adds r5, r1 - movs r2, 0x24 - ldrsh r0, [r4, r2] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - adds r6, r1 - ldr r0, _0811C900 @ =sub_811C90C - str r0, [r5, 0x1C] - str r0, [r6, 0x1C] - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - orrs r0, r1 - strb r0, [r6, 0x1] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1F - mov r9, r3 - mov r4, r9 - ands r0, r4 - lsls r0, 1 - ldrb r2, [r5, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - mov r1, r9 - ands r0, r1 - lsls r0, 1 - ldrb r1, [r6, 0x3] - ands r4, r1 - orrs r4, r0 - strb r4, [r6, 0x3] - ldrb r2, [r5, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x40 - orrs r0, r2 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - ands r1, r0 - orrs r1, r2 - strb r1, [r6, 0x1] - ldrb r0, [r5, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r0, [r6, 0x3] - orrs r0, r1 - strb r0, [r6, 0x3] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r2, _0811C904 @ =gUnknown_083FD856 - mov r3, r8 - adds r1, r3, r2 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r2, 0x2 - add r8, r2 - mov r3, r8 - movs r4, 0 - ldrsh r2, [r3, r4] - movs r3, 0 - bl SetOamMatrixRotationScaling - ldrb r0, [r6, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _0811C908 @ =0xfffffe00 - movs r2, 0x80 - lsls r2, 2 - movs r3, 0 - bl SetOamMatrixRotationScaling - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811C8EC: .4byte gUnknown_083FD850 -_0811C8F0: .4byte gUnknown_083FD86A -_0811C8F4: .4byte 0x0200c03c -_0811C8F8: .4byte gSaveBlock2 -_0811C8FC: .4byte gSprites -_0811C900: .4byte sub_811C90C -_0811C904: .4byte gUnknown_083FD856 -_0811C908: .4byte 0xfffffe00 - thumb_func_end sub_811C7B0 - - thumb_func_start sub_811C90C -sub_811C90C: @ 811C90C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C930 @ =gUnknown_083FD880 -_0811C912: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C912 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C930: .4byte gUnknown_083FD880 - thumb_func_end sub_811C90C - - thumb_func_start sub_811C934 -sub_811C934: @ 811C934 - movs r0, 0 - bx lr - thumb_func_end sub_811C934 - - thumb_func_start sub_811C938 -sub_811C938: @ 811C938 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _0811C97C @ =gUnknown_083FD89C - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811C980 @ =gUnknown_083FD8A0 - adds r0, r4, 0 - movs r2, 0x4 - bl memcpy - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x30] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r4, r0 - ldrh r0, [r4] - strh r0, [r5, 0x32] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C97C: .4byte gUnknown_083FD89C -_0811C980: .4byte gUnknown_083FD8A0 - thumb_func_end sub_811C938 - - thumb_func_start sub_811C984 -sub_811C984: @ 811C984 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - ldrh r3, [r1, 0x20] - adds r2, r0, r3 - strh r2, [r1, 0x20] - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0811C9A2 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x84 - bgt _0811C9B0 - b _0811C9AA -_0811C9A2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x67 - ble _0811C9B0 -_0811C9AA: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_0811C9B0: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C984 - - thumb_func_start sub_811C9B8 -sub_811C9B8: @ 811C9B8 - push {lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x32] - ldrh r0, [r2, 0x30] - adds r1, r3, r0 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - lsls r1, 16 - cmp r1, 0 - bne _0811C9DE - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - negs r0, r3 - strh r0, [r2, 0x32] - movs r0, 0x1 - strh r0, [r2, 0x3A] -_0811C9DE: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9B8 - - thumb_func_start sub_811C9E4 -sub_811C9E4: @ 811C9E4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x20] - adds r1, r0 - strh r1, [r2, 0x20] - adds r1, 0x1F - lsls r1, 16 - movs r0, 0x97 - lsls r0, 17 - cmp r1, r0 - bls _0811CA08 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_0811CA08: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9E4 - - thumb_func_start sub_811CA10 -sub_811CA10: @ 811CA10 - ldr r3, _0811CA24 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - strh r1, [r2, 0x3C] - bx lr - .align 2, 0 -_0811CA24: .4byte gSprites - thumb_func_end sub_811CA10 - - thumb_func_start sub_811CA28 -sub_811CA28: @ 811CA28 - ldr r2, _0811CA40 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - bx lr - .align 2, 0 -_0811CA40: .4byte gSprites - thumb_func_end sub_811CA28 - - thumb_func_start sub_811CA44 -sub_811CA44: @ 811CA44 - ldr r2, _0811CA58 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x3A - ldrsh r0, [r1, r2] - bx lr - .align 2, 0 -_0811CA58: .4byte gSprites - thumb_func_end sub_811CA44 - thumb_func_start Phase2Task_Transition8 Phase2Task_Transition8: @ 811CA5C push {r4,r5,lr} @@ -1938,7 +1573,7 @@ _0811D64E: thumb_func_start sub_811D658 sub_811D658: @ 811D658 push {lr} - ldr r0, _0811D674 @ =gUnknown_083FD708 + ldr r0, _0811D674 @ =sTransitionStructPtr ldr r0, [r0] movs r1, 0 movs r2, 0x3C @@ -1949,7 +1584,7 @@ sub_811D658: @ 811D658 pop {r0} bx r0 .align 2, 0 -_0811D674: .4byte gUnknown_083FD708 +_0811D674: .4byte sTransitionStructPtr _0811D678: .4byte 0x0200c014 thumb_func_end sub_811D658 diff --git a/data/battle_transition.s b/data/battle_transition.s index 94b242ed3..ae69888d1 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -3,79 +3,7 @@ .section .rodata - .align 2 -gUnknown_083FBB88:: @ 83FBB88 - .incbin "graphics/battle_transitions/big_pokeball.4bpp" - - .align 2 -gUnknown_083FC108:: @ 83FC108 - .incbin "graphics/battle_transitions/pokeball_trail.4bpp" - - .align 2 -gSpriteImage_83FC148:: @ 83FC148 - .incbin "graphics/battle_transitions/pokeball.4bpp" - - .align 2 -gUnknown_083FC348:: @ 83FC348 - .incbin "graphics/battle_transitions/elite_four_bg.4bpp" - - .align 2 -gSpriteImage_83FC528:: @ 83FC528 - .incbin "graphics/battle_transitions/unused_brendan.4bpp" - - .align 2 -gSpriteImage_83FCD28:: @ 83FCD28 - .incbin "graphics/battle_transitions/unused_lass.4bpp" - - .align 2 -gUnknown_083FD528:: @ 83FD528 - .incbin "graphics/battle_transitions/shrinking_box.4bpp" - - .align 2 -gUnknown_083FD708:: @ 83FD708 - .4byte 0x0200c000 - .align 2 -sPhase1_Tasks:: @ 83FD70C - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - .4byte Phase1Task_TransitionAll - - .align 2 -sPhase2_Tasks:: @ 83FD750 - .4byte Phase2Task_Transition0 - .4byte Phase2Task_Transition1 - .4byte Phase2Task_Transition2 - .4byte Phase2Task_Transition3 - .4byte Phase2Task_Transition4 - .4byte Phase2Task_Transition5 - .4byte Phase2Task_Transition6 - .4byte Phase2Task_Transition7 - .4byte Phase2Task_Transition8 - .4byte Phase2Task_Transition9 - .4byte Phase2Task_Transition10 - .4byte Phase2Task_Transition11 - .4byte Phase2Task_Transition_Sydney - .4byte Phase2Task_Transition_Phoebe - .4byte Phase2Task_Transition_Glacia - .4byte Phase2Task_Transition_Drake - .4byte Phase2Task_Transition_Steven - - .align 2 sMainTransitionPhases:: @ 83FD794 .4byte Transition_Phase1 .4byte Transition_WaitForPhase1 @@ -165,7 +93,7 @@ sPhase2_Mugshot_Transition_Funcs:: @ 83FD828 .4byte Phase2_Mugshot_Func9 .4byte Phase2_Mugshot_Func10 -gUnknown_083FD850:: @ 83FD850 +sMugshotsTrainerPicIDsTable:: @ 83FD850 .byte TRAINER_PIC_SIDNEY .byte TRAINER_PIC_PHOEBE .byte TRAINER_PIC_GLACIA @@ -173,7 +101,7 @@ gUnknown_083FD850:: @ 83FD850 .byte TRAINER_PIC_STEVEN .align 1 -gUnknown_083FD856:: @ 83FD856 +sMugshotsOpponentRotationScales:: @ 83FD856 .2byte 0x200, 0x200 .2byte 0x200, 0x200 .2byte 0x1B0, 0x1B0 @@ -181,7 +109,7 @@ gUnknown_083FD856:: @ 83FD856 .2byte 0x188, 0x188 .align 1 -gUnknown_083FD86A:: @ 83FD86A +sMugshotsOpponentCoords:: @ 83FD86A .2byte 0, 0 .2byte 0, 0 .2byte -4, 4 diff --git a/include/battle_transition.h b/include/battle_transition.h index a709a2f7b..597e9724d 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -5,6 +5,8 @@ void sub_811AABC(u8); void sub_811AAD8(u8); bool8 IsBattleTransitionDone(void); +#define TRANSITIONS_NO 17 + enum // TRANSITION_MUGSHOT { MUGSHOT_SYDNEY, @@ -17,8 +19,8 @@ enum // TRANSITION_MUGSHOT #define B_TRANSITION_WILD 8 #define B_TRANSITION_SYDNEY 12 #define B_TRANSITION_PHOEBE 13 -#define B_TRANSITION_GLACIA 13 -#define B_TRANSITION_DRAKE 14 -#define B_TRANSITION_STEVEN 15 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/field_effect.h b/include/field_effect.h index ea02c4131..f43b15afb 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -244,7 +244,7 @@ void sub_808948C(struct Task *); void sub_80894C4(struct Task *); void fishE(struct Task *); -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer); +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest); u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority); u8 CreateMonSprite_PicBox(u16, s16, s16, u8); diff --git a/ld_script.txt b/ld_script.txt index cdc88ac2b..80b882108 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -444,6 +444,7 @@ SECTIONS { data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); + src/battle_transition.o(.rodata); data/battle_transition.o(.rodata); data/battle_811DA74.o(.rodata); data/battle_message.o(.rodata); diff --git a/src/battle_transition.c b/src/battle_transition.c index 5cb9de1bb..8d87f12f6 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -14,25 +14,8 @@ void sub_807DE10(void); void dp12_8087EA4(void); -typedef bool8 (*TransitionState)(struct Task* task); - -extern const TransitionState sMainTransitionPhases[]; -extern const TransitionState sPhase2_Transition0_Funcs[]; -extern const TransitionState sPhase2_Transition1_Funcs[]; -extern const TransitionState sPhase2_Transition2_Funcs[]; -extern const TransitionState sPhase2_Transition3_Funcs[]; -extern const TransitionState sPhase2_Transition4_Funcs[]; -extern const TransitionState sPhase2_Transition5_Funcs[]; -extern const TransitionState sPhase2_Transition6_Funcs[]; -extern const TransitionState sPhase2_Transition7_Funcs[]; -extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; - -extern const TaskFunc sPhase1_Tasks[]; -extern const TaskFunc sPhase2_Tasks[]; - extern u8 ewram[]; extern s16 gUnknown_03005560[]; - extern u16 gUnknown_03004DE0[][0x3C0]; struct TransitionData @@ -73,6 +56,25 @@ void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); bool8 sub_811D52C(void); void sub_811D658(void); +static void Phase1Task_TransitionAll(u8 taskID); +static void Phase2Task_Transition0(u8 taskID); +static void Phase2Task_Transition1(u8 taskID); +static void Phase2Task_Transition2(u8 taskID); +static void Phase2Task_Transition3(u8 taskID); +static void Phase2Task_Transition4(u8 taskID); +static void Phase2Task_Transition5(u8 taskID); +static void Phase2Task_Transition6(u8 taskID); +static void Phase2Task_Transition7(u8 taskID); + void Phase2Task_Transition8(u8 taskID); + void Phase2Task_Transition9(u8 taskID); + void Phase2Task_Transition10(u8 taskID); + void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition_Sydney(u8 taskID); +static void Phase2Task_Transition_Phoebe(u8 taskID); +static void Phase2Task_Transition_Glacia(u8 taskID); +static void Phase2Task_Transition_Drake(u8 taskID); +static void Phase2Task_Transition_Steven(u8 taskID); + static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); @@ -101,11 +103,77 @@ void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); static void Phase2Task_MugShotTransition(u8 taskID); -void sub_811C7B0(struct Task* task); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); -void sub_811CA10(s16 spriteID, s16 value); -void sub_811CA28(s16 spriteID); -s16 sub_811CA44(s16 spriteID); +// const data +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); + +extern const TransitionState sMainTransitionPhases[]; +extern const TransitionState sPhase2_Transition0_Funcs[]; +extern const TransitionState sPhase2_Transition1_Funcs[]; +extern const TransitionState sPhase2_Transition2_Funcs[]; +extern const TransitionState sPhase2_Transition3_Funcs[]; +extern const TransitionState sPhase2_Transition4_Funcs[]; +extern const TransitionState sPhase2_Transition5_Funcs[]; +extern const TransitionState sPhase2_Transition6_Funcs[]; +extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; +extern const u16 gFieldEffectObjectPalette10[]; +extern const u16 gUnknown_083FDB44[]; +extern const s16 gUnknown_083FD7E4[2]; +extern const s16 gUnknown_083FD7F2[2]; +extern const s16 gUnknown_083FD7E8[5]; +extern const struct SpriteTemplate gSpriteTemplate_83FD98C; +extern const u16 gUnknown_083FDFF4[]; +extern const u8 * const sOpponentMugshotsPals[]; +extern const u8 * const sPlayerMugshotsPals[2]; +extern const u8 sMugshotsTrainerPicIDsTable[]; +extern const s16 sMugshotsOpponentCoords[][2]; +extern const s16 sMugshotsOpponentRotationScales[][2]; +extern const TransitionSpriteCallback gUnknown_083FD880[]; +extern const s16 gUnknown_083FD89C[2]; +extern const s16 gUnknown_083FD8A0[2]; + +static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +const u32 gSpriteImage_83FC148[] = INCBIN_U32("graphics/battle_transitions/pokeball.4bpp"); +static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); +const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); +const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); +struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; + +static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = +{ + [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll +}; + +static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = +{ + &Phase2Task_Transition0, // 0 + &Phase2Task_Transition1, // 1 + &Phase2Task_Transition2, // 2 + &Phase2Task_Transition3, // 3 + &Phase2Task_Transition4, // 4 + &Phase2Task_Transition5, // 5 + &Phase2Task_Transition6, // 6 + &Phase2Task_Transition7, // 7 + &Phase2Task_Transition8, // 8 + &Phase2Task_Transition9, // 9 + &Phase2Task_Transition10, // 10 + &Phase2Task_Transition11, // 11 + &Phase2Task_Transition_Sydney, // 12 + &Phase2Task_Transition_Phoebe, // 13 + &Phase2Task_Transition_Glacia, // 14 + &Phase2Task_Transition_Drake, // 15 + &Phase2Task_Transition_Steven, // 16 +}; + +void sub_811C90C(struct Sprite* sprite); void sub_811AABC(u8 transitionID) { @@ -188,7 +256,7 @@ bool8 Transition_WaitForPhase2(struct Task* task) return 0; } -void Phase1Task_TransitionAll(u8 taskID) +static void Phase1Task_TransitionAll(u8 taskID) { if (gTasks[taskID].tState == 0) { @@ -199,7 +267,7 @@ void Phase1Task_TransitionAll(u8 taskID) DestroyTask(taskID); } -void Phase2Task_Transition0(u8 taskID) +static void Phase2Task_Transition0(u8 taskID) { while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -240,7 +308,7 @@ bool8 Phase2_Transition0_Func3(struct Task* task) return 0; } -void Phase2Task_Transition1(u8 taskID) +static void Phase2Task_Transition1(u8 taskID) { while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -300,7 +368,7 @@ static void HBlankCB_Phase2_Transition1(void) REG_BG3HOFS = var; } -void Phase2Task_Transition2(u8 taskID) +static void Phase2Task_Transition2(u8 taskID) { while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -367,14 +435,11 @@ static void HBlankCB_Phase2_Transition2(void) REG_BG3VOFS = var; } -void Phase2Task_Transition3(u8 taskID) +static void Phase2Task_Transition3(u8 taskID) { while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -extern const u8 gUnknown_083FBB88[]; -extern const u16 gFieldEffectObjectPalette10[]; - bool8 Phase2_Transition3_Func1(struct Task* task) { u16 i; @@ -410,8 +475,6 @@ bool8 Phase2_Transition3_Func1(struct Task* task) return 0; } -extern const u16 gUnknown_083FDB44[]; - bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; @@ -546,13 +609,11 @@ void VBlankCB1_Phase2_Transition3(void) DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); } -void Phase2Task_Transition4(u8 taskID) +static void Phase2Task_Transition4(u8 taskID) { while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -extern const u8 gUnknown_083FC108[]; - bool8 Phase2_Transition4_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -566,10 +627,6 @@ bool8 Phase2_Transition4_Func1(struct Task* task) return 0; } -extern const s16 gUnknown_083FD7E4[2]; -extern const s16 gUnknown_083FD7F2[2]; -extern const s16 gUnknown_083FD7E8[5]; - bool8 Phase2_Transition4_Func2(struct Task* task) { s16 i; @@ -603,8 +660,6 @@ bool8 Phase2_Transition4_Func3(struct Task* task) return 0; } -extern const struct SpriteTemplate gSpriteTemplate_83FD98C; - bool8 FldEff_Pokeball(void) { u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); @@ -659,7 +714,7 @@ void sub_811B720(struct Sprite* sprite) } } -void Phase2Task_Transition5(u8 taskID) +static void Phase2Task_Transition5(u8 taskID) { while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -931,7 +986,7 @@ static void HBlankCB_Phase2_Transition6(void) REG_BG3VOFS = var; } -void Phase2Task_Transition7(u8 taskID) +static void Phase2Task_Transition7(u8 taskID) { while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -1009,33 +1064,35 @@ static void VBlankCB_Phase2_Transition7(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -#define tMugshotID data[15] +#define tMugshotOpponentID data[13] +#define tMugshotPlayerID data[14] +#define tMugshotID data[15] -void Phase2Task_Transition_Sydney(u8 taskID) +static void Phase2Task_Transition_Sydney(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Phoebe(u8 taskID) +static void Phase2Task_Transition_Phoebe(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Glacia(u8 taskID) +static void Phase2Task_Transition_Glacia(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Drake(u8 taskID) +static void Phase2Task_Transition_Drake(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Steven(u8 taskID) +static void Phase2Task_Transition_Steven(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; Phase2Task_MugShotTransition(taskID); @@ -1052,7 +1109,7 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); - sub_811C7B0(task); + Mugshots_CreateOpponentPlayerSprites(task); task->data[1] = 0; task->data[2] = 1; @@ -1072,11 +1129,6 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) return 0; } -extern const u8 gUnknown_083FC348[]; -extern const u16 gUnknown_083FDFF4[]; -extern const u8 * const sOpponentMugshotsPals[]; -extern const u8 * const sPlayerMugshotsPals[2]; - bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; @@ -1171,9 +1223,9 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - sub_811CA10(task->data[13], 0); - sub_811CA10(task->data[14], 1); - sub_811CA28(task->data[13]); + sub_811CA10(task->tMugshotOpponentID, 0); + sub_811CA10(task->tMugshotPlayerID, 1); + sub_811CA28(task->tMugshotOpponentID); PlaySE(SE_BT_START); @@ -1185,10 +1237,10 @@ bool8 Phase2_Mugshot_Func5(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - if (sub_811CA44(task->data[13])) + if (sub_811CA44(task->tMugshotOpponentID)) { task->tState++; - sub_811CA28(task->data[14]); + sub_811CA28(task->tMugshotPlayerID); } return 0; } @@ -1197,7 +1249,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - if (sub_811CA44(task->data[14])) + if (sub_811CA44(task->tMugshotPlayerID)) { TRANSITION_STRUCT.field_0 = 0; SetVBlankCallback(NULL); @@ -1318,3 +1370,114 @@ static void HBlankCB_Phase2_Mugshots(void) else REG_BG0HOFS = TRANSITION_STRUCT.field_1A; } + +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) +{ + struct Sprite *opponentSprite, *playerSprite; + + s16 mugshotID = task->tMugshotID; + task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID], + sMugshotsOpponentCoords[mugshotID][0] - 32, + sMugshotsOpponentCoords[mugshotID][1] + 42, + 0, &ewram[0xC03C]); + task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]); + + opponentSprite = &gSprites[task->tMugshotOpponentID]; + playerSprite = &gSprites[task->tMugshotPlayerID]; + + opponentSprite->callback = sub_811C90C; + playerSprite->callback = sub_811C90C; + + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); +} + +void sub_811C90C(struct Sprite* sprite) +{ + while (gUnknown_083FD880[sprite->data0](sprite)); +} + +bool8 sub_811C934(struct Sprite* sprite) +{ + return 0; +} + +bool8 sub_811C938(struct Sprite* sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, gUnknown_083FD89C, sizeof(gUnknown_083FD89C)); + memcpy(arr1, gUnknown_083FD8A0, sizeof(gUnknown_083FD8A0)); + + sprite->data0++; + sprite->data1 = arr0[sprite->data7]; + sprite->data2 = arr1[sprite->data7]; + return 1; +} + +bool8 sub_811C984(struct Sprite* sprite) +{ + sprite->pos1.x += sprite->data1; + if (sprite->data7 && sprite->pos1.x < 133) + sprite->data0++; + else if (!sprite->data7 && sprite->pos1.x > 103) + sprite->data0++; + return 0; +} + +bool8 sub_811C9B8(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->data1 == 0) + { + sprite->data0++; + sprite->data2 = -sprite->data2; + sprite->data6 = 1; + } + return 0; +} + +bool8 sub_811C9E4(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + sprite->data0++; + return 0; +} + +static void sub_811CA10(s16 spriteID, s16 value) +{ + gSprites[spriteID].data7 = value; +} + +static void sub_811CA28(s16 spriteID) +{ + gSprites[spriteID].data0++; +} + +static s16 sub_811CA44(s16 spriteID) +{ + return gSprites[spriteID].data6; +} + +#undef tMugshotOpponentID +#undef tMugshotPlayerID +#undef tMugshotID diff --git a/src/field_effect.c b/src/field_effect.c index 3632d7053..cffed2614 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id) return FALSE; } -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer) +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer); - LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag; + LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); + LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); + spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; + spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; spriteTemplate.oam = &gOamData_839F0F4; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; diff --git a/src/main_menu.c b/src/main_menu.c index 09fd06d9e..3b616065b 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1421,14 +1421,14 @@ void AddBirchSpeechObjects(u8 taskId) gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId; //Create Brendan sprite - spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000); + spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId; //Create May sprite - spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800); + spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; -- cgit v1.2.3 From a5b770a5112914468158842885b0b37f5425c887 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 23:12:00 +0200 Subject: some more functions --- asm/battle_transition.s | 48 +++++++++----------------------------------- data/battle_transition.s | 15 ++++---------- src/battle_transition.c | 52 +++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 60 insertions(+), 55 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index cc3c98062..fbed395e5 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,38 +7,8 @@ .text - thumb_func_start Phase2Task_Transition8 -Phase2Task_Transition8: @ 811CA5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CA8C @ =gUnknown_083FD8A4 - ldr r2, _0811CA90 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CA6E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CA6E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CA8C: .4byte gUnknown_083FD8A4 -_0811CA90: .4byte gTasks - thumb_func_end Phase2Task_Transition8 - - thumb_func_start sub_811CA94 -sub_811CA94: @ 811CA94 + thumb_func_start Phase2_Transition8_Func1 +Phase2_Transition8_Func1: @ 811CA94 push {r4-r6,lr} adds r4, r0, 0 bl sub_811D658 @@ -101,10 +71,10 @@ _0811CB10: .4byte 0x04000200 _0811CB14: .4byte REG_DISPSTAT _0811CB18: .4byte sub_811CC28 _0811CB1C: .4byte sub_811CCB0 - thumb_func_end sub_811CA94 + thumb_func_end Phase2_Transition8_Func1 - thumb_func_start sub_811CB20 -sub_811CB20: @ 811CB20 + thumb_func_start Phase2_Transition8_Func2 +Phase2_Transition8_Func2: @ 811CB20 push {r4-r7,lr} mov r7, r8 push {r7} @@ -208,10 +178,10 @@ _0811CBCE: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_811CB20 + thumb_func_end Phase2_Transition8_Func2 - thumb_func_start sub_811CBE8 -sub_811CBE8: @ 811CBE8 + thumb_func_start Phase2_Transition8_Func3 +Phase2_Transition8_Func3: @ 811CBE8 push {lr} ldr r1, _0811CC18 @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -237,7 +207,7 @@ _0811CC18: .4byte 0x040000b0 _0811CC1C: .4byte 0x0000c5ff _0811CC20: .4byte 0x00007fff _0811CC24: .4byte Phase2Task_Transition8 - thumb_func_end sub_811CBE8 + thumb_func_end Phase2_Transition8_Func3 thumb_func_start sub_811CC28 sub_811CC28: @ 811CC28 diff --git a/data/battle_transition.s b/data/battle_transition.s index ae69888d1..95f5c4737 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -4,13 +4,6 @@ .section .rodata -sMainTransitionPhases:: @ 83FD794 - .4byte Transition_Phase1 - .4byte Transition_WaitForPhase1 - .4byte Transition_Phase2 - .4byte Transition_WaitForPhase2 - - .align 2 sPhase2_Transition0_Funcs:: @ 83FD7A4 .4byte Phase2_Transition0_Func1 .4byte Phase2_Transition0_Func2 @@ -135,10 +128,10 @@ gUnknown_083FD8A0:: @ 83FD8A0 .2byte -1, 1 .align 2 -gUnknown_083FD8A4:: @ 83FD8A4 - .4byte sub_811CA94 - .4byte sub_811CB20 - .4byte sub_811CBE8 +sPhase2_Transition8_Funcs:: @ 83FD8A4 + .4byte Phase2_Transition8_Func1 + .4byte Phase2_Transition8_Func2 + .4byte Phase2_Transition8_Func3 .align 2 gUnknown_083FD8B0:: @ 83FD8B0 diff --git a/src/battle_transition.c b/src/battle_transition.c index 8d87f12f6..9ef012bb2 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -74,6 +74,10 @@ static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); static void Phase2Task_Transition_Drake(u8 taskID); static void Phase2Task_Transition_Steven(u8 taskID); +static bool8 Transition_Phase1(struct Task* task); +static bool8 Transition_WaitForPhase1(struct Task* task); +static bool8 Transition_Phase2(struct Task* task); +static bool8 Transition_WaitForPhase2(struct Task* task); static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); @@ -112,7 +116,6 @@ static s16 sub_811CA44(s16 spriteID); typedef bool8 (*TransitionState)(struct Task* task); typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); -extern const TransitionState sMainTransitionPhases[]; extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; @@ -121,6 +124,7 @@ extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Transition8_Funcs[]; extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; @@ -173,6 +177,14 @@ static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = &Phase2Task_Transition_Steven, // 16 }; +static const TransitionState sMainTransitionPhases[] = +{ + &Transition_Phase1, + &Transition_WaitForPhase1, + &Transition_Phase2, + &Transition_WaitForPhase2 +}; + void sub_811C90C(struct Sprite* sprite); void sub_811AABC(u8 transitionID) @@ -213,7 +225,7 @@ static void Task_BattleTransitionMain(u8 taskID) while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Transition_Phase1(struct Task* task) +static bool8 Transition_Phase1(struct Task* task) { sub_807DE10(); CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); @@ -230,7 +242,7 @@ bool8 Transition_Phase1(struct Task* task) } } -bool8 Transition_WaitForPhase1(struct Task* task) +static bool8 Transition_WaitForPhase1(struct Task* task) { if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) { @@ -241,14 +253,14 @@ bool8 Transition_WaitForPhase1(struct Task* task) return 0; } -bool8 Transition_Phase2(struct Task* task) +static bool8 Transition_Phase2(struct Task* task) { CreateTask(sPhase2_Tasks[task->tTransitionID], 0); task->tState++; return 0; } -bool8 Transition_WaitForPhase2(struct Task* task) +static bool8 Transition_WaitForPhase2(struct Task* task) { task->tTransitionDone = 0; if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) @@ -1481,3 +1493,33 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotOpponentID #undef tMugshotPlayerID #undef tMugshotID + +void Phase2Task_Transition8(u8 taskID) +{ + while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition7_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + task->data[2] = 256; + task->data[3] = 256; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; + gUnknown_03004DE0[1][160 + i] = 0xF0; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition7); + + task->tState++; + return 1; +} -- cgit v1.2.3 From a10592da1afeec6945e31f8321b94990c503e937 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 21:11:42 +0200 Subject: transition main functions are done --- asm/battle_transition.s | 1316 ---------------------------------------------- data/battle_transition.s | 32 +- src/battle_transition.c | 556 +++++++++++++++++--- 3 files changed, 501 insertions(+), 1403 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index fbed395e5..2517b2aad 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,1322 +7,6 @@ .text - thumb_func_start Phase2_Transition8_Func1 -Phase2_Transition8_Func1: @ 811CA94 - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - movs r0, 0x1 - strh r0, [r4, 0xE] - ldr r1, _0811CB08 @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r3, _0811CB0C @ =gUnknown_03005560 - adds r6, r1, 0 - movs r5, 0xF0 -_0811CABE: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r6, 0x14] - strh r1, [r0] - adds r0, r2, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r3 - strh r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9F - bls _0811CABE - ldr r2, _0811CB10 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CB14 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CB18 @ =sub_811CC28 - bl SetVBlankCallback - ldr r0, _0811CB1C @ =sub_811CCB0 - bl SetHBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CB08: .4byte 0x0200c000 -_0811CB0C: .4byte gUnknown_03005560 -_0811CB10: .4byte 0x04000200 -_0811CB14: .4byte REG_DISPSTAT -_0811CB18: .4byte sub_811CC28 -_0811CB1C: .4byte sub_811CCB0 - thumb_func_end Phase2_Transition8_Func1 - - thumb_func_start Phase2_Transition8_Func2 -Phase2_Transition8_Func2: @ 811CB20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r2, r0, 0 - ldr r1, _0811CB98 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0xF0 - ble _0811CB4A - movs r0, 0xF0 - strh r0, [r2, 0xA] -_0811CB4A: - ldrh r4, [r2, 0xC] - movs r0, 0xC - ldrsh r1, [r2, r0] - ldr r0, _0811CB9C @ =0x00000fff - ldrh r3, [r2, 0xE] - cmp r1, r0 - bgt _0811CB5C - adds r0, r4, r3 - strh r0, [r2, 0xC] -_0811CB5C: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x7F - bgt _0811CB68 - lsls r0, r3, 1 - strh r0, [r2, 0xE] -_0811CB68: - movs r5, 0 - ldr r7, _0811CBA0 @ =gUnknown_03004DE0 - movs r1, 0xA0 - lsls r1, 1 - adds r1, r7 - mov r8, r1 - mov r6, r12 -_0811CB76: - lsls r0, r5, 1 - adds r3, r0, r7 - mov r1, r8 - adds r4, r0, r1 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _0811CBA4 - ldrh r0, [r2, 0xA] - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r3] - ldrh r1, [r2, 0xA] - movs r0, 0xF0 - subs r0, r1 - b _0811CBB4 - .align 2, 0 -_0811CB98: .4byte 0x0200c000 -_0811CB9C: .4byte 0x00000fff -_0811CBA0: .4byte gUnknown_03004DE0 -_0811CBA4: - ldrh r0, [r6, 0x14] - ldrh r1, [r2, 0xA] - subs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0xA] - lsls r0, 8 - movs r1, 0xF1 - orrs r0, r1 -_0811CBB4: - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9F - bls _0811CB76 - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0xEF - ble _0811CBCE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811CBCE: - mov r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r12 - strb r0, [r2] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Phase2_Transition8_Func2 - - thumb_func_start Phase2_Transition8_Func3 -Phase2_Transition8_Func3: @ 811CBE8 - push {lr} - ldr r1, _0811CC18 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CC1C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CC20 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811CC24 @ =Phase2Task_Transition8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CC18: .4byte 0x040000b0 -_0811CC1C: .4byte 0x0000c5ff -_0811CC20: .4byte 0x00007fff -_0811CC24: .4byte Phase2Task_Transition8 - thumb_func_end Phase2_Transition8_Func3 - - thumb_func_start sub_811CC28 -sub_811CC28: @ 811CC28 - push {r4,lr} - ldr r4, _0811CC84 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CC88 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CC8C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811CC90 @ =REG_WININ - ldr r1, _0811CC94 @ =0x0200c000 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x8] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CC70 - ldr r1, _0811CC98 @ =0x040000d4 - ldr r0, _0811CC9C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CCA0 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CC70: - ldr r0, _0811CCA4 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CCA8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CCAC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CC84: .4byte 0x040000b0 -_0811CC88: .4byte 0x0000c5ff -_0811CC8C: .4byte 0x00007fff -_0811CC90: .4byte REG_WININ -_0811CC94: .4byte 0x0200c000 -_0811CC98: .4byte 0x040000d4 -_0811CC9C: .4byte gUnknown_03004DE0 -_0811CCA0: .4byte 0x80000140 -_0811CCA4: .4byte gUnknown_030056A0 -_0811CCA8: .4byte REG_WIN0H -_0811CCAC: .4byte 0xa2400001 - thumb_func_end sub_811CC28 - - thumb_func_start sub_811CCB0 -sub_811CCB0: @ 811CCB0 - ldr r1, _0811CCD0 @ =gUnknown_03004DE0 - ldr r0, _0811CCD4 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811CCD8 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811CCD0: .4byte gUnknown_03004DE0 -_0811CCD4: .4byte REG_VCOUNT -_0811CCD8: .4byte REG_BG1HOFS - thumb_func_end sub_811CCB0 - - thumb_func_start Phase2Task_Transition9 -Phase2Task_Transition9: @ 811CCDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CD0C @ =gUnknown_083FD8B0 - ldr r2, _0811CD10 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CCEE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CCEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CD0C: .4byte gUnknown_083FD8B0 -_0811CD10: .4byte gTasks - thumb_func_end Phase2Task_Transition9 - - thumb_func_start sub_811CD14 -sub_811CD14: @ 811CD14 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811CD88 @ =0x0200c000 - movs r2, 0 - movs r0, 0xBF - strh r0, [r1, 0xE] - strh r2, [r1, 0x12] - movs r0, 0x1E - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811CD8C @ =gUnknown_03005560 - movs r4, 0 - movs r3, 0xF0 -_0811CD3E: - lsls r0, r1, 1 - adds r0, r2 - strh r4, [r0] - adds r0, r1, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811CD3E - ldr r2, _0811CD90 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CD94 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CD98 @ =sub_811CFAC - bl SetHBlankCallback - ldr r0, _0811CD9C @ =sub_811CEE4 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811CD88: .4byte 0x0200c000 -_0811CD8C: .4byte gUnknown_03005560 -_0811CD90: .4byte 0x04000200 -_0811CD94: .4byte REG_DISPSTAT -_0811CD98: .4byte sub_811CFAC -_0811CD9C: .4byte sub_811CEE4 - thumb_func_end sub_811CD14 - - thumb_func_start sub_811CDA0 -sub_811CDA0: @ 811CDA0 - push {r4-r6,lr} - sub sp, 0x10 - adds r6, r0, 0 - ldr r1, _0811CE08 @ =gUnknown_083FD8C4 - mov r0, sp - movs r2, 0x10 - bl memcpy - movs r5, 0 - movs r4, 0 -_0811CDB4: - ldr r0, _0811CE0C @ =sub_811CFD0 - bl CreateInvisibleSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0811CE10 @ =gSprites - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2, 0x20] - strh r4, [r2, 0x22] - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r2, 0x38] - adds r1, 0x1 - lsls r1, 16 - lsls r0, r4, 16 - movs r3, 0xA0 - lsls r3, 13 - adds r0, r3 - lsrs r4, r0, 16 - lsrs r5, r1, 16 - asrs r1, 16 - cmp r1, 0x7 - ble _0811CDB4 - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - strh r0, [r2, 0x3A] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE08: .4byte gUnknown_083FD8C4 -_0811CE0C: .4byte sub_811CFD0 -_0811CE10: .4byte gSprites - thumb_func_end sub_811CDA0 - - thumb_func_start sub_811CE14 -sub_811CE14: @ 811CE14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811CE44 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - ble _0811CE3A - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811CE48 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811CE3A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811CE44: .4byte 0x0200c000 -_0811CE48: .4byte 0x00007fff - thumb_func_end sub_811CE14 - - thumb_func_start sub_811CE4C -sub_811CE4C: @ 811CE4C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _0811CE9C @ =0x0200c000 - ldrb r0, [r4] - movs r5, 0 - strb r5, [r4] - ldr r1, _0811CEA0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r0, 0xF0 - strh r0, [r4, 0x6] - strh r5, [r4, 0x12] - movs r0, 0xFF - strh r0, [r4, 0xE] - movs r0, 0x3F - strh r0, [r4, 0x2] - ldr r0, _0811CEAC @ =sub_811CF74 - bl SetVBlankCallback - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE9C: .4byte 0x0200c000 -_0811CEA0: .4byte 0x040000b0 -_0811CEA4: .4byte 0x0000c5ff -_0811CEA8: .4byte 0x00007fff -_0811CEAC: .4byte sub_811CF74 - thumb_func_end sub_811CE4C - - thumb_func_start sub_811CEB0 -sub_811CEB0: @ 811CEB0 - push {lr} - ldr r1, _0811CEDC @ =0x0200c000 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _0811CED4 - bl sub_811D6D4 - ldr r0, _0811CEE0 @ =Phase2Task_Transition9 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811CED4: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CEDC: .4byte 0x0200c000 -_0811CEE0: .4byte Phase2Task_Transition9 - thumb_func_end sub_811CEB0 - - thumb_func_start sub_811CEE4 -sub_811CEE4: @ 811CEE4 - push {r4,lr} - ldr r4, _0811CF48 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CF4C @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CF50 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811CF54 @ =REG_BLDCNT - ldr r1, _0811CF58 @ =0x0200c000 - ldrh r0, [r1, 0xE] - strh r0, [r2] - subs r2, 0x8 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x6] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CF32 - ldr r1, _0811CF5C @ =0x040000d4 - ldr r0, _0811CF60 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CF64 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CF32: - ldr r0, _0811CF68 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CF6C @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CF70 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CF48: .4byte 0x040000b0 -_0811CF4C: .4byte 0x0000c5ff -_0811CF50: .4byte 0x00007fff -_0811CF54: .4byte REG_BLDCNT -_0811CF58: .4byte 0x0200c000 -_0811CF5C: .4byte 0x040000d4 -_0811CF60: .4byte gUnknown_03004DE0 -_0811CF64: .4byte 0x80000140 -_0811CF68: .4byte gUnknown_030056A0 -_0811CF6C: .4byte REG_WIN0H -_0811CF70: .4byte 0xa2400001 - thumb_func_end sub_811CEE4 - - thumb_func_start sub_811CF74 -sub_811CF74: @ 811CF74 - push {lr} - bl VBlankCB_BattleTransition - ldr r1, _0811CFA4 @ =REG_BLDY - ldr r2, _0811CFA8 @ =0x0200c000 - ldrh r0, [r2, 0x12] - strh r0, [r1] - subs r1, 0x4 - ldrh r0, [r2, 0xE] - strh r0, [r1] - subs r1, 0x8 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0xA - ldrh r0, [r2, 0x6] - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r2, 0x8] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811CFA4: .4byte REG_BLDY -_0811CFA8: .4byte 0x0200c000 - thumb_func_end sub_811CF74 - - thumb_func_start sub_811CFAC -sub_811CFAC: @ 811CFAC - ldr r2, _0811CFC4 @ =REG_BLDY - ldr r1, _0811CFC8 @ =gUnknown_03004DE0 - ldr r0, _0811CFCC @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0811CFC4: .4byte REG_BLDY -_0811CFC8: .4byte gUnknown_03004DE0 -_0811CFCC: .4byte REG_VCOUNT - thumb_func_end sub_811CFAC - - thumb_func_start sub_811CFD0 -sub_811CFD0: @ 811CFD0 - push {r4-r6,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x38] - movs r2, 0x38 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _0811CFF8 - subs r0, r1, 0x1 - strh r0, [r3, 0x38] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r0, _0811CFF4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - b _0811D0AA - .align 2, 0 -_0811CFF4: .4byte 0x0200c000 -_0811CFF8: - movs r2, 0x22 - ldrsh r1, [r3, r2] - lsls r1, 1 - ldr r0, _0811D0B0 @ =gUnknown_03004DE0 - adds r6, r1, r0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2 - adds r5, r1, r0 - movs r4, 0 -_0811D00C: - lsls r1, r4, 1 - adds r2, r1, r6 - ldrh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2] - adds r1, r5 - ldrh r0, [r3, 0x20] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _0811D00C - movs r1, 0x20 - ldrsh r0, [r3, r1] - ldrh r2, [r3, 0x20] - cmp r0, 0 - bne _0811D046 - movs r0, 0x2E - ldrsh r1, [r3, r0] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _0811D046 - movs r0, 0x1 - strh r0, [r3, 0x30] -_0811D046: - adds r1, r2, 0 - subs r1, 0x10 - strh r1, [r3, 0x20] - ldrh r0, [r3, 0x2E] - adds r0, 0x80 - strh r0, [r3, 0x2E] - lsls r1, 16 - cmp r1, 0 - bge _0811D05C - movs r0, 0 - strh r0, [r3, 0x20] -_0811D05C: - movs r1, 0x2E - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 5 - cmp r0, r1 - ble _0811D06A - strh r1, [r3, 0x2E] -_0811D06A: - movs r0, 0x3A - ldrsh r2, [r3, r0] - cmp r2, 0 - beq _0811D07A - ldr r0, _0811D0B4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_0811D07A: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r4, _0811D0B4 @ =0x0200c000 - cmp r2, 0 - beq _0811D09E - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x6 - ble _0811D0AA - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0811D0AA -_0811D09E: - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - adds r0, r3, 0 - bl DestroySprite -_0811D0AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D0B0: .4byte gUnknown_03004DE0 -_0811D0B4: .4byte 0x0200c000 - thumb_func_end sub_811CFD0 - - thumb_func_start Phase2Task_Transition10 -Phase2Task_Transition10: @ 811D0B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D0E8 @ =gUnknown_083FD8D4 - ldr r2, _0811D0EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D0CA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D0CA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D0E8: .4byte gUnknown_083FD8D4 -_0811D0EC: .4byte gTasks - thumb_func_end Phase2Task_Transition10 - - thumb_func_start sub_811D0F0 -sub_811D0F0: @ 811D0F0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811D138 @ =gUnknown_083FD528 - ldr r1, [sp, 0x8] - movs r2, 0x10 - bl CpuSet - mov r1, sp - movs r2, 0xF0 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811D13C @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811D140 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D138: .4byte gUnknown_083FD528 -_0811D13C: .4byte 0x01000400 -_0811D140: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811D0F0 - - thumb_func_start sub_811D144 -sub_811D144: @ 811D144 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0811D186 - mov r0, sp - bl sub_811D690 - movs r0, 0x3 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 5 - ldr r1, _0811D198 @ =gUnknown_083FD528 - adds r0, r1 - ldr r1, [sp] - movs r2, 0x10 - bl CpuSet - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xD - ble _0811D186 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x10 - strh r0, [r4, 0xA] -_0811D186: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D198: .4byte gUnknown_083FD528 - thumb_func_end sub_811D144 - - thumb_func_start sub_811D19C -sub_811D19C: @ 811D19C - push {lr} - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - lsls r1, 16 - cmp r1, 0 - bne _0811D1BC - bl sub_811D6D4 - ldr r0, _0811D1C4 @ =Phase2Task_Transition10 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811D1BC: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811D1C4: .4byte Phase2Task_Transition10 - thumb_func_end sub_811D19C - - thumb_func_start Phase2Task_Transition11 -Phase2Task_Transition11: @ 811D1C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D1F8 @ =gUnknown_083FD8E0 - ldr r2, _0811D1FC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D1DA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D1DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D1F8: .4byte gUnknown_083FD8E0 -_0811D1FC: .4byte gTasks - thumb_func_end Phase2Task_Transition11 - - thumb_func_start sub_811D200 -sub_811D200: @ 811D200 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811D254 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811D258 @ =gUnknown_03004DE0 - movs r3, 0xF0 - adds r4, r2, 0 -_0811D222: - lsls r0, r1, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811D222 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA0 - bl CpuSet - ldr r0, _0811D25C @ =sub_811D438 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811D254: .4byte 0x0200c000 -_0811D258: .4byte gUnknown_03004DE0 -_0811D25C: .4byte sub_811D438 - thumb_func_end sub_811D200 - - thumb_func_start sub_811D260 -sub_811D260: @ 811D260 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - ldr r0, _0811D2D0 @ =0x0200c024 - ldr r6, _0811D2D4 @ =gUnknown_083FD8F4 - mov r2, r8 - movs r3, 0xA - ldrsh r1, [r2, r3] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 1 - adds r1, r4, r6 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r2, r6, 0x2 - adds r2, r4, r2 - movs r3, 0 - ldrsh r2, [r2, r3] - adds r3, r6, 0x4 - adds r3, r4, r3 - movs r5, 0 - ldrsh r3, [r3, r5] - adds r5, r6, 0x6 - adds r4, r5 - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_811D8FC - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r6, 0x8 - adds r0, r6 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - movs r0, 0x1 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811D2D0: .4byte 0x0200c024 -_0811D2D4: .4byte gUnknown_083FD8F4 - thumb_func_end sub_811D260 - - thumb_func_start sub_811D2D8 -sub_811D2D8: @ 811D2D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - ldr r0, _0811D324 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - mov r8, r1 - mov r12, r1 - adds r6, r0, 0 - ldr r0, _0811D328 @ =gUnknown_03004DE0 - mov r9, r0 -_0811D2F4: - ldr r1, _0811D328 @ =gUnknown_03004DE0 - movs r2, 0x2A - ldrsh r0, [r6, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsrs r3, r0, 8 - movs r4, 0xFF - ands r4, r0 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0811D32C - movs r2, 0x28 - ldrsh r0, [r6, r2] - cmp r3, r0 - bge _0811D318 - ldrh r3, [r6, 0x28] -_0811D318: - lsls r0, r3, 16 - lsls r1, r4, 16 - cmp r0, r1 - ble _0811D344 - lsrs r3, r1, 16 - b _0811D344 - .align 2, 0 -_0811D324: .4byte 0x0200c000 -_0811D328: .4byte gUnknown_03004DE0 -_0811D32C: - lsls r0, r4, 16 - asrs r0, 16 - movs r2, 0x28 - ldrsh r1, [r6, r2] - cmp r0, r1 - ble _0811D33A - ldrh r4, [r6, 0x28] -_0811D33A: - lsls r0, r4, 16 - lsls r1, r3, 16 - cmp r0, r1 - bgt _0811D344 - lsrs r4, r1, 16 -_0811D344: - ldr r5, _0811D368 @ =0x0200c000 - movs r0, 0x2A - ldrsh r2, [r5, r0] - lsls r2, 1 - add r2, r9 - lsls r1, r3, 16 - asrs r1, 8 - lsls r0, r4, 16 - asrs r0, 16 - orrs r0, r1 - strh r0, [r2] - mov r1, r12 - cmp r1, 0 - beq _0811D36C - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811D392 - .align 2, 0 -_0811D368: .4byte 0x0200c000 -_0811D36C: - adds r0, r5, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - mov r2, r8 - lsls r0, r2, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r2, r0, 16 - mov r8, r2 - asrs r0, 16 - cmp r0, 0xF - ble _0811D2F4 -_0811D392: - ldr r0, _0811D3AC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811D3AC: .4byte 0x0200c000 - thumb_func_end sub_811D2D8 - - thumb_func_start sub_811D3B0 -sub_811D3B0: @ 811D3B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _0811D3FC - ldr r1, _0811D3EC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811D3F8 @ =Phase2Task_Transition11 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - b _0811D414 - .align 2, 0 -_0811D3EC: .4byte 0x040000b0 -_0811D3F0: .4byte 0x0000c5ff -_0811D3F4: .4byte 0x00007fff -_0811D3F8: .4byte Phase2Task_Transition11 -_0811D3FC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _0811D418 @ =gUnknown_083FD93A - movs r3, 0xA - ldrsh r0, [r2, r3] - subs r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0xE] - movs r0, 0x1 -_0811D414: - pop {r1} - bx r1 - .align 2, 0 -_0811D418: .4byte gUnknown_083FD93A - thumb_func_end sub_811D3B0 - - thumb_func_start sub_811D41C -sub_811D41C: @ 811D41C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - beq _0811D430 - movs r0, 0 - b _0811D434 -_0811D430: - movs r0, 0x1 - strh r0, [r1, 0x8] -_0811D434: - pop {r1} - bx r1 - thumb_func_end sub_811D41C - - thumb_func_start sub_811D438 -sub_811D438: @ 811D438 - push {r4,lr} - ldr r4, _0811D4A0 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A4 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A8 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811D4AC @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811D46E - ldr r1, _0811D4B0 @ =0x040000d4 - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811D4B8 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811D46E: - ldr r1, _0811D4BC @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811D4C0 @ =REG_WIN0H - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811D4C4 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D4A0: .4byte 0x040000b0 -_0811D4A4: .4byte 0x0000c5ff -_0811D4A8: .4byte 0x00007fff -_0811D4AC: .4byte 0x0200c000 -_0811D4B0: .4byte 0x040000d4 -_0811D4B4: .4byte gUnknown_03004DE0 -_0811D4B8: .4byte 0x800000a0 -_0811D4BC: .4byte REG_WININ -_0811D4C0: .4byte REG_WIN0H -_0811D4C4: .4byte 0xa2400001 - thumb_func_end sub_811D438 - thumb_func_start sub_811D4C8 sub_811D4C8: @ 811D4C8 push {r4-r6,lr} diff --git a/data/battle_transition.s b/data/battle_transition.s index 95f5c4737..e15d03dd6 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -134,12 +134,12 @@ sPhase2_Transition8_Funcs:: @ 83FD8A4 .4byte Phase2_Transition8_Func3 .align 2 -gUnknown_083FD8B0:: @ 83FD8B0 - .4byte sub_811CD14 - .4byte sub_811CDA0 - .4byte sub_811CE14 - .4byte sub_811CE4C - .4byte sub_811CEB0 +sPhase2_Transition9_Funcs:: @ 83FD8B0 + .4byte Phase2_Transition9_Func1 + .4byte Phase2_Transition9_Func2 + .4byte Phase2_Transition9_Func3 + .4byte Phase2_Transition9_Func4 + .4byte Phase2_Transition9_Func5 .align 1 gUnknown_083FD8C4:: @ 83FD8C4 @@ -153,18 +153,18 @@ gUnknown_083FD8C4:: @ 83FD8C4 .2byte 5 .align 2 -gUnknown_083FD8D4:: @ 83FD8D4 - .4byte sub_811D0F0 - .4byte sub_811D144 - .4byte sub_811D19C +sPhase2_Transition10_Funcs:: @ 83FD8D4 + .4byte Phase2_Transition10_Func1 + .4byte Phase2_Transition10_Func2 + .4byte Phase2_Transition10_Func3 .align 2 -gUnknown_083FD8E0:: @ 83FD8E0 - .4byte sub_811D200 - .4byte sub_811D260 - .4byte sub_811D2D8 - .4byte sub_811D3B0 - .4byte sub_811D41C +sPhase2_Transition11_Funcs:: @ 83FD8E0 + .4byte Phase2_Transition11_Func1 + .4byte Phase2_Transition11_Func2 + .4byte Phase2_Transition11_Func3 + .4byte Phase2_Transition11_Func4 + .4byte Phase2_Transition11_Func5 .align 1 gUnknown_083FD8F4:: @ 83FD8F4 diff --git a/src/battle_transition.c b/src/battle_transition.c index 9ef012bb2..ae2e26d21 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -20,17 +20,16 @@ extern u16 gUnknown_03004DE0[][0x3C0]; struct TransitionData { - vs8 field_0; // now that's interesting - s8 field_1; - s16 WININ; - s16 WINOUT; - s16 field_6; - s16 WIN0V; - s16 field_A; - s16 field_C; - s16 BLDCNT; - s16 BLDALPHA; - s16 field_12; + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 field_12; s16 field_14; s16 field_16; s16 field_18; @@ -65,10 +64,10 @@ static void Phase2Task_Transition4(u8 taskID); static void Phase2Task_Transition5(u8 taskID); static void Phase2Task_Transition6(u8 taskID); static void Phase2Task_Transition7(u8 taskID); - void Phase2Task_Transition8(u8 taskID); - void Phase2Task_Transition9(u8 taskID); - void Phase2Task_Transition10(u8 taskID); - void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition8(u8 taskID); +static void Phase2Task_Transition9(u8 taskID); +static void Phase2Task_Transition10(u8 taskID); +static void Phase2Task_Transition11(u8 taskID); static void Phase2Task_Transition_Sydney(u8 taskID); static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); @@ -78,30 +77,30 @@ static bool8 Transition_Phase1(struct Task* task); static bool8 Transition_WaitForPhase1(struct Task* task); static bool8 Transition_Phase2(struct Task* task); static bool8 Transition_WaitForPhase2(struct Task* task); - static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); - static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); - static void VBlankCB0_Phase2_Transition3(void); static void VBlankCB1_Phase2_Transition3(void); - static void VBlankCB_Phase2_Transition5(void); - static void VBlankCB_Phase2_Transition6(void); static void HBlankCB_Phase2_Transition6(void); - static void VBlankCB_Phase2_Transition7(void); - +static void VBlankCB_Phase2_Transition8(void); +static void HBlankCB_Phase2_Transition8(void); +static void VBlankCB0_Phase2_Transition9(void); +static void VBlankCB1_Phase2_Transition9(void); +static void HBlankCB_Phase2_Transition9(void); static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition11(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); +void sub_811D690(u16** a0); void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); @@ -111,6 +110,7 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); static void sub_811CA10(s16 spriteID, s16 value); static void sub_811CA28(s16 spriteID); static s16 sub_811CA44(s16 spriteID); +void sub_811CFD0(struct Sprite* sprite); // const data typedef bool8 (*TransitionState)(struct Task* task); @@ -125,6 +125,9 @@ extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TransitionState sPhase2_Transition7_Funcs[]; extern const TransitionState sPhase2_Transition8_Funcs[]; +extern const TransitionState sPhase2_Transition9_Funcs[]; +extern const TransitionState sPhase2_Transition10_Funcs[]; +extern const TransitionState sPhase2_Transition11_Funcs[]; extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; @@ -349,7 +352,7 @@ bool8 Phase2_Transition1_Func1(struct Task* task) bool8 Phase2_Transition1_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; task->data[2] += 8; @@ -361,14 +364,14 @@ bool8 Phase2_Transition1_Func2(struct Task* task) DestroyTask(taskID); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition1(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -413,7 +416,7 @@ bool8 Phase2_Transition2_Func2(struct Task* task) u8 i; u16 r3, r4; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r4 = task->data[1]; r3 = task->data[2] >> 8; task->data[1] += 4224; @@ -428,14 +431,14 @@ bool8 Phase2_Transition2_Func2(struct Task* task) if (!gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition2(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -510,7 +513,7 @@ bool8 Phase2_Transition3_Func2(struct Task* task) bool8 Phase2_Transition3_Func3(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[2]++; @@ -524,13 +527,13 @@ bool8 Phase2_Transition3_Func3(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[1]--; @@ -544,13 +547,13 @@ bool8 Phase2_Transition3_Func4(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func5(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; task->data[5] -= 256; @@ -564,13 +567,13 @@ bool8 Phase2_Transition3_Func5(struct Task* task) task->data[3] = 0; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) task->data[2] += 128; if (task->data[1] != 0) @@ -592,7 +595,7 @@ bool8 Phase2_Transition3_Func6(struct Task* task) SetVBlankCallback(VBlankCB1_Phase2_Transition3); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -600,7 +603,7 @@ static void Transition3_Vblank(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -757,7 +760,7 @@ bool8 Phase2_Transition5_Func1(struct Task* task) bool8 Phase2_Transition5_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); do @@ -772,7 +775,7 @@ bool8 Phase2_Transition5_Func2(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -781,7 +784,7 @@ bool8 Phase2_Transition5_Func3(struct Task* task) s16 r1, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); @@ -810,13 +813,13 @@ bool8 Phase2_Transition5_Func3(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); do @@ -831,7 +834,7 @@ bool8 Phase2_Transition5_Func4(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -840,7 +843,7 @@ bool8 Phase2_Transition5_Func5(struct Task* task) s16 r1, r2, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); @@ -870,13 +873,13 @@ bool8 Phase2_Transition5_Func5(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); do @@ -894,7 +897,7 @@ bool8 Phase2_Transition5_Func6(struct Task* task) if (TRANSITION_STRUCT.field_28 > 120) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -910,7 +913,7 @@ static void VBlankCB_Phase2_Transition5(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -952,7 +955,7 @@ bool8 Phase2_Transition6_Func2(struct Task* task) s16 r3; u16 r4, r8; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r3 = task->data[2] >> 8; r4 = task->data[1]; @@ -979,14 +982,14 @@ bool8 Phase2_Transition6_Func2(struct Task* task) if (task->data[4] != 0 && !gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition6(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -1032,7 +1035,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) u16* toStore; bool8 nextFunc; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[2]; task->data[2] += 16; @@ -1052,7 +1055,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) if (nextFunc) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1068,7 +1071,7 @@ static void VBlankCB_Phase2_Transition7(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -1175,7 +1178,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) s16 value; s32 mergedValue; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[1]; @@ -1212,7 +1215,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1221,7 +1224,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) u8 i; u16* toStore; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) { @@ -1241,7 +1244,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) PlaySE(SE_BT_START); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1263,7 +1266,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.field_1A += 8; if (sub_811CA44(task->tMugshotPlayerID)) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); memset(gUnknown_03004DE0[0], 0, 0x140); @@ -1283,7 +1286,7 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) { bool32 r6; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r6 = TRUE; TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1316,13 +1319,13 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) if (task->data[4] == 0x50 && !r6) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Mugshot_Func8(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; BlendPalettes(-1, 0x10, 0x7FFF); TRANSITION_STRUCT.BLDCNT = 0xFF; task->data[3] = 0; @@ -1333,14 +1336,14 @@ bool8 Phase2_Mugshot_Func8(struct Task* task) bool8 Phase2_Mugshot_Func9(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; memset(gUnknown_03004DE0[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1356,7 +1359,7 @@ static void VBlankCB0_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; @@ -1369,7 +1372,7 @@ static void VBlankCB1_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); @@ -1494,20 +1497,20 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotPlayerID #undef tMugshotID -void Phase2Task_Transition8(u8 taskID) +static void Phase2Task_Transition8(u8 taskID) { while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition7_Func1(struct Task* task) +bool8 Phase2_Transition8_Func1(struct Task* task) { - u8 i; + u16 i; sub_811D658(); dp12_8087EA4(); task->data[2] = 256; - task->data[3] = 256; + task->data[3] = 1; TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; TRANSITION_STRUCT.WIN0V = 160; @@ -1518,8 +1521,419 @@ bool8 Phase2_Transition7_Func1(struct Task* task) gUnknown_03004DE0[1][160 + i] = 0xF0; } - SetVBlankCallback(VBlankCB_Phase2_Transition7); + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetVBlankCallback(VBlankCB_Phase2_Transition8); + SetHBlankCallback(HBlankCB_Phase2_Transition8); + + task->tState++; + return 1; +} + +bool8 Phase2_Transition8_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +bool8 Phase2_Transition8_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); + return 0; +} + +static void VBlankCB_Phase2_Transition8(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition8(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition9(u8 taskID) +{ + while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition9_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetHBlankCallback(HBlankCB_Phase2_Transition9); + SetVBlankCallback(VBlankCB0_Phase2_Transition9); + + task->tState++; + return 0; +} + +extern const s16 gUnknown_083FD8C4[8]; + +bool8 Phase2_Transition9_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, gUnknown_083FD8C4, sizeof(gUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return 0; +} + +bool8 Phase2_Transition9_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition9); + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.field_12 > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); + } + return 0; +} + +static void VBlankCB0_Phase2_Transition9(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.field_6; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition9(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.field_12; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition9(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition10(u8 taskID) +{ + while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition10_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FD528, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + task->tState++; + return 0; +} + +bool8 Phase2_Transition10_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(gUnknown_083FD528 + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return 0; +} + +bool8 Phase2_Transition10_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); + } + return 0; +} + +static void Phase2Task_Transition11(u8 taskID) +{ + while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition11_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition11); + + task->tState++; + return 1; +} + +extern const s16 gUnknown_083FD8F4[][5]; + +bool8 Phase2_Transition11_Func2(struct Task* task) +{ + sub_811D8FC(&TRANSITION_STRUCT.field_24, + gUnknown_083FD8F4[task->data[1]][0], + gUnknown_083FD8F4[task->data[1]][1], + gUnknown_083FD8F4[task->data[1]][2], + gUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; task->tState++; return 1; } + +bool8 Phase2_Transition11_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, nextFunc = FALSE; i < 16; i++) + { + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.field_28) + r3 = TRANSITION_STRUCT.field_28; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.field_28) + r4 = TRANSITION_STRUCT.field_28; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +extern const s16 gUnknown_083FD93A[]; + +bool8 Phase2_Transition11_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; + return 1; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); + return 0; + } +} + +bool8 Phase2_Transition11_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return 1; + } + else + return 0; +} + +static void VBlankCB_Phase2_Transition11(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} -- cgit v1.2.3 From f3191f7aa13529f73d28bc48cf74406a204962c9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 23:05:56 +0200 Subject: name suggestions, phase2 data to C --- data/battle_transition.s | 163 ------------------- include/battle_transition.h | 24 ++- src/battle_transition.c | 385 ++++++++++++++++++++++++++++++++------------ 3 files changed, 300 insertions(+), 272 deletions(-) diff --git a/data/battle_transition.s b/data/battle_transition.s index e15d03dd6..55f7defa6 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -4,169 +4,6 @@ .section .rodata -sPhase2_Transition0_Funcs:: @ 83FD7A4 - .4byte Phase2_Transition0_Func1 - .4byte Phase2_Transition0_Func2 - .4byte Phase2_Transition0_Func3 - - .align 2 -sPhase2_Transition1_Funcs:: @ 83FD7B0 - .4byte Phase2_Transition1_Func1 - .4byte Phase2_Transition1_Func2 - - .align 2 -sPhase2_Transition2_Funcs:: @ 83FD7B8 - .4byte Phase2_Transition2_Func1 - .4byte Phase2_Transition2_Func2 - - .align 2 -sPhase2_Transition3_Funcs:: @ 83FD7C0 - .4byte Phase2_Transition3_Func1 - .4byte Phase2_Transition3_Func2 - .4byte Phase2_Transition3_Func3 - .4byte Phase2_Transition3_Func4 - .4byte Phase2_Transition3_Func5 - .4byte Phase2_Transition3_Func6 - - .align 2 -sPhase2_Transition4_Funcs:: @ 83FD7D8 - .4byte Phase2_Transition4_Func1 - .4byte Phase2_Transition4_Func2 - .4byte Phase2_Transition4_Func3 - - .align 1 -gUnknown_083FD7E4:: @ 83FD7E4 - .2byte -16 - .2byte 256 - - .align 1 -gUnknown_083FD7E8:: @ 83FD7E8 - .2byte 0 - .2byte 32 - .2byte 64 - .2byte 18 - .2byte 48 - - .align 1 -gUnknown_083FD7F2:: @ 83FD7F2 - .2byte 8 - .2byte -8 - - .align 2 -sPhase2_Transition5_Funcs:: @ 83FD7F8 - .4byte Phase2_Transition5_Func1 - .4byte Phase2_Transition5_Func2 - .4byte Phase2_Transition5_Func3 - .4byte Phase2_Transition5_Func4 - .4byte Phase2_Transition5_Func5 - .4byte Phase2_Transition5_Func6 - .4byte Phase2_Transition5_Func7 - - .align 2 -sPhase2_Transition6_Funcs:: @ 83FD814 - .4byte Phase2_Transition6_Func1 - .4byte Phase2_Transition6_Func2 - - .align 2 -sPhase2_Transition7_Funcs:: @ 83FD81C - .4byte Phase2_Transition7_Func1 - .4byte Phase2_Transition7_Func2 - .4byte Phase2_Transition7_Func3 - - .align 2 -sPhase2_Mugshot_Transition_Funcs:: @ 83FD828 - .4byte Phase2_Mugshot_Func1 - .4byte Phase2_Mugshot_Func2 - .4byte Phase2_Mugshot_Func3 - .4byte Phase2_Mugshot_Func4 - .4byte Phase2_Mugshot_Func5 - .4byte Phase2_Mugshot_Func6 - .4byte Phase2_Mugshot_Func7 - .4byte Phase2_Mugshot_Func8 - .4byte Phase2_Mugshot_Func9 - .4byte Phase2_Mugshot_Func10 - -sMugshotsTrainerPicIDsTable:: @ 83FD850 - .byte TRAINER_PIC_SIDNEY - .byte TRAINER_PIC_PHOEBE - .byte TRAINER_PIC_GLACIA - .byte TRAINER_PIC_DRAKE - .byte TRAINER_PIC_STEVEN - - .align 1 -sMugshotsOpponentRotationScales:: @ 83FD856 - .2byte 0x200, 0x200 - .2byte 0x200, 0x200 - .2byte 0x1B0, 0x1B0 - .2byte 0x1A0, 0x1A0 - .2byte 0x188, 0x188 - - .align 1 -sMugshotsOpponentCoords:: @ 83FD86A - .2byte 0, 0 - .2byte 0, 0 - .2byte -4, 4 - .2byte 0, 5 - .2byte 0, 7 - - .align 2 -gUnknown_083FD880:: @ 83FD880 - .4byte sub_811C934 - .4byte sub_811C938 - .4byte sub_811C984 - .4byte sub_811C9B8 - .4byte sub_811C934 - .4byte sub_811C9E4 - .4byte sub_811C934 - - .align 1 -gUnknown_083FD89C:: @ 83FD89C - .2byte 12, -12 - - .align 1 -gUnknown_083FD8A0:: @ 83FD8A0 - .2byte -1, 1 - - .align 2 -sPhase2_Transition8_Funcs:: @ 83FD8A4 - .4byte Phase2_Transition8_Func1 - .4byte Phase2_Transition8_Func2 - .4byte Phase2_Transition8_Func3 - - .align 2 -sPhase2_Transition9_Funcs:: @ 83FD8B0 - .4byte Phase2_Transition9_Func1 - .4byte Phase2_Transition9_Func2 - .4byte Phase2_Transition9_Func3 - .4byte Phase2_Transition9_Func4 - .4byte Phase2_Transition9_Func5 - - .align 1 -gUnknown_083FD8C4:: @ 83FD8C4 - .2byte 0 - .2byte 20 - .2byte 15 - .2byte 40 - .2byte 10 - .2byte 25 - .2byte 35 - .2byte 5 - - .align 2 -sPhase2_Transition10_Funcs:: @ 83FD8D4 - .4byte Phase2_Transition10_Func1 - .4byte Phase2_Transition10_Func2 - .4byte Phase2_Transition10_Func3 - - .align 2 -sPhase2_Transition11_Funcs:: @ 83FD8E0 - .4byte Phase2_Transition11_Func1 - .4byte Phase2_Transition11_Func2 - .4byte Phase2_Transition11_Func3 - .4byte Phase2_Transition11_Func4 - .4byte Phase2_Transition11_Func5 - - .align 1 gUnknown_083FD8F4:: @ 83FD8F4 .2byte 56, 0, 0, 160, 0 .2byte 104, 160, 240, 88, 1 diff --git a/include/battle_transition.h b/include/battle_transition.h index 597e9724d..9082b20ef 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -16,11 +16,23 @@ enum // TRANSITION_MUGSHOT MUGSHOT_STEVEN, }; -#define B_TRANSITION_WILD 8 -#define B_TRANSITION_SYDNEY 12 -#define B_TRANSITION_PHOEBE 13 -#define B_TRANSITION_GLACIA 14 -#define B_TRANSITION_DRAKE 15 -#define B_TRANSITION_STEVEN 16 +#define MUGSHOTS_NO 5 + +// credits for the names goes to Dyskinesia + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SMEAR 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_WIPEOUT 4 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/src/battle_transition.c b/src/battle_transition.c index ae2e26d21..c0770f793 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -10,9 +10,11 @@ #include "sprite.h" #include "sound.h" #include "songs.h" +#include "trainer.h" void sub_807DE10(void); void dp12_8087EA4(void); +void sub_811C90C(struct Sprite* sprite); extern u8 ewram[]; extern s16 gUnknown_03005560[]; @@ -47,14 +49,12 @@ struct TransitionData }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); // this file's functions static void LaunchBattleTransitionTask(u8 transitionID); static void Task_BattleTransitionMain(u8 taskID); -void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); -bool8 sub_811D52C(void); -void sub_811D658(void); - static void Phase1Task_TransitionAll(u8 taskID); static void Phase2Task_Transition0(u8 taskID); static void Phase2Task_Transition1(u8 taskID); @@ -96,7 +96,74 @@ static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); static void VBlankCB_Phase2_Transition11(void); +static bool8 Phase2_Transition0_Func1(struct Task* task); +static bool8 Phase2_Transition0_Func2(struct Task* task); +static bool8 Phase2_Transition0_Func3(struct Task* task); +static bool8 Phase2_Transition1_Func1(struct Task* task); +static bool8 Phase2_Transition1_Func2(struct Task* task); +static bool8 Phase2_Transition2_Func1(struct Task* task); +static bool8 Phase2_Transition2_Func2(struct Task* task); +static bool8 Phase2_Transition3_Func1(struct Task* task); +static bool8 Phase2_Transition3_Func2(struct Task* task); +static bool8 Phase2_Transition3_Func3(struct Task* task); +static bool8 Phase2_Transition3_Func4(struct Task* task); +static bool8 Phase2_Transition3_Func5(struct Task* task); +static bool8 Phase2_Transition3_Func6(struct Task* task); +static bool8 Phase2_Transition4_Func1(struct Task* task); +static bool8 Phase2_Transition4_Func2(struct Task* task); +static bool8 Phase2_Transition4_Func3(struct Task* task); +static bool8 Phase2_Transition5_Func1(struct Task* task); +static bool8 Phase2_Transition5_Func2(struct Task* task); +static bool8 Phase2_Transition5_Func3(struct Task* task); +static bool8 Phase2_Transition5_Func4(struct Task* task); +static bool8 Phase2_Transition5_Func5(struct Task* task); +static bool8 Phase2_Transition5_Func6(struct Task* task); +static bool8 Phase2_Transition5_Func7(struct Task* task); +static bool8 Phase2_Transition6_Func1(struct Task* task); +static bool8 Phase2_Transition6_Func2(struct Task* task); +static bool8 Phase2_Transition7_Func1(struct Task* task); +static bool8 Phase2_Transition7_Func2(struct Task* task); +static bool8 Phase2_Transition7_Func3(struct Task* task); +static bool8 Phase2_Transition8_Func1(struct Task* task); +static bool8 Phase2_Transition8_Func2(struct Task* task); +static bool8 Phase2_Transition8_Func3(struct Task* task); +static bool8 Phase2_Transition9_Func1(struct Task* task); +static bool8 Phase2_Transition9_Func2(struct Task* task); +static bool8 Phase2_Transition9_Func3(struct Task* task); +static bool8 Phase2_Transition9_Func4(struct Task* task); +static bool8 Phase2_Transition9_Func5(struct Task* task); +static bool8 Phase2_Transition10_Func1(struct Task* task); +static bool8 Phase2_Transition10_Func2(struct Task* task); +static bool8 Phase2_Transition10_Func3(struct Task* task); +static bool8 Phase2_Transition11_Func1(struct Task* task); +static bool8 Phase2_Transition11_Func2(struct Task* task); +static bool8 Phase2_Transition11_Func3(struct Task* task); +static bool8 Phase2_Transition11_Func4(struct Task* task); +static bool8 Phase2_Transition11_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func1(struct Task* task); +static bool8 Phase2_Mugshot_Func2(struct Task* task); +static bool8 Phase2_Mugshot_Func3(struct Task* task); +static bool8 Phase2_Mugshot_Func4(struct Task* task); +static bool8 Phase2_Mugshot_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func6(struct Task* task); +static bool8 Phase2_Mugshot_Func7(struct Task* task); +static bool8 Phase2_Mugshot_Func8(struct Task* task); +static bool8 Phase2_Mugshot_Func9(struct Task* task); +static bool8 Phase2_Mugshot_Func10(struct Task* task); +static void Phase2Task_MugShotTransition(u8 taskID); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); +static bool8 sub_811C934(struct Sprite* sprite); +static bool8 sub_811C938(struct Sprite* sprite); +static bool8 sub_811C984(struct Sprite* sprite); +static bool8 sub_811C9B8(struct Sprite* sprite); +static bool8 sub_811C9E4(struct Sprite* sprite); +void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +bool8 sub_811D52C(void); +void sub_811D658(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); @@ -105,45 +172,9 @@ void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); -static void Phase2Task_MugShotTransition(u8 taskID); -static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); -static void sub_811CA10(s16 spriteID, s16 value); -static void sub_811CA28(s16 spriteID); -static s16 sub_811CA44(s16 spriteID); void sub_811CFD0(struct Sprite* sprite); // const data -typedef bool8 (*TransitionState)(struct Task* task); -typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); - -extern const TransitionState sPhase2_Transition0_Funcs[]; -extern const TransitionState sPhase2_Transition1_Funcs[]; -extern const TransitionState sPhase2_Transition2_Funcs[]; -extern const TransitionState sPhase2_Transition3_Funcs[]; -extern const TransitionState sPhase2_Transition4_Funcs[]; -extern const TransitionState sPhase2_Transition5_Funcs[]; -extern const TransitionState sPhase2_Transition6_Funcs[]; -extern const TransitionState sPhase2_Transition7_Funcs[]; -extern const TransitionState sPhase2_Transition8_Funcs[]; -extern const TransitionState sPhase2_Transition9_Funcs[]; -extern const TransitionState sPhase2_Transition10_Funcs[]; -extern const TransitionState sPhase2_Transition11_Funcs[]; -extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; -extern const u16 gFieldEffectObjectPalette10[]; -extern const u16 gUnknown_083FDB44[]; -extern const s16 gUnknown_083FD7E4[2]; -extern const s16 gUnknown_083FD7F2[2]; -extern const s16 gUnknown_083FD7E8[5]; -extern const struct SpriteTemplate gSpriteTemplate_83FD98C; -extern const u16 gUnknown_083FDFF4[]; -extern const u8 * const sOpponentMugshotsPals[]; -extern const u8 * const sPlayerMugshotsPals[2]; -extern const u8 sMugshotsTrainerPicIDsTable[]; -extern const s16 sMugshotsOpponentCoords[][2]; -extern const s16 sMugshotsOpponentRotationScales[][2]; -extern const TransitionSpriteCallback gUnknown_083FD880[]; -extern const s16 gUnknown_083FD89C[2]; -extern const s16 gUnknown_083FD8A0[2]; static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); @@ -152,6 +183,7 @@ static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/e const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); + struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = @@ -188,7 +220,160 @@ static const TransitionState sMainTransitionPhases[] = &Transition_WaitForPhase2 }; -void sub_811C90C(struct Sprite* sprite); +static const TransitionState sPhase2_Transition0_Funcs[] = +{ + &Phase2_Transition0_Func1, + &Phase2_Transition0_Func2, + &Phase2_Transition0_Func3 +}; + +static const TransitionState sPhase2_Transition1_Funcs[] = +{ + &Phase2_Transition1_Func1, + &Phase2_Transition1_Func2, +}; + +static const TransitionState sPhase2_Transition2_Funcs[] = +{ + &Phase2_Transition2_Func1, + &Phase2_Transition2_Func2, +}; + +static const TransitionState sPhase2_Transition3_Funcs[] = +{ + &Phase2_Transition3_Func1, + &Phase2_Transition3_Func2, + &Phase2_Transition3_Func3, + &Phase2_Transition3_Func4, + &Phase2_Transition3_Func5, + &Phase2_Transition3_Func6 +}; + +static const TransitionState sPhase2_Transition4_Funcs[] = +{ + &Phase2_Transition4_Func1, + &Phase2_Transition4_Func2, + &Phase2_Transition4_Func3 +}; + +static const s16 gUnknown_083FD7E4[2] = {-16, 256}; +static const s16 gUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 gUnknown_083FD7F2[2] = {8, -8}; + +static const TransitionState sPhase2_Transition5_Funcs[] = +{ + &Phase2_Transition5_Func1, + &Phase2_Transition5_Func2, + &Phase2_Transition5_Func3, + &Phase2_Transition5_Func4, + &Phase2_Transition5_Func5, + &Phase2_Transition5_Func6, + &Phase2_Transition5_Func7 +}; + +static const TransitionState sPhase2_Transition6_Funcs[] = +{ + &Phase2_Transition6_Func1, + &Phase2_Transition6_Func2 +}; + +static const TransitionState sPhase2_Transition7_Funcs[] = +{ + &Phase2_Transition7_Func1, + &Phase2_Transition7_Func2, + &Phase2_Transition7_Func3 +}; + +static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = +{ + &Phase2_Mugshot_Func1, + &Phase2_Mugshot_Func2, + &Phase2_Mugshot_Func3, + &Phase2_Mugshot_Func4, + &Phase2_Mugshot_Func5, + &Phase2_Mugshot_Func6, + &Phase2_Mugshot_Func7, + &Phase2_Mugshot_Func8, + &Phase2_Mugshot_Func9, + &Phase2_Mugshot_Func10 +}; + +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x1B0, 0x1B0}, + {0x1A0, 0x1A0}, + {0x188, 0x188}, +}; +static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = +{ + {0, 0}, + {0, 0}, + {-4, 4}, + {0, 5}, + {0, 7}, +}; + +static const TransitionSpriteCallback gUnknown_083FD880[] = +{ + &sub_811C934, + &sub_811C938, + &sub_811C984, + &sub_811C9B8, + &sub_811C934, + &sub_811C9E4, + &sub_811C934 +}; + +static const s16 gUnknown_083FD89C[2] = {12, -12}; +static const s16 gUnknown_083FD8A0[2] = {-1, 1}; + +static const TransitionState sPhase2_Transition8_Funcs[] = +{ + &Phase2_Transition8_Func1, + &Phase2_Transition8_Func2, + &Phase2_Transition8_Func3 +}; + +static const TransitionState sPhase2_Transition9_Funcs[] = +{ + &Phase2_Transition9_Func1, + &Phase2_Transition9_Func2, + &Phase2_Transition9_Func3, + &Phase2_Transition9_Func4, + &Phase2_Transition9_Func5 +}; + +static const s16 gUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; + +static const TransitionState sPhase2_Transition10_Funcs[] = +{ + &Phase2_Transition10_Func1, + &Phase2_Transition10_Func2, + &Phase2_Transition10_Func3 +}; + +static const TransitionState sPhase2_Transition11_Funcs[] = +{ + &Phase2_Transition11_Func1, + &Phase2_Transition11_Func2, + &Phase2_Transition11_Func3, + &Phase2_Transition11_Func4, + &Phase2_Transition11_Func5 +}; + +extern const u16 gFieldEffectObjectPalette10[]; +extern const u16 gUnknown_083FDB44[]; +extern const struct SpriteTemplate gSpriteTemplate_83FD98C; +extern const u16 gUnknown_083FDFF4[]; +extern const u8 * const sOpponentMugshotsPals[]; +extern const u8 * const sPlayerMugshotsPals[2]; +extern const s16 gUnknown_083FD8F4[][5]; +extern const s16 gUnknown_083FD93A[]; + +// actual code starts here void sub_811AABC(u8 transitionID) { @@ -287,7 +472,7 @@ static void Phase2Task_Transition0(u8 taskID) while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition0_Func1(struct Task* task) +static bool8 Phase2_Transition0_Func1(struct Task* task) { REG_MOSAIC = 0; REG_BG1CNT |= 0x40; @@ -297,7 +482,7 @@ bool8 Phase2_Transition0_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition0_Func2(struct Task* task) +static bool8 Phase2_Transition0_Func2(struct Task* task) { if (task->data[1] != 0) task->data[1]--; @@ -313,7 +498,7 @@ bool8 Phase2_Transition0_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition0_Func3(struct Task* task) +static bool8 Phase2_Transition0_Func3(struct Task* task) { if (!gPaletteFade.active) { @@ -328,7 +513,7 @@ static void Phase2Task_Transition1(u8 taskID) while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition1_Func1(struct Task* task) +static bool8 Phase2_Transition1_Func1(struct Task* task) { u16 savedIME; @@ -350,7 +535,7 @@ bool8 Phase2_Transition1_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition1_Func2(struct Task* task) +static bool8 Phase2_Transition1_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; @@ -388,7 +573,7 @@ static void Phase2Task_Transition2(u8 taskID) while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition2_Func1(struct Task* task) +static bool8 Phase2_Transition2_Func1(struct Task* task) { u16 savedIME; @@ -411,7 +596,7 @@ bool8 Phase2_Transition2_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition2_Func2(struct Task* task) +static bool8 Phase2_Transition2_Func2(struct Task* task) { u8 i; u16 r3, r4; @@ -455,7 +640,7 @@ static void Phase2Task_Transition3(u8 taskID) while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition3_Func1(struct Task* task) +static bool8 Phase2_Transition3_Func1(struct Task* task) { u16 i; u16 *dst1, *dst2; @@ -490,7 +675,7 @@ bool8 Phase2_Transition3_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func2(struct Task* task) +static bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -511,7 +696,7 @@ bool8 Phase2_Transition3_Func2(struct Task* task) return 1; } -bool8 Phase2_Transition3_Func3(struct Task* task) +static bool8 Phase2_Transition3_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -531,7 +716,7 @@ bool8 Phase2_Transition3_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func4(struct Task* task) +static bool8 Phase2_Transition3_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -551,7 +736,7 @@ bool8 Phase2_Transition3_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func5(struct Task* task) +static bool8 Phase2_Transition3_Func5(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; @@ -571,7 +756,7 @@ bool8 Phase2_Transition3_Func5(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func6(struct Task* task) +static bool8 Phase2_Transition3_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) @@ -618,7 +803,7 @@ static void VBlankCB0_Phase2_Transition3(void) DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); } -void VBlankCB1_Phase2_Transition3(void) +static void VBlankCB1_Phase2_Transition3(void) { Transition3_Vblank(); DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); @@ -629,7 +814,7 @@ static void Phase2Task_Transition4(u8 taskID) while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition4_Func1(struct Task* task) +static bool8 Phase2_Transition4_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -642,7 +827,7 @@ bool8 Phase2_Transition4_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition4_Func2(struct Task* task) +static bool8 Phase2_Transition4_Func2(struct Task* task) { s16 i; s16 rand; @@ -665,7 +850,7 @@ bool8 Phase2_Transition4_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition4_Func3(struct Task* task) +static bool8 Phase2_Transition4_Func3(struct Task* task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { @@ -734,7 +919,7 @@ static void Phase2Task_Transition5(u8 taskID) while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition5_Func1(struct Task* task) +static bool8 Phase2_Transition5_Func1(struct Task* task) { u16 i; @@ -758,7 +943,7 @@ bool8 Phase2_Transition5_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition5_Func2(struct Task* task) +static bool8 Phase2_Transition5_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -779,7 +964,7 @@ bool8 Phase2_Transition5_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func3(struct Task* task) +static bool8 Phase2_Transition5_Func3(struct Task* task) { s16 r1, r3; vu8 var = 0; @@ -817,7 +1002,7 @@ bool8 Phase2_Transition5_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func4(struct Task* task) +static bool8 Phase2_Transition5_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -838,7 +1023,7 @@ bool8 Phase2_Transition5_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func5(struct Task* task) +static bool8 Phase2_Transition5_Func5(struct Task* task) { s16 r1, r2, r3; vu8 var = 0; @@ -877,7 +1062,7 @@ bool8 Phase2_Transition5_Func5(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func6(struct Task* task) +static bool8 Phase2_Transition5_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -901,7 +1086,7 @@ bool8 Phase2_Transition5_Func6(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func7(struct Task* task) +static bool8 Phase2_Transition5_Func7(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -922,12 +1107,12 @@ static void VBlankCB_Phase2_Transition5(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -void Phase2Task_Transition6(u8 taskID) +static void Phase2Task_Transition6(u8 taskID) { while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition6_Func1(struct Task* task) +static bool8 Phase2_Transition6_Func1(struct Task* task) { u8 i; @@ -949,7 +1134,7 @@ bool8 Phase2_Transition6_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition6_Func2(struct Task* task) +static bool8 Phase2_Transition6_Func2(struct Task* task) { u8 i; s16 r3; @@ -1006,7 +1191,7 @@ static void Phase2Task_Transition7(u8 taskID) while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition7_Func1(struct Task* task) +static bool8 Phase2_Transition7_Func1(struct Task* task) { u8 i; @@ -1029,7 +1214,7 @@ bool8 Phase2_Transition7_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition7_Func2(struct Task* task) +static bool8 Phase2_Transition7_Func2(struct Task* task) { u8 i, r5; u16* toStore; @@ -1059,7 +1244,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition7_Func3(struct Task* task) +static bool8 Phase2_Transition7_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1118,7 +1303,7 @@ static void Phase2Task_MugShotTransition(u8 taskID) while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Mugshot_Func1(struct Task* task) +static bool8 Phase2_Mugshot_Func1(struct Task* task) { u8 i; @@ -1144,7 +1329,7 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func2(struct Task* task) +static bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -1171,7 +1356,7 @@ bool8 Phase2_Mugshot_Func2(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func3(struct Task* task) +static bool8 Phase2_Mugshot_Func3(struct Task* task) { u8 i, r5; u16* toStore; @@ -1219,7 +1404,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func4(struct Task* task) +static bool8 Phase2_Mugshot_Func4(struct Task* task) { u8 i; u16* toStore; @@ -1248,7 +1433,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func5(struct Task* task) +static bool8 Phase2_Mugshot_Func5(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1260,7 +1445,7 @@ bool8 Phase2_Mugshot_Func5(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func6(struct Task* task) +static bool8 Phase2_Mugshot_Func6(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1282,7 +1467,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func7(struct Task* task) +static bool8 Phase2_Mugshot_Func7(struct Task* task) { bool32 r6; @@ -1323,7 +1508,7 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func8(struct Task* task) +static bool8 Phase2_Mugshot_Func8(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; BlendPalettes(-1, 0x10, 0x7FFF); @@ -1334,7 +1519,7 @@ bool8 Phase2_Mugshot_Func8(struct Task* task) return 1; } -bool8 Phase2_Mugshot_Func9(struct Task* task) +static bool8 Phase2_Mugshot_Func9(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1347,7 +1532,7 @@ bool8 Phase2_Mugshot_Func9(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func10(struct Task* task) +static bool8 Phase2_Mugshot_Func10(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1502,7 +1687,7 @@ static void Phase2Task_Transition8(u8 taskID) while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition8_Func1(struct Task* task) +static bool8 Phase2_Transition8_Func1(struct Task* task) { u16 i; @@ -1531,7 +1716,7 @@ bool8 Phase2_Transition8_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition8_Func2(struct Task* task) +static bool8 Phase2_Transition8_Func2(struct Task* task) { u16 i; @@ -1568,7 +1753,7 @@ bool8 Phase2_Transition8_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition8_Func3(struct Task* task) +static bool8 Phase2_Transition8_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1601,7 +1786,7 @@ static void Phase2Task_Transition9(u8 taskID) while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition9_Func1(struct Task* task) +static bool8 Phase2_Transition9_Func1(struct Task* task) { u16 i; @@ -1630,9 +1815,7 @@ bool8 Phase2_Transition9_Func1(struct Task* task) return 0; } -extern const s16 gUnknown_083FD8C4[8]; - -bool8 Phase2_Transition9_Func2(struct Task* task) +static bool8 Phase2_Transition9_Func2(struct Task* task) { s16 i, posY; s16 arr1[8]; @@ -1652,7 +1835,7 @@ bool8 Phase2_Transition9_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func3(struct Task* task) +static bool8 Phase2_Transition9_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (TRANSITION_STRUCT.field_20 > 7) @@ -1663,7 +1846,7 @@ bool8 Phase2_Transition9_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func4(struct Task* task) +static bool8 Phase2_Transition9_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1682,7 +1865,7 @@ bool8 Phase2_Transition9_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func5(struct Task* task) +static bool8 Phase2_Transition9_Func5(struct Task* task) { if (++TRANSITION_STRUCT.field_12 > 16) { @@ -1769,7 +1952,7 @@ static void Phase2Task_Transition10(u8 taskID) while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition10_Func1(struct Task* task) +static bool8 Phase2_Transition10_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -1782,7 +1965,7 @@ bool8 Phase2_Transition10_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition10_Func2(struct Task* task) +static bool8 Phase2_Transition10_Func2(struct Task* task) { u16* dst1; @@ -1803,7 +1986,7 @@ bool8 Phase2_Transition10_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition10_Func3(struct Task* task) +static bool8 Phase2_Transition10_Func3(struct Task* task) { if (--task->data[1] == 0) { @@ -1818,7 +2001,7 @@ static void Phase2Task_Transition11(u8 taskID) while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition11_Func1(struct Task* task) +static bool8 Phase2_Transition11_Func1(struct Task* task) { u16 i; @@ -1841,9 +2024,7 @@ bool8 Phase2_Transition11_Func1(struct Task* task) return 1; } -extern const s16 gUnknown_083FD8F4[][5]; - -bool8 Phase2_Transition11_Func2(struct Task* task) +static bool8 Phase2_Transition11_Func2(struct Task* task) { sub_811D8FC(&TRANSITION_STRUCT.field_24, gUnknown_083FD8F4[task->data[1]][0], @@ -1856,7 +2037,7 @@ bool8 Phase2_Transition11_Func2(struct Task* task) return 1; } -bool8 Phase2_Transition11_Func3(struct Task* task) +static bool8 Phase2_Transition11_Func3(struct Task* task) { s16 i; bool8 nextFunc; @@ -1895,9 +2076,7 @@ bool8 Phase2_Transition11_Func3(struct Task* task) return 0; } -extern const s16 gUnknown_083FD93A[]; - -bool8 Phase2_Transition11_Func4(struct Task* task) +static bool8 Phase2_Transition11_Func4(struct Task* task) { if (++task->data[1] < 7) { @@ -1914,7 +2093,7 @@ bool8 Phase2_Transition11_Func4(struct Task* task) } } -bool8 Phase2_Transition11_Func5(struct Task* task) +static bool8 Phase2_Transition11_Func5(struct Task* task) { if (--task->data[3] == 0) { -- cgit v1.2.3 From fc9f7853a0e8dde9f80c1e16bee3a05978d29d15 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 23:40:13 +0200 Subject: up to sub_811D584 --- asm/battle_transition.s | 101 -------------------------------------------- data/battle_transition.s | 25 ----------- include/battle_transition.h | 6 +-- src/battle_transition.c | 52 +++++++++++++++++++++-- 4 files changed, 51 insertions(+), 133 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 2517b2aad..3e4929422 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,107 +7,6 @@ .text - thumb_func_start sub_811D4C8 -sub_811D4C8: @ 811D4C8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x18] - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _0811D524 @ =sub_811D54C - movs r1, 0x3 - str r3, [sp] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811D528 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - mov r0, r8 - strh r0, [r1, 0xA] - strh r4, [r1, 0xC] - strh r5, [r1, 0xE] - strh r6, [r1, 0x10] - ldr r3, [sp] - strh r3, [r1, 0x12] - strh r0, [r1, 0x14] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D524: .4byte sub_811D54C -_0811D528: .4byte gTasks - thumb_func_end sub_811D4C8 - - thumb_func_start sub_811D52C -sub_811D52C: @ 811D52C - push {lr} - ldr r0, _0811D540 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811D544 - movs r0, 0 - b _0811D546 - .align 2, 0 -_0811D540: .4byte sub_811D54C -_0811D544: - movs r0, 0x1 -_0811D546: - pop {r1} - bx r1 - thumb_func_end sub_811D52C - - thumb_func_start sub_811D54C -sub_811D54C: @ 811D54C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D57C @ =gUnknown_083FD948 - ldr r2, _0811D580 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D55E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D55E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D57C: .4byte gUnknown_083FD948 -_0811D580: .4byte gTasks - thumb_func_end sub_811D54C thumb_func_start sub_811D584 sub_811D584: @ 811D584 diff --git a/data/battle_transition.s b/data/battle_transition.s index 55f7defa6..3dd12ef76 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -4,31 +4,6 @@ .section .rodata -gUnknown_083FD8F4:: @ 83FD8F4 - .2byte 56, 0, 0, 160, 0 - .2byte 104, 160, 240, 88, 1 - .2byte 240, 72, 56, 0, 1 - .2byte 0, 32, 144, 160, 0 - .2byte 144, 160, 184, 0, 1 - .2byte 56, 0, 168, 160, 0 - .2byte 168, 160, 48, 0, 1 - - .align 1 -gUnknown_083FD93A:: @ 83FD93A - .2byte 8 - .2byte 4 - .2byte 2 - .2byte 1 - .2byte 1 - .2byte 1 - .2byte 0 - - .align 2 -gUnknown_083FD948:: @ 83FD948 - .4byte sub_811D584 - .4byte sub_811D5E0 - - .align 2 gSpriteImageTable_83FD950:: @ 83FD950 obj_frame_tiles gSpriteImage_83FC148, 0x200 diff --git a/include/battle_transition.h b/include/battle_transition.h index 9082b20ef..b2d897493 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -1,8 +1,8 @@ #ifndef GUARD_BATTLE_TRANSITION_H #define GUARD_BATTLE_TRANSITION_H -void sub_811AABC(u8); -void sub_811AAD8(u8); +void sub_811AABC(u8 transitionID); +void sub_811AAD8(u8 transitionID); bool8 IsBattleTransitionDone(void); #define TRANSITIONS_NO 17 @@ -18,7 +18,7 @@ enum // TRANSITION_MUGSHOT #define MUGSHOTS_NO 5 -// credits for the names goes to Dyskinesia +// credits for the names go to Dyskinesia #define B_TRANSITION_BLUR 0 #define B_TRANSITION_SMEAR 1 diff --git a/src/battle_transition.c b/src/battle_transition.c index c0770f793..9f4126822 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -160,9 +160,9 @@ static bool8 sub_811C938(struct Sprite* sprite); static bool8 sub_811C984(struct Sprite* sprite); static bool8 sub_811C9B8(struct Sprite* sprite); static bool8 sub_811C9E4(struct Sprite* sprite); +static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +static bool8 sub_811D52C(void); -void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); -bool8 sub_811D52C(void); void sub_811D658(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); @@ -173,6 +173,9 @@ void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); void sub_811CFD0(struct Sprite* sprite); +void sub_811D54C(u8 taskID); +bool8 sub_811D584(struct Task* task); +bool8 sub_811D5E0(struct Task* task); // const data @@ -364,14 +367,31 @@ static const TransitionState sPhase2_Transition11_Funcs[] = &Phase2_Transition11_Func5 }; +static const s16 gUnknown_083FD8F4[][5] = +{ + {56, 0, 0, 160, 0}, + {104, 160, 240, 88, 1}, + {240, 72, 56, 0, 1}, + {0, 32, 144, 160, 0}, + {144, 160, 184, 0, 1}, + {56, 0, 168, 160, 0}, + {168, 160, 48, 0, 1}, +}; + +static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; + +static const TransitionState gUnknown_083FD948[] = +{ + &sub_811D584, + &sub_811D5E0 +}; + extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; extern const struct SpriteTemplate gSpriteTemplate_83FD98C; extern const u16 gUnknown_083FDFF4[]; extern const u8 * const sOpponentMugshotsPals[]; extern const u8 * const sPlayerMugshotsPals[2]; -extern const s16 gUnknown_083FD8F4[][5]; -extern const s16 gUnknown_083FD93A[]; // actual code starts here @@ -2116,3 +2136,27 @@ static void VBlankCB_Phase2_Transition11(void) REG_WIN0H = gUnknown_03004DE0[1][0]; DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } + +static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +{ + u8 taskID = CreateTask(sub_811D54C, 3); + gTasks[taskID].data[1] = a0; + gTasks[taskID].data[2] = a1; + gTasks[taskID].data[3] = a2; + gTasks[taskID].data[4] = a3; + gTasks[taskID].data[5] = a4; + gTasks[taskID].data[6] = a0; +} + +static bool8 sub_811D52C(void) +{ + if (FindTaskIdByFunc(sub_811D54C) == 0xFF) + return 1; + else + return 0; +} + +void sub_811D54C(u8 taskID) +{ + while (gUnknown_083FD948[gTasks[taskID].tState](&gTasks[taskID])); +} -- cgit v1.2.3 From be47f6b54bd4b586d435d6fbff56bc315ff72efc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 17:10:50 +0200 Subject: a really hard math function --- asm/battle_transition.s | 481 -------------------------------------------- include/battle_transition.h | 34 ++-- src/battle_transition.c | 353 +++++++++++++++++++++++--------- 3 files changed, 280 insertions(+), 588 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 3e4929422..f99f53fb3 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -8,487 +8,6 @@ - thumb_func_start sub_811D584 -sub_811D584: @ 811D584 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D59C - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D5C0 -_0811D59C: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _0811D5B4 - movs r0, 0x10 - strh r0, [r4, 0x16] -_0811D5B4: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D5DC @ =0x00002d6b - bl BlendPalettes -_0811D5C0: - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0xF - ble _0811D5D2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] -_0811D5D2: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D5DC: .4byte 0x00002d6b - thumb_func_end sub_811D584 - - thumb_func_start sub_811D5E0 -sub_811D5E0: @ 811D5E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D5F8 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D61A -_0811D5F8: - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - bge _0811D60E - movs r0, 0 - strh r0, [r4, 0x16] -_0811D60E: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D640 @ =0x00002d6b - bl BlendPalettes -_0811D61A: - movs r0, 0x16 - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _0811D64E - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811D648 - ldr r0, _0811D644 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - b _0811D64E - .align 2, 0 -_0811D640: .4byte 0x00002d6b -_0811D644: .4byte sub_811D54C -_0811D648: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - strh r1, [r4, 0x8] -_0811D64E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811D5E0 - - thumb_func_start sub_811D658 -sub_811D658: @ 811D658 - push {lr} - ldr r0, _0811D674 @ =sTransitionStructPtr - ldr r0, [r0] - movs r1, 0 - movs r2, 0x3C - bl memset - ldr r0, _0811D678 @ =0x0200c014 - adds r1, r0, 0x2 - bl sub_8057B14 - pop {r0} - bx r0 - .align 2, 0 -_0811D674: .4byte sTransitionStructPtr -_0811D678: .4byte 0x0200c014 - thumb_func_end sub_811D658 - - thumb_func_start VBlankCB_BattleTransition -VBlankCB_BattleTransition: @ 811D67C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_BattleTransition - - thumb_func_start sub_811D690 -sub_811D690: @ 811D690 - ldr r1, _0811D6A4 @ =REG_BG0CNT - ldrh r1, [r1] - lsrs r1, 2 - lsls r1, 30 - lsrs r1, 16 - movs r2, 0xC0 - lsls r2, 19 - adds r1, r2 - str r1, [r0] - bx lr - .align 2, 0 -_0811D6A4: .4byte REG_BG0CNT - thumb_func_end sub_811D690 - - thumb_func_start sub_811D6A8 -sub_811D6A8: @ 811D6A8 - push {r4,lr} - ldr r3, _0811D6D0 @ =REG_BG0CNT - ldrh r2, [r3] - lsrs r2, 8 - ldrh r3, [r3] - lsrs r3, 2 - lsls r2, 27 - lsrs r2, 16 - lsls r3, 30 - lsrs r3, 16 - movs r4, 0xC0 - lsls r4, 19 - adds r2, r4 - str r2, [r0] - adds r3, r4 - str r3, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D6D0: .4byte REG_BG0CNT - thumb_func_end sub_811D6A8 - - thumb_func_start sub_811D6D4 -sub_811D6D4: @ 811D6D4 - push {lr} - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - pop {r0} - bx r0 - thumb_func_end sub_811D6D4 - - thumb_func_start sub_811D6E8 -sub_811D6E8: @ 811D6E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - ldr r0, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r4, 16 - movs r6, 0 - lsrs r5, r4, 16 - cmp r4, 0 - ble _0811D750 - lsls r0, r7, 16 - asrs r0, 16 - mov r9, r0 - lsls r1, 16 - mov r8, r1 - lsls r0, r3, 16 - asrs r7, r0, 16 -_0811D720: - lsls r4, r2, 16 - asrs r4, 16 - movs r0, 0xFF - ands r0, r4 - mov r2, r8 - asrs r1, r2, 16 - bl Sin - lsls r1, r6, 1 - add r1, r10 - add r0, r9 - strh r0, [r1] - lsls r1, r5, 16 - ldr r0, _0811D760 @ =0xffff0000 - adds r1, r0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r7 - lsls r4, 16 - lsrs r2, r4, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _0811D720 -_0811D750: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D760: .4byte 0xffff0000 - thumb_func_end sub_811D6E8 - - thumb_func_start sub_811D764 -sub_811D764: @ 811D764 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - adds r5, r2, 0 - adds r4, r3, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0xA0 - lsls r2, 1 - movs r1, 0xA - bl memset - movs r1, 0 - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x8] -_0811D79C: - lsls r5, r1, 16 - asrs r0, r5, 16 - mov r10, r0 - ldr r1, [sp, 0x4] - bl Sin - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r10 - ldr r1, [sp, 0x4] - bl Cos - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, 16 - asrs r4, 16 - subs r2, r1, r4 - lsls r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r0, 16 - asrs r0, 16 - ldr r3, [sp, 0x8] - subs r1, r3, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r3, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsrs r1, r2, 16 - str r5, [sp, 0x10] - cmp r2, 0 - bge _0811D7E8 - movs r1, 0 -_0811D7E8: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811D7F2 - movs r6, 0xF0 -_0811D7F2: - lsls r0, r7, 16 - cmp r0, 0 - bge _0811D7FA - movs r7, 0 -_0811D7FA: - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D808 - movs r3, 0x9F - mov r8, r3 -_0811D808: - lsls r0, r1, 24 - lsrs r0, 16 - orrs r6, r0 - lsls r0, r7, 16 - asrs r0, 16 - str r0, [sp, 0xC] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r4, 15 - add r0, r9 - strh r6, [r0] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - ldr r1, [sp, 0x4] - bl Cos - lsls r0, 16 - asrs r0, 16 - ldr r2, [sp, 0x8] - subs r1, r2, r0 - lsls r1, 16 - adds r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - lsrs r3, r1, 16 - cmp r1, 0 - bge _0811D84A - movs r3, 0 -_0811D84A: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D854 - movs r2, 0x9F -_0811D854: - lsls r0, r3, 16 - asrs r1, r0, 16 - adds r3, r0, 0 - lsls r5, r2, 16 - ldr r0, [sp, 0xC] - cmp r0, r1 - ble _0811D878 - adds r2, r1, 0 -_0811D864: - lsls r1, r7, 16 - ldr r0, _0811D8F8 @ =0xffff0000 - adds r1, r0 - asrs r0, r1, 15 - add r0, r9 - strh r6, [r0] - lsrs r7, r1, 16 - asrs r1, 16 - cmp r1, r2 - bgt _0811D864 -_0811D878: - lsls r1, r7, 16 - asrs r0, r3, 16 - cmp r1, r3 - bge _0811D896 - adds r2, r0, 0 -_0811D882: - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, r3 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r1, r0, 0 - asrs r0, r1, 16 - cmp r0, r2 - blt _0811D882 -_0811D896: - asrs r0, r5, 16 - cmp r4, r5 - ble _0811D8B4 - adds r1, r0, 0 -_0811D89E: - ldr r2, _0811D8F8 @ =0xffff0000 - adds r0, r4, r2 - lsrs r3, r0, 16 - mov r8, r3 - asrs r0, 15 - add r0, r9 - strh r6, [r0] - lsls r4, r3, 16 - asrs r0, r4, 16 - cmp r0, r1 - bgt _0811D89E -_0811D8B4: - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r5, 16 - cmp r4, r5 - bge _0811D8D4 - adds r2, r0, 0 -_0811D8C0: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r4, r0, 0 - asrs r0, r4, 16 - cmp r0, r2 - blt _0811D8C0 -_0811D8D4: - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x3F - bgt _0811D8E6 - b _0811D79C -_0811D8E6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D8F8: .4byte 0xffff0000 - thumb_func_end sub_811D764 - thumb_func_start sub_811D8FC sub_811D8FC: @ 811D8FC push {r4-r7,lr} diff --git a/include/battle_transition.h b/include/battle_transition.h index b2d897493..63ea36b67 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -18,21 +18,25 @@ enum // TRANSITION_MUGSHOT #define MUGSHOTS_NO 5 -// credits for the names go to Dyskinesia +// credits for the names go to Dyskinesia, Tetrable and Dizzy Egg +// names are naturally subject to change -#define B_TRANSITION_BLUR 0 -#define B_TRANSITION_SMEAR 1 -#define B_TRANSITION_SHUFFLE 2 -#define B_TRANSITION_BIG_POKEBALL 3 -#define B_TRANSITION_POKEBALLS_WIPEOUT 4 -#define B_TRANSITION_RIPPLE 6 -#define B_TRANSITION_WAVE 7 -#define B_TRANSITION_SLICE 8 -#define B_TRANSITION_SHARDS 11 -#define B_TRANSITION_SYDNEY 12 -#define B_TRANSITION_PHOEBE 13 -#define B_TRANSITION_GLACIA 14 -#define B_TRANSITION_DRAKE 15 -#define B_TRANSITION_STEVEN 16 +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWEARL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_WIPEOUT 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/src/battle_transition.c b/src/battle_transition.c index 9f4126822..fcf49a7fb 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -11,6 +11,7 @@ #include "sound.h" #include "songs.h" #include "trainer.h" +#include "field_camera.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -46,6 +47,12 @@ struct TransitionData s16 field_2A; s16 field_2C; s16 field_2E; + s16 field_30; + s16 field_32; + s16 field_34; + s16 field_36; + s16 field_38; + s16 field_3A; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -160,22 +167,22 @@ static bool8 sub_811C938(struct Sprite* sprite); static bool8 sub_811C984(struct Sprite* sprite); static bool8 sub_811C9B8(struct Sprite* sprite); static bool8 sub_811C9E4(struct Sprite* sprite); -static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); static bool8 sub_811D52C(void); +static void Phase1_Task_RunFuncs(u8 taskID); +static bool8 Phase1_TransitionAll_Func1(struct Task* task); +static bool8 Phase1_TransitionAll_Func2(struct Task* task); +static void sub_811D658(void); +static void VBlankCB_BattleTransition(void); +static void sub_811D6A8(u16** a0, u16** a1); +static void sub_811D690(u16** a0); +static void sub_811D6D4(void); +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); -void sub_811D658(void); -void VBlankCB_BattleTransition(void); -void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); -void sub_811D6A8(u16** a0, u16** a1); -void sub_811D690(u16** a0); void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); -void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); void sub_811CFD0(struct Sprite* sprite); -void sub_811D54C(u8 taskID); -bool8 sub_811D584(struct Task* task); -bool8 sub_811D5E0(struct Task* task); // const data @@ -187,7 +194,7 @@ const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unuse const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); -struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; +static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = { @@ -380,10 +387,10 @@ static const s16 gUnknown_083FD8F4[][5] = static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; -static const TransitionState gUnknown_083FD948[] = +static const TransitionState sPhase1_TransitionAll_Funcs[] = { - &sub_811D584, - &sub_811D5E0 + &Phase1_TransitionAll_Func1, + &Phase1_TransitionAll_Func2 }; extern const u16 gFieldEffectObjectPalette10[]; @@ -416,10 +423,10 @@ bool8 IsBattleTransitionDone(void) if (gTasks[taskID].tTransitionDone) { DestroyTask(taskID); - return 1; + return TRUE; } else - return 0; + return FALSE; } static void LaunchBattleTransitionTask(u8 transitionID) @@ -441,12 +448,12 @@ static bool8 Transition_Phase1(struct Task* task) { CreateTask(sPhase1_Tasks[task->tTransitionID], 4); task->tState++; - return 0; + return FALSE; } else { task->tState = 2; - return 1; + return TRUE; } } @@ -455,17 +462,17 @@ static bool8 Transition_WaitForPhase1(struct Task* task) if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) { task->tState++; - return 1; + return TRUE; } else - return 0; + return FALSE; } static bool8 Transition_Phase2(struct Task* task) { CreateTask(sPhase2_Tasks[task->tTransitionID], 0); task->tState++; - return 0; + return FALSE; } static bool8 Transition_WaitForPhase2(struct Task* task) @@ -473,7 +480,7 @@ static bool8 Transition_WaitForPhase2(struct Task* task) task->tTransitionDone = 0; if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) task->tTransitionDone = 1; - return 0; + return FALSE; } static void Phase1Task_TransitionAll(u8 taskID) @@ -481,7 +488,7 @@ static void Phase1Task_TransitionAll(u8 taskID) if (gTasks[taskID].tState == 0) { gTasks[taskID].tState++; - sub_811D4C8(0, 0, 3, 2, 2); + CreatePhase1Task(0, 0, 3, 2, 2); } else if (sub_811D52C()) DestroyTask(taskID); @@ -499,7 +506,7 @@ static bool8 Phase2_Transition0_Func1(struct Task* task) REG_BG2CNT |= 0x40; REG_BG3CNT |= 0x40; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition0_Func2(struct Task* task) @@ -515,7 +522,7 @@ static bool8 Phase2_Transition0_Func2(struct Task* task) if (task->data[2] > 14) task->tState++; } - return 0; + return FALSE; } static bool8 Phase2_Transition0_Func3(struct Task* task) @@ -525,7 +532,7 @@ static bool8 Phase2_Transition0_Func3(struct Task* task) u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); DestroyTask(taskID); } - return 0; + return FALSE; } static void Phase2Task_Transition1(u8 taskID) @@ -552,7 +559,7 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) REG_DISPSTAT |= 0x18; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition1_Func2(struct Task* task) @@ -570,7 +577,7 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition1(void) @@ -613,7 +620,7 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) REG_DISPSTAT |= 0x18; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition2_Func2(struct Task* task) @@ -637,7 +644,7 @@ static bool8 Phase2_Transition2_Func2(struct Task* task) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition2(void) @@ -692,7 +699,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 240, 32); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func2(struct Task* task) @@ -713,7 +720,7 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition3_Func3(struct Task* task) @@ -733,7 +740,7 @@ static bool8 Phase2_Transition3_Func3(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func4(struct Task* task) @@ -753,7 +760,7 @@ static bool8 Phase2_Transition3_Func4(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func5(struct Task* task) @@ -773,7 +780,7 @@ static bool8 Phase2_Transition3_Func5(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func6(struct Task* task) @@ -801,7 +808,7 @@ static bool8 Phase2_Transition3_Func6(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void Transition3_Vblank(void) @@ -844,7 +851,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition4_Func2(struct Task* task) @@ -867,7 +874,7 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) } task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition4_Func3(struct Task* task) @@ -877,7 +884,7 @@ static bool8 Phase2_Transition4_Func3(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); } - return 0; + return FALSE; } bool8 FldEff_Pokeball(void) @@ -890,7 +897,7 @@ bool8 FldEff_Pokeball(void) gSprites[spriteID].data2 = -1; InitSpriteAffineAnim(&gSprites[spriteID]); StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); - return 0; + return FALSE; } #define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ @@ -960,7 +967,7 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) TRANSITION_STRUCT.field_2C = 120; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition5_Func2(struct Task* task) @@ -981,7 +988,7 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func3(struct Task* task) @@ -1019,7 +1026,7 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func4(struct Task* task) @@ -1040,7 +1047,7 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func5(struct Task* task) @@ -1079,7 +1086,7 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func6(struct Task* task) @@ -1103,7 +1110,7 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func7(struct Task* task) @@ -1111,7 +1118,7 @@ static bool8 Phase2_Transition5_Func7(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition5(void) @@ -1151,7 +1158,7 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) REG_DISPSTAT |= 0x10; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition6_Func2(struct Task* task) @@ -1188,7 +1195,7 @@ static bool8 Phase2_Transition6_Func2(struct Task* task) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition6(void) @@ -1231,7 +1238,7 @@ static bool8 Phase2_Transition7_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition7); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition7_Func2(struct Task* task) @@ -1261,7 +1268,7 @@ static bool8 Phase2_Transition7_Func2(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition7_Func3(struct Task* task) @@ -1269,7 +1276,7 @@ static bool8 Phase2_Transition7_Func3(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition7(void) @@ -1346,7 +1353,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) SetVBlankCallback(VBlankCB0_Phase2_Mugshots); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func2(struct Task* task) @@ -1373,7 +1380,7 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) REG_DISPSTAT |= 0x10; SetHBlankCallback(HBlankCB_Phase2_Mugshots); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func3(struct Task* task) @@ -1421,7 +1428,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func4(struct Task* task) @@ -1450,7 +1457,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task) PlaySE(SE_BT_START); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func5(struct Task* task) @@ -1462,7 +1469,7 @@ static bool8 Phase2_Mugshot_Func5(struct Task* task) task->tState++; sub_811CA28(task->tMugshotPlayerID); } - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func6(struct Task* task) @@ -1484,7 +1491,7 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.BLDCNT = 0xBF; SetVBlankCallback(VBlankCB1_Phase2_Mugshots); } - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func7(struct Task* task) @@ -1525,7 +1532,7 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func8(struct Task* task) @@ -1536,7 +1543,7 @@ static bool8 Phase2_Mugshot_Func8(struct Task* task) task->data[3] = 0; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Mugshot_Func9(struct Task* task) @@ -1549,7 +1556,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func10(struct Task* task) @@ -1557,7 +1564,7 @@ static bool8 Phase2_Mugshot_Func10(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(task->func)); - return 0; + return FALSE; } static void VBlankCB0_Phase2_Mugshots(void) @@ -1634,7 +1641,7 @@ void sub_811C90C(struct Sprite* sprite) bool8 sub_811C934(struct Sprite* sprite) { - return 0; + return FALSE; } bool8 sub_811C938(struct Sprite* sprite) @@ -1648,7 +1655,7 @@ bool8 sub_811C938(struct Sprite* sprite) sprite->data0++; sprite->data1 = arr0[sprite->data7]; sprite->data2 = arr1[sprite->data7]; - return 1; + return TRUE; } bool8 sub_811C984(struct Sprite* sprite) @@ -1658,7 +1665,7 @@ bool8 sub_811C984(struct Sprite* sprite) sprite->data0++; else if (!sprite->data7 && sprite->pos1.x > 103) sprite->data0++; - return 0; + return FALSE; } bool8 sub_811C9B8(struct Sprite* sprite) @@ -1671,7 +1678,7 @@ bool8 sub_811C9B8(struct Sprite* sprite) sprite->data2 = -sprite->data2; sprite->data6 = 1; } - return 0; + return FALSE; } bool8 sub_811C9E4(struct Sprite* sprite) @@ -1680,7 +1687,7 @@ bool8 sub_811C9E4(struct Sprite* sprite) sprite->pos1.x += sprite->data1; if (sprite->pos1.x < -31 || sprite->pos1.x > 271) sprite->data0++; - return 0; + return FALSE; } static void sub_811CA10(s16 spriteID, s16 value) @@ -1733,7 +1740,7 @@ static bool8 Phase2_Transition8_Func1(struct Task* task) SetHBlankCallback(HBlankCB_Phase2_Transition8); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition8_Func2(struct Task* task) @@ -1770,7 +1777,7 @@ static bool8 Phase2_Transition8_Func2(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition8_Func3(struct Task* task) @@ -1778,7 +1785,7 @@ static bool8 Phase2_Transition8_Func3(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition8(void) @@ -1832,7 +1839,7 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) SetVBlankCallback(VBlankCB0_Phase2_Transition9); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func2(struct Task* task) @@ -1852,7 +1859,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) sprite->data6++; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func3(struct Task* task) @@ -1863,7 +1870,7 @@ static bool8 Phase2_Transition9_Func3(struct Task* task) BlendPalettes(-1, 0x10, 0x7FFF); task->tState++; } - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func4(struct Task* task) @@ -1882,7 +1889,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) SetVBlankCallback(VBlankCB1_Phase2_Transition9); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func5(struct Task* task) @@ -1892,7 +1899,7 @@ static bool8 Phase2_Transition9_Func5(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); } - return 0; + return FALSE; } static void VBlankCB0_Phase2_Transition9(void) @@ -1982,7 +1989,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition10_Func2(struct Task* task) @@ -2003,7 +2010,7 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) } task->data[1]--; - return 0; + return FALSE; } static bool8 Phase2_Transition10_Func3(struct Task* task) @@ -2013,7 +2020,7 @@ static bool8 Phase2_Transition10_Func3(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); } - return 0; + return FALSE; } static void Phase2Task_Transition11(u8 taskID) @@ -2041,7 +2048,7 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition11); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition11_Func2(struct Task* task) @@ -2054,7 +2061,7 @@ static bool8 Phase2_Transition11_Func2(struct Task* task) 1, 1); task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition11_Func3(struct Task* task) @@ -2093,7 +2100,7 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition11_Func4(struct Task* task) @@ -2102,14 +2109,14 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) { task->tState++; task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; - return 1; + return TRUE; } else { DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); - return 0; + return FALSE; } } @@ -2118,10 +2125,10 @@ static bool8 Phase2_Transition11_Func5(struct Task* task) if (--task->data[3] == 0) { task->tState = 1; - return 1; + return TRUE; } else - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition11(void) @@ -2137,9 +2144,9 @@ static void VBlankCB_Phase2_Transition11(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) { - u8 taskID = CreateTask(sub_811D54C, 3); + u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3); gTasks[taskID].data[1] = a0; gTasks[taskID].data[2] = a1; gTasks[taskID].data[3] = a2; @@ -2150,13 +2157,175 @@ static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) static bool8 sub_811D52C(void) { - if (FindTaskIdByFunc(sub_811D54C) == 0xFF) - return 1; + if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF) + return TRUE; else - return 0; + return FALSE; } -void sub_811D54C(u8 taskID) +static void Phase1_Task_RunFuncs(u8 taskID) { - while (gUnknown_083FD948[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase1_TransitionAll_Func1(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[1]; + task->data[7] += task->data[4]; + if (task->data[7] > 16) + task->data[7] = 16; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] > 15) + { + task->tState++; + task->data[6] = task->data[2]; + } + return FALSE; +} + +static bool8 Phase1_TransitionAll_Func2(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[2]; + task->data[7] -= task->data[5]; + if (task->data[7] < 0) + task->data[7] = 0; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] == 0) + { + if (--task->data[3] == 0) + DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs)); + else + { + task->data[6] = task->data[1]; + task->tState = 0; + } + } + return FALSE; +} + +static void sub_811D658(void) +{ + struct TransitionData* const* dummy = &sTransitionStructPtr; + memset(*dummy, 0, sizeof(struct TransitionData)); + sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16); +} + +static void VBlankCB_BattleTransition(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_811D690(u16** a0) +{ + u16 reg, *vram; + + reg = REG_BG0CNT >> 2; + reg <<= 0xE; + vram = (u16*)(VRAM + reg); + + *a0 = vram; +} + +static void sub_811D6A8(u16** a0, u16** a1) +{ + u16 reg0, reg1, *vram0, *vram1; + + reg0 = REG_BG0CNT >> 8; + reg1 = REG_BG0CNT >> 2; + + reg0 <<= 0xB; + reg1 <<= 0xE; + + vram0 = (u16*)(VRAM + reg0); + *a0 = vram0; + + vram1 = (u16*)(VRAM + reg1); + *a1 = vram1; +} + +static void sub_811D6D4(void) +{ + BlendPalettes(-1, 0x10, 0); +} + +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) +{ + u8 i; + for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer) + { + array[i] = sinAdd + Sin(0xFF & index, amplitude); + } +} + +void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +{ + s16 i; + + memset(array, 0xA, 160 * sizeof(s16)); + for (i = 0; i < 64; i++) + { + s16 sinResult, cosResult, r1, r6, r7, r8; + s16 r2, r3; + s16 j; + + sinResult = Sin(i, a3); + cosResult = Cos(i, a3); + + r1 = a1 - sinResult; + r6 = a1 + sinResult; + r7 = a2 - cosResult; + r8 = a2 + cosResult; + + if (r1 < 0) + r1 = 0; + if (r6 > 0xF0) + r6 = 0xF0; + if (r7 < 0) + r7 = 0; + if (r8 > 0x9F) + r8 = 0x9F; + + r6 |= (r1 << 8); + array[r7] = r6; + array[r8] = r6; + + cosResult = Cos(i + 1, a3); + r3 = a2 - cosResult; + r2 = a2 + cosResult; + + if (r3 < 0) + r3 = 0; + if (r2 > 0x9F) + r2 = 0x9F; + + j = r7; + while (j > r3) + { + array[--j] = r6; + } + j = r7; + while (j < r3) + { + array[++j] = r6; + } + + j = r8; + while (j > r2) + { + array[--j] = r6; + } + j = r8; + while (j < r2) + { + array[++j] = r6; + } + } } -- cgit v1.2.3 From 77cfea2ecfdcb28fa286b967c9635b5e10ff99a2 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 19:05:38 +0200 Subject: all functions decompiled --- asm/battle_transition.s | 219 ------------------------------------------ ld_script.txt | 1 - src/battle_transition.c | 248 ++++++++++++++++++++++++++++-------------------- 3 files changed, 145 insertions(+), 323 deletions(-) delete mode 100644 asm/battle_transition.s diff --git a/asm/battle_transition.s b/asm/battle_transition.s deleted file mode 100644 index f99f53fb3..000000000 --- a/asm/battle_transition.s +++ /dev/null @@ -1,219 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - - - thumb_func_start sub_811D8FC -sub_811D8FC: @ 811D8FC - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r4, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - strh r1, [r6] - strh r2, [r6, 0x2] - strh r1, [r6, 0x4] - strh r2, [r6, 0x6] - strh r3, [r6, 0x8] - strh r7, [r6, 0xA] - strh r5, [r6, 0xC] - strh r4, [r6, 0xE] - lsls r3, 16 - asrs r3, 16 - lsls r1, 16 - asrs r1, 16 - subs r3, r1 - strh r3, [r6, 0x10] - lsls r0, r3, 16 - cmp r0, 0 - bge _0811D94E - negs r0, r3 - strh r0, [r6, 0x10] - lsls r0, r5, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xC] -_0811D94E: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r1, 16 - subs r1, r0, r1 - strh r1, [r6, 0x12] - lsls r0, r1, 16 - cmp r0, 0 - bge _0811D96C - negs r0, r1 - strh r0, [r6, 0x12] - lsls r0, r4, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xE] -_0811D96C: - movs r0, 0 - strh r0, [r6, 0x14] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811D8FC - - thumb_func_start sub_811D978 -sub_811D978: @ 811D978 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrh r0, [r3, 0x10] - mov r8, r0 - movs r1, 0x10 - ldrsh r6, [r3, r1] - ldrh r2, [r3, 0x12] - mov r12, r2 - movs r4, 0x12 - ldrsh r5, [r3, r4] - cmp r6, r5 - ble _0811D9C8 - ldrh r0, [r3, 0xC] - ldrh r2, [r3, 0x4] - adds r1, r0, r2 - strh r1, [r3, 0x4] - ldrh r2, [r3, 0x14] - add r2, r12 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r0, 0 - ldrh r7, [r3, 0xE] - cmp r1, r6 - ble _0811D9EE - ldrh r1, [r3, 0x6] - adds r0, r7, r1 - strh r0, [r3, 0x6] - mov r1, r8 - b _0811D9EA -_0811D9C8: - ldrh r0, [r3, 0xE] - ldrh r2, [r3, 0x6] - adds r1, r0, r2 - strh r1, [r3, 0x6] - ldrh r2, [r3, 0x14] - add r2, r8 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - ldrh r4, [r3, 0xC] - adds r7, r0, 0 - cmp r1, r5 - ble _0811D9EE - ldrh r1, [r3, 0x4] - adds r0, r4, r1 - strh r0, [r3, 0x4] - mov r1, r12 -_0811D9EA: - subs r0, r2, r1 - strh r0, [r3, 0x14] -_0811D9EE: - movs r5, 0 - lsls r0, r4, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA06 - movs r4, 0x4 - ldrsh r1, [r3, r4] - movs r4, 0x8 - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bge _0811DA18 -_0811DA06: - cmp r2, 0 - bge _0811DA26 - movs r0, 0x4 - ldrsh r1, [r3, r0] - movs r2, 0x8 - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bgt _0811DA26 -_0811DA18: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - cmp r0, 0 - beq _0811DA26 - strh r4, [r3, 0x4] -_0811DA26: - lsls r0, r7, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA3C - movs r4, 0x6 - ldrsh r1, [r3, r4] - movs r4, 0xA - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bge _0811DA4E -_0811DA3C: - cmp r2, 0 - bge _0811DA5C - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r2, 0xA - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bgt _0811DA5C -_0811DA4E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r10 - cmp r0, 0 - beq _0811DA5C - strh r4, [r3, 0x6] -_0811DA5C: - cmp r5, 0x2 - beq _0811DA64 - movs r0, 0 - b _0811DA66 -_0811DA64: - movs r0, 0x1 -_0811DA66: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811D978 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 80b882108..3e4a3ea91 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -227,7 +227,6 @@ SECTIONS { src/landmark.o(.text); src/fldeff_strength.o(.text); src/battle_transition.o(.text); - asm/battle_transition.o(.text); src/battle_811DA74.o(.text); asm/battle_message.o(.text); src/choose_party.o(.text); diff --git a/src/battle_transition.c b/src/battle_transition.c index fcf49a7fb..88d3330f9 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -41,18 +41,7 @@ struct TransitionData s16 field_1E; s16 field_20; s16 field_22; - s16 field_24; - s16 field_26; - s16 field_28; - s16 field_2A; - s16 field_2C; - s16 field_2E; - s16 field_30; - s16 field_32; - s16 field_34; - s16 field_36; - s16 field_38; - s16 field_3A; + s16 data[11]; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -178,11 +167,10 @@ static void sub_811D6A8(u16** a0, u16** a1); static void sub_811D690(u16** a0); static void sub_811D6D4(void); static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); - -void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); -void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); -bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); -void sub_811CFD0(struct Sprite* sprite); +static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void sub_811CFD0(struct Sprite* sprite); // const data @@ -964,7 +952,7 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) } SetVBlankCallback(VBlankCB_Phase2_Transition5); - TRANSITION_STRUCT.field_2C = 120; + TRANSITION_STRUCT.data[4] = 120; task->tState++; return TRUE; @@ -974,16 +962,16 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 + 1) | 0x7800; - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C += 16; - if (TRANSITION_STRUCT.field_2C >= 240) + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[4] >= 240) { - TRANSITION_STRUCT.field_2E = 0; + TRANSITION_STRUCT.data[5] = 0; task->tState++; } @@ -998,30 +986,30 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1); while (1) { - r1 = 120, r3 = TRANSITION_STRUCT.field_28 + 1; - if (TRANSITION_STRUCT.field_2E >= 80) - r1 = TRANSITION_STRUCT.field_28, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; + if (TRANSITION_STRUCT.data[5] >= 80) + r1 = TRANSITION_STRUCT.data[2], r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); if (var != 0) break; - var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } - TRANSITION_STRUCT.field_2E += 8; - if (TRANSITION_STRUCT.field_2E >= 160) + TRANSITION_STRUCT.data[5] += 8; + if (TRANSITION_STRUCT.data[5] >= 160) { - TRANSITION_STRUCT.field_2C = 240; + TRANSITION_STRUCT.data[4] = 240; task->tState++; } else { - while (TRANSITION_STRUCT.field_2A < TRANSITION_STRUCT.field_2E) + while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][++TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); } } @@ -1033,16 +1021,16 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 << 8) | 0xF0; - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C -= 16; - if (TRANSITION_STRUCT.field_2C <= 0) + TRANSITION_STRUCT.data[4] -= 16; + if (TRANSITION_STRUCT.data[4] <= 0) { - TRANSITION_STRUCT.field_2E = 160; + TRANSITION_STRUCT.data[5] = 160; task->tState++; } @@ -1057,31 +1045,31 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1); while (1) { - r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF, r2 = TRANSITION_STRUCT.field_28; - if (TRANSITION_STRUCT.field_2E <= 80) - r2 = 120, r1 = TRANSITION_STRUCT.field_28; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[5] <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.data[2]; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); r3 = 0; if (var != 0) break; - var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } - TRANSITION_STRUCT.field_2E -= 8; - if (TRANSITION_STRUCT.field_2E <= 0) + TRANSITION_STRUCT.data[5] -= 8; + if (TRANSITION_STRUCT.data[5] <= 0) { - TRANSITION_STRUCT.field_2C = r3; + TRANSITION_STRUCT.data[4] = r3; task->tState++; } else { - while (TRANSITION_STRUCT.field_2A > TRANSITION_STRUCT.field_2E) + while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][--TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); } } @@ -1093,20 +1081,20 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1); do { s16 r2, r3; - r2 = 120, r3 = TRANSITION_STRUCT.field_28; - if (TRANSITION_STRUCT.field_28 >= 120) + r2 = 120, r3 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r2 << 8); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C += 16; - if (TRANSITION_STRUCT.field_28 > 120) + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[2] > 120) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; @@ -1639,12 +1627,12 @@ void sub_811C90C(struct Sprite* sprite) while (gUnknown_083FD880[sprite->data0](sprite)); } -bool8 sub_811C934(struct Sprite* sprite) +static bool8 sub_811C934(struct Sprite* sprite) { return FALSE; } -bool8 sub_811C938(struct Sprite* sprite) +static bool8 sub_811C938(struct Sprite* sprite) { s16 arr0[2]; s16 arr1[2]; @@ -1658,7 +1646,7 @@ bool8 sub_811C938(struct Sprite* sprite) return TRUE; } -bool8 sub_811C984(struct Sprite* sprite) +static bool8 sub_811C984(struct Sprite* sprite) { sprite->pos1.x += sprite->data1; if (sprite->data7 && sprite->pos1.x < 133) @@ -1668,7 +1656,7 @@ bool8 sub_811C984(struct Sprite* sprite) return FALSE; } -bool8 sub_811C9B8(struct Sprite* sprite) +static bool8 sub_811C9B8(struct Sprite* sprite) { sprite->data1 += sprite->data2; sprite->pos1.x += sprite->data1; @@ -1681,7 +1669,7 @@ bool8 sub_811C9B8(struct Sprite* sprite) return FALSE; } -bool8 sub_811C9E4(struct Sprite* sprite) +static bool8 sub_811C9E4(struct Sprite* sprite) { sprite->data1 += sprite->data2; sprite->pos1.x += sprite->data1; @@ -1931,7 +1919,7 @@ static void HBlankCB_Phase2_Transition9(void) REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; } -void sub_811CFD0(struct Sprite* sprite) +static void sub_811CFD0(struct Sprite* sprite) { if (sprite->data5) { @@ -2053,7 +2041,7 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) static bool8 Phase2_Transition11_Func2(struct Task* task) { - sub_811D8FC(&TRANSITION_STRUCT.field_24, + sub_811D8FC(TRANSITION_STRUCT.data, gUnknown_083FD8F4[task->data[1]][0], gUnknown_083FD8F4[task->data[1]][1], gUnknown_083FD8F4[task->data[1]][2], @@ -2073,30 +2061,30 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8; - s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF; + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; if (task->data[2] == 0) { - if (r3 < TRANSITION_STRUCT.field_28) - r3 = TRANSITION_STRUCT.field_28; + if (r3 < TRANSITION_STRUCT.data[2]) + r3 = TRANSITION_STRUCT.data[2]; if (r3 > r4) r3 = r4; } else { - if (r4 > TRANSITION_STRUCT.field_28) - r4 = TRANSITION_STRUCT.field_28; + if (r4 > TRANSITION_STRUCT.data[2]) + r4 = TRANSITION_STRUCT.data[2]; if (r4 <= r3) r4 = r3; } - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; break; } else - nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } TRANSITION_STRUCT.VBlank_DMA++; @@ -2265,37 +2253,36 @@ static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, } } -void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) { s16 i; memset(array, 0xA, 160 * sizeof(s16)); for (i = 0; i < 64; i++) { - s16 sinResult, cosResult, r1, r6, r7, r8; - s16 r2, r3; - s16 j; + s16 sinResult, cosResult; + s16 toStoreOrr, r2, r3, toStore, r7, r8; sinResult = Sin(i, a3); cosResult = Cos(i, a3); - r1 = a1 - sinResult; - r6 = a1 + sinResult; + toStoreOrr = a1 - sinResult; + toStore = a1 + sinResult; r7 = a2 - cosResult; r8 = a2 + cosResult; - if (r1 < 0) - r1 = 0; - if (r6 > 0xF0) - r6 = 0xF0; + if (toStoreOrr < 0) + toStoreOrr = 0; + if (toStore > 0xF0) + toStore = 0xF0; if (r7 < 0) r7 = 0; if (r8 > 0x9F) r8 = 0x9F; - r6 |= (r1 << 8); - array[r7] = r6; - array[r8] = r6; + toStore |= (toStoreOrr << 8); + array[r7] = toStore; + array[r8] = toStore; cosResult = Cos(i + 1, a3); r3 = a2 - cosResult; @@ -2306,26 +2293,81 @@ void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) if (r2 > 0x9F) r2 = 0x9F; - j = r7; - while (j > r3) - { - array[--j] = r6; - } - j = r7; - while (j < r3) - { - array[++j] = r6; - } + while (r7 > r3) + array[--r7] = toStore; + while (r7 < r3) + array[++r7] = toStore; + + while (r8 > r2) + array[--r8] = toStore; + while (r8 < r2) + array[++r8] = toStore; + } +} + +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + a0[0] = a1; + a0[1] = a2; + a0[2] = a1; + a0[3] = a2; + a0[4] = a3; + a0[5] = a4; + a0[6] = a5; + a0[7] = a6; + a0[8] = a3 - a1; + if (a0[8] < 0) + { + a0[8] = -a0[8]; + a0[6] = -a5; + } + a0[9] = a4 - a2; + if (a0[9] < 0) + { + a0[9] = -a0[9]; + a0[7] = -a6; + } + a0[10] = 0; +} - j = r8; - while (j > r2) +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2) +{ + u8 var; + if (a0[8] > a0[9]) + { + a0[2] += a0[6]; + a0[10] += a0[9]; + if (a0[10] > a0[8]) { - array[--j] = r6; + a0[3] += a0[7]; + a0[10] -= a0[8]; } - j = r8; - while (j < r2) + } + else + { + a0[3] += a0[7]; + a0[10] += a0[8]; + if (a0[10] > a0[9]) { - array[++j] = r6; + a0[2] += a0[6]; + a0[10] -= a0[9]; } } + var = 0; + if ((a0[6] > 0 && a0[2] >= a0[4]) || (a0[6] < 0 && a0[2] <= a0[4])) + { + var++; + if (a1) + a0[2] = a0[4]; + } + if ((a0[7] > 0 && a0[3] >= a0[5]) || (a0[7] < 0 && a0[3] <= a0[5])) + { + var++; + if (a2) + a0[3] = a0[5]; + } + if (var == 2) + return TRUE; + else + return FALSE; } -- cgit v1.2.3 From aa3988cc1ace31f97590b4ac3b33c4fa3a5e13dc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 20:51:53 +0200 Subject: move all data to C --- data/battle_transition.s | 132 ------------------ include/battle_transition.h | 2 +- ld_script.txt | 1 - src/battle_transition.c | 328 +++++++++++++++++++++++++++++++------------- 4 files changed, 235 insertions(+), 228 deletions(-) delete mode 100644 data/battle_transition.s diff --git a/data/battle_transition.s b/data/battle_transition.s deleted file mode 100644 index 3dd12ef76..000000000 --- a/data/battle_transition.s +++ /dev/null @@ -1,132 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - -gSpriteImageTable_83FD950:: @ 83FD950 - obj_frame_tiles gSpriteImage_83FC148, 0x200 - - .align 2 -gSpriteAnim_83FD958:: @ 83FD958 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD960:: @ 83FD960 - .4byte gSpriteAnim_83FD958 - - .align 2 -gSpriteAffineAnim_83FD964:: @ 83FD964 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83FD974:: @ 83FD974 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_83FD984:: @ 83FD984 - .4byte gSpriteAffineAnim_83FD964 - .4byte gSpriteAffineAnim_83FD974 - - .align 2 -gSpriteTemplate_83FD98C:: @ 83FD98C - spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720 - - .align 2 -gOamData_83FD9A4:: @ 83FD9A4 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gSpriteImageTable_83FD9AC:: @ 83FD9AC - obj_frame_tiles gSpriteImage_83FC528, 0x800 - - .align 2 -gSpriteImageTable_83FD9B4:: @ 83FD9B4 - obj_frame_tiles gSpriteImage_83FCD28, 0x800 - - .align 2 -gSpriteAnim_83FD9BC:: @ 83FD9BC - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD9C4:: @ 83FD9C4 - .4byte gSpriteAnim_83FD9BC - - .align 2 -gSpriteTemplate_83FD9C8:: @ 83FD9C8 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gSpriteTemplate_83FD9E0:: @ 83FD9E0 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gFieldEffectObjectPalette10:: @ 83FD9F8 - .incbin "graphics/field_effect_objects/palettes/10.gbapal" - - .align 2 -gFieldEffectObjectPaletteInfo10:: @ 83FDA18 - obj_pal gFieldEffectObjectPalette10, 0x1009 - - .align 2 -sMugshotPal_Sydney: - .incbin "graphics/battle_transitions/sidney_bg.gbapal" - - .align 2 -sMugshotPal_Phoebe: - .incbin "graphics/battle_transitions/phoebe_bg.gbapal" - - .align 2 -sMugshotPal_Glacia: - .incbin "graphics/battle_transitions/glacia_bg.gbapal" - - .align 2 -sMugshotPal_Drake: - .incbin "graphics/battle_transitions/drake_bg.gbapal" - - .align 2 -sMugshotPal_Steven: - .incbin "graphics/battle_transitions/steven_bg.gbapal" - - .align 2 -sMugshotPal_Brendan: - .incbin "graphics/battle_transitions/brendan_bg.gbapal" - - .align 2 -sMugshotPal_May: - .incbin "graphics/battle_transitions/may_bg.gbapal" - - .align 2 -sOpponentMugshotsPals:: @ 83FDB00 - .4byte sMugshotPal_Sydney - .4byte sMugshotPal_Phoebe - .4byte sMugshotPal_Glacia - .4byte sMugshotPal_Drake - .4byte sMugshotPal_Steven - - .align 2 -sPlayerMugshotsPals:: @ 83FDB14 - .4byte sMugshotPal_Brendan - .4byte sMugshotPal_May - - .align 2 -UnusedTrainerPalette: - .incbin "graphics/battle_transitions/unused_trainer.gbapal" - - .align 2 -gSpritePalette_UnusedTrainer:: @ 83FDB3C - obj_pal UnusedTrainerPalette, 0x100A - - .align 2 -gUnknown_083FDB44:: @ 83FDB44 - .incbin "graphics/battle_transitions/big_pokeball_map.bin" - - .align 2 -gUnknown_083FDFF4:: @ 83FDFF4 - .incbin "graphics/battle_transitions/elite_four_bg_map.bin" diff --git a/include/battle_transition.h b/include/battle_transition.h index 63ea36b67..34a7290fa 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -25,7 +25,7 @@ enum // TRANSITION_MUGSHOT #define B_TRANSITION_SWEARL 1 #define B_TRANSITION_SHUFFLE 2 #define B_TRANSITION_BIG_POKEBALL 3 -#define B_TRANSITION_POKEBALLS_WIPEOUT 4 +#define B_TRANSITION_POKEBALLS_TRAIL 4 #define B_TRANSITION_CLOCKWISE_BLACKFADE 5 #define B_TRANSITION_RIPPLE 6 #define B_TRANSITION_WAVE 7 diff --git a/ld_script.txt b/ld_script.txt index 3e4a3ea91..9a3808950 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -444,7 +444,6 @@ SECTIONS { data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); src/battle_transition.o(.rodata); - data/battle_transition.o(.rodata); data/battle_811DA74.o(.rodata); data/battle_message.o(.rodata); src/choose_party.o(.rodata); diff --git a/src/battle_transition.c b/src/battle_transition.c index 88d3330f9..363a52148 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -15,12 +15,13 @@ void sub_807DE10(void); void dp12_8087EA4(void); -void sub_811C90C(struct Sprite* sprite); extern u8 ewram[]; -extern s16 gUnknown_03005560[]; +extern u16 gUnknown_03005560[]; extern u16 gUnknown_03004DE0[][0x3C0]; +extern const struct OamData gFieldOamData_32x32; + struct TransitionData { vs8 VBlank_DMA; @@ -32,15 +33,15 @@ struct TransitionData u16 field_C; u16 BLDCNT; u16 BLDALPHA; - u16 field_12; + u16 BLDY; s16 field_14; s16 field_16; s16 field_18; s16 field_1A; s16 field_1C; - s16 field_1E; + s16 field_1E; // unused s16 field_20; - s16 field_22; + s16 field_22; // unused s16 data[11]; }; @@ -171,16 +172,18 @@ static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); static void sub_811CFD0(struct Sprite* sprite); +static void sub_811B720(struct Sprite* sprite); +static void sub_811C90C(struct Sprite* sprite); // const data -static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); -static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); -const u32 gSpriteImage_83FC148[] = INCBIN_U32("graphics/battle_transitions/pokeball.4bpp"); -static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); -const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); -const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); -const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); +static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; @@ -254,9 +257,9 @@ static const TransitionState sPhase2_Transition4_Funcs[] = &Phase2_Transition4_Func3 }; -static const s16 gUnknown_083FD7E4[2] = {-16, 256}; -static const s16 gUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; -static const s16 gUnknown_083FD7F2[2] = {8, -8}; +static const s16 sUnknown_083FD7E4[2] = {-16, 256}; +static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 sUnknown_083FD7F2[2] = {8, -8}; static const TransitionState sPhase2_Transition5_Funcs[] = { @@ -314,7 +317,7 @@ static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = {0, 7}, }; -static const TransitionSpriteCallback gUnknown_083FD880[] = +static const TransitionSpriteCallback sUnknown_083FD880[] = { &sub_811C934, &sub_811C938, @@ -325,8 +328,8 @@ static const TransitionSpriteCallback gUnknown_083FD880[] = &sub_811C934 }; -static const s16 gUnknown_083FD89C[2] = {12, -12}; -static const s16 gUnknown_083FD8A0[2] = {-1, 1}; +static const s16 sUnknown_083FD89C[2] = {12, -12}; +static const s16 sUnknown_083FD8A0[2] = {-1, 1}; static const TransitionState sPhase2_Transition8_Funcs[] = { @@ -344,7 +347,7 @@ static const TransitionState sPhase2_Transition9_Funcs[] = &Phase2_Transition9_Func5 }; -static const s16 gUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; +static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; static const TransitionState sPhase2_Transition10_Funcs[] = { @@ -362,7 +365,7 @@ static const TransitionState sPhase2_Transition11_Funcs[] = &Phase2_Transition11_Func5 }; -static const s16 gUnknown_083FD8F4[][5] = +static const s16 sUnknown_083FD8F4[][5] = { {56, 0, 0, 160, 0}, {104, 160, 240, 88, 1}, @@ -373,7 +376,7 @@ static const s16 gUnknown_083FD8F4[][5] = {168, 160, 48, 0, 1}, }; -static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; +static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; static const TransitionState sPhase1_TransitionAll_Funcs[] = { @@ -381,12 +384,149 @@ static const TransitionState sPhase1_TransitionAll_Funcs[] = &Phase1_TransitionAll_Func2 }; -extern const u16 gFieldEffectObjectPalette10[]; -extern const u16 gUnknown_083FDB44[]; -extern const struct SpriteTemplate gSpriteTemplate_83FD98C; -extern const u16 gUnknown_083FDFF4[]; -extern const u8 * const sOpponentMugshotsPals[]; -extern const u8 * const sPlayerMugshotsPals[2]; +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + sSpriteImage_83FC148, 0x200 +}; + +static const union AnimCmd sSpriteAnim_83FD958[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD960[] = +{ + sSpriteAnim_83FD958 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] = +{ + sSpriteAffineAnim_83FD964, + sSpriteAffineAnim_83FD974 +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD98C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4105, + .oam = &gFieldOamData_32x32, + .anims = sSpriteAnimTable_83FD960, + .images = sSpriteImageTable_83FD950, + .affineAnims = sSpriteAffineAnimTable_83FD984, + .callback = sub_811B720 +}; + +static const struct OamData gOamData_83FD9A4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] = +{ + sSpriteImage_83FC528, 0x800 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] = +{ + sSpriteImage_83FCD28, 0x800 +}; + +static const union AnimCmd sSpriteAnim_83FD9BC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] = +{ + sSpriteAnim_83FD9BC +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9C8 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9AC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9E0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9B4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal"); + +const struct SpritePalette gFieldEffectObjectPaletteInfo10 = +{ + gFieldEffectObjectPalette10, 0x1009 +}; + +static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal"); +static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal"); +static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal"); +static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal"); +static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal"); +static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal"); +static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal"); + +static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] = +{ + sMugshotPal_Sydney, + sMugshotPal_Phoebe, + sMugshotPal_Glacia, + sMugshotPal_Drake, + sMugshotPal_Steven +}; + +static const u16 * const sPlayerMugshotsPals[2] = +{ + sMugshotPal_Brendan, + sMugshotPal_May +}; + +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + sUnusedTrainerPalette, 0x100A +}; + +static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin"); +static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin"); // actual code starts here @@ -683,7 +823,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); - CpuSet(gUnknown_083FBB88, dst2, 0x2C0); + CpuSet(sBigPokeball_Tileset, dst2, 0x2C0); LoadPalette(gFieldEffectObjectPalette10, 240, 32); task->tState++; @@ -694,15 +834,15 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; - const u16* var; + const u16* BigPokeballMap; - var = gUnknown_083FDB44; + BigPokeballMap = sBigPokeball_Tilemap; sub_811D6A8(&dst1, &dst2); for (i = 0; i < 20; i++) { - for (j = 0; j < 30; j++, var++) + for (j = 0; j < 30; j++, BigPokeballMap++) { - dst1[i * 32 + j] = *var | 0xF000; + dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); @@ -834,7 +974,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FC108, dst2, 0x20); + CpuSet(sPokeballTrail_Tileset, dst2, 0x20); CpuFill32(0, dst1, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); @@ -849,8 +989,8 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) s16 arr0[2]; s16 arr1[5]; - memcpy(arr0, gUnknown_083FD7E4, sizeof(gUnknown_083FD7E4)); - memcpy(arr1, gUnknown_083FD7E8, sizeof(gUnknown_083FD7E8)); + memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4)); + memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8)); rand = Random() & 1; for (i = 0; i <= 4; i++, rand ^= 1) { @@ -877,7 +1017,7 @@ static bool8 Phase2_Transition4_Func3(struct Task* task) bool8 FldEff_Pokeball(void) { - u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); gSprites[spriteID].oam.priority = 0; gSprites[spriteID].oam.affineMode = 1; gSprites[spriteID].data0 = gUnknown_0202FF84[2]; @@ -894,11 +1034,11 @@ bool8 FldEff_Pokeball(void) ptr[index] = toStore; \ } -void sub_811B720(struct Sprite* sprite) +static void sub_811B720(struct Sprite* sprite) { s16 arr0[2]; - memcpy(arr0, gUnknown_083FD7F2, sizeof(gUnknown_083FD7F2)); + memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2)); if (sprite->data1 != 0) sprite->data1--; else @@ -1348,19 +1488,19 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; - const u16* var; + const u16* MugshotsMap; - var = gUnknown_083FDFF4; + MugshotsMap = sMugshotsTilemap; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FC348, dst2, 0xF0); + CpuSet(sUnknown_083FC348, dst2, 0xF0); LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); for (i = 0; i < 20; i++) { - for (j = 0; j < 32; j++, var++) + for (j = 0; j < 32; j++, MugshotsMap++) { - dst1[i * 32 + j] = *var | 0xF000; + dst1[i * 32 + j] = *MugshotsMap | 0xF000; } } @@ -1622,9 +1762,9 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); } -void sub_811C90C(struct Sprite* sprite) +static void sub_811C90C(struct Sprite* sprite) { - while (gUnknown_083FD880[sprite->data0](sprite)); + while (sUnknown_083FD880[sprite->data0](sprite)); } static bool8 sub_811C934(struct Sprite* sprite) @@ -1637,8 +1777,8 @@ static bool8 sub_811C938(struct Sprite* sprite) s16 arr0[2]; s16 arr1[2]; - memcpy(arr0, gUnknown_083FD89C, sizeof(gUnknown_083FD89C)); - memcpy(arr1, gUnknown_083FD8A0, sizeof(gUnknown_083FD8A0)); + memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C)); + memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0)); sprite->data0++; sprite->data1 = arr0[sprite->data7]; @@ -1809,7 +1949,7 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) dp12_8087EA4(); TRANSITION_STRUCT.BLDCNT = 0xBF; - TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDY = 0; TRANSITION_STRUCT.WININ = 0x1E; TRANSITION_STRUCT.WINOUT = 0x3F; TRANSITION_STRUCT.WIN0V = 0xA0; @@ -1836,7 +1976,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) s16 arr1[8]; struct Sprite* sprite; - memcpy(arr1, gUnknown_083FD8C4, sizeof(gUnknown_083FD8C4)); + memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4)); for (i = 0, posY = 0; i < 8; i++, posY += 0x14) { sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; @@ -1870,7 +2010,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) SetHBlankCallback(0); TRANSITION_STRUCT.field_6 = 0xF0; - TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDY = 0; TRANSITION_STRUCT.BLDCNT = 0xFF; TRANSITION_STRUCT.WININ = 0x3F; @@ -1882,7 +2022,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) static bool8 Phase2_Transition9_Func5(struct Task* task) { - if (++TRANSITION_STRUCT.field_12 > 16) + if (++TRANSITION_STRUCT.BLDY > 16) { sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); @@ -1906,7 +2046,7 @@ static void VBlankCB0_Phase2_Transition9(void) static void VBlankCB1_Phase2_Transition9(void) { VBlankCB_BattleTransition(); - REG_BLDY = TRANSITION_STRUCT.field_12; + REG_BLDY = TRANSITION_STRUCT.BLDY; REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -1972,7 +2112,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FD528, dst2, 0x10); + CpuSet(sShrinkingBoxTileset, dst2, 0x10); CpuFill16(0xF000, dst1, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); @@ -1989,7 +2129,7 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) sub_811D690(&dst1); task->data[1] = 3; task->data[2]++; - CpuSet(gUnknown_083FD528 + (task->data[2] * 8), dst1, 0x10); + CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10); if (task->data[2] > 0xD) { task->tState++; @@ -2042,12 +2182,12 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) static bool8 Phase2_Transition11_Func2(struct Task* task) { sub_811D8FC(TRANSITION_STRUCT.data, - gUnknown_083FD8F4[task->data[1]][0], - gUnknown_083FD8F4[task->data[1]][1], - gUnknown_083FD8F4[task->data[1]][2], - gUnknown_083FD8F4[task->data[1]][3], + sUnknown_083FD8F4[task->data[1]][0], + sUnknown_083FD8F4[task->data[1]][1], + sUnknown_083FD8F4[task->data[1]][2], + sUnknown_083FD8F4[task->data[1]][3], 1, 1); - task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; + task->data[2] = sUnknown_083FD8F4[task->data[1]][4]; task->tState++; return TRUE; } @@ -2096,7 +2236,7 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) if (++task->data[1] < 7) { task->tState++; - task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; + task->data[3] = sUnknown_083FD93A[task->data[1] - 1]; return TRUE; } else @@ -2305,66 +2445,66 @@ static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) } } -static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) { - a0[0] = a1; - a0[1] = a2; - a0[2] = a1; - a0[3] = a2; - a0[4] = a3; - a0[5] = a4; - a0[6] = a5; - a0[7] = a6; - a0[8] = a3 - a1; - if (a0[8] < 0) + data[0] = a1; + data[1] = a2; + data[2] = a1; + data[3] = a2; + data[4] = a3; + data[5] = a4; + data[6] = a5; + data[7] = a6; + data[8] = a3 - a1; + if (data[8] < 0) { - a0[8] = -a0[8]; - a0[6] = -a5; + data[8] = -data[8]; + data[6] = -a5; } - a0[9] = a4 - a2; - if (a0[9] < 0) + data[9] = a4 - a2; + if (data[9] < 0) { - a0[9] = -a0[9]; - a0[7] = -a6; + data[9] = -data[9]; + data[7] = -a6; } - a0[10] = 0; + data[10] = 0; } -static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2) +static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2) { u8 var; - if (a0[8] > a0[9]) + if (data[8] > data[9]) { - a0[2] += a0[6]; - a0[10] += a0[9]; - if (a0[10] > a0[8]) + data[2] += data[6]; + data[10] += data[9]; + if (data[10] > data[8]) { - a0[3] += a0[7]; - a0[10] -= a0[8]; + data[3] += data[7]; + data[10] -= data[8]; } } else { - a0[3] += a0[7]; - a0[10] += a0[8]; - if (a0[10] > a0[9]) + data[3] += data[7]; + data[10] += data[8]; + if (data[10] > data[9]) { - a0[2] += a0[6]; - a0[10] -= a0[9]; + data[2] += data[6]; + data[10] -= data[9]; } } var = 0; - if ((a0[6] > 0 && a0[2] >= a0[4]) || (a0[6] < 0 && a0[2] <= a0[4])) + if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4])) { var++; if (a1) - a0[2] = a0[4]; + data[2] = data[4]; } - if ((a0[7] > 0 && a0[3] >= a0[5]) || (a0[7] < 0 && a0[3] <= a0[5])) + if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5])) { var++; if (a2) - a0[3] = a0[5]; + data[3] = data[5]; } if (var == 2) return TRUE; -- cgit v1.2.3 From c8d77612267c04444b5318f3e058d0a77859a3db Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 21:19:55 +0200 Subject: meaningful names to transitions given --- include/battle_transition.h | 6 +- src/battle_transition.c | 558 ++++++++++++++++++++++---------------------- 2 files changed, 282 insertions(+), 282 deletions(-) diff --git a/include/battle_transition.h b/include/battle_transition.h index 34a7290fa..ca6869c93 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -18,14 +18,14 @@ enum // TRANSITION_MUGSHOT #define MUGSHOTS_NO 5 -// credits for the names go to Dyskinesia, Tetrable and Dizzy Egg +// credits for the names go to Dyskinesia and Tetrable // names are naturally subject to change #define B_TRANSITION_BLUR 0 -#define B_TRANSITION_SWEARL 1 +#define B_TRANSITION_SWIRL 1 #define B_TRANSITION_SHUFFLE 2 #define B_TRANSITION_BIG_POKEBALL 3 -#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_POKEBALLS_TRAIL 4 #define B_TRANSITION_CLOCKWISE_BLACKFADE 5 #define B_TRANSITION_RIPPLE 6 #define B_TRANSITION_WAVE 7 diff --git a/src/battle_transition.c b/src/battle_transition.c index 363a52148..35f001bc7 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -53,18 +53,18 @@ typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); static void LaunchBattleTransitionTask(u8 transitionID); static void Task_BattleTransitionMain(u8 taskID); static void Phase1Task_TransitionAll(u8 taskID); -static void Phase2Task_Transition0(u8 taskID); -static void Phase2Task_Transition1(u8 taskID); -static void Phase2Task_Transition2(u8 taskID); -static void Phase2Task_Transition3(u8 taskID); -static void Phase2Task_Transition4(u8 taskID); -static void Phase2Task_Transition5(u8 taskID); -static void Phase2Task_Transition6(u8 taskID); -static void Phase2Task_Transition7(u8 taskID); -static void Phase2Task_Transition8(u8 taskID); -static void Phase2Task_Transition9(u8 taskID); -static void Phase2Task_Transition10(u8 taskID); -static void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition_Blur(u8 taskID); +static void Phase2Task_Transition_Swirl(u8 taskID); +static void Phase2Task_Transition_Shuffle(u8 taskID); +static void Phase2Task_Transition_BigPokeball(u8 taskID); +static void Phase2Task_Transition_PokeballsTrail(u8 taskID); +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID); +static void Phase2Task_Transition_Ripple(u8 taskID); +static void Phase2Task_Transition_Wave(u8 taskID); +static void Phase2Task_Transition_Slice(u8 taskID); +static void Phase2Task_Transition_WhiteFade(u8 taskID); +static void Phase2Task_Transition_GridSquares(u8 taskID); +static void Phase2Task_Transition_Shards(u8 taskID); static void Phase2Task_Transition_Sydney(u8 taskID); static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); @@ -74,69 +74,69 @@ static bool8 Transition_Phase1(struct Task* task); static bool8 Transition_WaitForPhase1(struct Task* task); static bool8 Transition_Phase2(struct Task* task); static bool8 Transition_WaitForPhase2(struct Task* task); -static void VBlankCB_Phase2_Transition1(void); -static void HBlankCB_Phase2_Transition1(void); -static void VBlankCB_Phase2_Transition2(void); -static void HBlankCB_Phase2_Transition2(void); -static void VBlankCB0_Phase2_Transition3(void); -static void VBlankCB1_Phase2_Transition3(void); -static void VBlankCB_Phase2_Transition5(void); -static void VBlankCB_Phase2_Transition6(void); -static void HBlankCB_Phase2_Transition6(void); -static void VBlankCB_Phase2_Transition7(void); -static void VBlankCB_Phase2_Transition8(void); -static void HBlankCB_Phase2_Transition8(void); -static void VBlankCB0_Phase2_Transition9(void); -static void VBlankCB1_Phase2_Transition9(void); -static void HBlankCB_Phase2_Transition9(void); +static void VBlankCB_Phase2_Transition_Swirl(void); +static void HBlankCB_Phase2_Transition_Swirl(void); +static void VBlankCB_Phase2_Transition_Shuffle(void); +static void HBlankCB_Phase2_Transition_Shuffle(void); +static void VBlankCB0_Phase2_Transition_BigPokeball(void); +static void VBlankCB1_Phase2_Transition_BigPokeball(void); +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void); +static void VBlankCB_Phase2_Transition_Ripple(void); +static void HBlankCB_Phase2_Transition_Ripple(void); +static void VBlankCB_Phase2_Transition_Wave(void); +static void VBlankCB_Phase2_Transition_Slice(void); +static void HBlankCB_Phase2_Transition_Slice(void); +static void VBlankCB0_Phase2_Transition_WhiteFade(void); +static void VBlankCB1_Phase2_Transition_WhiteFade(void); +static void HBlankCB_Phase2_Transition_WhiteFade(void); static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); -static void VBlankCB_Phase2_Transition11(void); -static bool8 Phase2_Transition0_Func1(struct Task* task); -static bool8 Phase2_Transition0_Func2(struct Task* task); -static bool8 Phase2_Transition0_Func3(struct Task* task); -static bool8 Phase2_Transition1_Func1(struct Task* task); -static bool8 Phase2_Transition1_Func2(struct Task* task); -static bool8 Phase2_Transition2_Func1(struct Task* task); -static bool8 Phase2_Transition2_Func2(struct Task* task); -static bool8 Phase2_Transition3_Func1(struct Task* task); -static bool8 Phase2_Transition3_Func2(struct Task* task); -static bool8 Phase2_Transition3_Func3(struct Task* task); -static bool8 Phase2_Transition3_Func4(struct Task* task); -static bool8 Phase2_Transition3_Func5(struct Task* task); -static bool8 Phase2_Transition3_Func6(struct Task* task); -static bool8 Phase2_Transition4_Func1(struct Task* task); -static bool8 Phase2_Transition4_Func2(struct Task* task); -static bool8 Phase2_Transition4_Func3(struct Task* task); -static bool8 Phase2_Transition5_Func1(struct Task* task); -static bool8 Phase2_Transition5_Func2(struct Task* task); -static bool8 Phase2_Transition5_Func3(struct Task* task); -static bool8 Phase2_Transition5_Func4(struct Task* task); -static bool8 Phase2_Transition5_Func5(struct Task* task); -static bool8 Phase2_Transition5_Func6(struct Task* task); -static bool8 Phase2_Transition5_Func7(struct Task* task); -static bool8 Phase2_Transition6_Func1(struct Task* task); -static bool8 Phase2_Transition6_Func2(struct Task* task); -static bool8 Phase2_Transition7_Func1(struct Task* task); -static bool8 Phase2_Transition7_Func2(struct Task* task); -static bool8 Phase2_Transition7_Func3(struct Task* task); -static bool8 Phase2_Transition8_Func1(struct Task* task); -static bool8 Phase2_Transition8_Func2(struct Task* task); -static bool8 Phase2_Transition8_Func3(struct Task* task); -static bool8 Phase2_Transition9_Func1(struct Task* task); -static bool8 Phase2_Transition9_Func2(struct Task* task); -static bool8 Phase2_Transition9_Func3(struct Task* task); -static bool8 Phase2_Transition9_Func4(struct Task* task); -static bool8 Phase2_Transition9_Func5(struct Task* task); -static bool8 Phase2_Transition10_Func1(struct Task* task); -static bool8 Phase2_Transition10_Func2(struct Task* task); -static bool8 Phase2_Transition10_Func3(struct Task* task); -static bool8 Phase2_Transition11_Func1(struct Task* task); -static bool8 Phase2_Transition11_Func2(struct Task* task); -static bool8 Phase2_Transition11_Func3(struct Task* task); -static bool8 Phase2_Transition11_Func4(struct Task* task); -static bool8 Phase2_Transition11_Func5(struct Task* task); +static void VBlankCB_Phase2_Transition_Shards(void); +static bool8 Phase2_Transition_Blur_Func1(struct Task* task); +static bool8 Phase2_Transition_Blur_Func2(struct Task* task); +static bool8 Phase2_Transition_Blur_Func3(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func1(struct Task* task); +static bool8 Phase2_Transition_Wave_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func3(struct Task* task); +static bool8 Phase2_Transition_Slice_Func1(struct Task* task); +static bool8 Phase2_Transition_Slice_Func2(struct Task* task); +static bool8 Phase2_Transition_Slice_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func1(struct Task* task); +static bool8 Phase2_Transition_Shards_Func2(struct Task* task); +static bool8 Phase2_Transition_Shards_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func4(struct Task* task); +static bool8 Phase2_Transition_Shards_Func5(struct Task* task); static bool8 Phase2_Mugshot_Func1(struct Task* task); static bool8 Phase2_Mugshot_Func2(struct Task* task); static bool8 Phase2_Mugshot_Func3(struct Task* task); @@ -194,23 +194,23 @@ static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = { - &Phase2Task_Transition0, // 0 - &Phase2Task_Transition1, // 1 - &Phase2Task_Transition2, // 2 - &Phase2Task_Transition3, // 3 - &Phase2Task_Transition4, // 4 - &Phase2Task_Transition5, // 5 - &Phase2Task_Transition6, // 6 - &Phase2Task_Transition7, // 7 - &Phase2Task_Transition8, // 8 - &Phase2Task_Transition9, // 9 - &Phase2Task_Transition10, // 10 - &Phase2Task_Transition11, // 11 - &Phase2Task_Transition_Sydney, // 12 - &Phase2Task_Transition_Phoebe, // 13 - &Phase2Task_Transition_Glacia, // 14 - &Phase2Task_Transition_Drake, // 15 - &Phase2Task_Transition_Steven, // 16 + Phase2Task_Transition_Blur, // 0 + Phase2Task_Transition_Swirl, // 1 + Phase2Task_Transition_Shuffle, // 2 + Phase2Task_Transition_BigPokeball, // 3 + Phase2Task_Transition_PokeballsTrail, // 4 + Phase2Task_Transition_Clockwise_BlackFade, // 5 + Phase2Task_Transition_Ripple, // 6 + Phase2Task_Transition_Wave, // 7 + Phase2Task_Transition_Slice, // 8 + Phase2Task_Transition_WhiteFade, // 9 + Phase2Task_Transition_GridSquares, // 10 + Phase2Task_Transition_Shards, // 11 + Phase2Task_Transition_Sydney, // 12 + Phase2Task_Transition_Phoebe, // 13 + Phase2Task_Transition_Glacia, // 14 + Phase2Task_Transition_Drake, // 15 + Phase2Task_Transition_Steven, // 16 }; static const TransitionState sMainTransitionPhases[] = @@ -221,82 +221,82 @@ static const TransitionState sMainTransitionPhases[] = &Transition_WaitForPhase2 }; -static const TransitionState sPhase2_Transition0_Funcs[] = +static const TransitionState sPhase2_Transition_Blur_Funcs[] = { - &Phase2_Transition0_Func1, - &Phase2_Transition0_Func2, - &Phase2_Transition0_Func3 + Phase2_Transition_Blur_Func1, + Phase2_Transition_Blur_Func2, + Phase2_Transition_Blur_Func3 }; -static const TransitionState sPhase2_Transition1_Funcs[] = +static const TransitionState sPhase2_Transition_Swirl_Funcs[] = { - &Phase2_Transition1_Func1, - &Phase2_Transition1_Func2, + Phase2_Transition_Swirl_Func1, + Phase2_Transition_Swirl_Func2, }; -static const TransitionState sPhase2_Transition2_Funcs[] = +static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = { - &Phase2_Transition2_Func1, - &Phase2_Transition2_Func2, + Phase2_Transition_Shuffle_Func1, + Phase2_Transition_Shuffle_Func2, }; -static const TransitionState sPhase2_Transition3_Funcs[] = +static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = { - &Phase2_Transition3_Func1, - &Phase2_Transition3_Func2, - &Phase2_Transition3_Func3, - &Phase2_Transition3_Func4, - &Phase2_Transition3_Func5, - &Phase2_Transition3_Func6 + Phase2_Transition_BigPokeball_Func1, + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 }; -static const TransitionState sPhase2_Transition4_Funcs[] = +static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = { - &Phase2_Transition4_Func1, - &Phase2_Transition4_Func2, - &Phase2_Transition4_Func3 + Phase2_Transition_PokeballsTrail_Func1, + Phase2_Transition_PokeballsTrail_Func2, + Phase2_Transition_PokeballsTrail_Func3 }; static const s16 sUnknown_083FD7E4[2] = {-16, 256}; static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; static const s16 sUnknown_083FD7F2[2] = {8, -8}; -static const TransitionState sPhase2_Transition5_Funcs[] = +static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] = { - &Phase2_Transition5_Func1, - &Phase2_Transition5_Func2, - &Phase2_Transition5_Func3, - &Phase2_Transition5_Func4, - &Phase2_Transition5_Func5, - &Phase2_Transition5_Func6, - &Phase2_Transition5_Func7 + Phase2_Transition_Clockwise_BlackFade_Func1, + Phase2_Transition_Clockwise_BlackFade_Func2, + Phase2_Transition_Clockwise_BlackFade_Func3, + Phase2_Transition_Clockwise_BlackFade_Func4, + Phase2_Transition_Clockwise_BlackFade_Func5, + Phase2_Transition_Clockwise_BlackFade_Func6, + Phase2_Transition_Clockwise_BlackFade_Func7 }; -static const TransitionState sPhase2_Transition6_Funcs[] = +static const TransitionState sPhase2_Transition_Ripple_Funcs[] = { - &Phase2_Transition6_Func1, - &Phase2_Transition6_Func2 + Phase2_Transition_Ripple_Func1, + Phase2_Transition_Ripple_Func2 }; -static const TransitionState sPhase2_Transition7_Funcs[] = +static const TransitionState sPhase2_Transition_Wave_Funcs[] = { - &Phase2_Transition7_Func1, - &Phase2_Transition7_Func2, - &Phase2_Transition7_Func3 + Phase2_Transition_Wave_Func1, + Phase2_Transition_Wave_Func2, + Phase2_Transition_Wave_Func3 }; static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = { - &Phase2_Mugshot_Func1, - &Phase2_Mugshot_Func2, - &Phase2_Mugshot_Func3, - &Phase2_Mugshot_Func4, - &Phase2_Mugshot_Func5, - &Phase2_Mugshot_Func6, - &Phase2_Mugshot_Func7, - &Phase2_Mugshot_Func8, - &Phase2_Mugshot_Func9, - &Phase2_Mugshot_Func10 + Phase2_Mugshot_Func1, + Phase2_Mugshot_Func2, + Phase2_Mugshot_Func3, + Phase2_Mugshot_Func4, + Phase2_Mugshot_Func5, + Phase2_Mugshot_Func6, + Phase2_Mugshot_Func7, + Phase2_Mugshot_Func8, + Phase2_Mugshot_Func9, + Phase2_Mugshot_Func10 }; static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; @@ -319,50 +319,50 @@ static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = static const TransitionSpriteCallback sUnknown_083FD880[] = { - &sub_811C934, - &sub_811C938, - &sub_811C984, - &sub_811C9B8, - &sub_811C934, - &sub_811C9E4, - &sub_811C934 + sub_811C934, + sub_811C938, + sub_811C984, + sub_811C9B8, + sub_811C934, + sub_811C9E4, + sub_811C934 }; static const s16 sUnknown_083FD89C[2] = {12, -12}; static const s16 sUnknown_083FD8A0[2] = {-1, 1}; -static const TransitionState sPhase2_Transition8_Funcs[] = +static const TransitionState sPhase2_Transition_Slice_Funcs[] = { - &Phase2_Transition8_Func1, - &Phase2_Transition8_Func2, - &Phase2_Transition8_Func3 + Phase2_Transition_Slice_Func1, + Phase2_Transition_Slice_Func2, + Phase2_Transition_Slice_Func3 }; -static const TransitionState sPhase2_Transition9_Funcs[] = +static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] = { - &Phase2_Transition9_Func1, - &Phase2_Transition9_Func2, - &Phase2_Transition9_Func3, - &Phase2_Transition9_Func4, - &Phase2_Transition9_Func5 + Phase2_Transition_WhiteFade_Func1, + Phase2_Transition_WhiteFade_Func2, + Phase2_Transition_WhiteFade_Func3, + Phase2_Transition_WhiteFade_Func4, + Phase2_Transition_WhiteFade_Func5 }; static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; -static const TransitionState sPhase2_Transition10_Funcs[] = +static const TransitionState sPhase2_Transition_GridSquares_Funcs[] = { - &Phase2_Transition10_Func1, - &Phase2_Transition10_Func2, - &Phase2_Transition10_Func3 + Phase2_Transition_GridSquares_Func1, + Phase2_Transition_GridSquares_Func2, + Phase2_Transition_GridSquares_Func3 }; -static const TransitionState sPhase2_Transition11_Funcs[] = +static const TransitionState sPhase2_Transition_Shards_Funcs[] = { - &Phase2_Transition11_Func1, - &Phase2_Transition11_Func2, - &Phase2_Transition11_Func3, - &Phase2_Transition11_Func4, - &Phase2_Transition11_Func5 + Phase2_Transition_Shards_Func1, + Phase2_Transition_Shards_Func2, + Phase2_Transition_Shards_Func3, + Phase2_Transition_Shards_Func4, + Phase2_Transition_Shards_Func5 }; static const s16 sUnknown_083FD8F4[][5] = @@ -380,8 +380,8 @@ static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; static const TransitionState sPhase1_TransitionAll_Funcs[] = { - &Phase1_TransitionAll_Func1, - &Phase1_TransitionAll_Func2 + Phase1_TransitionAll_Func1, + Phase1_TransitionAll_Func2 }; static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = @@ -622,12 +622,12 @@ static void Phase1Task_TransitionAll(u8 taskID) DestroyTask(taskID); } -static void Phase2Task_Transition0(u8 taskID) +static void Phase2Task_Transition_Blur(u8 taskID) { - while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition0_Func1(struct Task* task) +static bool8 Phase2_Transition_Blur_Func1(struct Task* task) { REG_MOSAIC = 0; REG_BG1CNT |= 0x40; @@ -637,7 +637,7 @@ static bool8 Phase2_Transition0_Func1(struct Task* task) return TRUE; } -static bool8 Phase2_Transition0_Func2(struct Task* task) +static bool8 Phase2_Transition_Blur_Func2(struct Task* task) { if (task->data[1] != 0) task->data[1]--; @@ -653,22 +653,22 @@ static bool8 Phase2_Transition0_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition0_Func3(struct Task* task) +static bool8 Phase2_Transition_Blur_Func3(struct Task* task) { if (!gPaletteFade.active) { - u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur); DestroyTask(taskID); } return FALSE; } -static void Phase2Task_Transition1(u8 taskID) +static void Phase2Task_Transition_Swirl(u8 taskID) { - while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition1_Func1(struct Task* task) +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) { u16 savedIME; @@ -677,8 +677,8 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); - SetVBlankCallback(VBlankCB_Phase2_Transition1); - SetHBlankCallback(HBlankCB_Phase2_Transition1); + SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); + SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); savedIME = REG_IME; REG_IME = 0; @@ -690,7 +690,7 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition1_Func2(struct Task* task) +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; @@ -700,7 +700,7 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) if (!gPaletteFade.active) { - u8 taskID = FindTaskIdByFunc(Phase2Task_Transition1); + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl); DestroyTask(taskID); } @@ -708,14 +708,14 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) return FALSE; } -static void VBlankCB_Phase2_Transition1(void) +static void VBlankCB_Phase2_Transition_Swirl(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition1(void) +static void HBlankCB_Phase2_Transition_Swirl(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1HOFS = var; @@ -723,12 +723,12 @@ static void HBlankCB_Phase2_Transition1(void) REG_BG3HOFS = var; } -static void Phase2Task_Transition2(u8 taskID) +static void Phase2Task_Transition_Shuffle(u8 taskID) { - while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition2_Func1(struct Task* task) +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) { u16 savedIME; @@ -738,8 +738,8 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); - SetVBlankCallback(VBlankCB_Phase2_Transition2); - SetHBlankCallback(HBlankCB_Phase2_Transition2); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); + SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); savedIME = REG_IME; REG_IME = 0; @@ -751,7 +751,7 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition2_Func2(struct Task* task) +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) { u8 i; u16 r3, r4; @@ -769,20 +769,20 @@ static bool8 Phase2_Transition2_Func2(struct Task* task) } if (!gPaletteFade.active) - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle)); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void VBlankCB_Phase2_Transition2(void) +static void VBlankCB_Phase2_Transition_Shuffle(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition2(void) +static void HBlankCB_Phase2_Transition_Shuffle(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1VOFS = var; @@ -790,12 +790,12 @@ static void HBlankCB_Phase2_Transition2(void) REG_BG3VOFS = var; } -static void Phase2Task_Transition3(u8 taskID) +static void Phase2Task_Transition_BigPokeball(u8 taskID) { - while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition3_Func1(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) { u16 i; u16 *dst1, *dst2; @@ -819,7 +819,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) gUnknown_03005560[i] = 240; } - SetVBlankCallback(VBlankCB0_Phase2_Transition3); + SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); @@ -830,7 +830,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func2(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -851,7 +851,7 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) return TRUE; } -static bool8 Phase2_Transition3_Func3(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -871,7 +871,7 @@ static bool8 Phase2_Transition3_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func4(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -891,7 +891,7 @@ static bool8 Phase2_Transition3_Func4(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func5(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; @@ -911,7 +911,7 @@ static bool8 Phase2_Transition3_Func5(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func6(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) @@ -927,19 +927,19 @@ static bool8 Phase2_Transition3_Func6(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition3)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball)); } if (task->data[3] == 0) { task->data[3]++; - SetVBlankCallback(VBlankCB1_Phase2_Transition3); + SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball); } TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void Transition3_Vblank(void) +static void Transition_BigPokeball_Vblank(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -952,24 +952,24 @@ static void Transition3_Vblank(void) REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; } -static void VBlankCB0_Phase2_Transition3(void) +static void VBlankCB0_Phase2_Transition_BigPokeball(void) { - Transition3_Vblank(); + Transition_BigPokeball_Vblank(); DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); } -static void VBlankCB1_Phase2_Transition3(void) +static void VBlankCB1_Phase2_Transition_BigPokeball(void) { - Transition3_Vblank(); + Transition_BigPokeball_Vblank(); DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); } -static void Phase2Task_Transition4(u8 taskID) +static void Phase2Task_Transition_PokeballsTrail(u8 taskID) { - while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition4_Func1(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -982,7 +982,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition4_Func2(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) { s16 i; s16 rand; @@ -1005,12 +1005,12 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition4_Func3(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail)); } return FALSE; } @@ -1069,12 +1069,12 @@ static void sub_811B720(struct Sprite* sprite) } } -static void Phase2Task_Transition5(u8 taskID) +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID) { - while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition5_Func1(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) { u16 i; @@ -1091,14 +1091,14 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) gUnknown_03005560[i] = 0xF3F4; } - SetVBlankCallback(VBlankCB_Phase2_Transition5); + SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); TRANSITION_STRUCT.data[4] = 120; task->tState++; return TRUE; } -static bool8 Phase2_Transition5_Func2(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1119,7 +1119,7 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func3(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) { s16 r1, r3; vu8 var = 0; @@ -1157,7 +1157,7 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func4(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1178,7 +1178,7 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func5(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) { s16 r1, r2, r3; vu8 var = 0; @@ -1217,7 +1217,7 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func6(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1241,15 +1241,15 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func7(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade)); return FALSE; } -static void VBlankCB_Phase2_Transition5(void) +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1262,12 +1262,12 @@ static void VBlankCB_Phase2_Transition5(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -static void Phase2Task_Transition6(u8 taskID) +static void Phase2Task_Transition_Ripple(u8 taskID) { - while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition6_Func1(struct Task* task) +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) { u8 i; @@ -1279,8 +1279,8 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; } - SetVBlankCallback(VBlankCB_Phase2_Transition6); - SetHBlankCallback(HBlankCB_Phase2_Transition6); + SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); + SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); REG_IE |= 2; REG_DISPSTAT |= 0x10; @@ -1289,7 +1289,7 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) return TRUE; } -static bool8 Phase2_Transition6_Func2(struct Task* task) +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) { u8 i; s16 r3; @@ -1320,20 +1320,20 @@ static bool8 Phase2_Transition6_Func2(struct Task* task) } if (task->data[4] != 0 && !gPaletteFade.active) - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple)); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void VBlankCB_Phase2_Transition6(void) +static void VBlankCB_Phase2_Transition_Ripple(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition6(void) +static void HBlankCB_Phase2_Transition_Ripple(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1VOFS = var; @@ -1341,12 +1341,12 @@ static void HBlankCB_Phase2_Transition6(void) REG_BG3VOFS = var; } -static void Phase2Task_Transition7(u8 taskID) +static void Phase2Task_Transition_Wave(u8 taskID) { - while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition7_Func1(struct Task* task) +static bool8 Phase2_Transition_Wave_Func1(struct Task* task) { u8 i; @@ -1363,13 +1363,13 @@ static bool8 Phase2_Transition7_Func1(struct Task* task) gUnknown_03004DE0[1][i] = 242; } - SetVBlankCallback(VBlankCB_Phase2_Transition7); + SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); task->tState++; return TRUE; } -static bool8 Phase2_Transition7_Func2(struct Task* task) +static bool8 Phase2_Transition_Wave_Func2(struct Task* task) { u8 i, r5; u16* toStore; @@ -1399,15 +1399,15 @@ static bool8 Phase2_Transition7_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition7_Func3(struct Task* task) +static bool8 Phase2_Transition_Wave_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave)); return FALSE; } -static void VBlankCB_Phase2_Transition7(void) +static void VBlankCB_Phase2_Transition_Wave(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1837,12 +1837,12 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotPlayerID #undef tMugshotID -static void Phase2Task_Transition8(u8 taskID) +static void Phase2Task_Transition_Slice(u8 taskID) { - while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition8_Func1(struct Task* task) +static bool8 Phase2_Transition_Slice_Func1(struct Task* task) { u16 i; @@ -1864,14 +1864,14 @@ static bool8 Phase2_Transition8_Func1(struct Task* task) REG_IE |= 2; REG_DISPSTAT |= 0x10; - SetVBlankCallback(VBlankCB_Phase2_Transition8); - SetHBlankCallback(HBlankCB_Phase2_Transition8); + SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); + SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); task->tState++; return TRUE; } -static bool8 Phase2_Transition8_Func2(struct Task* task) +static bool8 Phase2_Transition_Slice_Func2(struct Task* task) { u16 i; @@ -1908,15 +1908,15 @@ static bool8 Phase2_Transition8_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition8_Func3(struct Task* task) +static bool8 Phase2_Transition_Slice_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice)); return FALSE; } -static void VBlankCB_Phase2_Transition8(void) +static void VBlankCB_Phase2_Transition_Slice(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1928,7 +1928,7 @@ static void VBlankCB_Phase2_Transition8(void) DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); } -static void HBlankCB_Phase2_Transition8(void) +static void HBlankCB_Phase2_Transition_Slice(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1HOFS = var; @@ -1936,12 +1936,12 @@ static void HBlankCB_Phase2_Transition8(void) REG_BG3HOFS = var; } -static void Phase2Task_Transition9(u8 taskID) +static void Phase2Task_Transition_WhiteFade(u8 taskID) { - while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition9_Func1(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) { u16 i; @@ -1963,14 +1963,14 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) REG_IE |= 2; REG_DISPSTAT |= 0x10; - SetHBlankCallback(HBlankCB_Phase2_Transition9); - SetVBlankCallback(VBlankCB0_Phase2_Transition9); + SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); + SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); task->tState++; return FALSE; } -static bool8 Phase2_Transition9_Func2(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task) { s16 i, posY; s16 arr1[8]; @@ -1990,7 +1990,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition9_Func3(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (TRANSITION_STRUCT.field_20 > 7) @@ -2001,7 +2001,7 @@ static bool8 Phase2_Transition9_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition9_Func4(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -2014,23 +2014,23 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) TRANSITION_STRUCT.BLDCNT = 0xFF; TRANSITION_STRUCT.WININ = 0x3F; - SetVBlankCallback(VBlankCB1_Phase2_Transition9); + SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade); task->tState++; return FALSE; } -static bool8 Phase2_Transition9_Func5(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task) { if (++TRANSITION_STRUCT.BLDY > 16) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade)); } return FALSE; } -static void VBlankCB0_Phase2_Transition9(void) +static void VBlankCB0_Phase2_Transition_WhiteFade(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -2043,7 +2043,7 @@ static void VBlankCB0_Phase2_Transition9(void) DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); } -static void VBlankCB1_Phase2_Transition9(void) +static void VBlankCB1_Phase2_Transition_WhiteFade(void) { VBlankCB_BattleTransition(); REG_BLDY = TRANSITION_STRUCT.BLDY; @@ -2054,7 +2054,7 @@ static void VBlankCB1_Phase2_Transition9(void) REG_WIN0V = TRANSITION_STRUCT.WIN0V; } -static void HBlankCB_Phase2_Transition9(void) +static void HBlankCB_Phase2_Transition_WhiteFade(void) { REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; } @@ -2102,12 +2102,12 @@ static void sub_811CFD0(struct Sprite* sprite) } } -static void Phase2Task_Transition10(u8 taskID) +static void Phase2Task_Transition_GridSquares(u8 taskID) { - while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition10_Func1(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -2120,7 +2120,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition10_Func2(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task) { u16* dst1; @@ -2141,22 +2141,22 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition10_Func3(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task) { if (--task->data[1] == 0) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares)); } return FALSE; } -static void Phase2Task_Transition11(u8 taskID) +static void Phase2Task_Transition_Shards(u8 taskID) { - while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition11_Func1(struct Task* task) +static bool8 Phase2_Transition_Shards_Func1(struct Task* task) { u16 i; @@ -2173,13 +2173,13 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) } CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); - SetVBlankCallback(VBlankCB_Phase2_Transition11); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); task->tState++; return TRUE; } -static bool8 Phase2_Transition11_Func2(struct Task* task) +static bool8 Phase2_Transition_Shards_Func2(struct Task* task) { sub_811D8FC(TRANSITION_STRUCT.data, sUnknown_083FD8F4[task->data[1]][0], @@ -2192,7 +2192,7 @@ static bool8 Phase2_Transition11_Func2(struct Task* task) return TRUE; } -static bool8 Phase2_Transition11_Func3(struct Task* task) +static bool8 Phase2_Transition_Shards_Func3(struct Task* task) { s16 i; bool8 nextFunc; @@ -2231,7 +2231,7 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition11_Func4(struct Task* task) +static bool8 Phase2_Transition_Shards_Func4(struct Task* task) { if (++task->data[1] < 7) { @@ -2243,12 +2243,12 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards)); return FALSE; } } -static bool8 Phase2_Transition11_Func5(struct Task* task) +static bool8 Phase2_Transition_Shards_Func5(struct Task* task) { if (--task->data[3] == 0) { @@ -2259,7 +2259,7 @@ static bool8 Phase2_Transition11_Func5(struct Task* task) return FALSE; } -static void VBlankCB_Phase2_Transition11(void) +static void VBlankCB_Phase2_Transition_Shards(void) { DmaStop(0); VBlankCB_BattleTransition(); -- cgit v1.2.3 From 8bd3b74b8dcce8b18a3310f61a07ecd4d98ec0a5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 24 Aug 2017 21:40:41 +0200 Subject: code review changes --- src/battle_transition.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/battle_transition.c b/src/battle_transition.c index 35f001bc7..395a38df1 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -243,11 +243,11 @@ static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = { Phase2_Transition_BigPokeball_Func1, - Phase2_Transition_BigPokeball_Func2, - Phase2_Transition_BigPokeball_Func3, - Phase2_Transition_BigPokeball_Func4, - Phase2_Transition_BigPokeball_Func5, - Phase2_Transition_BigPokeball_Func6 + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 }; static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = @@ -571,7 +571,7 @@ static void Task_BattleTransitionMain(u8 taskID) static bool8 Transition_Phase1(struct Task* task) { sub_807DE10(); - CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); if (sPhase1_Tasks[task->tTransitionID] != NULL) { CreateTask(sPhase1_Tasks[task->tTransitionID], 4); @@ -630,9 +630,9 @@ static void Phase2Task_Transition_Blur(u8 taskID) static bool8 Phase2_Transition_Blur_Func1(struct Task* task) { REG_MOSAIC = 0; - REG_BG1CNT |= 0x40; - REG_BG2CNT |= 0x40; - REG_BG3CNT |= 0x40; + REG_BG1CNT |= BGCNT_MOSAIC; + REG_BG2CNT |= BGCNT_MOSAIC; + REG_BG3CNT |= BGCNT_MOSAIC; task->tState++; return TRUE; } @@ -682,9 +682,9 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) savedIME = REG_IME; REG_IME = 0; - REG_IE |= 3; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); REG_IME = savedIME; - REG_DISPSTAT |= 0x18; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); task->tState++; return FALSE; @@ -743,9 +743,9 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) savedIME = REG_IME; REG_IME = 0; - REG_IE |= 3; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); REG_IME = savedIME; - REG_DISPSTAT |= 0x18; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); task->tState++; return FALSE; @@ -1282,8 +1282,8 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; task->tState++; return TRUE; @@ -1504,8 +1504,8 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) } } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetHBlankCallback(HBlankCB_Phase2_Mugshots); task->tState++; return FALSE; @@ -1861,8 +1861,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) gUnknown_03004DE0[1][160 + i] = 0xF0; } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); @@ -1960,8 +1960,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) gUnknown_03004DE0[1][i + 160] = 0xF0; } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); -- cgit v1.2.3