diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-10 20:26:51 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-10 20:26:51 -0400 |
commit | 35892e6b5381190269a61f3a87743086a6a44c12 (patch) | |
tree | 1527d1bd0bd9814d90c8cd5fc7798ca25b04b2ef | |
parent | 716639a6287ac32b389085930dca612eba5818f2 (diff) |
through sub_8130C20
-rw-r--r-- | asm/oak_speech.s | 685 | ||||
-rw-r--r-- | include/event_scripts.h | 2 | ||||
-rw-r--r-- | include/math_util.h | 6 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/pokemon_3.h | 1 | ||||
-rw-r--r-- | src/oak_speech.c | 217 |
6 files changed, 227 insertions, 685 deletions
diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 5645b6521..66eafc9d1 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,691 +5,6 @@ .text - thumb_func_start sub_813071C -sub_813071C: @ 813071C - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08130770 @ =gTasks+0x8 - adds r0, r1 - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _081307BC - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _08130774 @ =gUnknown_81C5E2E - ldr r4, _08130778 @ =gStringVar4 - cmp r2, r4 - beq _08130780 - adds r0, r4, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0813077C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - b _0813079E - .align 2, 0 -_08130770: .4byte gTasks+0x8 -_08130774: .4byte gUnknown_81C5E2E -_08130778: .4byte gStringVar4 -_0813077C: .4byte sOakSpeechResources -_08130780: - ldr r0, _081307C4 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0813079E: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _081307C4 @ =sOakSpeechResources - ldr r1, [r0] - movs r0, 0x1 - strh r0, [r1, 0x10] - ldr r1, _081307C8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _081307CC @ =sub_81301B0 - str r1, [r0] -_081307BC: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081307C4: .4byte sOakSpeechResources -_081307C8: .4byte gTasks -_081307CC: .4byte sub_81301B0 - thumb_func_end sub_813071C - - thumb_func_start sub_81307D0 -sub_81307D0: @ 81307D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _081307FC @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08130846 - bl sub_8131310 - ldrh r1, [r4, 0x6] - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130800 - subs r0, r1, 0x1 - strh r0, [r4, 0x6] - b _08130846 - .align 2, 0 -_081307FC: .4byte gTasks+0x8 -_08130800: - ldr r0, _08130814 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08130818 - movs r0, 0 - movs r1, 0 - bl sub_81311F4 - b _08130820 - .align 2, 0 -_08130814: .4byte gSaveBlock2Ptr -_08130818: - movs r0, 0x1 - movs r1, 0 - bl sub_81311F4 -_08130820: - ldr r0, _0813084C @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0xA] - ldr r0, _08130850 @ =gSpriteCoordOffsetX - strh r1, [r0] - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - adds r0, r5, 0 - movs r1, 0x2 - bl sub_81315CC - ldr r0, _08130854 @ =sub_8130858 - str r0, [r4] -_08130846: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813084C: .4byte gTasks -_08130850: .4byte gSpriteCoordOffsetX -_08130854: .4byte sub_8130858 - thumb_func_end sub_81307D0 - - thumb_func_start sub_8130858 -sub_8130858: @ 8130858 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081308BC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081308B4 - ldr r4, _081308C0 @ =gStringVar4 - ldr r1, _081308C4 @ =gUnknown_81C5EF4 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r0, _081308C8 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1E - strh r0, [r5, 0xE] - ldr r0, _081308CC @ =sub_81308D0 - str r0, [r5] -_081308B4: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081308BC: .4byte gTasks -_081308C0: .4byte gStringVar4 -_081308C4: .4byte gUnknown_81C5EF4 -_081308C8: .4byte sOakSpeechResources -_081308CC: .4byte sub_81308D0 - thumb_func_end sub_8130858 - - thumb_func_start sub_81308D0 -sub_81308D0: @ 81308D0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0813090A - ldr r0, _081308FC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r4, r1, r0 - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130900 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _0813090A - .align 2, 0 -_081308FC: .4byte gTasks -_08130900: - movs r0, 0x4 - bl FadeOutBGM - ldr r0, _08130910 @ =sub_8130914 - str r0, [r4] -_0813090A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130910: .4byte sub_8130914 - thumb_func_end sub_81308D0 - - thumb_func_start sub_8130914 -sub_8130914: @ 8130914 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813093C @ =sOakSpeechResources - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x12] - adds r0, r4, 0 - bl sub_8130A38 - adds r0, r4, 0 - bl sub_8130ADC - adds r0, r4, 0 - bl sub_8130940 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813093C: .4byte sOakSpeechResources - thumb_func_end sub_8130914 - - thumb_func_start sub_8130940 -sub_8130940: @ 8130940 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _08130978 @ =gTasks+0x8 - adds r5, r4, r6 - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x1 - bl SetBgAttribute - movs r1, 0 - strh r1, [r5] - strh r1, [r5, 0x2] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r5, 0x4] - strh r1, [r5, 0x1E] - subs r6, 0x8 - adds r4, r6 - ldr r0, _0813097C @ =sub_8130980 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130978: .4byte gTasks+0x8 -_0813097C: .4byte sub_8130980 - thumb_func_end sub_8130940 - - thumb_func_start sub_8130980 -sub_8130980: @ 8130980 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r7, r1, 3 - ldr r0, _08130A2C @ =gTasks+0x8 - mov r8, r0 - adds r5, r7, r0 - ldr r0, _08130A30 @ =sOakSpeechResources - ldr r1, [r0] - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - ldrh r4, [r1, 0x12] - adds r0, r4, 0 - movs r1, 0x14 - bl __umodsi3 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - bne _08130A1E - cmp r4, 0x28 - bne _081309BE - movs r0, 0x27 - bl PlaySE -_081309BE: - ldrh r0, [r5, 0x4] - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r5, 0x4] - subs r0, 0x8 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrh r0, [r5, 0x4] - subs r0, 0x10 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - movs r1, 0xF0 - lsls r1, 7 - movs r2, 0xA8 - lsls r2, 7 - movs r3, 0x54 - str r3, [sp] - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r0, 16 - asrs r0, 16 - str r0, [sp, 0x8] - str r6, [sp, 0xC] - movs r0, 0x2 - movs r3, 0x78 - bl SetBgAffine - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x60 - bgt _08130A1E - movs r0, 0x1 - strh r0, [r5, 0x1E] - movs r0, 0x24 - strh r0, [r5] - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _08130A34 @ =sub_8130BA8 - str r1, [r0] -_08130A1E: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130A2C: .4byte gTasks+0x8 -_08130A30: .4byte sOakSpeechResources -_08130A34: .4byte sub_8130BA8 - thumb_func_end sub_8130980 - - thumb_func_start sub_8130A38 -sub_8130A38: @ 8130A38 - push {lr} - sub sp, 0x4 - ldr r0, _08130A74 @ =sub_8130A80 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130A78 @ =gTasks+0x8 - adds r1, r0 - movs r0, 0 - strh r0, [r1] - strh r0, [r1, 0x2] - strh r0, [r1, 0x4] - strh r0, [r1, 0x1E] - ldr r0, _08130A7C @ =0xffff0fcf - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08130A74: .4byte sub_8130A80 -_08130A78: .4byte gTasks+0x8 -_08130A7C: .4byte 0xffff0fcf - thumb_func_end sub_8130A38 - - thumb_func_start sub_8130A80 -sub_8130A80: @ 8130A80 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08130AB8 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _08130ABC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130AD4 - ldrh r0, [r2, 0x2] - movs r3, 0x2 - ldrsh r1, [r2, r3] - cmp r1, 0 - beq _08130AC0 - adds r0, r4, 0 - bl DestroyTask - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8131168 - b _08130AD4 - .align 2, 0 -_08130AB8: .4byte gTasks+0x8 -_08130ABC: .4byte gPaletteFade -_08130AC0: - adds r0, 0x1 - strh r0, [r2, 0x2] - movs r0, 0xF0 - lsls r0, 8 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08130AD4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8130A80 - - thumb_func_start sub_8130ADC -sub_8130ADC: @ 8130ADC - push {lr} - ldr r0, _08130B08 @ =sub_8130B10 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130B0C @ =gTasks+0x8 - adds r1, r0 - movs r2, 0x8 - strh r2, [r1] - movs r0, 0 - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] - pop {r0} - bx r0 - .align 2, 0 -_08130B08: .4byte sub_8130B10 -_08130B0C: .4byte gTasks+0x8 - thumb_func_end sub_8130ADC - - thumb_func_start sub_8130B10 -sub_8130B10: @ 8130B10 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08130B30 @ =gTasks+0x8 - adds r4, r0, r1 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130B34 - subs r0, r1, 0x1 - strh r0, [r4] - b _08130B96 - .align 2, 0 -_08130B30: .4byte gTasks+0x8 -_08130B34: - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _08130B4A - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130B4A - subs r0, r1, 0x1 - strh r0, [r4, 0x4] -_08130B4A: - ldrb r2, [r4, 0x1C] - ldr r7, _08130B9C @ =0x00007fff - movs r0, 0x40 - movs r1, 0x20 - adds r3, r7, 0 - bl BlendPalette - ldrh r1, [r4, 0x1C] - adds r1, 0x1 - strh r1, [r4, 0x1C] - ldrh r0, [r4, 0x2] - subs r0, 0x1 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x4] - strh r0, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xE - ble _08130B96 - movs r2, 0 - ldr r6, _08130BA0 @ =gPlttBufferFaded - adds r3, r7, 0 - ldr r4, _08130BA4 @ =gPlttBufferUnfaded -_08130B78: - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - adds r1, r0, r6 - strh r3, [r1] - adds r0, r4 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _08130B78 - adds r0, r5, 0 - bl DestroyTask -_08130B96: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130B9C: .4byte 0x00007fff -_08130BA0: .4byte gPlttBufferFaded -_08130BA4: .4byte gPlttBufferUnfaded - thumb_func_end sub_8130B10 - - thumb_func_start sub_8130BA8 -sub_8130BA8: @ 8130BA8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08130BCC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - movs r2, 0x8 - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _08130BD0 - subs r0, 0x1 - strh r0, [r4, 0x8] - b _08130BE2 - .align 2, 0 -_08130BCC: .4byte gTasks -_08130BD0: - str r1, [sp] - movs r0, 0x30 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08130BEC @ =sub_8130BF0 - str r0, [r4] -_08130BE2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130BEC: .4byte sub_8130BF0 - thumb_func_end sub_8130BA8 - - thumb_func_start sub_8130BF0 -sub_8130BF0: @ 8130BF0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08130C14 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130C10 - ldr r0, _08130C18 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _08130C1C @ =sub_8130C20 - str r0, [r1] -_08130C10: - pop {r0} - bx r0 - .align 2, 0 -_08130C14: .4byte gPaletteFade -_08130C18: .4byte gTasks -_08130C1C: .4byte sub_8130C20 - thumb_func_end sub_8130BF0 - - thumb_func_start sub_8130C20 -sub_8130C20: @ 8130C20 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl FreeAllWindowBuffers - bl sub_8044D80 - ldr r5, _08130C58 @ =sOakSpeechResources - ldr r0, [r5] - bl Free - movs r0, 0 - str r0, [r5] - ldr r2, _08130C5C @ =gTextFlags - ldrb r1, [r2] - subs r0, 0x2 - ands r0, r1 - strb r0, [r2] - ldr r0, _08130C60 @ =CB2_NewGame - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130C58: .4byte sOakSpeechResources -_08130C5C: .4byte gTextFlags -_08130C60: .4byte CB2_NewGame - thumb_func_end sub_8130C20 - thumb_func_start sub_8130C64 sub_8130C64: @ 8130C64 push {r4,r5,lr} diff --git a/include/event_scripts.h b/include/event_scripts.h index c55076322..4b0930e9f 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -714,8 +714,10 @@ extern const u8 gUnknown_81C5D4B[]; extern const u8 gUnknown_81C5DBD[]; extern const u8 gUnknown_81C5DEA[]; extern const u8 gUnknown_81C5E13[]; +extern const u8 gUnknown_81C5E2E[]; extern const u8 gUnknown_81C5E91[]; extern const u8 gUnknown_81C5EB5[]; extern const u8 gUnknown_81C5EC5[]; +extern const u8 gUnknown_81C5EF4[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/math_util.h b/include/math_util.h new file mode 100644 index 000000000..74dbbe98e --- /dev/null +++ b/include/math_util.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MATH_UTIL_H +#define GUARD_MATH_UTIL_H + +s16 sub_80D8B90(s16 y); + +#endif //GUARD_MATH_UTIL_H diff --git a/include/overworld.h b/include/overworld.h index b32d9cf48..8c32d3e06 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -99,5 +99,6 @@ extern u8 gUnknown_2036E28; extern bool8 (* gUnknown_3005024)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); +void CB2_NewGame(void); #endif //GUARD_ROM4_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h index a7f83a7de..d18be1403 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -6,5 +6,6 @@ const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); void sub_8044AF0(u8, u8); +void sub_8044D80(void); #endif // GUARD_POKEMON_3_H diff --git a/src/oak_speech.c b/src/oak_speech.c index b880dc71e..93bc74eec 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -5,6 +5,7 @@ #include "gpu_regs.h" #include "wild_encounter.h" #include "palette.h" +#include "blend_palette.h" #include "text.h" #include "window.h" #include "text_window.h" @@ -19,6 +20,8 @@ #include "string_util.h" #include "pokeball.h" #include "naming_screen.h" +#include "math_util.h" +#include "overworld.h" #include "constants/species.h" #include "constants/songs.h" @@ -75,6 +78,18 @@ void sub_8130694(u8 taskId); void sub_81306D4(u8 taskId); void sub_813071C(u8 taskId); void sub_81307D0(u8 taskId); +void sub_8130858(u8 taskId); +void sub_81308D0(u8 taskId); +void sub_8130914(u8 taskId); +void sub_8130940(u8 taskId); +void sub_8130980(u8 taskId); +void sub_8130A38(u8 taskId); +void sub_8130A80(u8 taskId); +void sub_8130ADC(u8 taskId); +void sub_8130B10(u8 taskId); +void sub_8130BA8(u8 taskId); +void sub_8130BF0(u8 taskId); +void sub_8130C20(u8 taskId); void sub_8130C64(void); void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); @@ -1470,3 +1485,205 @@ void sub_81306D4(u8 taskId) sub_81315CC(taskId, 2); gTasks[taskId].func = sub_813071C; } + +void sub_813071C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + OaksSpeechPrintMessage(gUnknown_81C5E2E, sOakSpeechResources->unk_001F); + sOakSpeechResources->unk_0010 = 1; + gTasks[taskId].func = sub_81301B0; + } +} + +void sub_81307D0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + sub_8131310(); + if (data[3] != 0) + data[3]--; + else + { + if (gSaveBlock2Ptr->playerGender == MALE) + sub_81311F4(MALE, 0); + else + sub_81311F4(FEMALE, 0); + gTasks[taskId].data[1] = 0; + gSpriteCoordOffsetX = 0; + ChangeBgX(2, 0, 0); + sub_81315CC(taskId, 2); + gTasks[taskId].func = sub_8130858; + } + } +} + +void sub_8130858(u8 taskId) +{ + if (gTasks[taskId].data[2] != 0) + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EF4); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + gTasks[taskId].data[3] = 30; + gTasks[taskId].func = sub_81308D0; + } +} + +void sub_81308D0(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + if (gTasks[taskId].data[3] != 0) + gTasks[taskId].data[3]--; + else + { + FadeOutBGM(4); + gTasks[taskId].func = sub_8130914; + } + } +} + +void sub_8130914(u8 taskId) +{ + sOakSpeechResources->unk_0012 = 0; + sub_8130A38(taskId); + sub_8130ADC(taskId); + sub_8130940(taskId); +} + +void sub_8130940(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + SetBgAttribute(2, 6, 1); + data[0] = 0; + data[1] = 0; + data[2] = 256; + data[15] = 0; + gTasks[taskId].func = sub_8130980; +} + +void sub_8130980(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s16 x, y; + u16 r0; + + sOakSpeechResources->unk_0012++; + if (sOakSpeechResources->unk_0012 % 20 == 0) + { + if (sOakSpeechResources->unk_0012 == 40) + PlaySE(SE_FU_ZUZUZU); + r0 = data[2]; + data[2] -= 32; + x = sub_80D8B90(r0 - 8); + y = sub_80D8B90(data[2] - 16); + SetBgAffine(2, 0x7800, 0x5400, 0x78, 0x54, x, y, 0); + if (data[2] <= 96) + { + data[15] = 1; + data[0] = 36; + gTasks[taskId].func = sub_8130BA8; + } + } +} + +void sub_8130A38(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_8130A80, 1); + s16 * data = gTasks[taskId2].data; + data[0] = 0; + data[1] = 0; + data[2] = 0; + data[15] = 0; + BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK); +} + +void sub_8130A80(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + if (data[1] != 0) + { + DestroyTask(taskId); + sub_8131168(taskId, 1); + } + else + { + data[1]++; + BeginNormalPaletteFade(0x0000F000, 0, 0, 16, RGB_BLACK); + } + } +} + +void sub_8130ADC(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_8130B10, 2); + s16 * data = gTasks[taskId2].data; + data[0] = 8; + data[1] = 0; + data[2] = 8; + data[14] = 0; + data[15] = 0; +} + +void sub_8130B10(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 i; + + if (data[0] != 0) + data[0]--; + else + { + if (data[1] <= 0 && data[2] != 0) + data[2]--; + BlendPalette(0x40, 0x20, data[14], RGB_WHITE); + data[14]++; + data[1]--; + data[0] = data[2]; + if (data[14] > 14) + { + for (i = 0; i < 32; i++) + { + gPlttBufferFaded[i + 0x40] = RGB_WHITE; + gPlttBufferUnfaded[i + 0x40] = RGB_WHITE; + } + DestroyTask(taskId); + } + } +} + +void sub_8130BA8(u8 taskId) +{ + if (gTasks[taskId].data[0] != 0) + gTasks[taskId].data[0]--; + else + { + BeginNormalPaletteFade(0x00000030, 2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_8130BF0; + } +} + +void sub_8130BF0(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = sub_8130C20; + } +} + +void sub_8130C20(u8 taskId) +{ + FreeAllWindowBuffers(); + sub_8044D80(); + Free(sOakSpeechResources); + sOakSpeechResources = NULL; + gTextFlags.flag_0 = FALSE; + SetMainCallback2(CB2_NewGame); + DestroyTask(taskId); +} |