diff options
author | YamaArashi <shadow962@live.com> | 2016-09-05 01:41:14 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-09-05 01:41:14 -0700 |
commit | 2085d7169e75b1fb417948d6e5167007064df258 (patch) | |
tree | b45a1d7d0f4bd7e20cbf30b1f098af49add15e4a | |
parent | 411c2dc2d62881e4454833cf556999e311ad9554 (diff) |
incorporate camthesaxman's birch speech decompilation work
-rw-r--r-- | asm/rom3.s | 2850 | ||||
-rw-r--r-- | ewram_syms.txt | 2 | ||||
-rw-r--r-- | include/sprite.h | 16 | ||||
-rw-r--r-- | src/main_menu.c | 1061 |
4 files changed, 1071 insertions, 2858 deletions
diff --git a/asm/rom3.s b/asm/rom3.s index 94b6d2b21..9fe90ef87 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -6,2856 +6,6 @@ .text - thumb_func_start Task_Birch1 -Task_Birch1: @ 800A1F4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0800A2B0 - bl SetUpWindowConfig - ldr r0, _0800A2B4 - bl sub_8071C4C - ldr r0, _0800A2B8 - movs r1, 0 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r0, _0800A2BC - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _0800A2C0 - ldr r1, _0800A2C4 - bl LZ77UnCompVram - ldr r0, _0800A2C8 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - ldr r0, _0800A2CC - movs r1, 0x1 - movs r2, 0x10 - bl LoadPalette - bl remove_some_task - bl ResetSpriteData - bl FreeAllSpritePalettes - adds r0, r4, 0 - bl AddBirchSpeechObjects - movs r0, 0x1 - negs r0, r0 - movs r5, 0 - str r5, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0800A2D0 - ldr r2, _0800A2D4 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0800A2D8 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x10] - ldr r1, _0800A2DC - str r1, [r0] - movs r1, 0xFF - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - movs r1, 0xD8 - strh r1, [r0, 0x16] - movs r0, 0xBB - lsls r0, 1 - bl sub_8075474 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A2B0: .4byte gWindowConfig_81E6C3C -_0800A2B4: .4byte gWindowConfig_81E6CE4 -_0800A2B8: .4byte REG_WIN0H -_0800A2BC: .4byte gUnknown_081E768C -_0800A2C0: .4byte gUnknown_081E7834 -_0800A2C4: .4byte 0x06003800 -_0800A2C8: .4byte gUnknown_081E764C -_0800A2CC: .4byte gUnknown_081E796C -_0800A2D0: .4byte REG_BG1CNT -_0800A2D4: .4byte 0x00000703 -_0800A2D8: .4byte 0x03004b20 -_0800A2DC: .4byte task_new_game_prof_birch_speech_2 - thumb_func_end Task_Birch1 - - thumb_func_start task_new_game_prof_birch_speech_2 -task_new_game_prof_birch_speech_2: @ 800A2E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0800A300 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x16] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0800A304 - subs r0, r1, 0x1 - strh r0, [r4, 0x16] - b _0800A34A - .align 2, 0 -_0800A300: .4byte 0x03004b20 -_0800A304: - ldrb r0, [r4, 0x18] - ldr r2, _0800A350 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x88 - strh r0, [r1, 0x20] - movs r0, 0x3C - strh r0, [r1, 0x22] - adds r3, r1, 0 - adds r3, 0x3E - ldrb r2, [r3] - subs r0, 0x41 - ands r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - adds r0, r5, 0 - movs r1, 0xA - bl sub_800B534 - adds r0, r5, 0 - movs r1, 0x14 - bl sub_800B6C0 - movs r0, 0x50 - strh r0, [r4, 0x16] - ldr r0, _0800A354 - str r0, [r4] -_0800A34A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A350: .4byte 0x02020004 -_0800A354: .4byte task_new_game_prof_birch_speech_3 - thumb_func_end task_new_game_prof_birch_speech_2 - - thumb_func_start task_new_game_prof_birch_speech_3 -task_new_game_prof_birch_speech_3: @ 800A358 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800A398 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0800A3BA - ldr r2, _0800A39C - movs r1, 0x18 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrh r1, [r4, 0x16] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0800A3A0 - subs r0, r1, 0x1 - strh r0, [r4, 0x16] - b _0800A3BA - .align 2, 0 -_0800A398: .4byte 0x03004b20 -_0800A39C: .4byte 0x02020004 -_0800A3A0: - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r0, _0800A3C0 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r0, _0800A3C4 - str r0, [r4] -_0800A3BA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A3C0: .4byte gUnknown_081C6D78 -_0800A3C4: .4byte task_new_game_prof_birch_speech_4 - thumb_func_end task_new_game_prof_birch_speech_3 - - thumb_func_start task_new_game_prof_birch_speech_4 -task_new_game_prof_birch_speech_4: @ 800A3C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800A404 - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800A3FE - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A3FE - ldr r1, _0800A408 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A40C - str r1, [r0] - ldr r0, _0800A410 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage -_0800A3FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A404: .4byte 0x0202f388 -_0800A408: .4byte 0x03004b20 -_0800A40C: .4byte task_new_game_prof_birch_speech_5 -_0800A410: .4byte gUnknown_081C6DF8 - thumb_func_end task_new_game_prof_birch_speech_4 - - thumb_func_start task_new_game_prof_birch_speech_5 -task_new_game_prof_birch_speech_5: @ 800A414 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A434 - ldr r0, _0800A43C - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800A440 - str r0, [r1] -_0800A434: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A43C: .4byte 0x03004b20 -_0800A440: .4byte task_new_game_prof_birch_speech_6 - thumb_func_end task_new_game_prof_birch_speech_5 - - thumb_func_start task_new_game_prof_birch_speech_6 -task_new_game_prof_birch_speech_6: @ 800A444 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800A4A8 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrb r0, [r4, 0x1A] - ldr r1, _0800A4AC - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - movs r5, 0 - movs r1, 0x68 - strh r1, [r2, 0x20] - movs r1, 0x48 - strh r1, [r2, 0x22] - movs r1, 0x3E - adds r1, r2 - mov r12, r1 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - mov r3, r12 - strb r1, [r3] - strh r5, [r2, 0x2E] - ldrb r1, [r2, 0x5] - lsrs r1, 4 - str r5, [sp] - str r5, [sp, 0x4] - movs r2, 0x20 - str r2, [sp, 0x8] - ldr r2, _0800A4B0 - str r2, [sp, 0xC] - movs r2, 0x70 - movs r3, 0x3A - bl AddTextPrinterForMessage - ldr r0, _0800A4B4 - str r0, [r4] - strh r5, [r4, 0x16] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A4A8: .4byte 0x03004b20 -_0800A4AC: .4byte 0x02020004 -_0800A4B0: .4byte 0x0000ffff -_0800A4B4: .4byte task_new_game_prof_birch_speech_7 - thumb_func_end task_new_game_prof_birch_speech_6 - - thumb_func_start task_new_game_prof_birch_speech_7 -task_new_game_prof_birch_speech_7: @ 800A4B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8075374 - lsls r0, 24 - cmp r0, 0 - beq _0800A4E4 - ldr r0, _0800A518 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r5, r1, r0 - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0x5F - ble _0800A4E4 - ldr r0, _0800A51C - bl sub_807206C - ldr r0, _0800A520 - str r0, [r5] -_0800A4E4: - ldr r1, _0800A518 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r3, [r2, 0x16] - movs r0, 0x16 - ldrsh r1, [r2, r0] - ldr r0, _0800A524 - cmp r1, r0 - bgt _0800A510 - adds r0, r3, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _0800A510 - movs r0, 0xAF - lsls r0, 1 - movs r1, 0 - bl cry_related -_0800A510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A518: .4byte 0x03004b20 -_0800A51C: .4byte gUnknown_0840DFF7 -_0800A520: .4byte task_new_game_prof_birch_speech_8 -_0800A524: .4byte 0x00003fff - thumb_func_end task_new_game_prof_birch_speech_7 - - thumb_func_start task_new_game_prof_birch_speech_8 -task_new_game_prof_birch_speech_8: @ 800A528 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A552 - ldr r0, _0800A558 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r1, _0800A55C - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A560 - str r1, [r0] -_0800A552: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A558: .4byte gUnknown_081C6E1A -_0800A55C: .4byte 0x03004b20 -_0800A560: .4byte task_new_game_prof_birch_speech_9 - thumb_func_end task_new_game_prof_birch_speech_8 - - thumb_func_start task_new_game_prof_birch_speech_9 -task_new_game_prof_birch_speech_9: @ 800A564 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A59A - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r0, _0800A5A0 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r1, _0800A5A4 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A5A8 - str r1, [r0] -_0800A59A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A5A0: .4byte gUnknown_081C6FCB -_0800A5A4: .4byte 0x03004b20 -_0800A5A8: .4byte task_new_game_prof_birch_speech_10 - thumb_func_end task_new_game_prof_birch_speech_9 - - thumb_func_start task_new_game_prof_birch_speech_10 -task_new_game_prof_birch_speech_10: @ 800A5AC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A612 - ldr r5, _0800A618 - ldr r0, _0800A61C - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - movs r1, 0x18 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1, 0x1] - movs r0, 0x1A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r2, r1 - orrs r2, r3 - strb r2, [r0, 0x1] - adds r0, r6, 0 - movs r1, 0x2 - bl sub_800B458 - adds r0, r6, 0 - movs r1, 0x1 - bl sub_800B614 - movs r0, 0x40 - strh r0, [r4, 0x16] - ldr r0, _0800A620 - str r0, [r4] -_0800A612: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800A618: .4byte 0x02020004 -_0800A61C: .4byte 0x03004b20 -_0800A620: .4byte task_new_game_prof_birch_speech_11 - thumb_func_end task_new_game_prof_birch_speech_10 - - thumb_func_start task_new_game_prof_birch_speech_11 -task_new_game_prof_birch_speech_11: @ 800A624 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800A64C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r3, [r2, 0x10] - movs r0, 0x10 - ldrsh r1, [r2, r0] - movs r0, 0x3C - negs r0, r0 - cmp r1, r0 - beq _0800A654 - subs r1, r3, 0x2 - strh r1, [r2, 0x10] - ldr r0, _0800A650 - strh r1, [r0] - b _0800A65C - .align 2, 0 -_0800A64C: .4byte 0x03004b20 -_0800A650: .4byte REG_BG1HOFS -_0800A654: - ldr r0, _0800A660 - strh r0, [r2, 0x10] - ldr r0, _0800A664 - str r0, [r2] -_0800A65C: - pop {r0} - bx r0 - .align 2, 0 -_0800A660: .4byte 0x0000ffc4 -_0800A664: .4byte task_new_game_prof_birch_speech_12 - thumb_func_end task_new_game_prof_birch_speech_11 - - thumb_func_start task_new_game_prof_birch_speech_12 -task_new_game_prof_birch_speech_12: @ 800A668 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _0800A6C0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0800A70E - ldr r2, _0800A6C4 - movs r0, 0x18 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r7, 0x4 - orrs r1, r7 - strb r1, [r0] - movs r0, 0x1A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - ldrh r0, [r4, 0x16] - movs r1, 0x16 - ldrsh r6, [r4, r1] - cmp r6, 0 - beq _0800A6C8 - subs r0, 0x1 - strh r0, [r4, 0x16] - b _0800A70E - .align 2, 0 -_0800A6C0: .4byte 0x03004b20 -_0800A6C4: .4byte 0x02020004 -_0800A6C8: - ldrb r3, [r4, 0x1C] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - movs r0, 0xB4 - strh r0, [r1, 0x20] - movs r0, 0x3C - strh r0, [r1, 0x22] - movs r2, 0x3E - adds r2, r1 - mov r12, r2 - ldrb r2, [r2] - subs r0, 0x41 - ands r0, r2 - mov r2, r12 - strb r0, [r2] - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r7 - strb r0, [r1, 0x1] - strh r3, [r4, 0xC] - strh r6, [r4, 0x14] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_800B534 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_800B6C0 - ldr r0, _0800A714 - str r0, [r4] -_0800A70E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800A714: .4byte task_new_game_prof_birch_speech_13 - thumb_func_end task_new_game_prof_birch_speech_12 - - thumb_func_start task_new_game_prof_birch_speech_13 -task_new_game_prof_birch_speech_13: @ 800A718 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800A750 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0800A74C - ldr r2, _0800A754 - movs r1, 0xC - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r0, _0800A758 - str r0, [r3] -_0800A74C: - pop {r0} - bx r0 - .align 2, 0 -_0800A750: .4byte 0x03004b20 -_0800A754: .4byte 0x02020004 -_0800A758: .4byte task_new_game_prof_birch_speech_14 - thumb_func_end task_new_game_prof_birch_speech_13 - - thumb_func_start task_new_game_prof_birch_speech_14 -task_new_game_prof_birch_speech_14: @ 800A75C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r0, _0800A790 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r1, _0800A794 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A798 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A790: .4byte gUnknown_081C6FD8 -_0800A794: .4byte 0x03004b20 -_0800A798: .4byte task_new_game_prof_birch_speech_15 - thumb_func_end task_new_game_prof_birch_speech_14 - - thumb_func_start task_new_game_prof_birch_speech_15 -task_new_game_prof_birch_speech_15: @ 800A79C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A7C4 - movs r0, 0x2 - movs r1, 0x4 - bl CreateGenderMenu - ldr r0, _0800A7CC - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800A7D0 - str r0, [r1] -_0800A7C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A7CC: .4byte 0x03004b20 -_0800A7D0: .4byte task_new_game_prof_birch_speech_16 - thumb_func_end task_new_game_prof_birch_speech_15 - - thumb_func_start task_new_game_prof_birch_speech_16 -task_new_game_prof_birch_speech_16: @ 800A7D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl GenderMenuProcessInput - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _0800A7EE - cmp r4, 0x1 - beq _0800A7EE - lsls r4, r5, 2 - b _0800A818 -_0800A7EE: - bl sub_8072DEC - movs r0, 0x5 - bl audio_play - ldr r0, _0800A860 - strb r4, [r0, 0x8] - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0x9 - bl Reset - ldr r1, _0800A864 - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A868 - str r1, [r0] - adds r4, r2, 0 -_0800A818: - bl GetMenuCursorPos - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0800A864 - adds r0, r4, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r3, r0 - beq _0800A85A - strh r3, [r4, 0x14] - ldr r2, _0800A86C - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r0, r5, 0 - movs r1, 0 - bl sub_800B458 - ldr r0, _0800A870 - str r0, [r4] -_0800A85A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A860: .4byte gSaveBlock2 -_0800A864: .4byte 0x03004b20 -_0800A868: .4byte sub_800A974 -_0800A86C: .4byte 0x02020004 -_0800A870: .4byte task_new_game_prof_birch_speech_17 - thumb_func_end task_new_game_prof_birch_speech_16 - - thumb_func_start task_new_game_prof_birch_speech_17 -task_new_game_prof_birch_speech_17: @ 800A874 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0800A8A4 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrb r5, [r4, 0xC] - movs r2, 0x12 - ldrsh r0, [r4, r2] - adds r7, r1, 0 - cmp r0, 0 - bne _0800A8AC - ldr r0, _0800A8A8 - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x4 - strh r0, [r1, 0x20] - b _0800A912 - .align 2, 0 -_0800A8A4: .4byte 0x03004b20 -_0800A8A8: .4byte 0x02020004 -_0800A8AC: - ldr r3, _0800A8CC - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0800A8D0 - ldrb r5, [r4, 0x1E] - b _0800A8D2 - .align 2, 0 -_0800A8CC: .4byte 0x02020004 -_0800A8D0: - ldrb r5, [r4, 0x1C] -_0800A8D2: - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - adds r2, r3 - movs r0, 0xF0 - strh r0, [r2, 0x20] - movs r0, 0x3C - strh r0, [r2, 0x22] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - subs r0, 0x41 - ands r0, r1 - strb r0, [r3] - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r7 - strh r5, [r4, 0xC] - ldrb r1, [r2, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x1] - adds r0, r6, 0 - movs r1, 0 - bl sub_800B534 - ldr r0, _0800A918 - str r0, [r4] -_0800A912: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800A918: .4byte task_new_game_prof_birch_speech_18 - thumb_func_end task_new_game_prof_birch_speech_17 - - thumb_func_start task_new_game_prof_birch_speech_18 -task_new_game_prof_birch_speech_18: @ 800A91C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800A948 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrb r1, [r3, 0xC] - ldr r2, _0800A94C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrh r1, [r2, 0x20] - movs r4, 0x20 - ldrsh r0, [r2, r4] - cmp r0, 0xB4 - ble _0800A950 - subs r0, r1, 0x4 - strh r0, [r2, 0x20] - b _0800A96A - .align 2, 0 -_0800A948: .4byte 0x03004b20 -_0800A94C: .4byte 0x02020004 -_0800A950: - movs r0, 0xB4 - strh r0, [r2, 0x20] - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0800A96A - ldrb r0, [r2, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - strb r1, [r2, 0x1] - ldr r0, _0800A970 - str r0, [r3] -_0800A96A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A970: .4byte task_new_game_prof_birch_speech_16 - thumb_func_end task_new_game_prof_birch_speech_18 - - thumb_func_start sub_800A974 -sub_800A974: @ 800A974 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r0, _0800A9A8 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r1, _0800A9AC - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800A9B0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A9A8: .4byte gUnknown_081C6FFA -_0800A9AC: .4byte 0x03004b20 -_0800A9B0: .4byte Task_800A9B4 - thumb_func_end sub_800A974 - - thumb_func_start Task_800A9B4 -Task_800A9B4: @ 800A9B4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800A9DC - movs r0, 0x2 - movs r1, 0x1 - bl CreateNameMenu - ldr r0, _0800A9E4 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800A9E8 - str r0, [r1] -_0800A9DC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A9E4: .4byte 0x03004b20 -_0800A9E8: .4byte sub_800A9EC - thumb_func_end Task_800A9B4 - - thumb_func_start sub_800A9EC -sub_800A9EC: @ 800A9EC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - bl NameMenuProcessInput - lsls r6, r0, 24 - asrs r4, r6, 24 - cmp r4, 0 - beq _0800AA48 - cmp r4, 0 - bgt _0800AA0E - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0800AA78 - b _0800AA9C -_0800AA0E: - cmp r4, 0x4 - bgt _0800AA9C - bl sub_8072DEC - movs r0, 0x5 - bl audio_play - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x16 - movs r3, 0xC - bl Reset - lsrs r0, r6, 24 - bl set_default_player_name - ldr r1, _0800AA40 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800AA44 - str r1, [r0] - b _0800AA9C - .align 2, 0 -_0800AA40: .4byte 0x03004b20 -_0800AA44: .4byte task_new_game_prof_birch_speech_part2_1 -_0800AA48: - movs r0, 0x5 - bl audio_play - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0800AA70 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800AA74 - str r1, [r0] - b _0800AA9C - .align 2, 0 -_0800AA70: .4byte 0x03004b20 -_0800AA74: .4byte sub_800AAAC -_0800AA78: - bl sub_8072DEC - movs r0, 0x5 - bl audio_play - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x16 - movs r3, 0xC - bl Reset - ldr r0, _0800AAA4 - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800AAA8 - str r0, [r1] -_0800AA9C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800AAA4: .4byte 0x03004b20 -_0800AAA8: .4byte task_new_game_prof_birch_speech_14 - thumb_func_end sub_800A9EC - - thumb_func_start sub_800AAAC -sub_800AAAC: @ 800AAAC - push {r4,lr} - sub sp, 0x8 - ldr r0, _0800AAE0 - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0800AAD8 - movs r0, 0x1 - bl set_default_player_name - ldr r1, _0800AAE4 - ldrb r2, [r1, 0x8] - str r4, [sp] - ldr r0, _0800AAE8 - str r0, [sp, 0x4] - movs r0, 0 - movs r3, 0 - bl DoNamingScreen -_0800AAD8: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800AAE0: .4byte 0x0202f388 -_0800AAE4: .4byte gSaveBlock2 -_0800AAE8: .4byte new_game_prof_birch_speech_part2_start - thumb_func_end sub_800AAAC - - thumb_func_start task_new_game_prof_birch_speech_part2_1 -task_new_game_prof_birch_speech_part2_1: @ 800AAEC - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r5, _0800AB28 - ldr r1, _0800AB2C - adds r0, r5, 0 - bl StringExpandPlaceholders - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r1, _0800AB30 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800AB34 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800AB28: .4byte 0x020234cc -_0800AB2C: .4byte gUnknown_081C7017 -_0800AB30: .4byte 0x03004b20 -_0800AB34: .4byte sub_800AB38 - thumb_func_end task_new_game_prof_birch_speech_part2_1 - - thumb_func_start sub_800AB38 -sub_800AB38: @ 800AB38 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800AB62 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x1 - bl sub_8072974 - ldr r0, _0800AB68 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800AB6C - str r0, [r1] -_0800AB62: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800AB68: .4byte 0x03004b20 -_0800AB6C: .4byte task_new_game_prof_birch_speech_part2_4 - thumb_func_end sub_800AB38 - - thumb_func_start task_new_game_prof_birch_speech_part2_4 -task_new_game_prof_birch_speech_part2_4: @ 800AB70 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl FillWindowPixelBuffer - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0800AB96 - cmp r1, 0 - bgt _0800AB90 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0800ABF0 - b _0800AC10 -_0800AB90: - cmp r1, 0x1 - beq _0800ABF0 - b _0800AC10 -_0800AB96: - movs r0, 0x5 - bl audio_play - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x7 - bl Reset - ldr r2, _0800ABE4 - ldr r0, _0800ABE8 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_800B458 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_800B614 - ldr r0, _0800ABEC - str r0, [r4] - b _0800AC10 - .align 2, 0 -_0800ABE4: .4byte 0x02020004 -_0800ABE8: .4byte 0x03004b20 -_0800ABEC: .4byte sub_800AC20 -_0800ABF0: - movs r0, 0x5 - bl audio_play - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x7 - bl Reset - ldr r0, _0800AC18 - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0800AC1C - str r0, [r1] -_0800AC10: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800AC18: .4byte 0x03004b20 -_0800AC1C: .4byte task_new_game_prof_birch_speech_14 - thumb_func_end task_new_game_prof_birch_speech_part2_4 - - thumb_func_start sub_800AC20 -sub_800AC20: @ 800AC20 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800AC44 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r1, [r2, 0x10] - movs r3, 0x10 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _0800AC4C - adds r1, 0x2 - strh r1, [r2, 0x10] - ldr r0, _0800AC48 - strh r1, [r0] - b _0800AC50 - .align 2, 0 -_0800AC44: .4byte 0x03004b20 -_0800AC48: .4byte REG_BG1HOFS -_0800AC4C: - ldr r0, _0800AC54 - str r0, [r2] -_0800AC50: - pop {r0} - bx r0 - .align 2, 0 -_0800AC54: .4byte task_new_game_prof_birch_speech_part2_6 - thumb_func_end sub_800AC20 - - thumb_func_start task_new_game_prof_birch_speech_part2_6 -task_new_game_prof_birch_speech_part2_6: @ 800AC58 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0800AD34 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0x12 - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _0800AD2C - ldr r5, _0800AD38 - movs r2, 0x1C - ldrsh r1, [r7, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r3, 0x4 - mov r12, r3 - mov r2, r12 - orrs r1, r2 - strb r1, [r0] - movs r3, 0x1E - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r7, 0x18] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x88 - strh r0, [r1, 0x20] - movs r0, 0x40 - strh r0, [r1, 0x22] - adds r3, r1, 0 - adds r3, 0x3E - ldrb r2, [r3] - movs r4, 0x5 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r3] - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - mov r3, r12 - orrs r0, r3 - strb r0, [r1, 0x1] - ldrb r1, [r7, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x68 - strh r1, [r0, 0x20] - movs r1, 0x48 - strh r1, [r0, 0x22] - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - ands r4, r1 - strb r4, [r3] - ldrb r1, [r0, 0x1] - ands r2, r1 - mov r1, r12 - orrs r2, r1 - strb r2, [r0, 0x1] - adds r0, r6, 0 - movs r1, 0x2 - bl sub_800B534 - adds r0, r6, 0 - movs r1, 0x1 - bl sub_800B6C0 - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r4, _0800AD3C - ldr r1, _0800AD40 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r0, _0800AD44 - str r0, [r7] -_0800AD2C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800AD34: .4byte 0x03004b20 -_0800AD38: .4byte 0x02020004 -_0800AD3C: .4byte 0x020234cc -_0800AD40: .4byte gUnknown_081C7025 -_0800AD44: .4byte task_new_game_prof_birch_speech_part2_7 - thumb_func_end task_new_game_prof_birch_speech_part2_6 - - thumb_func_start task_new_game_prof_birch_speech_part2_7 -task_new_game_prof_birch_speech_part2_7: @ 800AD48 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0800ADE8 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0800ADE0 - ldr r7, _0800ADEC - movs r1, 0x18 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0x1] - movs r6, 0xD - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x1] - movs r1, 0x1A - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x1] - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800ADE0 - movs r0, 0x18 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r2, [r0, 0x1] - adds r1, r6, 0 - ands r1, r2 - movs r3, 0x4 - orrs r1, r3 - strb r1, [r0, 0x1] - movs r1, 0x1A - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x1] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_800B458 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_800B614 - movs r0, 0x40 - strh r0, [r4, 0x16] - ldr r0, _0800ADF0 - str r0, [r4] -_0800ADE0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800ADE8: .4byte 0x03004b20 -_0800ADEC: .4byte 0x02020004 -_0800ADF0: .4byte task_new_game_prof_birch_speech_part2_8 - thumb_func_end task_new_game_prof_birch_speech_part2_7 - - thumb_func_start task_new_game_prof_birch_speech_part2_8 -task_new_game_prof_birch_speech_part2_8: @ 800ADF4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0800AE4C - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r2, 0x12 - ldrsh r0, [r4, r2] - adds r7, r1, 0 - cmp r0, 0 - beq _0800AEC4 - ldr r2, _0800AE50 - movs r3, 0x18 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r3, 0x4 - orrs r1, r3 - strb r1, [r0] - movs r0, 0x1A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - ldrh r1, [r4, 0x16] - movs r3, 0x16 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0800AE54 - subs r0, r1, 0x1 - strh r0, [r4, 0x16] - b _0800AEC4 - .align 2, 0 -_0800AE4C: .4byte 0x03004b20 -_0800AE50: .4byte 0x02020004 -_0800AE54: - ldr r0, _0800AE60 - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0800AE64 - ldrb r5, [r4, 0x1E] - b _0800AE66 - .align 2, 0 -_0800AE60: .4byte gSaveBlock2 -_0800AE64: - ldrb r5, [r4, 0x1C] -_0800AE66: - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r2 - movs r0, 0x78 - strh r0, [r1, 0x20] - movs r0, 0x3C - strh r0, [r1, 0x22] - adds r3, r1, 0 - adds r3, 0x3E - ldrb r2, [r3] - subs r0, 0x41 - ands r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r7 - strh r5, [r4, 0xC] - adds r0, r6, 0 - movs r1, 0x2 - bl sub_800B534 - adds r0, r6, 0 - movs r1, 0x1 - bl sub_800B6C0 - movs r0, 0x2 - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x12 - bl DrawDefaultWindow - ldr r0, _0800AECC - movs r1, 0x3 - movs r2, 0xE - bl AddTextPrinterWithCallbackForMessage - ldr r0, _0800AED0 - str r0, [r4] -_0800AEC4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800AECC: .4byte gUnknown_081C7074 -_0800AED0: .4byte task_new_game_prof_birch_speech_part2_9 - thumb_func_end task_new_game_prof_birch_speech_part2_8 - - thumb_func_start task_new_game_prof_birch_speech_part2_9 -task_new_game_prof_birch_speech_part2_9: @ 800AED4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800AF6C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r6, r1, r2 - movs r1, 0x12 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _0800AF64 - ldr r7, _0800AF70 - movs r1, 0xC - ldrsh r0, [r6, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - movs r0, 0x18 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _0800AF64 - ldrb r0, [r6, 0xC] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r5, r4, r7 - ldrb r1, [r5, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r5, 0x1] - adds r0, r7, 0 - adds r0, 0x10 - adds r0, r4, r0 - ldr r1, _0800AF74 - str r1, [r0] - adds r0, r5, 0 - bl InitSpriteAffineAnim - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAffineAnim - adds r0, r7, 0 - adds r0, 0x1C - adds r4, r0 - ldr r0, _0800AF78 - str r0, [r4] - ldr r0, _0800AF7C - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - bl play_sound_effect - ldr r0, _0800AF80 - str r0, [r6] -_0800AF64: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800AF6C: .4byte 0x03004b20 -_0800AF70: .4byte 0x02020004 -_0800AF74: .4byte gSpriteAffineAnimTable_81E79AC -_0800AF78: .4byte sub_800B240 -_0800AF7C: .4byte 0x0000ffff -_0800AF80: .4byte task_new_game_prof_birch_speech_part2_10 - thumb_func_end task_new_game_prof_birch_speech_part2_9 - - thumb_func_start task_new_game_prof_birch_speech_part2_10 -task_new_game_prof_birch_speech_part2_10: @ 800AF84 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800AFB4 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrb r1, [r3, 0xC] - ldr r2, _0800AFB8 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0800AFAE - ldr r0, _0800AFBC - str r0, [r3] -_0800AFAE: - pop {r0} - bx r0 - .align 2, 0 -_0800AFB4: .4byte 0x03004b20 -_0800AFB8: .4byte 0x02020004 -_0800AFBC: .4byte sub_800AFC0 - thumb_func_end task_new_game_prof_birch_speech_part2_10 - - thumb_func_start sub_800AFC0 -sub_800AFC0: @ 800AFC0 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0800B018 - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800B010 - ldr r0, _0800B01C - lsls r4, r2, 2 - adds r4, r2 - lsls r4, 3 - adds r4, r0 - ldrb r2, [r4, 0xC] - ldr r1, _0800B020 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0800B024 - str r1, [r0] - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x82 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0800B028 - ldr r1, _0800B02C - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0800B030 - str r0, [r4] -_0800B010: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B018: .4byte 0x0202f388 -_0800B01C: .4byte 0x03004b20 -_0800B020: .4byte 0x02020004 -_0800B024: .4byte nullsub_34 -_0800B028: .4byte 0xffff0000 -_0800B02C: .4byte 0x0000ffff -_0800B030: .4byte sub_800B034 - thumb_func_end sub_800AFC0 - - thumb_func_start sub_800B034 -sub_800B034: @ 800B034 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800B058 - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800B052 - ldr r0, _0800B05C - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0800B052: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B058: .4byte 0x0202f388 -_0800B05C: .4byte c2_load_new_map_2 - thumb_func_end sub_800B034 - - thumb_func_start new_game_prof_birch_speech_part2_start -new_game_prof_birch_speech_part2_start: @ 800B060 - push {r4,r5,lr} - sub sp, 0xC - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - adds r0, 0xC - strh r4, [r0] - subs r0, 0x2 - strh r4, [r0] - subs r0, 0x2 - strh r4, [r0] - adds r0, 0x10 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - subs r0, 0x6 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - subs r0, 0x6 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - add r0, sp, 0x4 - strh r4, [r0] - ldr r1, _0800B13C - str r0, [r1] - movs r4, 0xC0 - lsls r4, 19 - str r4, [r1, 0x4] - ldr r0, _0800B140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0800B144 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r2, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0800B148 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - ldr r0, _0800B14C - adds r1, r4, 0 - bl LZ77UnCompVram - ldr r0, _0800B150 - ldr r1, _0800B154 - bl LZ77UnCompVram - ldr r0, _0800B158 - movs r1, 0 - movs r2, 0x40 - bl LoadPalette - bl ResetTasks - ldr r0, _0800B15C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0800B160 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldr r0, _0800B164 - strh r0, [r4, 0x10] - bl remove_some_task - bl ResetSpriteData - bl FreeAllSpritePalettes - adds r0, r5, 0 - bl AddBirchSpeechObjects - ldr r0, _0800B168 - bl SetUpWindowConfig - ldr r0, _0800B16C - bl sub_8071C4C - ldr r0, _0800B170 - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0800B174 - movs r0, 0x1 - strh r0, [r4, 0x14] - ldrb r3, [r4, 0x1E] - b _0800B178 - .align 2, 0 -_0800B13C: .4byte 0x040000d4 -_0800B140: .4byte 0x8100c000 -_0800B144: .4byte 0x85000100 -_0800B148: .4byte 0x81000200 -_0800B14C: .4byte gUnknown_081E768C -_0800B150: .4byte gUnknown_081E7834 -_0800B154: .4byte 0x06003800 -_0800B158: .4byte gUnknown_081E764C -_0800B15C: .4byte task_new_game_prof_birch_speech_part2_1 -_0800B160: .4byte 0x03004b20 -_0800B164: .4byte 0x0000ffc4 -_0800B168: .4byte gWindowConfig_81E6C3C -_0800B16C: .4byte gWindowConfig_81E6CE4 -_0800B170: .4byte gSaveBlock2 -_0800B174: - strh r0, [r4, 0x14] - ldrb r3, [r4, 0x1C] -_0800B178: - ldr r0, _0800B210 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - movs r4, 0 - movs r0, 0xB4 - strh r0, [r1, 0x20] - movs r0, 0x3C - strh r0, [r1, 0x22] - adds r1, 0x3E - ldrb r2, [r1] - subs r0, 0x41 - ands r0, r2 - strb r0, [r1] - ldr r1, _0800B214 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0xC] - ldr r1, _0800B218 - ldr r2, _0800B21C - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0800B220 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x6 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r3, _0800B224 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0800B228 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r0, _0800B22C - bl SetVBlankCallback - ldr r0, _0800B230 - bl SetMainCallback2 - ldr r1, _0800B234 - ldr r2, _0800B238 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B210: .4byte 0x02020004 -_0800B214: .4byte 0x03004b20 -_0800B218: .4byte REG_BG1HOFS -_0800B21C: .4byte 0x0000ffc4 -_0800B220: .4byte REG_WIN0H -_0800B224: .4byte 0x04000208 -_0800B228: .4byte 0x04000200 -_0800B22C: .4byte VBlankCB_MainMenu -_0800B230: .4byte CB2_MainMenu -_0800B234: .4byte REG_BG1CNT -_0800B238: .4byte 0x00000703 - thumb_func_end new_game_prof_birch_speech_part2_start - - thumb_func_start nullsub_34 -nullsub_34: @ 800B23C - bx lr - thumb_func_end nullsub_34 - - thumb_func_start sub_800B240 -sub_800B240: @ 800B240 - movs r2, 0x22 - ldrsh r1, [r0, r2] - lsls r1, 16 - movs r3, 0x2E - ldrsh r2, [r0, r3] - adds r1, r2 - movs r2, 0xC0 - lsls r2, 8 - adds r1, r2 - lsrs r2, r1, 16 - strh r2, [r0, 0x22] - strh r1, [r0, 0x2E] - bx lr - thumb_func_end sub_800B240 - - thumb_func_start sub_800B25C -sub_800B25C: @ 800B25C - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r6, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _0800B2B8 - ldr r2, _0800B2BC - movs r3, 0xAF - lsls r3, 3 - adds r1, r2, r3 - ldrb r1, [r1] - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - ldr r4, _0800B2C0 - ldr r3, [r4] - ldr r4, [r4, 0x4] - str r4, [sp] - movs r4, 0xAF - lsls r4, 1 - str r4, [sp, 0x4] - bl DecompressPicFromTable_2 - ldr r0, _0800B2C4 - bl LoadCompressedObjectPalette - adds r0, r4, 0 - movs r1, 0x1 - bl gpu_pal_obj_decompress_and_apply - ldr r0, _0800B2C8 - adds r1, r5, 0 - adds r2, r6, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0800B2B8: .4byte gMonFrontPicTable + 0xAF0 -_0800B2BC: .4byte gMonFrontPicCoords -_0800B2C0: .4byte gUnknown_081FAF4C -_0800B2C4: .4byte gMonPaletteTable + 0xAF0 -_0800B2C8: .4byte 0x02024e8c - thumb_func_end sub_800B25C - - thumb_func_start AddBirchSpeechObjects -AddBirchSpeechObjects: @ 800B2CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x88 - movs r1, 0x3C - movs r2, 0x1 - bl AddNewGameBirchObject - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800B3DC - mov r9, r1 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - movs r3, 0x1C - add r3, r9 - mov r8, r3 - adds r1, r2, r3 - ldr r7, _0800B3E0 - str r7, [r1] - add r2, r9 - ldrb r3, [r2, 0x5] - movs r6, 0xD - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x5] - adds r2, 0x3E - ldrb r1, [r2] - movs r3, 0x4 - mov r10, r3 - mov r3, r10 - orrs r1, r3 - strb r1, [r2] - ldr r1, _0800B3E4 - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r1 - strh r0, [r5, 0x18] - movs r0, 0x68 - movs r1, 0x48 - bl sub_800B25C - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r4, r8 - adds r1, r2, r4 - str r7, [r1] - add r2, r9 - ldrb r3, [r2, 0x5] - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x5] - adds r2, 0x3E - ldrb r1, [r2] - mov r3, r10 - orrs r1, r3 - strb r1, [r2] - strh r0, [r5, 0x1A] - ldr r4, _0800B3E8 - str r4, [sp] - movs r0, 0 - movs r1, 0x78 - movs r2, 0x3C - movs r3, 0 - bl sub_80859BC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r3, r8 - adds r1, r2, r3 - str r7, [r1] - add r2, r9 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - mov r4, r10 - orrs r1, r4 - strb r1, [r3] - ldrb r3, [r2, 0x5] - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x5] - strh r0, [r5, 0x1C] - ldr r0, _0800B3E8 - movs r1, 0x80 - lsls r1, 4 - adds r4, r0, r1 - str r4, [sp] - movs r0, 0x1 - movs r1, 0x78 - movs r2, 0x3C - movs r3, 0 - bl sub_80859BC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r8, r2 - mov r3, r8 - str r7, [r3] - add r2, r9 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - mov r4, r10 - orrs r1, r4 - strb r1, [r3] - ldrb r1, [r2, 0x5] - ands r6, r1 - strb r6, [r2, 0x5] - strh r0, [r5, 0x1E] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800B3DC: .4byte 0x02020004 -_0800B3E0: .4byte nullsub_34 -_0800B3E4: .4byte 0x03004b20 -_0800B3E8: .4byte 0x02000000 - thumb_func_end AddBirchSpeechObjects - - thumb_func_start sub_800B3EC -sub_800B3EC: @ 800B3EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r4, _0800B420 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r3, r0, r4 - ldrh r1, [r3, 0xA] - movs r5, 0xA - ldrsh r0, [r3, r5] - cmp r0, 0 - bne _0800B424 - movs r1, 0x8 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x1 - strh r0, [r1, 0x12] - adds r0, r2, 0 - bl DestroyTask - b _0800B44E - .align 2, 0 -_0800B420: .4byte 0x03004b20 -_0800B424: - ldrh r2, [r3, 0x10] - movs r4, 0x10 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _0800B434 - subs r0, r2, 0x1 - strh r0, [r3, 0x10] - b _0800B44E -_0800B434: - ldrh r0, [r3, 0xE] - strh r0, [r3, 0x10] - subs r1, 0x1 - strh r1, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ldr r2, _0800B454 - movs r5, 0xC - ldrsh r0, [r3, r5] - lsls r0, 8 - adds r1, r0 - strh r1, [r2] -_0800B44E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B454: .4byte REG_BLDALPHA - thumb_func_end sub_800B3EC - - thumb_func_start sub_800B458 -sub_800B458: @ 800B458 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _0800B4BC - movs r2, 0x94 - lsls r2, 2 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x10 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0 - strh r0, [r1] - ldr r0, _0800B4C0 - mov r8, r0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r6, 0 - strh r6, [r0, 0x12] - ldr r0, _0800B4C4 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r8 - strh r4, [r1, 0x8] - movs r0, 0x10 - strh r0, [r1, 0xA] - strh r6, [r1, 0xC] - strh r5, [r1, 0xE] - strh r5, [r1, 0x10] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800B4BC: .4byte REG_BLDCNT -_0800B4C0: .4byte 0x03004b20 -_0800B4C4: .4byte sub_800B3EC - thumb_func_end sub_800B458 - - thumb_func_start sub_800B4C8 -sub_800B4C8: @ 800B4C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r4, _0800B4FC - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r3, r0, r4 - ldrh r1, [r3, 0xA] - movs r5, 0xA - ldrsh r0, [r3, r5] - cmp r0, 0x10 - bne _0800B500 - movs r1, 0x8 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - movs r0, 0x1 - strh r0, [r1, 0x12] - adds r0, r2, 0 - bl DestroyTask - b _0800B52A - .align 2, 0 -_0800B4FC: .4byte 0x03004b20 -_0800B500: - ldrh r2, [r3, 0x10] - movs r4, 0x10 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _0800B510 - subs r0, r2, 0x1 - strh r0, [r3, 0x10] - b _0800B52A -_0800B510: - ldrh r0, [r3, 0xE] - strh r0, [r3, 0x10] - adds r1, 0x1 - strh r1, [r3, 0xA] - ldrh r0, [r3, 0xC] - subs r0, 0x1 - strh r0, [r3, 0xC] - ldr r2, _0800B530 - movs r5, 0xC - ldrsh r0, [r3, r5] - lsls r0, 8 - adds r1, r0 - strh r1, [r2] -_0800B52A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B530: .4byte REG_BLDALPHA - thumb_func_end sub_800B4C8 - - thumb_func_start sub_800B534 -sub_800B534: @ 800B534 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _0800B59C - movs r2, 0x94 - lsls r2, 2 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0 - strh r0, [r1] - ldr r0, _0800B5A0 - mov r8, r0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r6, 0 - strh r6, [r0, 0x12] - ldr r0, _0800B5A4 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r8 - strh r4, [r1, 0x8] - strh r6, [r1, 0xA] - movs r0, 0x10 - strh r0, [r1, 0xC] - strh r5, [r1, 0xE] - strh r5, [r1, 0x10] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800B59C: .4byte REG_BLDCNT -_0800B5A0: .4byte 0x03004b20 -_0800B5A4: .4byte sub_800B4C8 - thumb_func_end sub_800B534 - - thumb_func_start sub_800B5A8 -sub_800B5A8: @ 800B5A8 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0800B5C8 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r3, [r1, 0xC] - movs r4, 0xC - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _0800B5CC - subs r0, r3, 0x1 - strh r0, [r1, 0xC] - b _0800B608 - .align 2, 0 -_0800B5C8: .4byte 0x03004b20 -_0800B5CC: - ldrh r3, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0x8 - bne _0800B5DE - adds r0, r2, 0 - bl DestroyTask - b _0800B608 -_0800B5DE: - ldrh r2, [r1, 0x10] - movs r4, 0x10 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _0800B5EE - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - b _0800B608 -_0800B5EE: - ldrh r0, [r1, 0xE] - strh r0, [r1, 0x10] - adds r0, r3, 0x1 - strh r0, [r1, 0xA] - movs r2, 0xA - ldrsh r0, [r1, r2] - lsls r0, 1 - ldr r1, _0800B610 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x10 - bl LoadPalette -_0800B608: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B610: .4byte gUnknown_081E795C - thumb_func_end sub_800B5A8 - - thumb_func_start sub_800B614 -sub_800B614: @ 800B614 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0800B64C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800B650 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r4, [r1, 0x8] - strh r0, [r1, 0xA] - movs r0, 0x8 - strh r0, [r1, 0xC] - strh r5, [r1, 0xE] - strh r5, [r1, 0x10] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B64C: .4byte sub_800B5A8 -_0800B650: .4byte 0x03004b20 - thumb_func_end sub_800B614 - - thumb_func_start sub_800B654 -sub_800B654: @ 800B654 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0800B674 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r3, [r1, 0xC] - movs r4, 0xC - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _0800B678 - subs r0, r3, 0x1 - strh r0, [r1, 0xC] - b _0800B6B4 - .align 2, 0 -_0800B674: .4byte 0x03004b20 -_0800B678: - ldrh r3, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _0800B68A - adds r0, r2, 0 - bl DestroyTask - b _0800B6B4 -_0800B68A: - ldrh r2, [r1, 0x10] - movs r4, 0x10 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _0800B69A - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - b _0800B6B4 -_0800B69A: - ldrh r0, [r1, 0xE] - strh r0, [r1, 0x10] - subs r0, r3, 0x1 - strh r0, [r1, 0xA] - movs r2, 0xA - ldrsh r0, [r1, r2] - lsls r0, 1 - ldr r1, _0800B6BC - adds r0, r1 - movs r1, 0x1 - movs r2, 0x10 - bl LoadPalette -_0800B6B4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B6BC: .4byte gUnknown_081E795C - thumb_func_end sub_800B654 - - thumb_func_start sub_800B6C0 -sub_800B6C0: @ 800B6C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0800B6F8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800B6FC - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - movs r0, 0x8 - strh r0, [r1, 0xA] - strh r0, [r1, 0xC] - strh r5, [r1, 0xE] - strh r5, [r1, 0x10] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B6F8: .4byte sub_800B654 -_0800B6FC: .4byte 0x03004b20 - thumb_func_end sub_800B6C0 - - thumb_func_start CreateGenderMenu -CreateGenderMenu: @ 800B700 - push {r4,r5,lr} - sub sp, 0x8 - adds r2, r0, 0 - adds r3, r1, 0 - lsls r2, 24 - lsls r3, 24 - lsrs r5, r2, 24 - movs r0, 0xC0 - lsls r0, 19 - adds r2, r0 - lsrs r2, 24 - lsrs r4, r3, 24 - movs r0, 0xA0 - lsls r0, 19 - adds r3, r0 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl DrawDefaultWindow - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - ldr r3, _0800B75C - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x2 - bl PrintStringArray - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - movs r0, 0 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x2 - bl InitMenu - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B75C: .4byte gUnknown_081E79B0 - thumb_func_end CreateGenderMenu - - thumb_func_start GenderMenuProcessInput -GenderMenuProcessInput: @ 800B760 - push {lr} - bl ProcessMenuInputNoWrap - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GenderMenuProcessInput - - thumb_func_start CreateNameMenu -CreateNameMenu: @ 800B770 - push {r4,r5,lr} - sub sp, 0x8 - adds r2, r0, 0 - adds r3, r1, 0 - lsls r2, 24 - lsls r3, 24 - lsrs r5, r2, 24 - movs r0, 0xA0 - lsls r0, 20 - adds r2, r0 - lsrs r2, 24 - lsrs r4, r3, 24 - movs r0, 0xB0 - lsls r0, 20 - adds r3, r0 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl DrawDefaultWindow - ldr r0, _0800B7B8 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _0800B7C0 - adds r5, 0x1 - lsls r0, r5, 24 - lsrs r0, 24 - adds r4, 0x1 - lsls r1, r4, 24 - lsrs r1, 24 - ldr r3, _0800B7BC - movs r2, 0x5 - bl PrintStringArray - b _0800B7D4 - .align 2, 0 -_0800B7B8: .4byte gSaveBlock2 -_0800B7BC: .4byte gUnknown_081E79C0 -_0800B7C0: - adds r5, 0x1 - lsls r0, r5, 24 - lsrs r0, 24 - adds r4, 0x1 - lsls r1, r4, 24 - lsrs r1, 24 - ldr r3, _0800B7F4 - movs r2, 0x5 - bl PrintStringArray -_0800B7D4: - lsls r1, r5, 24 - lsrs r1, 24 - lsls r2, r4, 24 - lsrs r2, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r3, 0x5 - bl InitMenu - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B7F4: .4byte gUnknown_081E79E8 - thumb_func_end CreateNameMenu - - thumb_func_start NameMenuProcessInput -NameMenuProcessInput: @ 800B7F8 - push {lr} - bl ProcessMenuInput - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end NameMenuProcessInput - - thumb_func_start set_default_player_name -set_default_player_name: @ 800B808 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0800B81C - ldrb r1, [r0, 0x8] - adds r5, r0, 0 - cmp r1, 0 - bne _0800B824 - ldr r1, _0800B820 - b _0800B826 - .align 2, 0 -_0800B81C: .4byte gSaveBlock2 -_0800B820: .4byte gUnknown_081E79C0 -_0800B824: - ldr r1, _0800B850 -_0800B826: - lsls r0, r2, 3 - adds r0, r1 - ldr r3, [r0] - movs r2, 0 - ldr r4, _0800B854 -_0800B830: - adds r1, r2, r4 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x6 - bls _0800B830 - adds r1, r2, r5 - movs r0, 0xFF - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B850: .4byte gUnknown_081E79E8 -_0800B854: .4byte gSaveBlock2 - thumb_func_end set_default_player_name - thumb_func_start sub_800B858 sub_800B858: @ 800B858 push {lr} diff --git a/ewram_syms.txt b/ewram_syms.txt index 0f363dee0..277a7a173 100644 --- a/ewram_syms.txt +++ b/ewram_syms.txt @@ -3,6 +3,8 @@ unk_2004000 = 0x2004000; gUnknown_020239F8 = 0x20239F8; +gUnknown_02024E8C = 0x2024E8C; + gSaveBlock2 = 0x2024EA4; stru_202E908 = 0x202E908; diff --git a/include/sprite.h b/include/sprite.h index 10bd3a5f0..9b800a9ea 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -149,14 +149,14 @@ struct Sprite u8 animLoopCounter; // general purpose data fields - u16 data0; - u16 data1; - u16 data2; - u16 data3; - u16 data4; - u16 data5; - u16 data6; - u16 data7; + s16 data0; + s16 data1; + s16 data2; + s16 data3; + s16 data4; + s16 data5; + s16 data6; + s16 data7; u16 inUse:1; u16 coordOffsetEnabled:1; diff --git a/src/main_menu.c b/src/main_menu.c index 87c3a671a..5e2e61f11 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -6,6 +6,7 @@ #include "rtc.h" #include "songs.h" #include "palette.h" +#include "string_util.h" extern u8 sub_8072080(void); extern void Print(u8 *, u8, u8); @@ -20,6 +21,29 @@ extern u8 *sub_8072C14(u8 *, s32, u8, u8); extern u8 sub_80729D8(u8 *, u8, u16, u8); extern u8 GetBadgeCount(void); extern void Task_Birch1(u8); +void AddTextPrinterWithCallbackForMessage(const u8 *string, u8 a, u8 b); +u8 sub_8072CF4(u8 a); +void sub_8072DEC(void); +u8 sub_8075374(void); +void sub_807206C(u32); +void cry_related(u16, u8); +void audio_play(u8 a); +void Reset(u8 a, u8 b, u8 c, u8 d); +u8 GetMenuCursorPos(void); +void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4); +void sub_8072974(u8 r0, u8 r1, u32 r2); +s8 FillWindowPixelBuffer(void); +void c2_load_new_map_2(void); +void LZ77UnCompVram(const void *src, void *dest); +void sub_8071C4C(const struct WindowConfig *); +void CB2_MainMenu(void); +void VBlankCB_MainMenu(void); +void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32); +void LoadCompressedObjectPalette(const struct SpritePalette *); +void gpu_pal_obj_decompress_and_apply(u16, u8); +u8 AddNewGameBirchObject(u8, u8, u8); +u8 sub_80859BC(u8, u16, u16, u8, void *); +void DrawDefaultWindow(u8 a, u8 b, u8 c, u8 d); extern struct PaletteFadeControl gPaletteFade; extern u8 gSaveFileDeletedMessage[]; @@ -603,3 +627,1040 @@ void PrintBadgeCount(void) ConvertIntToDecimalString(buffer, GetBadgeCount()); sub_80729D8(buffer, 205, 40, 1); } + +//Text Strings +extern const u8 gUnknown_081C6D78[]; //Hi! Sorry to keep you waiting!... +extern const u8 gUnknown_081C6DF8[]; +extern const u8 gUnknown_081C6E1A[]; +extern const u8 gUnknown_081C6FCB[]; +extern const u8 gUnknown_081C6FD8[]; +extern const u8 gUnknown_081C6FFA[]; +extern u8 gUnknown_081C7017[]; +extern u8 gUnknown_081C7025[]; +extern u8 gUnknown_081C7074[]; + +struct MonCoords +{ + u8 x, y; +}; + +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct SpriteSheet gMonFrontPicTable[]; +extern const struct SpritePalette gMonPaletteTable[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern void * const gUnknown_081FAF4C[]; +extern u16 gUnknown_081E795C[]; +extern u8 * const gUnknown_081E79B0[][2]; +extern u8 * const gUnknown_081E79C0[][2]; +extern u8 * const gUnknown_081E79E8[][2]; + +extern const u8 gUnknown_081E764C[]; +extern const u8 gUnknown_081E768C[]; +extern const u8 gUnknown_081E7834[]; +extern const u8 gUnknown_081E796C[]; +extern const u8 gUnknown_0840DFF7[]; + +extern u8 gSpriteAffineAnimTable_81E79AC[]; + +extern struct Sprite gSprites[]; +extern u8 gStringVar4[]; + +extern u8 unk_2000000[]; + +void task_new_game_prof_birch_speech_2(u8 taskId); +void task_new_game_prof_birch_speech_3(u8 taskId); +void task_new_game_prof_birch_speech_4(u8 taskId); +void task_new_game_prof_birch_speech_5(u8 taskId); +void task_new_game_prof_birch_speech_6(u8 taskId); +void task_new_game_prof_birch_speech_7(u8 taskId); +void task_new_game_prof_birch_speech_8(u8 taskId); +void task_new_game_prof_birch_speech_9(u8 taskId); +void task_new_game_prof_birch_speech_10(u8 taskId); +void task_new_game_prof_birch_speech_11(u8 taskId); +void task_new_game_prof_birch_speech_12(u8 taskId); +void task_new_game_prof_birch_speech_13(u8 taskId); +void task_new_game_prof_birch_speech_14(u8 taskId); +void task_new_game_prof_birch_speech_15(u8 taskId); +void task_new_game_prof_birch_speech_16(u8 taskId); +void task_new_game_prof_birch_speech_17(u8 taskId); +void task_new_game_prof_birch_speech_18(u8 taskId); +void sub_800A974(u8 taskId); +void Task_800A9B4(u8 taskId); +void sub_800A9EC(u8 taskId); +void sub_800AAAC(u8 taskId); +void task_new_game_prof_birch_speech_part2_1(u8 taskId); +void sub_800AB38(u8 taskId); +void task_new_game_prof_birch_speech_part2_4(u8 taskId); +void sub_800AC20(u8 taskId); +void task_new_game_prof_birch_speech_part2_6(u8 taskId); +void task_new_game_prof_birch_speech_part2_7(u8 taskId); +void task_new_game_prof_birch_speech_part2_8(u8 taskId); +void task_new_game_prof_birch_speech_part2_9(u8 taskId); +void task_new_game_prof_birch_speech_part2_10(u8 taskId); +void sub_800AFC0(u8 taskId); +void sub_800B034(u8 taskId); +void new_game_prof_birch_speech_part2_start(); +void nullsub_34(struct Sprite *sprite); +void sub_800B240(struct Sprite *sprite); +u8 sub_800B25C(u8, u8); +void AddBirchSpeechObjects(u8); +void sub_800B3EC(u8); +void sub_800B458(u8, u8); +void sub_800B4C8(u8); +void sub_800B534(u8 taskId, u8 a); +void sub_800B5A8(u8); +void sub_800B614(u8, u8); +void sub_800B654(u8); +void sub_800B6C0(u8 taskId, u8 a); +void CreateGenderMenu(u8 left, u8 top); +s8 GenderMenuProcessInput(void); +void CreateNameMenu(u8 a, u8 b); +s8 NameMenuProcessInput(void); +void set_default_player_name(u8 a); + +void Task_Birch1(u8 taskId) +{ + SetUpWindowConfig(&gWindowConfig_81E6C3C); + sub_8071C4C(&gWindowConfig_81E6CE4); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + LZ77UnCompVram(gUnknown_081E768C, (void *)BG_VRAM); + LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800)); + LoadPalette(gUnknown_081E764C, 0, 0x40); + LoadPalette(gUnknown_081E796C, 1, 0x10); + remove_some_task(); + ResetSpriteData(); + FreeAllSpritePalettes(); + AddBirchSpeechObjects(taskId); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + REG_BG1CNT = 0x00000703; + REG_DISPCNT = 0x9A << 5; + gTasks[taskId].data[4] = 0; + gTasks[taskId].func = task_new_game_prof_birch_speech_2; + gTasks[taskId].data[2] = 0xFF; + gTasks[taskId].data[3] = 0xFF; + gTasks[taskId].data[7] = 0xD8; + + sub_8075474(0xBB << 1); +} + +void task_new_game_prof_birch_speech_2(u8 taskId) +{ + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + + if(task->data[7] != 0) + { + task->data[7]--; + } + else + { + u8 spriteId = task->data[8]; + struct Sprite *sprites = gSprites; + struct Sprite *sprite = &sprites[spriteId]; + sprite->pos1.x = 0x88; + sprite->pos1.y = 0x3C; + sprite->invisible = 0; + sprite->oam.objMode = 1; + sub_800B534(taskId, 0xA); + sub_800B6C0(taskId, 0x14); + task->data[7] = 0x50; + task->func = task_new_game_prof_birch_speech_3; + } +} + +void task_new_game_prof_birch_speech_3(u8 taskId) +{ + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + + if(task->data[5] != 0) + { + struct Sprite *sprites = gSprites; + struct Sprite *sprite = &sprites[(s16)task->data[8]]; + + sprite->oam.objMode = 0; + if((u16)task->data[7]) + { + task->data[7]--; + } + else + { + DrawDefaultWindow(0x2, 0xD, 0x1B, 0x12); + AddTextPrinterWithCallbackForMessage(gUnknown_081C6D78, 0x3, 0xE); + task->func = task_new_game_prof_birch_speech_4; + } + } +} + +void task_new_game_prof_birch_speech_4(u8 taskId) +{ + if(!gPaletteFade.active && sub_8072CF4(0x18)) + { + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + task->func = task_new_game_prof_birch_speech_5; + AddTextPrinterWithCallbackForMessage(gUnknown_081C6DF8, 0x3, 0xE); + } +} + +void task_new_game_prof_birch_speech_5(u8 taskId) +{ + if(sub_8072CF4(0x18)) + gTasks[taskId].func = task_new_game_prof_birch_speech_6; +} + +void task_new_game_prof_birch_speech_6(u8 taskId) +{ + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + u8 data = (u8)task->data[9]; + struct Sprite *sprites = gSprites; + struct Sprite *sprite = &sprites[data]; + + sprite->pos1.x = 0x68; + sprite->pos1.y = 0x48; + sprite->invisible = 0; + sprite->data0 = 0; + AddTextPrinterForMessage(data, sprite->oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF); + task->func = task_new_game_prof_birch_speech_7; + task->data[7] = 0; +} + +void task_new_game_prof_birch_speech_7(u8 taskId) +{ + struct Task *tasks; + struct Task *task; + + if(sub_8075374()) + { + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; //r5 + + if(task->data[7] > 0x5F) + { + sub_807206C((u32)&gUnknown_0840DFF7); + task->func = task_new_game_prof_birch_speech_8; + } + } + //_0800A4E4 + tasks = gTasks; + task = &tasks[taskId]; //r2 + if((s16)task->data[7] <= 0x00003fff) + { + task->data[7]++; + if(task->data[7] == 0x20) + { + cry_related(0xAF << 1, 0); + } + } +} + +void task_new_game_prof_birch_speech_8(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + AddTextPrinterWithCallbackForMessage(gUnknown_081C6E1A, 0x3, 0xE); + gTasks[taskId].func = task_new_game_prof_birch_speech_9; + } +} + +void task_new_game_prof_birch_speech_9(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + DrawDefaultWindow(0x2, 0xD, 0x1B, 0x12); + AddTextPrinterWithCallbackForMessage(gUnknown_081C6FCB, 0x3, 0xE); + gTasks[taskId].func = task_new_game_prof_birch_speech_10; + } +} + +void task_new_game_prof_birch_speech_10(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + struct Sprite *sprites = gSprites; + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + struct Sprite *sprite = &sprites[task->data[8]]; + struct Sprite *sprite2; + + sprite->oam.objMode = 1; + sprite2 = &sprites[task->data[9]]; + sprite2->oam.objMode = 1; + sub_800B458(taskId, 0x2); + sub_800B614(taskId, 0x1); + task->data[7] = 0x40; + task->func = task_new_game_prof_birch_speech_11; + } +} + +void task_new_game_prof_birch_speech_11(u8 taskId) +{ + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + + if((s16)task->data[4] != -0x3C) + { + task->data[4] -= 2; + REG_BG1HOFS = task->data[4]; + } + else + { + task->data[4] = 0x0000ffc4; + task->func = task_new_game_prof_birch_speech_12; + } +} + +//Fix Me: Uses a few different registers, and I can't figure out why. +void task_new_game_prof_birch_speech_12(u8 taskId) +{ + if(gTasks[taskId].data[5]) + { + gSprites[gTasks[taskId].data[8]].invisible = 1; + gSprites[gTasks[taskId].data[9]].invisible = 1; + + if(gTasks[taskId].data[7]) + { + gTasks[taskId].data[7]--; + } + else + { + u8 data10 = gTasks[taskId].data[10]; + + gSprites[data10].pos1.x = 0xB4; + gSprites[data10].pos1.y = 0x3C; + gSprites[data10].invisible = 0; + gSprites[data10].oam.objMode = 1; + gTasks[taskId].data[2] = data10; + gTasks[taskId].data[6] = 0; + sub_800B534(taskId, 2); + sub_800B6C0(taskId, 1); + gTasks[taskId].func = task_new_game_prof_birch_speech_13; + } + } +} + +void task_new_game_prof_birch_speech_13(u8 taskId) +{ + struct Task *tasks = gTasks; + struct Task *task = &tasks[taskId]; + + if(task->data[5]) + { + struct Sprite *sprites = gSprites; + struct Sprite *sprite = &sprites[task->data[2]]; + + sprite->oam.objMode = 0; + task->func = task_new_game_prof_birch_speech_14; + } +} + +void task_new_game_prof_birch_speech_14(u8 taskId) +{ + DrawDefaultWindow(2, 0xD, 0x1B, 0x12); + AddTextPrinterWithCallbackForMessage(gUnknown_081C6FD8, 3, 14); + gTasks[taskId].func = task_new_game_prof_birch_speech_15; +} + +void task_new_game_prof_birch_speech_15(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + CreateGenderMenu(2, 4); + gTasks[taskId].func = task_new_game_prof_birch_speech_16; + } +} + +//Fix Me +void task_new_game_prof_birch_speech_16(u8 taskId) +{ + u8 cursorPos; + + switch (GenderMenuProcessInput()) + { + case MALE: + sub_8072DEC(); + audio_play(5); + gSaveBlock2.playerGender = MALE; + Reset(2, 4, 8, 9); + gTasks[taskId].func = sub_800A974; + break; + case FEMALE: + sub_8072DEC(); + audio_play(5); + gSaveBlock2.playerGender = FEMALE; + Reset(2, 4, 8, 9); + gTasks[taskId].func = sub_800A974; + break; + } + + cursorPos = GetMenuCursorPos(); + + if(cursorPos != (s16)gTasks[taskId].data[6]) + { + gTasks[taskId].data[6] = cursorPos; + gSprites[gTasks[taskId].data[2]].oam.objMode = 1; + sub_800B458(taskId, 0); + gTasks[taskId].func = task_new_game_prof_birch_speech_17; + } +} + +void task_new_game_prof_birch_speech_17(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[2]; + + if(gTasks[taskId].data[5] == 0) + { + gSprites[spriteId].pos1.x += 4; + } + else + { + gSprites[spriteId].invisible = 1; + if(gTasks[taskId].data[6]) + { + spriteId = gTasks[taskId].data[11]; + } + else + { + spriteId = gTasks[taskId].data[10]; + } + + gSprites[spriteId].pos1.x = 0xF0; + gSprites[spriteId].pos1.y = 0x3C; + gSprites[spriteId].invisible = 0; + gTasks[taskId].data[2] = spriteId; + gSprites[spriteId].oam.objMode = 1; + sub_800B534(taskId, 0); + gTasks[taskId].func = task_new_game_prof_birch_speech_18; + } +} + +void task_new_game_prof_birch_speech_18(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[2]; + + if(gSprites[spriteId].pos1.x > 0xB4) + { + gSprites[spriteId].pos1.x -= 4; + } + else + { + gSprites[spriteId].pos1.x = 0xB4; + if(gTasks[taskId].data[5]) + { + gSprites[spriteId].oam.objMode = 0; + gTasks[taskId].func = task_new_game_prof_birch_speech_16; + } + } +} + +void sub_800A974(u8 taskId) +{ + DrawDefaultWindow(2, 13, 27, 18); + AddTextPrinterWithCallbackForMessage(gUnknown_081C6FFA, 3, 14); + gTasks[taskId].func = Task_800A9B4; +} + +void Task_800A9B4(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + CreateNameMenu(2, 1); + gTasks[taskId].func = sub_800A9EC; + } +} + +//Fix Me +void sub_800A9EC(u8 taskId) +{ + s8 n = NameMenuProcessInput(); + + switch (n) + { + case 1: + case 2: + case 3: + case 4: + sub_8072DEC(); + audio_play(5); + Reset(2, 1, 22, 12); + set_default_player_name(n); + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_1; + break; + case 0: + audio_play(5); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_800AAAC; + break; + case -1: + sub_8072DEC(); + audio_play(5); + Reset(2, 1, 22, 12); + gTasks[taskId].func = task_new_game_prof_birch_speech_14; + break; + } +} + +//Fix Me +void sub_800AAAC(u8 taskId) +{ + if (!gPaletteFade.active) + { + set_default_player_name(1); + DoNamingScreen(0, &gSaveBlock2, gSaveBlock2.playerGender, 0, 0, new_game_prof_birch_speech_part2_start); + } +} + +void task_new_game_prof_birch_speech_part2_1(u8 taskId) +{ + DrawDefaultWindow(2, 13, 27, 18); + StringExpandPlaceholders(gStringVar4, gUnknown_081C7017); + AddTextPrinterWithCallbackForMessage(gStringVar4, 3, 14); + gTasks[taskId].func = sub_800AB38; +} + +void sub_800AB38(u8 taskId) +{ + if(sub_8072CF4(0x18)) + { + sub_8072974(2, 1, 1); + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_4; + } +} + +void task_new_game_prof_birch_speech_part2_4(u8 taskId) +{ + switch (FillWindowPixelBuffer()) + { + case 0: + audio_play(5); + Reset(2, 1, 8, 7); + gSprites[gTasks[taskId].data[2]].oam.objMode = ST_OAM_OBJ_BLEND; + sub_800B458(taskId, 2); + sub_800B614(taskId, 1); + gTasks[taskId].func = sub_800AC20; + break; + case -1: + case 1: + audio_play(5); + Reset(2, 1, 8, 7); + gTasks[taskId].func = task_new_game_prof_birch_speech_14; + break; + } +} + +void sub_800AC20(u8 taskId) +{ + if(gTasks[taskId].data[4]) + { + gTasks[taskId].data[4] += 2; + REG_BG1HOFS = gTasks[taskId].data[4]; + } + else + { + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_6; + } +} + +void task_new_game_prof_birch_speech_part2_6(u8 taskId) +{ + if(gTasks[taskId].data[5]) + { + s16 spriteId; + + spriteId = gTasks[taskId].data[10]; + gSprites[spriteId].invisible = 1; + + spriteId = gTasks[taskId].data[11]; + gSprites[spriteId].invisible = 1; + + spriteId = (u8)gTasks[taskId].data[8]; + gSprites[spriteId].pos1.x = 0x88; + gSprites[spriteId].pos1.y = 0x40; + gSprites[spriteId].invisible = 0; + gSprites[spriteId].oam.objMode = 1; + + spriteId = (u8)gTasks[taskId].data[9]; + gSprites[spriteId].pos1.x = 0x68; + gSprites[spriteId].pos1.y = 0x48; + gSprites[spriteId].invisible = 0; + gSprites[spriteId].oam.objMode = 1; + + sub_800B534(taskId, 2); + sub_800B6C0(taskId, 1); + DrawDefaultWindow(2, 13, 27, 18); + StringExpandPlaceholders(gStringVar4, gUnknown_081C7025); + AddTextPrinterWithCallbackForMessage(gStringVar4, 3, 14); + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_7; + } +} + +void task_new_game_prof_birch_speech_part2_7(u8 taskId) +{ + if(gTasks[taskId].data[5]) + { + s16 spriteId; + + spriteId = gTasks[taskId].data[8]; + gSprites[spriteId].oam.objMode = 0; + + spriteId = gTasks[taskId].data[9]; + gSprites[spriteId].oam.objMode = 0; + + if(sub_8072CF4(0x18)) + { + spriteId = gTasks[taskId].data[8]; + gSprites[spriteId].oam.objMode = 1; + + spriteId = gTasks[taskId].data[9]; + gSprites[spriteId].oam.objMode = 1; + + sub_800B458(taskId, 2); + sub_800B614(taskId, 1); + gTasks[taskId].data[7] = 0x40; + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_8; + } + } +} + +void task_new_game_prof_birch_speech_part2_8(u8 taskId) +{ + if(gTasks[taskId].data[5]) + { + s16 spriteId; + + spriteId = gTasks[taskId].data[8]; + gSprites[spriteId].invisible = 1; + + spriteId = gTasks[taskId].data[9]; + gSprites[spriteId].invisible = 1; + + if(gTasks[taskId].data[7]) + { + gTasks[taskId].data[7]--; + } + else + { + u8 spriteId; + + if(gSaveBlock2.playerGender) + spriteId = (u8)gTasks[taskId].data[11]; + else + spriteId = (u8)gTasks[taskId].data[10]; + + gSprites[spriteId].pos1.x = 0x78; + gSprites[spriteId].pos1.y = 0x3C; + gSprites[spriteId].invisible = 0; + gSprites[spriteId].oam.objMode = 1; + gTasks[taskId].data[2] = spriteId; + + sub_800B534(taskId, 2); + sub_800B6C0(taskId, 1); + DrawDefaultWindow(2, 13, 27, 18); + AddTextPrinterWithCallbackForMessage(gUnknown_081C7074, 3, 14); + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_9; + } + } +} + +void task_new_game_prof_birch_speech_part2_9(u8 taskId) +{ + if(gTasks[taskId].data[5]) + { + s16 spriteId; + + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].oam.objMode = 0; + + if(sub_8072CF4(0x18)) + { + u8 spriteId; + + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].affineAnims = (union AffineAnimCmd **)gSpriteAffineAnimTable_81E79AC; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + gSprites[spriteId].callback = sub_800B240; + BeginNormalPaletteFade(0x0000ffff, 0, 0, 0x10, 0); + play_sound_effect(4); + gTasks[taskId].func = task_new_game_prof_birch_speech_part2_10; + } + } +} + +void task_new_game_prof_birch_speech_part2_10(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[2]; + + if (gSprites[spriteId].affineAnimEnded) + gTasks[taskId].func = sub_800AFC0; +} + +void sub_800AFC0(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].callback = nullsub_34; + REG_DISPCNT = 4160; + BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF); + gTasks[taskId].func = sub_800B034; + } +} + +void sub_800B034(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(c2_load_new_map_2); + DestroyTask(taskId); + } +} + +// CB2 +void new_game_prof_birch_speech_part2_start() +{ + u8 taskId; + u8 spriteId; + u16 savedIme; + + SetVBlankCallback(NULL); + + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)PLTT, PLTT_SIZE); + + ResetPaletteFade(); + + LZ77UnCompVram(gUnknown_081E768C, (void *)BG_VRAM); + LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800)); + + LoadPalette(gUnknown_081E764C, 0, 0x40); + + ResetTasks(); + + taskId = CreateTask(task_new_game_prof_birch_speech_part2_1, 0); + + gTasks[taskId].data[4] = -60; + + remove_some_task(); + ResetSpriteData(); + FreeAllSpritePalettes(); + AddBirchSpeechObjects(taskId); + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + sub_8071C4C(&gWindowConfig_81E6CE4); + + if (gSaveBlock2.playerGender != MALE) + { + gTasks[taskId].data[6] = FEMALE; + spriteId = gTasks[taskId].data[11]; + } + else + { + gTasks[taskId].data[6] = MALE; + spriteId = gTasks[taskId].data[10]; + } + + gSprites[spriteId].pos1.x = 180; + gSprites[spriteId].pos1.y = 60; + gSprites[spriteId].invisible = 0; + + gTasks[taskId].data[2] = spriteId; + + REG_BG1HOFS = -60; + + BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0x10, 0, 0); + + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + + SetVBlankCallback(VBlankCB_MainMenu); + SetMainCallback2(CB2_MainMenu); + REG_BG1CNT = 1795; + REG_DISPCNT = 4928; +} + +void nullsub_34(struct Sprite *sprite) +{ +} + +void sub_800B240(struct Sprite *sprite) +{ + u32 y = (sprite->pos1.y << 16) + sprite->data0 + 0xC000; + sprite->pos1.y = y >> 16; + sprite->data0 = y; +} + +u8 sub_800B25C(u8 a1, u8 a2) +{ + DecompressPicFromTable_2( + &gMonFrontPicTable[350], + gMonFrontPicCoords[350].x, + gMonFrontPicCoords[350].y, + gUnknown_081FAF4C[0], + gUnknown_081FAF4C[1], + 350); + LoadCompressedObjectPalette(&gMonPaletteTable[350]); + gpu_pal_obj_decompress_and_apply(350, 1); + return CreateSprite(&gUnknown_02024E8C, a1, a2, 0); +} + +void AddBirchSpeechObjects(u8 taskId) +{ + u8 spriteId; + + spriteId = AddNewGameBirchObject(136, 60, 1); + gSprites[spriteId].callback = nullsub_34; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].invisible = 1; + gTasks[taskId].data[8] = spriteId; + + spriteId = sub_800B25C(0x68, 0x48); + gSprites[spriteId].callback = nullsub_34; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].invisible = 1; + gTasks[taskId].data[9] = spriteId; + + spriteId = sub_80859BC(0, 120, 60, 0, unk_2000000); + gSprites[spriteId].callback = nullsub_34; + gSprites[spriteId].invisible = 1; + gSprites[spriteId].oam.priority = 0; + gTasks[taskId].data[10] = spriteId; + + spriteId = sub_80859BC(1, 120, 60, 0, unk_2000000 + 0x800); + gSprites[spriteId].callback = nullsub_34; + gSprites[spriteId].invisible = 1; + gSprites[spriteId].oam.priority = 0; + gTasks[taskId].data[11] = spriteId; +} + +void sub_800B3EC(u8 taskId) +{ + if (gTasks[taskId].data[1] == 0) + { + gTasks[gTasks[taskId].data[0]].data[5] = 1; + DestroyTask(taskId); + } + else + { + if (gTasks[taskId].data[4]) + { + gTasks[taskId].data[4]--; + } + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]--; + gTasks[taskId].data[2]++; + REG_BLDALPHA = gTasks[taskId].data[1] + (gTasks[taskId].data[2] * 256); + } + } +} + +void sub_800B458(u8 taskId, u8 a2) +{ + u8 newTaskId; + + REG_BLDCNT = 592; + REG_BLDALPHA = 16; + REG_BLDY = 0; + gTasks[taskId].data[5] = 0; + newTaskId = CreateTask(sub_800B3EC, 0); + + gTasks[newTaskId].data[0] = taskId; + gTasks[newTaskId].data[1] = 16; + gTasks[newTaskId].data[2] = 0; + gTasks[newTaskId].data[3] = a2; + gTasks[newTaskId].data[4] = a2; +} + +void sub_800B4C8(u8 taskId) +{ + if (gTasks[taskId].data[1] == 16) + { + gTasks[gTasks[taskId].data[0]].data[5] = 1; + DestroyTask(taskId); + } + else if (gTasks[taskId].data[4]) + { + gTasks[taskId].data[4]--; + } + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + gTasks[taskId].data[2]--; + REG_BLDALPHA = gTasks[taskId].data[1] + (gTasks[taskId].data[2] * 256); + } +} + +void sub_800B534(u8 taskId, u8 a2) +{ + u8 newTaskId; + + REG_BLDCNT = 592; + REG_BLDALPHA = 4096; + REG_BLDY = 0; + gTasks[taskId].data[5] = 0; + newTaskId = CreateTask(sub_800B4C8, 0); + + gTasks[newTaskId].data[0] = taskId; + gTasks[newTaskId].data[1] = 0; + gTasks[newTaskId].data[2] = 16; + gTasks[newTaskId].data[3] = a2; + gTasks[newTaskId].data[4] = a2; +} + +void sub_800B5A8(u8 taskId) +{ + if (gTasks[taskId].data[2]) + { + gTasks[taskId].data[2]--; + } + else + { + if (gTasks[taskId].data[1] == 8) + { + DestroyTask(taskId); + } + else if (gTasks[taskId].data[4]) + { + gTasks[taskId].data[4]--; + } + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[1]], 1, 0x10); + } + } +} + +void sub_800B614(u8 a1, u8 a2) +{ + u8 newTaskId = CreateTask(sub_800B5A8, 0); + gTasks[newTaskId].data[0] = a1; + gTasks[newTaskId].data[1] = 0; + gTasks[newTaskId].data[2] = 8; + gTasks[newTaskId].data[3] = a2; + gTasks[newTaskId].data[4] = a2; +} + +void sub_800B654(u8 taskId) +{ + if (gTasks[taskId].data[2]) + { + gTasks[taskId].data[2]--; + } + else + { + if (gTasks[taskId].data[1] == 0) + { + DestroyTask(taskId); + } + else + { + if (gTasks[taskId].data[4]) + { + gTasks[taskId].data[4]--; + } + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]--; + LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[1]], 1, 0x10); + } + } + } +} + +void sub_800B6C0(u8 a1, u8 a2) +{ + u8 newTaskId = CreateTask(sub_800B654, 0); + gTasks[newTaskId].data[0] = a1; + gTasks[newTaskId].data[1] = 8; + gTasks[newTaskId].data[2] = 8; + gTasks[newTaskId].data[3] = a2; + gTasks[newTaskId].data[4] = a2; +} + +void CreateGenderMenu(u8 left, u8 top) +{ + u8 menuLeft, menuTop; + DrawDefaultWindow(left, top, left + 6, top + 5); + menuLeft = left + 1; + menuTop = top + 1; + PrintStringArray(menuLeft, menuTop, 2, gUnknown_081E79B0); + InitMenu(0, menuLeft, menuTop, 2, 0, 5); +} + +s8 GenderMenuProcessInput(void) +{ + return ProcessMenuInputNoWrap(); +} + +void CreateNameMenu(u8 left, u8 top) +{ + DrawDefaultWindow(left, top, left + 10, top + 11); + + if (gSaveBlock2.playerGender == MALE) + { + PrintStringArray((u8)(left + 1), (u8)(top + 1), 5, gUnknown_081E79C0); + } + else + { + PrintStringArray((u8)(left + 1), (u8)(top + 1), 5, gUnknown_081E79E8); + } + + InitMenu(0, (u8)(left + 1), (u8)(top + 1), 5, 0, 9); +} + +s8 NameMenuProcessInput(void) +{ + return ProcessMenuInput(); +} + +void set_default_player_name(u8 index) +{ + u8 i; + u8 *name; + + if (gSaveBlock2.playerGender == MALE) + name = gUnknown_081E79C0[index][0]; + else + name = gUnknown_081E79E8[index][0]; + + for (i = 0; i < 7; i++) + gSaveBlock2.playerName[i] = name[i]; + + gSaveBlock2.playerName[i] = EOS; +} |