diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-26 21:24:02 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-26 21:24:02 -0400 |
commit | 47b9907ec58c55759a95aed1f31e92fb72031a5f (patch) | |
tree | 5a473edae75105a009135ded3d096f133c34d72b | |
parent | 613fd1aa059d6894662566049840f3e1fd8cb02e (diff) | |
parent | 1a33ca381de71bb3b4b250a2f3b41b0c15ed5f21 (diff) |
merge
69 files changed, 12798 insertions, 41993 deletions
diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s deleted file mode 100644 index 59aa1894a..000000000 --- a/asm-de/berry_blender.s +++ /dev/null @@ -1,9141 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x5 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte sub_804E2BC -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl sub_804E844 - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl BuyMenuDrawFieldObjects -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte gUnknown_03004854 -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte sub_804E2BC -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 - thumb_func_end sub_804F0F4 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl sub_80516C4 - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte gUnknown_03004854 -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte gUnknown_03004854 -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_80516C4 - ldr r5, _0804F470 @ =gUnknown_03004854 - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl sub_804E844 - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte gUnknown_03004854 -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte gUnknown_03004854 -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl BuyMenuDrawFieldObjects -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl sub_804E290 -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte gUnknown_03004854 -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte gUnknown_03004854 -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl sub_804E290 - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - 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 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte gUnknown_03004854 -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte gUnknown_03004854 -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte gUnknown_03004854 -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte gUnknown_03004854 - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_03004854 -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte gUnknown_03004854 -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte gUnknown_03004854 -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte gUnknown_03004854 -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl sub_804E290 - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte gUnknown_03004854 -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 -_08050AD0: - bl sub_8052228 - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl sub_8051C58 - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte gUnknown_03004854 -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte gUnknown_03004854 -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte gUnknown_03004854 -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte gUnknown_03004854 -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 -_08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510AC -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte gUnknown_03004854 -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F00 - .4byte _08050F54 - .4byte _08050F74 - .4byte _08050F92 - .4byte _08050FBC - .4byte _08050FEC - .4byte _08051008 - .4byte _08051018 - .4byte _0805103C - .4byte _0805107C - .4byte _0805109E -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - beq _08050F8A - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA2 - b _080510AC -_08050EA2: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050F8A - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050EF8 @ =gStringVar4 - ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull - b _08050F1E - .align 2, 0 -_08050EF8: .4byte gStringVar4 -_08050EFC: .4byte gOtherText_OtherCaseIsFull -_08050F00: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F48 @ =gStringVar4 - ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend -_08050F1E: - adds r0, r4, 0 - bl StringCopy - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F50 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl de_sub_8073110 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510AC - .align 2, 0 -_08050F48: .4byte gStringVar4 -_08050F4C: .4byte gOtherText_NoBerriesForBlend -_08050F50: .4byte gLinkPlayers + 0x8 -_08050F54: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F60 - b _080510AC -_08050F60: - ldr r0, _08050F70 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051094 - .align 2, 0 -_08050F70: .4byte gUnknown_03004854 -_08050F74: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050F88 - b _080510AC -_08050F88: - adds r1, r2, 0 -_08050F8A: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510AC -_08050F92: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FB4 @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FB8 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08050FB4: .4byte gMultiText_Saving -_08050FB8: .4byte gUnknown_03004854 -_08050FBC: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - ldr r3, _08050FE8 @ =gUnknown_03004854 - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510AC - .align 2, 0 -_08050FE8: .4byte gUnknown_03004854 -_08050FEC: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x37 - bl PlaySE - ldr r0, _08051004 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051004: .4byte gUnknown_03004854 -_08051008: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510AC -_08051018: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051038 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051038: .4byte gUnknown_03004854 -_0805103C: - ldr r0, _08051064 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510AC - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051068 @ =0x00002222 - cmp r1, r0 - bne _08051070 - ldr r0, _0805106C @ =sub_804E538 - bl SetMainCallback2 - b _080510AC - .align 2, 0 -_08051064: .4byte gPaletteFade -_08051068: .4byte 0x00002222 -_0805106C: .4byte sub_804E538 -_08051070: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _08051094 -_0805107C: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510AC - bl sub_800832C - ldr r1, [r5] -_08051094: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510AC -_0805109E: - ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510AC - ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510AC: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510C8: .4byte gReceivedRemoteLinkPlayers -_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte gUnknown_03004854 -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte gUnknown_03004854 -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte gUnknown_03004854 -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 -_08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte gUnknown_03004854 -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte gUnknown_03004854 -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte gUnknown_03004854 -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte gUnknown_03004854 - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte gUnknown_03004854 - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =gUnknown_03004854 - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl sub_804E844 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte gUnknown_03004854 - thumb_func_end sub_80516C4 - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte gUnknown_03004854 - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte gUnknown_03004854 - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte gUnknown_03004854 - thumb_func_end sub_8051C04 - - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 -_08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 - - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _08052006 -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F40 - .4byte _08051F54 - .4byte _08051FF4 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _08052006 -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _08052006 -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FDE -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _08052006 -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051D18: .4byte gUnknown_03004854 -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F14 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F18 @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F1C @ =gOtherText_Berry - bl de_sub_8073174 - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F20 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F24 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F28 @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F14 @ =gUnknown_03004854 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F2C @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r0, 0xB8 - strb r0, [r7] - adds r7, 0x1 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F30 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F34 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x63 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F38 @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051F10: .4byte gOtherText_ResultsOfBlending -_08051F14: .4byte gUnknown_03004854 -_08051F18: .4byte gLinkPlayers -_08051F1C: .4byte gOtherText_Berry -_08051F20: .4byte gLinkPlayers + 0x8 -_08051F24: .4byte gUnknown_082165E9 -_08051F28: .4byte gUnknown_082165EE -_08051F2C: .4byte gOtherText_MaxSpeed -_08051F30: .4byte gOtherText_RPM -_08051F34: .4byte gOtherText_RequiredTime -_08051F38: .4byte gOtherText_Min -_08051F3C: .4byte gOtherText_Sec -_08051F40: - ldr r0, _08051F50 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052006 - ldr r1, [r2] - b _08051FDE - .align 2, 0 -_08051F50: .4byte gMain -_08051F54: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FE8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F72: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F82 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F82: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F72 - bl sub_8050760 - ldr r4, _08051FE8 @ =gUnknown_03004854 - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FEC @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF0 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FDE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08052006 - .align 2, 0 -_08051FE8: .4byte gUnknown_03004854 -_08051FEC: .4byte sub_8052BD0 -_08051FF0: .4byte gScriptItemId -_08051FF4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08052006 - bl sub_8051C24 - movs r0, 0x1 - b _08052008 -_08052006: - movs r0, 0 -_08052008: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8051C58 - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl de_sub_8073174 - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80520CC - - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte gUnknown_03004854 -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl sub_80520CC - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8052124 - - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte gUnknown_03004854 -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl sub_8052124 - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8052228 - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte sub_804E2D8 -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC - - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_804E844 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl sub_8052530 - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BB0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BB4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BB8 @ =0x0000096c - adds r6, r0, r1 -_08052B4A: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - movs r0, 0xB8 - strb r0, [r5] - adds r5, 0x1 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BBC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B4A - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BB0: .4byte gMultiText_2P3P4P -_08052BB4: .4byte gSaveBlock1 -_08052BB8: .4byte 0x0000096c -_08052BBC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 - thumb_func_end sub_8052BD0 diff --git a/asm/battle_5.s b/asm/battle_5.s deleted file mode 100644 index b72266193..000000000 --- a/asm/battle_5.s +++ /dev/null @@ -1,4591 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_91 -nullsub_91: @ 802BF70 - bx lr - thumb_func_end nullsub_91 - - thumb_func_start SetBankFuncToPlayerBufferRunCommand -SetBankFuncToPlayerBufferRunCommand: @ 802BF74 - ldr r1, _0802BF8C @ =gBattleBankFunc - ldr r0, _0802BF90 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802BF94 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r1, _0802BF98 @ =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0802BF8C: .4byte gBattleBankFunc -_0802BF90: .4byte gActiveBank -_0802BF94: .4byte PlayerBufferRunCommand -_0802BF98: .4byte gDoingBattleAnim - thumb_func_end SetBankFuncToPlayerBufferRunCommand - - thumb_func_start PlayerBufferExecCompleted -PlayerBufferExecCompleted: @ 802BF9C - push {r4,lr} - sub sp, 0x4 - ldr r1, _0802BFDC @ =gBattleBankFunc - ldr r4, _0802BFE0 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802BFE4 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r0, _0802BFE8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802BFF0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _0802BFEC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0802C002 - .align 2, 0 -_0802BFDC: .4byte gBattleBankFunc -_0802BFE0: .4byte gActiveBank -_0802BFE4: .4byte PlayerBufferRunCommand -_0802BFE8: .4byte gBattleTypeFlags -_0802BFEC: .4byte gBattleBufferA -_0802BFF0: - ldr r2, _0802C00C @ =gBattleExecBuffer - ldr r1, _0802C010 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0802C002: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C00C: .4byte gBattleExecBuffer -_0802C010: .4byte gBitTable - thumb_func_end PlayerBufferExecCompleted - - thumb_func_start PlayerBufferRunCommand -PlayerBufferRunCommand: @ 802C014 - push {lr} - ldr r2, _0802C048 @ =gBattleExecBuffer - ldr r1, _0802C04C @ =gBitTable - ldr r0, _0802C050 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802C060 - ldr r0, _0802C054 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _0802C05C - ldr r0, _0802C058 @ =gPlayerBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _0802C060 - .align 2, 0 -_0802C048: .4byte gBattleExecBuffer -_0802C04C: .4byte gBitTable -_0802C050: .4byte gActiveBank -_0802C054: .4byte gBattleBufferA -_0802C058: .4byte gPlayerBufferCommands -_0802C05C: - bl PlayerBufferExecCompleted -_0802C060: - pop {r0} - bx r0 - thumb_func_end PlayerBufferRunCommand - - thumb_func_start bx_0802E404 -bx_0802E404: @ 802C064 - push {lr} - ldr r2, _0802C08C @ =gSprites - ldr r1, _0802C090 @ =gObjectBankIDs - ldr r0, _0802C094 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0802C086 - bl PlayerBufferExecCompleted -_0802C086: - pop {r0} - bx r0 - .align 2, 0 -_0802C08C: .4byte gSprites -_0802C090: .4byte gObjectBankIDs -_0802C094: .4byte gActiveBank - thumb_func_end bx_0802E404 - - thumb_func_start sub_802C098 -sub_802C098: @ 802C098 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _0802C0FC @ =gBattleBufferA - ldr r4, _0802C100 @ =gActiveBank - ldrb r0, [r4] - lsls r2, r0, 9 - adds r1, r7, 0x2 - adds r1, r2, r1 - ldrb r5, [r1] - adds r1, r7, 0x3 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r5, r1 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldr r0, _0802C104 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C13E - movs r0, 0x5 - bl PlaySE - bl DestroyMenuCursor - ldr r1, _0802C108 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0802C11C - cmp r0, 0x1 - bgt _0802C10C - cmp r0, 0 - beq _0802C116 - b _0802C138 - .align 2, 0 -_0802C0FC: .4byte gBattleBufferA -_0802C100: .4byte gActiveBank -_0802C104: .4byte gMain -_0802C108: .4byte gActionSelectionCursor -_0802C10C: - cmp r0, 0x2 - beq _0802C122 - cmp r0, 0x3 - beq _0802C12E - b _0802C138 -_0802C116: - movs r0, 0x1 - movs r1, 0 - b _0802C126 -_0802C11C: - movs r0, 0x1 - movs r1, 0x1 - b _0802C126 -_0802C122: - movs r0, 0x1 - movs r1, 0x2 -_0802C126: - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - b _0802C138 -_0802C12E: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb -_0802C138: - bl PlayerBufferExecCompleted - b _0802C2AC -_0802C13E: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802C178 - ldr r5, _0802C174 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C158 - b _0802C2AC -_0802C158: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802C200 - .align 2, 0 -_0802C174: .4byte gActionSelectionCursor -_0802C178: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802C1B0 - ldr r5, _0802C1AC @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C192 - b _0802C2AC -_0802C192: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802C200 - .align 2, 0 -_0802C1AC: .4byte gActionSelectionCursor -_0802C1B0: - movs r0, 0x40 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _0802C1D0 - ldr r5, _0802C1CC @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - b _0802C1E8 - .align 2, 0 -_0802C1CC: .4byte gActionSelectionCursor -_0802C1D0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802C218 - ldr r5, _0802C214 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0802C2AC -_0802C1E8: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl nullsub_8 - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_0802C200: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0802C2AC - .align 2, 0 -_0802C214: .4byte gActionSelectionCursor -_0802C218: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C2A0 - ldr r6, _0802C294 @ =gBattleTypeFlags - ldrh r1, [r6] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - ldrb r0, [r4] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0802C2AC - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _0802C298 @ =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, _0802C29C @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802C2AC - ldrh r1, [r6] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - bne _0802C2AC - ldrb r0, [r4] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802C278 - cmp r5, 0xC - bhi _0802C2AC - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem -_0802C278: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0xC - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl PlayerBufferExecCompleted - bl DestroyMenuCursor - b _0802C2AC - .align 2, 0 -_0802C294: .4byte gBattleTypeFlags -_0802C298: .4byte gAbsentBankFlags -_0802C29C: .4byte gBitTable -_0802C2A0: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802C2AC - bl sub_804454C -_0802C2AC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802C098 - - thumb_func_start unref_sub_802C2B8 -unref_sub_802C2B8: @ 802C2B8 - push {r4,lr} - ldr r4, _0802C2E0 @ =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - ldr r1, _0802C2E4 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C2E8 @ =sub_802C2EC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C2E0: .4byte gActiveBank -_0802C2E4: .4byte gBattleBankFunc -_0802C2E8: .4byte sub_802C2EC - thumb_func_end unref_sub_802C2B8 - - thumb_func_start sub_802C2EC -sub_802C2EC: @ 802C2EC - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0802C384 @ =gUnknown_081FAE7C - mov r0, sp - movs r2, 0x4 - bl memcpy - ldr r0, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r0] - movs r1, 0x1 - movs r2, 0xF - movs r3, 0x1 - bl dp11b_obj_instanciate - movs r4, 0 - ldr r0, _0802C38C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r0, 0 - beq _0802C32E -_0802C312: - ldr r0, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r0] - cmp r4, r0 - beq _0802C324 - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0x1 - bl dp11b_obj_free -_0802C324: - adds r4, 0x1 - ldr r0, _0802C38C @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - blt _0802C312 -_0802C32E: - ldr r0, _0802C390 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802C3A8 - bl DestroyMenuCursor - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C394 @ =gSprites - ldr r1, _0802C398 @ =gObjectBankIDs - ldr r4, _0802C388 @ =gUnknown_03004344 - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C39C @ =sub_8010574 - str r1, [r0] - ldr r1, _0802C3A0 @ =gMoveSelectionCursor - ldr r0, _0802C3A4 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldrb r0, [r4] - lsls r0, 8 - orrs r2, r0 - movs r0, 0x1 - movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - bl PlayerBufferExecCompleted - b _0802C658 - .align 2, 0 -_0802C384: .4byte gUnknown_081FAE7C -_0802C388: .4byte gUnknown_03004344 -_0802C38C: .4byte gNoOfAllBanks -_0802C390: .4byte gMain -_0802C394: .4byte gSprites -_0802C398: .4byte gObjectBankIDs -_0802C39C: .4byte sub_8010574 -_0802C3A0: .4byte gMoveSelectionCursor -_0802C3A4: .4byte gActiveBank -_0802C3A8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C41C - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C400 @ =gSprites - ldr r1, _0802C404 @ =gObjectBankIDs - ldr r5, _0802C408 @ =gUnknown_03004344 - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C40C @ =sub_8010574 - str r1, [r0] - ldr r1, _0802C410 @ =gBattleBankFunc - ldr r4, _0802C414 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C418 @ =sub_802C68C - str r1, [r0] - ldrb r0, [r4] - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r5] - movs r1, 0x1 - bl dp11b_obj_free - b _0802C658 - .align 2, 0 -_0802C400: .4byte gSprites -_0802C404: .4byte gObjectBankIDs -_0802C408: .4byte gUnknown_03004344 -_0802C40C: .4byte sub_8010574 -_0802C410: .4byte gBattleBankFunc -_0802C414: .4byte gActiveBank -_0802C418: .4byte sub_802C68C -_0802C41C: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _0802C426 - b _0802C540 -_0802C426: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C458 @ =gSprites - ldr r1, _0802C45C @ =gObjectBankIDs - ldr r3, _0802C460 @ =gUnknown_03004344 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C464 @ =sub_8010574 - str r1, [r0] - adds r5, r3, 0 -_0802C448: - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802C472 - .align 2, 0 -_0802C458: .4byte gSprites -_0802C45C: .4byte gObjectBankIDs -_0802C460: .4byte gUnknown_03004344 -_0802C464: .4byte sub_8010574 -_0802C468: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802C478 - mov r2, sp - adds r0, r2, r4 -_0802C472: - ldrb r0, [r0] - cmp r1, r0 - bne _0802C468 -_0802C478: - subs r4, 0x1 - cmp r4, 0 - bge _0802C480 - movs r4, 0x3 -_0802C480: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBankByPlayerAI - strb r0, [r5] - ldr r1, _0802C4B4 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802C478 - movs r4, 0 - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802C4FE - cmp r0, 0x1 - bgt _0802C4B8 - cmp r0, 0 - beq _0802C4C2 - b _0802C500 - .align 2, 0 -_0802C4B4: .4byte gNoOfAllBanks -_0802C4B8: - cmp r0, 0x2 - beq _0802C4C2 - cmp r0, 0x3 - beq _0802C4FE - b _0802C500 -_0802C4C2: - ldr r2, _0802C520 @ =gActiveBank - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802C4FE - ldr r1, _0802C524 @ =gBattlePartyID - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802C528 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802C52C @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802C530 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C500 -_0802C4FE: - adds r4, 0x1 -_0802C500: - ldr r0, _0802C534 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802C538 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802C53C @ =gUnknown_03004344 - cmp r1, 0 - beq _0802C518 - movs r4, 0 -_0802C518: - cmp r4, 0 - beq _0802C448 - b _0802C640 - .align 2, 0 -_0802C520: .4byte gActiveBank -_0802C524: .4byte gBattlePartyID -_0802C528: .4byte gPlayerParty -_0802C52C: .4byte gMoveSelectionCursor -_0802C530: .4byte gBattleMoves -_0802C534: .4byte gAbsentBankFlags -_0802C538: .4byte gBitTable -_0802C53C: .4byte gUnknown_03004344 -_0802C540: - movs r0, 0x90 - ands r0, r1 - cmp r0, 0 - bne _0802C54A - b _0802C658 -_0802C54A: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802C57C @ =gSprites - ldr r1, _0802C580 @ =gObjectBankIDs - ldr r3, _0802C584 @ =gUnknown_03004344 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C588 @ =sub_8010574 - str r1, [r0] - adds r5, r3, 0 -_0802C56C: - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802C596 - .align 2, 0 -_0802C57C: .4byte gSprites -_0802C580: .4byte gObjectBankIDs -_0802C584: .4byte gUnknown_03004344 -_0802C588: .4byte sub_8010574 -_0802C58C: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802C59C - mov r2, sp - adds r0, r2, r4 -_0802C596: - ldrb r0, [r0] - cmp r1, r0 - bne _0802C58C -_0802C59C: - adds r4, 0x1 - cmp r4, 0x3 - ble _0802C5A4 - movs r4, 0 -_0802C5A4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBankByPlayerAI - strb r0, [r5] - ldr r1, _0802C5D8 @ =gNoOfAllBanks - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802C59C - movs r4, 0 - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802C622 - cmp r0, 0x1 - bgt _0802C5DC - cmp r0, 0 - beq _0802C5E6 - b _0802C624 - .align 2, 0 -_0802C5D8: .4byte gNoOfAllBanks -_0802C5DC: - cmp r0, 0x2 - beq _0802C5E6 - cmp r0, 0x3 - beq _0802C622 - b _0802C624 -_0802C5E6: - ldr r2, _0802C660 @ =gActiveBank - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802C622 - ldr r1, _0802C664 @ =gBattlePartyID - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802C668 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802C66C @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802C670 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802C624 -_0802C622: - adds r4, 0x1 -_0802C624: - ldr r0, _0802C674 @ =gAbsentBankFlags - ldrb r1, [r0] - ldr r2, _0802C678 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802C67C @ =gUnknown_03004344 - cmp r1, 0 - beq _0802C63C - movs r4, 0 -_0802C63C: - cmp r4, 0 - beq _0802C56C -_0802C640: - ldr r2, _0802C680 @ =gSprites - ldr r1, _0802C684 @ =gObjectBankIDs - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C688 @ =sub_8010520 - str r1, [r0] -_0802C658: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802C660: .4byte gActiveBank -_0802C664: .4byte gBattlePartyID -_0802C668: .4byte gPlayerParty -_0802C66C: .4byte gMoveSelectionCursor -_0802C670: .4byte gBattleMoves -_0802C674: .4byte gAbsentBankFlags -_0802C678: .4byte gBitTable -_0802C67C: .4byte gUnknown_03004344 -_0802C680: .4byte gSprites -_0802C684: .4byte gObjectBankIDs -_0802C688: .4byte sub_8010520 - thumb_func_end sub_802C2EC - - thumb_func_start sub_802C68C -sub_802C68C: @ 802C68C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r0, 0 - mov r8, r0 - ldr r7, _0802C6E4 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 9 - ldr r1, _0802C6E8 @ =gUnknown_02023A64 - adds r6, r0, r1 - ldr r0, _0802C6EC @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r4, r5, 0 - ands r4, r1 - cmp r4, 0 - bne _0802C6B2 - b _0802C864 -_0802C6B2: - movs r0, 0x5 - bl PlaySE - ldr r1, _0802C6F0 @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r1, r6, r0 - ldrh r0, [r1] - cmp r0, 0xAE - bne _0802C6F4 - ldrb r0, [r6, 0x12] - movs r4, 0 - cmp r0, 0x7 - beq _0802C702 - ldrb r1, [r6, 0x13] - movs r0, 0x7 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - asrs r4, r0, 31 - movs r0, 0x10 - ands r4, r0 - b _0802C702 - .align 2, 0 -_0802C6E4: .4byte gActiveBank -_0802C6E8: .4byte gUnknown_02023A64 -_0802C6EC: .4byte gMain -_0802C6F0: .4byte gMoveSelectionCursor -_0802C6F4: - ldr r2, _0802C714 @ =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x6] -_0802C702: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _0802C720 - ldr r0, _0802C718 @ =gUnknown_03004344 - ldr r1, _0802C71C @ =gActiveBank - ldrb r1, [r1] - strb r1, [r0] - b _0802C73A - .align 2, 0 -_0802C714: .4byte gBattleMoves -_0802C718: .4byte gUnknown_03004344 -_0802C71C: .4byte gActiveBank -_0802C720: - ldr r0, _0802C764 @ =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - bl GetBankByPlayerAI - ldr r1, _0802C768 @ =gUnknown_03004344 - strb r0, [r1] -_0802C73A: - ldr r3, _0802C76C @ =gBattleBufferA - ldr r5, _0802C764 @ =gActiveBank - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802C770 - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _0802C7B2 - adds r0, r3, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802C7B2 - movs r2, 0x1 - add r8, r2 - b _0802C7B2 - .align 2, 0 -_0802C764: .4byte gActiveBank -_0802C768: .4byte gUnknown_03004344 -_0802C76C: .4byte gBattleBufferA -_0802C770: - movs r0, 0x7D - ands r0, r4 - cmp r0, 0 - bne _0802C77C - movs r0, 0x1 - add r8, r0 -_0802C77C: - ldr r0, _0802C7D0 @ =gMoveSelectionCursor - adds r0, r2, r0 - adds r1, r6, 0 - adds r1, 0x8 - ldrb r0, [r0] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0802C7B8 - movs r0, 0x12 - ands r0, r4 - cmp r0, 0 - bne _0802C7B2 - movs r0, 0 - bl CountAliveMons - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0802C7B2 - ldrb r0, [r5] - bl sub_803C434 - ldr r1, _0802C7D4 @ =gUnknown_03004344 - strb r0, [r1] - movs r2, 0 - mov r8, r2 -_0802C7B2: - mov r0, r8 - cmp r0, 0 - bne _0802C7DC -_0802C7B8: - bl DestroyMenuCursor - ldr r1, _0802C7D0 @ =gMoveSelectionCursor - ldr r0, _0802C7D8 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0802C7D4 @ =gUnknown_03004344 - ldrb r0, [r0] - lsls r0, 8 - orrs r2, r0 - b _0802C888 - .align 2, 0 -_0802C7D0: .4byte gMoveSelectionCursor -_0802C7D4: .4byte gUnknown_03004344 -_0802C7D8: .4byte gActiveBank -_0802C7DC: - ldr r1, _0802C7F8 @ =gBattleBankFunc - ldr r2, _0802C7FC @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802C800 @ =sub_802C2EC - str r1, [r0] - movs r0, 0x12 - ands r4, r0 - cmp r4, 0 - beq _0802C808 - ldr r1, _0802C804 @ =gUnknown_03004344 - ldrb r0, [r2] - b _0802C838 - .align 2, 0 -_0802C7F8: .4byte gBattleBankFunc -_0802C7FC: .4byte gActiveBank -_0802C800: .4byte sub_802C2EC -_0802C804: .4byte gUnknown_03004344 -_0802C808: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0802C828 @ =gAbsentBankFlags - ldrb r1, [r1] - ldr r2, _0802C82C @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802C830 - movs r0, 0x3 - b _0802C832 - .align 2, 0 -_0802C828: .4byte gAbsentBankFlags -_0802C82C: .4byte gBitTable -_0802C830: - movs r0, 0x1 -_0802C832: - bl GetBankByPlayerAI - ldr r1, _0802C854 @ =gUnknown_03004344 -_0802C838: - strb r0, [r1] - ldr r2, _0802C858 @ =gSprites - ldr r1, _0802C85C @ =gObjectBankIDs - ldr r0, _0802C854 @ =gUnknown_03004344 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802C860 @ =sub_8010520 - b _0802CA36 - .align 2, 0 -_0802C854: .4byte gUnknown_03004344 -_0802C858: .4byte gSprites -_0802C85C: .4byte gObjectBankIDs -_0802C860: .4byte sub_8010520 -_0802C864: - movs r6, 0x2 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0802C8A4 - bl DestroyMenuCursor - movs r0, 0x5 - bl PlaySE - ldr r0, _0802C898 @ =gUnknown_030042A4 - strh r4, [r0] - ldr r1, _0802C89C @ =gUnknown_030042A0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _0802C8A0 @ =0x0000ffff -_0802C888: - movs r0, 0x1 - movs r1, 0xA - bl dp01_build_cmdbuf_x21_a_bb - bl PlayerBufferExecCompleted - b _0802CA38 - .align 2, 0 -_0802C898: .4byte gUnknown_030042A4 -_0802C89C: .4byte gUnknown_030042A0 -_0802C8A0: .4byte 0x0000ffff -_0802C8A4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802C8D4 - ldr r4, _0802C8D0 @ =gMoveSelectionCursor - adds r2, r4 - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C8BC - b _0802CA38 -_0802C8BC: - ldrb r0, [r2] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x1 - eors r0, r2 - b _0802C976 - .align 2, 0 -_0802C8D0: .4byte gMoveSelectionCursor -_0802C8D4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802C914 - ldr r4, _0802C90C @ =gMoveSelectionCursor - adds r3, r2, r4 - ldrb r2, [r3] - movs r6, 0x1 - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _0802C8EE - b _0802CA38 -_0802C8EE: - ldr r1, _0802C910 @ =gUnknown_03004348 - adds r0, r6, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcc _0802C8FC - b _0802CA38 -_0802C8FC: - ldrb r0, [r3] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - eors r0, r6 - b _0802C976 - .align 2, 0 -_0802C90C: .4byte gMoveSelectionCursor -_0802C910: .4byte gUnknown_03004348 -_0802C914: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802C944 - ldr r4, _0802C940 @ =gMoveSelectionCursor - adds r2, r4 - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0802C92C - b _0802CA38 -_0802C92C: - ldrb r0, [r2] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - b _0802C976 - .align 2, 0 -_0802C940: .4byte gMoveSelectionCursor -_0802C944: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802C99C - ldr r4, _0802C994 @ =gMoveSelectionCursor - adds r3, r2, r4 - ldrb r2, [r3] - movs r5, 0x2 - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - bne _0802CA38 - ldr r1, _0802C998 @ =gUnknown_03004348 - adds r0, r5, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802CA38 - ldrb r0, [r3] - bl nullsub_7 - ldrb r1, [r7] - adds r1, r4 - ldrb r0, [r1] - eors r0, r5 -_0802C976: - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - bl sub_802E220 - bl sub_802E2D4 - b _0802CA38 - .align 2, 0 -_0802C994: .4byte gMoveSelectionCursor -_0802C998: .4byte gUnknown_03004348 -_0802C99C: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802CA38 - ldr r0, _0802C9D8 @ =gUnknown_03004348 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0802CA38 - ldr r0, _0802C9DC @ =gBattleTypeFlags - ldrh r1, [r0] - adds r0, r6, 0 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0802CA38 - ldr r4, _0802C9E0 @ =gMoveSelectionCursor - adds r0, r2, r4 - ldrb r0, [r0] - ldr r1, _0802C9E4 @ =gUnknown_081FAE80 - bl sub_802E12C - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0802C9EC - ldr r0, _0802C9E8 @ =gUnknown_03004344 - strb r5, [r0] - b _0802C9F4 - .align 2, 0 -_0802C9D8: .4byte gUnknown_03004348 -_0802C9DC: .4byte gBattleTypeFlags -_0802C9E0: .4byte gMoveSelectionCursor -_0802C9E4: .4byte gUnknown_081FAE80 -_0802C9E8: .4byte gUnknown_03004344 -_0802C9EC: - ldr r1, _0802CA44 @ =gUnknown_03004344 - adds r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_0802C9F4: - ldrb r0, [r0] - movs r1, 0x1B - bl sub_802E3B4 - ldr r4, _0802CA48 @ =gUnknown_03004210 - ldr r1, _0802CA4C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CA50 @ =gUnknown_08400D89 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _0802CA54 @ =gBattleBankFunc - ldr r0, _0802CA58 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CA5C @ =sub_802CA60 -_0802CA36: - str r1, [r0] -_0802CA38: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802CA44: .4byte gUnknown_03004344 -_0802CA48: .4byte gUnknown_03004210 -_0802CA4C: .4byte 0x00001016 -_0802CA50: .4byte gUnknown_08400D89 -_0802CA54: .4byte gBattleBankFunc -_0802CA58: .4byte gActiveBank -_0802CA5C: .4byte sub_802CA60 - thumb_func_end sub_802C68C - - thumb_func_start sub_802CA60 -sub_802CA60: @ 802CA60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - ldr r0, _0802CDEC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x5 - ands r0, r1 - cmp r0, 0 - bne _0802CA7A - b _0802CE78 -_0802CA7A: - movs r0, 0x5 - bl PlaySE - ldr r0, _0802CDF0 @ =gMoveSelectionCursor - mov r10, r0 - ldr r1, _0802CDF4 @ =gActiveBank - mov r8, r1 - ldrb r1, [r1] - adds r2, r1, r0 - ldr r5, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r2] - ldrb r3, [r5] - cmp r0, r3 - bne _0802CA98 - b _0802CE14 -_0802CA98: - lsls r1, 9 - ldr r0, _0802CDFC @ =gUnknown_02023A64 - adds r1, r0 - mov r9, r1 - ldrb r1, [r2] - lsls r1, 1 - add r1, r9 - ldrh r6, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r1, r8 - ldrb r0, [r1] - add r0, r10 - ldrb r1, [r0] - mov r7, r9 - adds r7, 0x8 - adds r1, r7, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - strb r6, [r0] - mov r2, r8 - ldrb r0, [r2] - add r0, r10 - ldrb r1, [r0] - mov r2, r9 - adds r2, 0xC - adds r1, r2, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r2, r0 - strb r6, [r2] - mov r3, r8 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _0802CE00 @ =gDisableStructs - adds r6, r0, r2 - ldrb r4, [r6, 0x18] - lsls r3, r4, 24 - lsrs r2, r3, 28 - ldr r0, _0802CE04 @ =gBitTable - mov r12, r0 - add r1, r10 - ldrb r0, [r1] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0802CB52 - lsrs r1, r3, 28 - bics r1, r0 - lsls r1, 4 - movs r2, 0xF - adds r0, r2, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r6, 0x18] - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r3, _0802CE00 @ =gDisableStructs - adds r1, r3 - ldrb r4, [r1, 0x18] - lsrs r3, r4, 4 - ldrb r0, [r5] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - orrs r0, r3 - lsls r0, 4 - ands r2, r4 - orrs r2, r0 - strb r2, [r1, 0x18] -_0802CB52: - bl sub_802E1B0 - movs r6, 0 - mov r12, r7 - mov r5, sp - adds r5, 0x20 - str r5, [sp, 0x28] - ldr r2, _0802CE08 @ =gBattleMons - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r4, r0, 0 - adds r4, 0x3B - mov r7, r8 - mov r10, r2 - movs r5, 0x3 -_0802CB76: - mov r3, sp - adds r3, r6 - adds r3, 0x8 - ldrb r1, [r4] - lsls r2, r6, 1 - adds r0, r5, 0 - lsls r0, r2 - ands r1, r0 - asrs r1, r2 - strb r1, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CB76 - ldr r1, _0802CDF0 @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r2, [sp, 0x28] - strb r0, [r2] - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - mov r2, sp - adds r2, r0 - adds r2, 0x8 - ldr r1, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r1] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - movs r3, 0 - strb r0, [r2] - ldrb r0, [r1] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldr r5, [sp, 0x28] - ldrb r0, [r5] - strb r0, [r1] - strb r3, [r5] - movs r6, 0 - ldr r2, [sp, 0x28] -_0802CBD0: - mov r0, sp - adds r0, r6 - adds r0, 0x8 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CBD0 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x3B - ldr r2, [sp, 0x28] - ldrb r1, [r2] - strb r1, [r0] - movs r6, 0 - adds r4, r7, 0 - movs r3, 0x58 - movs r5, 0x24 - add r5, r10 - mov r8, r5 - mov r2, r9 - mov r7, r10 - adds r7, 0xC - mov r5, r12 -_0802CC0C: - lsls r1, r6, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - adds r1, r7 - ldrh r0, [r2] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r3 - adds r1, r6, r1 - add r1, r8 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CC0C - ldr r2, _0802CDF4 @ =gActiveBank - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - beq _0802CC4E - b _0802CE1C -_0802CC4E: - movs r6, 0 - mov r0, sp - adds r0, 0xC - str r0, [sp, 0x24] - add r1, sp, 0x14 - mov r10, r1 - ldr r3, _0802CE0C @ =gBattlePartyID - mov r9, r3 - mov r8, r2 - movs r7, 0x64 - ldr r5, _0802CE10 @ =gPlayerParty - adds r4, r0, 0 -_0802CC66: - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0xD - bl GetMonData - strh r0, [r4] - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0x11 - bl GetMonData - mov r3, r10 - adds r1, r3, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CC66 - ldr r1, _0802CE0C @ =gBattlePartyID - ldr r0, _0802CDF4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802CE10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - ldr r5, [sp, 0x28] - strb r0, [r5] - movs r6, 0 - movs r5, 0x3 - ldr r4, [sp, 0x28] -_0802CCC6: - mov r3, sp - adds r3, r6 - adds r3, 0x8 - lsls r2, r6, 1 - adds r1, r5, 0 - lsls r1, r2 - ldrb r0, [r4] - ands r0, r1 - asrs r0, r2 - strb r0, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CCC6 - ldr r4, _0802CDF0 @ =gMoveSelectionCursor - ldr r3, _0802CDF4 @ =gActiveBank - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r1, 1 - ldr r0, [sp, 0x24] - adds r1, r0, r1 - ldrh r6, [r1] - ldr r2, _0802CDF8 @ =gUnknown_03004344 - ldrb r0, [r2] - lsls r0, 1 - ldr r5, [sp, 0x24] - adds r0, r5, r0 - ldrh r0, [r0] - movs r5, 0 - strh r0, [r1] - ldrb r0, [r2] - lsls r0, 1 - ldr r1, [sp, 0x24] - adds r0, r1, r0 - strh r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - add r1, r10 - ldrb r6, [r1] - ldrb r0, [r2] - add r0, r10 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - add r0, r10 - strb r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - ldr r1, [sp, 0x28] - strb r0, [r1] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldrb r0, [r2] - add r0, sp - adds r0, 0x8 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - mov r1, sp - adds r1, r0 - adds r1, 0x8 - ldr r2, [sp, 0x28] - ldrb r0, [r2] - strb r0, [r1] - strb r5, [r2] - movs r6, 0 - ldr r2, [sp, 0x28] -_0802CD5E: - mov r0, sp - adds r0, r6 - adds r0, 0x8 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CD5E - movs r6, 0 - ldr r3, _0802CE0C @ =gBattlePartyID - mov r10, r3 - ldr r5, _0802CDF4 @ =gActiveBank - mov r9, r5 - movs r0, 0x64 - mov r8, r0 - ldr r7, _0802CE10 @ =gPlayerParty - ldr r5, [sp, 0x24] - adds r5, 0x8 - ldr r4, [sp, 0x24] -_0802CD8C: - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0xD - adds r2, r4, 0 - bl SetMonData - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0x11 - adds r2, r5, 0 - bl SetMonData - adds r5, 0x1 - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802CD8C - ldr r1, _0802CE0C @ =gBattlePartyID - ldr r0, _0802CDF4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802CE10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - ldr r2, [sp, 0x28] - bl SetMonData - b _0802CE1C - .align 2, 0 -_0802CDEC: .4byte gMain -_0802CDF0: .4byte gMoveSelectionCursor -_0802CDF4: .4byte gActiveBank -_0802CDF8: .4byte gUnknown_03004344 -_0802CDFC: .4byte gUnknown_02023A64 -_0802CE00: .4byte gDisableStructs -_0802CE04: .4byte gBitTable -_0802CE08: .4byte gBattleMons -_0802CE0C: .4byte gBattlePartyID -_0802CE10: .4byte gPlayerParty -_0802CE14: - ldrb r0, [r5] - ldr r1, _0802CF20 @ =gUnknown_08400D49 - bl sub_802E12C -_0802CE1C: - ldr r1, _0802CF24 @ =gBattleBankFunc - ldr r2, _0802CF28 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CF2C @ =sub_802C68C - str r1, [r0] - ldr r3, _0802CF30 @ =gMoveSelectionCursor - ldrb r0, [r2] - adds r0, r3 - ldr r1, _0802CF34 @ =gUnknown_03004344 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldr r4, _0802CF38 @ =gUnknown_03004210 - ldr r1, _0802CF3C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CF40 @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - bl sub_802E220 - bl sub_802E2D4 -_0802CE78: - ldr r6, _0802CF44 @ =gMain - ldrh r1, [r6, 0x2E] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - beq _0802CEF0 - movs r0, 0x5 - bl PlaySE - ldr r0, _0802CF34 @ =gUnknown_03004344 - ldrb r0, [r0] - bl nullsub_7 - ldr r5, _0802CF30 @ =gMoveSelectionCursor - ldr r4, _0802CF28 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - ldr r1, _0802CF20 @ =gUnknown_08400D49 - bl sub_802E12C - ldr r1, _0802CF24 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802CF2C @ =sub_802C68C - str r1, [r0] - ldr r4, _0802CF38 @ =gUnknown_03004210 - ldr r1, _0802CF3C @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802CF40 @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - bl sub_802E220 - bl sub_802E2D4 -_0802CEF0: - ldrh r1, [r6, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802CF8C - ldr r3, _0802CF34 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0802CF8C - ldr r0, _0802CF30 @ =gMoveSelectionCursor - ldr r1, _0802CF28 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802CF48 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802CF4E - .align 2, 0 -_0802CF20: .4byte gUnknown_08400D49 -_0802CF24: .4byte gBattleBankFunc -_0802CF28: .4byte gActiveBank -_0802CF2C: .4byte sub_802C68C -_0802CF30: .4byte gMoveSelectionCursor -_0802CF34: .4byte gUnknown_03004344 -_0802CF38: .4byte gUnknown_03004210 -_0802CF3C: .4byte 0x00001016 -_0802CF40: .4byte gUnknown_08400D38 -_0802CF44: .4byte gMain -_0802CF48: - ldrb r0, [r3] - bl nullsub_7 -_0802CF4E: - ldr r4, _0802CF78 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802CF7C @ =gMoveSelectionCursor - ldr r0, _0802CF80 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802CF84 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802CF8C - .align 2, 0 -_0802CF78: .4byte gUnknown_03004344 -_0802CF7C: .4byte gMoveSelectionCursor -_0802CF80: .4byte gActiveBank -_0802CF84: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802CF8C: - ldr r0, _0802CFC8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802D020 - ldr r3, _0802CFCC @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0802D020 - ldr r1, _0802CFD0 @ =gUnknown_03004348 - movs r0, 0x1 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802D020 - ldr r0, _0802CFD4 @ =gMoveSelectionCursor - ldr r1, _0802CFD8 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802CFDC - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802CFE2 - .align 2, 0 -_0802CFC8: .4byte gMain -_0802CFCC: .4byte gUnknown_03004344 -_0802CFD0: .4byte gUnknown_03004348 -_0802CFD4: .4byte gMoveSelectionCursor -_0802CFD8: .4byte gActiveBank -_0802CFDC: - ldrb r0, [r3] - bl nullsub_7 -_0802CFE2: - ldr r4, _0802D00C @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D010 @ =gMoveSelectionCursor - ldr r0, _0802D014 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D018 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D020 - .align 2, 0 -_0802D00C: .4byte gUnknown_03004344 -_0802D010: .4byte gMoveSelectionCursor -_0802D014: .4byte gActiveBank -_0802D018: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D020: - ldr r0, _0802D050 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D0A4 - ldr r3, _0802D054 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0802D0A4 - ldr r0, _0802D058 @ =gMoveSelectionCursor - ldr r1, _0802D05C @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802D060 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802D066 - .align 2, 0 -_0802D050: .4byte gMain -_0802D054: .4byte gUnknown_03004344 -_0802D058: .4byte gMoveSelectionCursor -_0802D05C: .4byte gActiveBank -_0802D060: - ldrb r0, [r3] - bl nullsub_7 -_0802D066: - ldr r4, _0802D090 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D094 @ =gMoveSelectionCursor - ldr r0, _0802D098 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D09C - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D0A4 - .align 2, 0 -_0802D090: .4byte gUnknown_03004344 -_0802D094: .4byte gMoveSelectionCursor -_0802D098: .4byte gActiveBank -_0802D09C: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D0A4: - ldr r0, _0802D0E0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802D138 - ldr r3, _0802D0E4 @ =gUnknown_03004344 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _0802D138 - ldr r1, _0802D0E8 @ =gUnknown_03004348 - movs r0, 0x2 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802D138 - ldr r0, _0802D0EC @ =gMoveSelectionCursor - ldr r1, _0802D0F0 @ =gActiveBank - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802D0F4 - ldrb r0, [r1] - movs r1, 0x1D - bl sub_802E3B4 - b _0802D0FA - .align 2, 0 -_0802D0E0: .4byte gMain -_0802D0E4: .4byte gUnknown_03004344 -_0802D0E8: .4byte gUnknown_03004348 -_0802D0EC: .4byte gMoveSelectionCursor -_0802D0F0: .4byte gActiveBank -_0802D0F4: - ldrb r0, [r3] - bl nullsub_7 -_0802D0FA: - ldr r4, _0802D124 @ =gUnknown_03004344 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802D128 @ =gMoveSelectionCursor - ldr r0, _0802D12C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802D130 - adds r0, r1, 0 - movs r1, 0 - bl sub_802E3B4 - b _0802D138 - .align 2, 0 -_0802D124: .4byte gUnknown_03004344 -_0802D128: .4byte gMoveSelectionCursor -_0802D12C: .4byte gActiveBank -_0802D130: - ldrb r0, [r4] - movs r1, 0x1B - bl sub_802E3B4 -_0802D138: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802CA60 - - thumb_func_start sub_802D148 -sub_802D148: @ 802D148 - push {lr} - ldr r0, _0802D178 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0802D174 - movs r0, 0x5A - bl m4aSongNumStop - ldr r3, _0802D17C @ =gMain - ldr r0, _0802D180 @ =0x0000043d - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802D184 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - ldr r0, _0802D188 @ =c2_8011A1C - bl SetMainCallback2 -_0802D174: - pop {r0} - bx r0 - .align 2, 0 -_0802D178: .4byte gReceivedRemoteLinkPlayers -_0802D17C: .4byte gMain -_0802D180: .4byte 0x0000043d -_0802D184: .4byte gPreBattleCallback1 -_0802D188: .4byte c2_8011A1C - thumb_func_end sub_802D148 - - thumb_func_start sub_802D18C -sub_802D18C: @ 802D18C - push {lr} - ldr r0, _0802D1BC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802D1F2 - ldr r0, _0802D1C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802D1D0 - bl sub_800832C - ldr r1, _0802D1C4 @ =gBattleBankFunc - ldr r0, _0802D1C8 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D1CC @ =sub_802D148 - str r1, [r0] - b _0802D1F2 - .align 2, 0 -_0802D1BC: .4byte gPaletteFade -_0802D1C0: .4byte gBattleTypeFlags -_0802D1C4: .4byte gBattleBankFunc -_0802D1C8: .4byte gActiveBank -_0802D1CC: .4byte sub_802D148 -_0802D1D0: - movs r0, 0x5A - bl m4aSongNumStop - ldr r2, _0802D1F8 @ =gMain - ldr r0, _0802D1FC @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _0802D200 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0802D1F2: - pop {r0} - bx r0 - .align 2, 0 -_0802D1F8: .4byte gMain -_0802D1FC: .4byte 0x0000043d -_0802D200: .4byte gPreBattleCallback1 - thumb_func_end sub_802D18C - - thumb_func_start sub_802D204 -sub_802D204: @ 802D204 - push {lr} - ldr r2, _0802D22C @ =gSprites - ldr r1, _0802D230 @ =gObjectBankIDs - ldr r0, _0802D234 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D238 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D228 - bl PlayerBufferExecCompleted -_0802D228: - pop {r0} - bx r0 - .align 2, 0 -_0802D22C: .4byte gSprites -_0802D230: .4byte gObjectBankIDs -_0802D234: .4byte gActiveBank -_0802D238: .4byte SpriteCallbackDummy - thumb_func_end sub_802D204 - - thumb_func_start sub_802D23C -sub_802D23C: @ 802D23C - push {lr} - ldr r2, _0802D264 @ =gSprites - ldr r1, _0802D268 @ =gObjectBankIDs - ldr r0, _0802D26C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D270 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D260 - bl PlayerBufferExecCompleted -_0802D260: - pop {r0} - bx r0 - .align 2, 0 -_0802D264: .4byte gSprites -_0802D268: .4byte gObjectBankIDs -_0802D26C: .4byte gActiveBank -_0802D270: .4byte SpriteCallbackDummy - thumb_func_end sub_802D23C - - thumb_func_start sub_802D274 -sub_802D274: @ 802D274 - push {r4-r6,lr} - ldr r6, _0802D2CC @ =gSprites - ldr r5, _0802D2D0 @ =gObjectBankIDs - ldr r4, _0802D2D4 @ =gActiveBank - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, _0802D2D8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D2C6 - ldr r0, _0802D2DC @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - bl nullsub_10 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl FreeSpriteOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - bl PlayerBufferExecCompleted -_0802D2C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D2CC: .4byte gSprites -_0802D2D0: .4byte gObjectBankIDs -_0802D2D4: .4byte gActiveBank -_0802D2D8: .4byte SpriteCallbackDummy -_0802D2DC: .4byte gSaveBlock2 - thumb_func_end sub_802D274 - - thumb_func_start sub_802D2E0 -sub_802D2E0: @ 802D2E0 - push {lr} - ldr r3, _0802D314 @ =gActiveBank - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _0802D318 @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0802D310 - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strb r0, [r1, 0x9] - bl PlayerBufferExecCompleted -_0802D310: - pop {r0} - bx r0 - .align 2, 0 -_0802D314: .4byte gActiveBank -_0802D318: .4byte 0x02017810 - thumb_func_end sub_802D2E0 - - thumb_func_start sub_802D31C -sub_802D31C: @ 802D31C - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D340 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D374 - ldr r0, _0802D360 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D374 -_0802D340: - ldr r2, _0802D364 @ =gSprites - ldr r1, _0802D368 @ =gHealthboxIDs - ldr r0, _0802D36C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D370 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D3AA - b _0802D3A8 - .align 2, 0 -_0802D360: .4byte gBattleTypeFlags -_0802D364: .4byte gSprites -_0802D368: .4byte gHealthboxIDs -_0802D36C: .4byte gActiveBank -_0802D370: .4byte SpriteCallbackDummy -_0802D374: - ldr r2, _0802D45C @ =gSprites - ldr r5, _0802D460 @ =gHealthboxIDs - ldr r0, _0802D464 @ =gActiveBank - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _0802D468 @ =SpriteCallbackDummy - cmp r4, r0 - bne _0802D3AA - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0802D3AA -_0802D3A8: - movs r6, 0x1 -_0802D3AA: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _0802D3B6 - movs r6, 0 -_0802D3B6: - cmp r6, 0 - bne _0802D3BC - b _0802D4DA -_0802D3BC: - ldr r7, _0802D464 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r5, _0802D46C @ =0x02017810 - adds r4, r0, r5 - ldrb r1, [r4, 0x1] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D3D8 - b _0802D4DA -_0802D3D8: - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0802D4DA - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _0802D470 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _0802D474 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802D47C - ldr r0, _0802D478 @ =gMPlay_BGM - bl m4aMPlayContinue - b _0802D488 - .align 2, 0 -_0802D45C: .4byte gSprites -_0802D460: .4byte gHealthboxIDs -_0802D464: .4byte gActiveBank -_0802D468: .4byte SpriteCallbackDummy -_0802D46C: .4byte 0x02017810 -_0802D470: .4byte 0x000027f9 -_0802D474: .4byte gBattleTypeFlags -_0802D478: .4byte gMPlay_BGM -_0802D47C: - ldr r0, _0802D4E0 @ =gMPlay_BGM - ldr r1, _0802D4E4 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_0802D488: - ldr r7, _0802D4E8 @ =gBattlePartyID - ldr r4, _0802D4EC @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0802D4F0 @ =gPlayerParty - adds r0, r5 - bl sub_80324F8 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D4BE - ldrb r0, [r4] - movs r1, 0x2 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - bl sub_80324F8 -_0802D4BE: - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D4F4 @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _0802D4F8 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D4FC @ =sub_802D2E0 - str r1, [r0] -_0802D4DA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D4E0: .4byte gMPlay_BGM -_0802D4E4: .4byte 0x0000ffff -_0802D4E8: .4byte gBattlePartyID -_0802D4EC: .4byte gActiveBank -_0802D4F0: .4byte gPlayerParty -_0802D4F4: .4byte 0x02017810 -_0802D4F8: .4byte gBattleBankFunc -_0802D4FC: .4byte sub_802D2E0 - thumb_func_end sub_802D31C - - thumb_func_start sub_802D500 -sub_802D500: @ 802D500 - push {r4-r7,lr} - ldr r5, _0802D654 @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r4, _0802D658 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D530 - ldr r0, _0802D65C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D660 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D530: - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D55E - ldr r0, _0802D65C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D660 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D55E: - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D64C - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0802D64C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802D5EE - ldr r0, _0802D664 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802D5EE - ldr r1, _0802D668 @ =gUnknown_0300434C - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D66C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _0802D670 @ =gHealthboxIDs - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802D65C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D660 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - eors r0, r6 - bl sub_804777C - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC -_0802D5EE: - ldr r1, _0802D668 @ =gUnknown_0300434C - ldr r4, _0802D654 @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D66C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _0802D670 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _0802D65C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D660 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldr r2, _0802D674 @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0802D678 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D67C @ =sub_802D31C - str r1, [r0] -_0802D64C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D654: .4byte gActiveBank -_0802D658: .4byte 0x02017810 -_0802D65C: .4byte gBattlePartyID -_0802D660: .4byte gPlayerParty -_0802D664: .4byte gBattleTypeFlags -_0802D668: .4byte gUnknown_0300434C -_0802D66C: .4byte gSprites -_0802D670: .4byte gHealthboxIDs -_0802D674: .4byte 0x02017840 -_0802D678: .4byte gBattleBankFunc -_0802D67C: .4byte sub_802D31C - thumb_func_end sub_802D500 - - thumb_func_start sub_802D680 -sub_802D680: @ 802D680 - push {r4-r6,lr} - ldr r2, _0802D710 @ =gSprites - ldr r0, _0802D714 @ =gHealthboxIDs - ldr r6, _0802D718 @ =gActiveBank - ldrb r3, [r6] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802D71C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D708 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r5, _0802D720 @ =0x02017810 - adds r2, r0, r5 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802D708 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0802D724 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldrb r2, [r6] - lsls r0, r2, 2 - adds r1, r5, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802D6FC - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl move_anim_start_t4 -_0802D6FC: - ldr r0, _0802D728 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0802D72C @ =sub_802D730 - str r0, [r1] -_0802D708: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D710: .4byte gSprites -_0802D714: .4byte gHealthboxIDs -_0802D718: .4byte gActiveBank -_0802D71C: .4byte SpriteCallbackDummy -_0802D720: .4byte 0x02017810 -_0802D724: .4byte 0x000027f9 -_0802D728: .4byte gBattleBankFunc -_0802D72C: .4byte sub_802D730 - thumb_func_end sub_802D680 - - thumb_func_start sub_802D730 -sub_802D730: @ 802D730 - push {r4,lr} - ldr r4, _0802D780 @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802D784 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802D77A - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802D77A - ldr r0, _0802D788 @ =gMPlay_BGM - ldr r1, _0802D78C @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r2, _0802D790 @ =gBattlePartyID - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802D794 @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl PlayerBufferExecCompleted -_0802D77A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D780: .4byte gActiveBank -_0802D784: .4byte 0x02017810 -_0802D788: .4byte gMPlay_BGM -_0802D78C: .4byte 0x0000ffff -_0802D790: .4byte gBattlePartyID -_0802D794: .4byte gPlayerParty - thumb_func_end sub_802D730 - - thumb_func_start sub_802D798 -sub_802D798: @ 802D798 - push {r4-r6,lr} - ldr r5, _0802D844 @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r6, _0802D848 @ =0x02017810 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0802D7C6 - ldr r0, _0802D84C @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802D850 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_0802D7C6: - ldr r4, _0802D854 @ =gSprites - ldr r0, _0802D858 @ =gUnknown_0300434C - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _0802D85C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802D83C - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0802D83C - adds r0, r3, r4 - bl DestroySprite - ldr r4, _0802D860 @ =gHealthboxIDs - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802D84C @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802D850 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - bl sub_804777C - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r0, [r5] - bl sub_8031F88 - ldr r1, _0802D864 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802D868 @ =sub_802D680 - str r1, [r0] -_0802D83C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D844: .4byte gActiveBank -_0802D848: .4byte 0x02017810 -_0802D84C: .4byte gBattlePartyID -_0802D850: .4byte gPlayerParty -_0802D854: .4byte gSprites -_0802D858: .4byte gUnknown_0300434C -_0802D85C: .4byte SpriteCallbackDummy -_0802D860: .4byte gHealthboxIDs -_0802D864: .4byte gBattleBankFunc -_0802D868: .4byte sub_802D680 - thumb_func_end sub_802D798 - - thumb_func_start c3_0802FDF4 -c3_0802FDF4: @ 802D86C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802D88E - ldr r0, _0802D894 @ =gMPlay_BGM - ldr r1, _0802D898 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - adds r0, r4, 0 - bl DestroyTask -_0802D88E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D894: .4byte gMPlay_BGM -_0802D898: .4byte 0x0000ffff - thumb_func_end c3_0802FDF4 - - thumb_func_start bx_t1_healthbar_update -bx_t1_healthbar_update: @ 802D89C - push {r4-r6,lr} - ldr r5, _0802D8DC @ =gActiveBank - ldrb r0, [r5] - ldr r6, _0802D8E0 @ =gHealthboxIDs - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0802D8E4 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _0802D8FE - .align 2, 0 -_0802D8DC: .4byte gActiveBank -_0802D8E0: .4byte gHealthboxIDs -_0802D8E4: - ldr r2, _0802D904 @ =gBattlePartyID - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802D908 @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl PlayerBufferExecCompleted -_0802D8FE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D904: .4byte gBattlePartyID -_0802D908: .4byte gPlayerParty - thumb_func_end bx_t1_healthbar_update - - thumb_func_start sub_802D90C -sub_802D90C: @ 802D90C - push {lr} - ldr r0, _0802D920 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _0802D91A - bl PlayerBufferExecCompleted -_0802D91A: - pop {r0} - bx r0 - .align 2, 0 -_0802D920: .4byte gUnknown_03004210 - thumb_func_end sub_802D90C - - thumb_func_start sub_802D924 -sub_802D924: @ 802D924 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _0802DA24 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802D96A - ldr r1, _0802DA28 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _0802D96A - b _0802DA80 -_0802D96A: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _0802DA2C @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _0802DA30 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _0802DA34 @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _0802DA58 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _0802DA38 @ =gActiveBank - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DA40 - ldr r2, _0802DA28 @ =gBattlePartyID - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _0802DA1E - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _0802DA40 -_0802DA1E: - ldr r0, _0802DA3C @ =sub_802DCB0 - b _0802DA82 - .align 2, 0 -_0802DA24: .4byte gTasks -_0802DA28: .4byte gBattlePartyID -_0802DA2C: .4byte gPlayerParty -_0802DA30: .4byte gExperienceTables -_0802DA34: .4byte gBaseStats -_0802DA38: .4byte gActiveBank -_0802DA3C: .4byte sub_802DCB0 -_0802DA40: - ldr r0, _0802DA50 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DA54 @ =sub_802DDC4 - b _0802DA84 - .align 2, 0 -_0802DA50: .4byte gTasks -_0802DA54: .4byte sub_802DDC4 -_0802DA58: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _0802DA78 @ =gBattleBankFunc - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _0802DA7C @ =sub_802D90C - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _0802DA86 - .align 2, 0 -_0802DA78: .4byte gBattleBankFunc -_0802DA7C: .4byte sub_802D90C -_0802DA80: - ldr r0, _0802DA98 @ =sub_802DA9C -_0802DA82: - mov r1, r8 -_0802DA84: - str r0, [r1] -_0802DA86: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DA98: .4byte sub_802DA9C - thumb_func_end sub_802D924 - - thumb_func_start sub_802DA9C -sub_802DA9C: @ 802DA9C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802DB54 @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _0802DB58 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _0802DB5C @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _0802DB60 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _0802DB64 @ =gHealthboxIDs - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl sub_8043D84 - movs r0, 0x21 - bl PlaySE - ldr r0, _0802DB68 @ =sub_802DB6C - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DB54: .4byte gTasks -_0802DB58: .4byte gPlayerParty -_0802DB5C: .4byte gExperienceTables -_0802DB60: .4byte gBaseStats -_0802DB64: .4byte gHealthboxIDs -_0802DB68: .4byte sub_802DB6C - thumb_func_end sub_802DA9C - - thumb_func_start sub_802DB6C -sub_802DB6C: @ 802DB6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _0802DB98 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _0802DB9C - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _0802DC98 - .align 2, 0 -_0802DB98: .4byte gTasks -_0802DB9C: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _0802DC64 @ =gHealthboxIDs - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl sub_8043DFC - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0802DC98 - movs r0, 0x21 - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _0802DC68 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _0802DC6C @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _0802DC70 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _0802DC7C - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _0802DC74 @ =gActiveBank - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl dp01_build_cmdbuf_x21_a_bb - strb r5, [r4] - ldr r0, _0802DC78 @ =sub_802DCB0 - str r0, [r6] - b _0802DC98 - .align 2, 0 -_0802DC64: .4byte gHealthboxIDs -_0802DC68: .4byte gPlayerParty -_0802DC6C: .4byte gExperienceTables -_0802DC70: .4byte gBaseStats -_0802DC74: .4byte gActiveBank -_0802DC78: .4byte sub_802DCB0 -_0802DC7C: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _0802DCA8 @ =gBattleBankFunc - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _0802DCAC @ =sub_802D90C - str r1, [r0] - mov r0, r8 - bl DestroyTask -_0802DC98: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DCA8: .4byte gBattleBankFunc -_0802DCAC: .4byte sub_802D90C - thumb_func_end sub_802DB6C - - thumb_func_start sub_802DCB0 -sub_802DCB0: @ 802DCB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0802DD04 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DCE4 - ldr r1, _0802DD08 @ =gBattlePartyID - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _0802DCE4 - adds r4, r2, 0 -_0802DCE4: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl move_anim_start_t4 - ldr r0, _0802DD04 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DD0C @ =sub_802DD10 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DD04: .4byte gTasks -_0802DD08: .4byte gBattlePartyID -_0802DD0C: .4byte sub_802DD10 - thumb_func_end sub_802DCB0 - - thumb_func_start sub_802DD10 -sub_802DD10: @ 802DD10 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0802DD78 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - ldr r1, _0802DD7C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802DDAE - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0802DD80 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802DD8C - ldr r1, _0802DD84 @ =gBattlePartyID - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0802DD8C - ldr r0, _0802DD88 @ =gHealthboxIDs - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl sub_8045A5C - b _0802DDA0 - .align 2, 0 -_0802DD78: .4byte gTasks -_0802DD7C: .4byte 0x02017810 -_0802DD80: .4byte gPlayerParty -_0802DD84: .4byte gBattlePartyID -_0802DD88: .4byte gHealthboxIDs -_0802DD8C: - ldr r0, _0802DDB4 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _0802DDB8 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_0802DDA0: - ldr r0, _0802DDBC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802DDC0 @ =sub_802DDC4 - str r0, [r1] -_0802DDAE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DDB4: .4byte gHealthboxIDs -_0802DDB8: .4byte gPlayerParty -_0802DDBC: .4byte gTasks -_0802DDC0: .4byte sub_802DDC4 - thumb_func_end sub_802DD10 - - thumb_func_start sub_802DDC4 -sub_802DDC4: @ 802DDC4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0802DE00 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802DE04 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - ldrb r0, [r4, 0xC] - ldr r1, _0802DE08 @ =gBattleBankFunc - lsls r0, 2 - adds r0, r1 - ldr r1, _0802DE0C @ =sub_802D90C - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802DE00: .4byte gTasks -_0802DE04: .4byte gPlayerParty -_0802DE08: .4byte gBattleBankFunc -_0802DE0C: .4byte sub_802D90C - thumb_func_end sub_802DDC4 - - thumb_func_start sub_802DE10 -sub_802DE10: @ 802DE10 - push {r4-r6,lr} - ldr r6, _0802DE94 @ =gSprites - ldr r5, _0802DE98 @ =gObjectBankIDs - ldr r4, _0802DE9C @ =gActiveBank - ldrb r2, [r4] - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r3, 0x26 - ldrsh r0, [r0, r3] - adds r1, r0 - cmp r1, 0xA0 - ble _0802DE8C - ldr r1, _0802DEA0 @ =gBattlePartyID - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802DEA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl nullsub_9 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _0802DEA8 @ =gHealthboxIDs - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl PlayerBufferExecCompleted -_0802DE8C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DE94: .4byte gSprites -_0802DE98: .4byte gObjectBankIDs -_0802DE9C: .4byte gActiveBank -_0802DEA0: .4byte gBattlePartyID -_0802DEA4: .4byte gPlayerParty -_0802DEA8: .4byte gHealthboxIDs - thumb_func_end sub_802DE10 - - thumb_func_start sub_802DEAC -sub_802DEAC: @ 802DEAC - push {r4-r6,lr} - ldr r6, _0802DF04 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _0802DF08 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802DEFC - ldr r5, _0802DF0C @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0802DF10 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _0802DF14 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl PlayerBufferExecCompleted -_0802DEFC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802DF04: .4byte gActiveBank -_0802DF08: .4byte 0x02017810 -_0802DF0C: .4byte gObjectBankIDs -_0802DF10: .4byte gSprites -_0802DF14: .4byte gHealthboxIDs - thumb_func_end sub_802DEAC - - thumb_func_start sub_802DF18 -sub_802DF18: @ 802DF18 - push {lr} - ldr r0, _0802DF2C @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _0802DF26 - bl PlayerBufferExecCompleted -_0802DF26: - pop {r0} - bx r0 - .align 2, 0 -_0802DF2C: .4byte gUnknown_03004210 - thumb_func_end sub_802DF18 - - thumb_func_start sub_802DF30 -sub_802DF30: @ 802DF30 - push {r4,lr} - ldr r0, _0802DF70 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DF6A - ldr r1, _0802DF74 @ =gBattleBankFunc - ldr r2, _0802DF78 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802DF7C @ =sub_802DF88 - str r1, [r0] - ldr r3, _0802DF80 @ =gTasks - ldr r1, _0802DF84 @ =gUnknown_0300434C - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldrb r4, [r1, 0x8] - bl DestroyTask - adds r0, r4, 0 - bl sub_8094E20 -_0802DF6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802DF70: .4byte gPaletteFade -_0802DF74: .4byte gBattleBankFunc -_0802DF78: .4byte gActiveBank -_0802DF7C: .4byte sub_802DF88 -_0802DF80: .4byte gTasks -_0802DF84: .4byte gUnknown_0300434C - thumb_func_end sub_802DF30 - - thumb_func_start sub_802DF88 -sub_802DF88: @ 802DF88 - push {lr} - ldr r0, _0802DFB8 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802DFBC @ =sub_800F808 - cmp r1, r0 - bne _0802DFF8 - ldr r0, _0802DFC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DFF8 - ldr r0, _0802DFC4 @ =gUnknown_0202E8F4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802DFD0 - ldr r0, _0802DFC8 @ =gUnknown_0202E8F5 - ldrb r1, [r0] - ldr r2, _0802DFCC @ =gUnknown_02038470 - movs r0, 0x1 - bl dp01_build_cmdbuf_x22_a_three_bytes - b _0802DFDA - .align 2, 0 -_0802DFB8: .4byte gMain -_0802DFBC: .4byte sub_800F808 -_0802DFC0: .4byte gPaletteFade -_0802DFC4: .4byte gUnknown_0202E8F4 -_0802DFC8: .4byte gUnknown_0202E8F5 -_0802DFCC: .4byte gUnknown_02038470 -_0802DFD0: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes -_0802DFDA: - ldr r1, _0802DFFC @ =gBattleBufferA - ldr r0, _0802E000 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _0802DFF4 - bl b_link_standby_message -_0802DFF4: - bl PlayerBufferExecCompleted -_0802DFF8: - pop {r0} - bx r0 - .align 2, 0 -_0802DFFC: .4byte gBattleBufferA -_0802E000: .4byte gActiveBank - thumb_func_end sub_802DF88 - - thumb_func_start sub_802E004 -sub_802E004: @ 802E004 - push {lr} - ldr r0, _0802E02C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802E028 - ldr r1, _0802E030 @ =gBattleBankFunc - ldr r0, _0802E034 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E038 @ =sub_802E03C - str r1, [r0] - bl nullsub_14 - bl sub_80A6DCC -_0802E028: - pop {r0} - bx r0 - .align 2, 0 -_0802E02C: .4byte gPaletteFade -_0802E030: .4byte gBattleBankFunc -_0802E034: .4byte gActiveBank -_0802E038: .4byte sub_802E03C - thumb_func_end sub_802E004 - - thumb_func_start sub_802E03C -sub_802E03C: @ 802E03C - push {lr} - ldr r0, _0802E068 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802E06C @ =sub_800F808 - cmp r1, r0 - bne _0802E062 - ldr r0, _0802E070 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802E062 - ldr r0, _0802E074 @ =gScriptItemId - ldrh r1, [r0] - movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 - bl PlayerBufferExecCompleted -_0802E062: - pop {r0} - bx r0 - .align 2, 0 -_0802E068: .4byte gMain -_0802E06C: .4byte sub_800F808 -_0802E070: .4byte gPaletteFade -_0802E074: .4byte gScriptItemId - thumb_func_end sub_802E03C - - thumb_func_start bx_wait_t1 -bx_wait_t1: @ 802E078 - push {lr} - ldr r0, _0802E0A4 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - beq _0802E09A - ldr r0, _0802E0A8 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E0AC @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802E09E -_0802E09A: - bl PlayerBufferExecCompleted -_0802E09E: - pop {r0} - bx r0 - .align 2, 0 -_0802E0A4: .4byte gDoingBattleAnim -_0802E0A8: .4byte gActiveBank -_0802E0AC: .4byte 0x02017810 - thumb_func_end bx_wait_t1 - - thumb_func_start bx_blink_t1 -bx_blink_t1: @ 802E0B0 - push {r4,lr} - ldr r1, _0802E0EC @ =gObjectBankIDs - ldr r0, _0802E0F0 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _0802E0F4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _0802E0FC - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802E0F8 @ =gDoingBattleAnim - strb r3, [r0] - bl PlayerBufferExecCompleted - b _0802E126 - .align 2, 0 -_0802E0EC: .4byte gObjectBankIDs -_0802E0F0: .4byte gActiveBank -_0802E0F4: .4byte gSprites -_0802E0F8: .4byte gDoingBattleAnim -_0802E0FC: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0802E120 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0802E120: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_0802E126: - pop {r4} - pop {r0} - bx r0 - thumb_func_end bx_blink_t1 - - thumb_func_start sub_802E12C -sub_802E12C: @ 802E12C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r0, _0802E180 @ =gActiveBank - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _0802E184 @ =gUnknown_02023A64 - adds r4, r0 - ldr r5, _0802E188 @ =gDisplayedStringBattle - adds r0, r5, 0 - bl StringCopy - lsls r0, r6, 1 - adds r4, r0 - ldrh r1, [r4] - movs r0, 0xD - muls r1, r0 - ldr r0, _0802E18C @ =gMoveNames - adds r1, r0 - adds r0, r5, 0 - bl StringAppend - ldr r4, _0802E190 @ =gUnknown_03004210 - adds r1, r5, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 18 - movs r2, 0xC0 - lsls r2, 18 - adds r0, r2 - lsrs r2, r0, 16 - movs r0, 0x1 - ands r0, r6 - movs r3, 0x1 - cmp r0, 0 - beq _0802E176 - movs r3, 0xB -_0802E176: - cmp r6, 0x1 - bgt _0802E194 - movs r0, 0x37 - b _0802E196 - .align 2, 0 -_0802E180: .4byte gActiveBank -_0802E184: .4byte gUnknown_02023A64 -_0802E188: .4byte gDisplayedStringBattle -_0802E18C: .4byte gMoveNames -_0802E190: .4byte gUnknown_03004210 -_0802E194: - movs r0, 0x39 -_0802E196: - str r0, [sp] - adds r0, r4, 0 - bl InitWindow - ldr r0, _0802E1AC @ =gUnknown_03004210 - bl sub_8002F44 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E1AC: .4byte gUnknown_03004210 - thumb_func_end sub_802E12C - - thumb_func_start sub_802E1B0 -sub_802E1B0: @ 802E1B0 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, _0802E208 @ =gActiveBank - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _0802E20C @ =gUnknown_02023A64 - adds r4, r0 - ldr r5, _0802E210 @ =gUnknown_03004348 - movs r0, 0 - strb r0, [r5] - ldr r0, _0802E214 @ =gUnknown_03004210 - ldr r1, _0802E218 @ =0x00001016 - movs r2, 0x14 - str r2, [sp] - movs r2, 0x3A - str r2, [sp, 0x4] - movs r2, 0x1 - movs r3, 0x37 - bl FillWindowRect - movs r6, 0 -_0802E1DA: - lsls r0, r6, 24 - lsrs r0, 24 - bl nullsub_7 - adds r0, r6, 0 - ldr r1, _0802E21C @ =gUnknown_08400D49 - bl sub_802E12C - ldrh r0, [r4] - cmp r0, 0 - beq _0802E1F6 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_0802E1F6: - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802E1DA - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E208: .4byte gActiveBank -_0802E20C: .4byte gUnknown_02023A64 -_0802E210: .4byte gUnknown_03004348 -_0802E214: .4byte gUnknown_03004210 -_0802E218: .4byte 0x00001016 -_0802E21C: .4byte gUnknown_08400D49 - thumb_func_end sub_802E1B0 - - thumb_func_start sub_802E220 -sub_802E220: @ 802E220 - push {r4-r6,lr} - sub sp, 0x4 - ldr r4, _0802E2B8 @ =gBattleBufferA - ldr r6, _0802E2BC @ =gActiveBank - ldrb r0, [r6] - lsls r1, r0, 9 - adds r0, r4, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0802E2B0 - adds r4, 0x4 - adds r4, r1, r4 - ldr r2, _0802E2C0 @ =gDisplayedStringBattle - ldr r1, _0802E2C4 @ =gUnknown_08400D49 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - movs r1, 0xFC - strb r1, [r2] - movs r0, 0x11 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 - strb r1, [r2] - movs r0, 0x14 - strb r0, [r2, 0x1] - movs r0, 0x6 - strb r0, [r2, 0x2] - adds r2, 0x3 - ldr r5, _0802E2C8 @ =gMoveSelectionCursor - ldrb r1, [r6] - adds r1, r5 - adds r0, r4, 0 - adds r0, 0x8 - ldrb r1, [r1] - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - movs r0, 0xBA - strb r0, [r2] - adds r2, 0x1 - ldrb r0, [r6] - adds r0, r5 - adds r4, 0xC - ldrb r0, [r0] - adds r4, r0 - ldrb r1, [r4] - adds r0, r2, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r4, _0802E2CC @ =gUnknown_03004210 - ldr r1, _0802E2C0 @ =gDisplayedStringBattle - ldr r2, _0802E2D0 @ =0x000002a2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x19 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 -_0802E2B0: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E2B8: .4byte gBattleBufferA -_0802E2BC: .4byte gActiveBank -_0802E2C0: .4byte gDisplayedStringBattle -_0802E2C4: .4byte gUnknown_08400D49 -_0802E2C8: .4byte gMoveSelectionCursor -_0802E2CC: .4byte gUnknown_03004210 -_0802E2D0: .4byte 0x000002a2 - thumb_func_end sub_802E220 - - thumb_func_start sub_802E2D4 -sub_802E2D4: @ 802E2D4 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _0802E314 @ =gBattleBufferA - ldr r5, _0802E318 @ =gActiveBank - ldrb r0, [r5] - lsls r1, r0, 9 - adds r0, r4, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802E328 - ldr r4, _0802E31C @ =gUnknown_03004210 - ldr r1, _0802E320 @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x37 - bl FillWindowRect - ldr r1, _0802E324 @ =gUnknown_08400D52 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x13 - bl InitWindow - b _0802E388 - .align 2, 0 -_0802E314: .4byte gBattleBufferA -_0802E318: .4byte gActiveBank -_0802E31C: .4byte gUnknown_03004210 -_0802E320: .4byte 0x00001016 -_0802E324: .4byte gUnknown_08400D52 -_0802E328: - adds r4, 0x4 - adds r4, r1, r4 - ldr r3, _0802E398 @ =gDisplayedStringBattle - ldr r1, _0802E39C @ =gUnknown_08400D49 - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 - ldr r2, _0802E3A0 @ =gBattleMoves - ldr r1, _0802E3A4 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _0802E3A8 @ =gTypeNames - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r4, _0802E3AC @ =gUnknown_03004210 - ldr r1, _0802E3B0 @ =0x00001016 - movs r0, 0x1C - str r0, [sp] - movs r0, 0x3A - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x17 - movs r3, 0x39 - bl FillWindowRect - ldr r1, _0802E398 @ =gDisplayedStringBattle - movs r2, 0xB0 - lsls r2, 2 - movs r0, 0x39 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow -_0802E388: - ldr r0, _0802E3AC @ =gUnknown_03004210 - bl sub_8002F44 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802E398: .4byte gDisplayedStringBattle -_0802E39C: .4byte gUnknown_08400D49 -_0802E3A0: .4byte gBattleMoves -_0802E3A4: .4byte gMoveSelectionCursor -_0802E3A8: .4byte gTypeNames -_0802E3AC: .4byte gUnknown_03004210 -_0802E3B0: .4byte 0x00001016 - thumb_func_end sub_802E2D4 - - thumb_func_start sub_802E3B4 -sub_802E3B4: @ 802E3B4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x48 - bl sub_814A958 - ldr r1, _0802E3DC @ =gUnknown_081FAE89 - lsls r4, 1 - adds r0, r4, r1 - ldrb r0, [r0] - adds r1, 0x1 - adds r4, r1 - ldrb r1, [r4] - bl sub_814A880 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E3DC: .4byte gUnknown_081FAE89 - thumb_func_end sub_802E3B4 - - thumb_func_start nullsub_7 -nullsub_7: @ 802E3E0 - bx lr - thumb_func_end nullsub_7 - - thumb_func_start sub_802E3E4 -sub_802E3E4: @ 802E3E4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2A - bl sub_814A958 - ldr r1, _0802E40C @ =gUnknown_081FAE91 - lsls r4, 1 - adds r0, r4, r1 - ldrb r0, [r0] - adds r1, 0x1 - adds r4, r1 - ldrb r1, [r4] - bl sub_814A880 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E40C: .4byte gUnknown_081FAE91 - thumb_func_end sub_802E3E4 - - thumb_func_start nullsub_8 -nullsub_8: @ 802E410 - bx lr - thumb_func_end nullsub_8 - - thumb_func_start sub_802E414 -sub_802E414: @ 802E414 - push {lr} - ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0802E420: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_802E414 - - thumb_func_start sub_802E424 -sub_802E424: @ 802E424 - push {lr} - ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0802E430: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_802E424 - - thumb_func_start sub_802E434 -sub_802E434: @ 802E434 - push {lr} - ldr r0, _0802E458 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E45C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0802E452 - bl PlayerBufferExecCompleted -_0802E452: - pop {r0} - bx r0 - .align 2, 0 -_0802E458: .4byte gActiveBank -_0802E45C: .4byte 0x02017810 - thumb_func_end sub_802E434 - - thumb_func_start sub_802E460 -sub_802E460: @ 802E460 - push {lr} - ldr r0, _0802E484 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802E488 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0802E47E - bl PlayerBufferExecCompleted -_0802E47E: - pop {r0} - bx r0 - .align 2, 0 -_0802E484: .4byte gActiveBank -_0802E488: .4byte 0x02017810 - thumb_func_end sub_802E460 - - thumb_func_start b_link_standby_message -b_link_standby_message: @ 802E48C - push {lr} - sub sp, 0x4 - ldr r0, _0802E4BC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E4B6 - ldr r0, _0802E4C0 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0802E4C4 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0802E4C8 @ =gUnknown_03004210 - ldr r1, _0802E4CC @ =gUnknown_08400CE0 - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 -_0802E4B6: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0802E4BC: .4byte gBattleTypeFlags -_0802E4C0: .4byte gUnknown_030042A4 -_0802E4C4: .4byte gUnknown_030042A0 -_0802E4C8: .4byte gUnknown_03004210 -_0802E4CC: .4byte gUnknown_08400CE0 - thumb_func_end b_link_standby_message - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index a50b089db..8dbb9b1c2 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -1310,7 +1310,7 @@ sub_812B8B8: @ 812B8B8 ldrb r0, [r4, 0x8] ldr r5, _0812B970 @ =gActiveBank ldrb r1, [r5] - bl sub_8031AF4 + bl LoadPlayerTrainerBankSprite ldrb r6, [r4, 0x8] ldrb r0, [r5] bl GetBankIdentity diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 15cb95854..3f019e1ea 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_811AAE8 + bl IsBattleTransitionDone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/battle_transition.s b/asm/battle_transition.s deleted file mode 100644 index a4b4d1666..000000000 --- a/asm/battle_transition.s +++ /dev/null @@ -1,6254 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_811AABC -sub_811AABC: @ 811AABC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AAD0 @ =gMain - ldr r1, _0811AAD4 @ =sub_8054398 - str r1, [r2, 0x4] - bl sub_811AB20 - pop {r0} - bx r0 - .align 2, 0 -_0811AAD0: .4byte gMain -_0811AAD4: .4byte sub_8054398 - thumb_func_end sub_811AABC - - thumb_func_start sub_811AAD8 -sub_811AAD8: @ 811AAD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_811AB20 - pop {r0} - bx r0 - thumb_func_end sub_811AAD8 - - thumb_func_start sub_811AAE8 -sub_811AAE8: @ 811AAE8 - push {lr} - ldr r0, _0811AB0C @ =sub_811AB50 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0811AB10 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0811AB14 - movs r0, 0 - b _0811AB1C - .align 2, 0 -_0811AB0C: .4byte sub_811AB50 -_0811AB10: .4byte gTasks -_0811AB14: - adds r0, r2, 0 - bl DestroyTask - movs r0, 0x1 -_0811AB1C: - pop {r1} - bx r1 - thumb_func_end sub_811AAE8 - - thumb_func_start sub_811AB20 -sub_811AB20: @ 811AB20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0811AB48 @ =sub_811AB50 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811AB4C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811AB48: .4byte sub_811AB50 -_0811AB4C: .4byte gTasks - thumb_func_end sub_811AB20 - - thumb_func_start sub_811AB50 -sub_811AB50: @ 811AB50 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AB80 @ =gUnknown_083FD794 - ldr r2, _0811AB84 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AB62: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AB62 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AB80: .4byte gUnknown_083FD794 -_0811AB84: .4byte gTasks - thumb_func_end sub_811AB50 - - thumb_func_start sub_811AB88 -sub_811AB88: @ 811AB88 - push {r4,lr} - adds r4, r0, 0 - bl sub_807DE10 - ldr r0, _0811ABB4 @ =gPlttBufferFaded - ldr r1, _0811ABB8 @ =gPlttBufferUnfaded - ldr r2, _0811ABBC @ =0x04000100 - bl CpuSet - ldr r1, _0811ABC0 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0811ABC4 - movs r0, 0x2 - strh r0, [r4, 0x8] - movs r0, 0x1 - b _0811ABD2 - .align 2, 0 -_0811ABB4: .4byte gPlttBufferFaded -_0811ABB8: .4byte gPlttBufferUnfaded -_0811ABBC: .4byte 0x04000100 -_0811ABC0: .4byte gUnknown_083FD70C -_0811ABC4: - movs r1, 0x4 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 -_0811ABD2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811AB88 - - thumb_func_start sub_811ABD8 -sub_811ABD8: @ 811ABD8 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811ABF8 @ =gUnknown_083FD70C - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811ABFC - movs r0, 0 - b _0811AC04 - .align 2, 0 -_0811ABF8: .4byte gUnknown_083FD70C -_0811ABFC: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 -_0811AC04: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811ABD8 - - thumb_func_start sub_811AC0C -sub_811AC0C: @ 811AC0C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811AC30 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC30: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC0C - - thumb_func_start sub_811AC34 -sub_811AC34: @ 811AC34 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _0811AC60 @ =gBattleTransitionFuncs - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0811AC58 - movs r0, 0x1 - strh r0, [r4, 0x26] -_0811AC58: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AC60: .4byte gBattleTransitionFuncs - thumb_func_end sub_811AC34 - - thumb_func_start sub_811AC64 -sub_811AC64: @ 811AC64 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0811AC98 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0811AC9C - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_811D4C8 - b _0811ACAC - .align 2, 0 -_0811AC98: .4byte gTasks -_0811AC9C: - bl sub_811D52C - lsls r0, 24 - cmp r0, 0 - beq _0811ACAC - adds r0, r4, 0 - bl DestroyTask -_0811ACAC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811AC64 - - thumb_func_start sub_811ACB4 -sub_811ACB4: @ 811ACB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ACE4 @ =gUnknown_083FD7A4 - ldr r2, _0811ACE8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ACC6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ACC6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ACE4: .4byte gUnknown_083FD7A4 -_0811ACE8: .4byte gTasks - thumb_func_end sub_811ACB4 - - thumb_func_start sub_811ACEC -sub_811ACEC: @ 811ACEC - ldr r2, _0811AD18 @ =REG_MOSAIC - movs r1, 0 - strh r1, [r2] - subs r2, 0x42 - ldrh r1, [r2] - movs r3, 0x40 - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - adds r2, 0x2 - ldrh r1, [r2] - orrs r1, r3 - strh r1, [r2] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - movs r0, 0x1 - bx lr - .align 2, 0 -_0811AD18: .4byte REG_MOSAIC - thumb_func_end sub_811ACEC - - thumb_func_start sub_811AD1C -sub_811AD1C: @ 811AD1C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r2, [r4, r1] - cmp r2, 0 - beq _0811AD32 - subs r0, 0x1 - strh r0, [r4, 0xA] - b _0811AD70 -_0811AD32: - movs r0, 0x4 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0811AD54 - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811AD54: - ldr r2, _0811AD7C @ =REG_MOSAIC - ldrh r0, [r4, 0xC] - movs r1, 0xF - ands r1, r0 - lsls r0, r1, 4 - adds r0, r1 - strh r0, [r2] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xE - ble _0811AD70 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811AD70: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811AD7C: .4byte REG_MOSAIC - thumb_func_end sub_811AD1C - - thumb_func_start sub_811AD80 -sub_811AD80: @ 811AD80 - push {lr} - ldr r0, _0811ADA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AD9C - ldr r0, _0811ADA8 @ =sub_811ACB4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AD9C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811ADA4: .4byte gPaletteFade -_0811ADA8: .4byte sub_811ACB4 - thumb_func_end sub_811AD80 - - thumb_func_start sub_811ADAC -sub_811ADAC: @ 811ADAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811ADDC @ =gUnknown_083FD7B0 - ldr r2, _0811ADE0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811ADBE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811ADBE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811ADDC: .4byte gUnknown_083FD7B0 -_0811ADE0: .4byte gTasks - thumb_func_end sub_811ADAC - - thumb_func_start sub_811ADE4 -sub_811ADE4: @ 811ADE4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0811AE54 @ =gUnknown_03005560 - ldr r1, _0811AE58 @ =0x0200c000 - movs r2, 0x14 - ldrsh r1, [r1, r2] - str r4, [sp] - movs r2, 0xA0 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AE5C @ =sub_811AEE0 - bl SetVBlankCallback - ldr r0, _0811AE60 @ =sub_811AF18 - bl SetHBlankCallback - ldr r3, _0811AE64 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AE68 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AE6C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AE54: .4byte gUnknown_03005560 -_0811AE58: .4byte 0x0200c000 -_0811AE5C: .4byte sub_811AEE0 -_0811AE60: .4byte sub_811AF18 -_0811AE64: .4byte 0x04000208 -_0811AE68: .4byte 0x04000200 -_0811AE6C: .4byte REG_DISPSTAT - thumb_func_end sub_811ADE4 - - thumb_func_start sub_811AE70 -sub_811AE70: @ 811AE70 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _0811AED0 @ =0x0200c000 - ldrb r1, [r4] - movs r1, 0 - strb r1, [r4] - ldrh r1, [r0, 0xA] - adds r1, 0x4 - strh r1, [r0, 0xA] - ldrh r1, [r0, 0xC] - adds r1, 0x8 - strh r1, [r0, 0xC] - ldr r3, _0811AED4 @ =gUnknown_03004DE0 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r5, 0xA - ldrsh r2, [r0, r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x2 - bl sub_811D6E8 - ldr r0, _0811AED8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AEBE - ldr r0, _0811AEDC @ =sub_811ADAC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811AEBE: - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AED0: .4byte 0x0200c000 -_0811AED4: .4byte gUnknown_03004DE0 -_0811AED8: .4byte gPaletteFade -_0811AEDC: .4byte sub_811ADAC - thumb_func_end sub_811AE70 - - thumb_func_start sub_811AEE0 -sub_811AEE0: @ 811AEE0 - push {lr} - bl sub_811D67C - ldr r0, _0811AF08 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811AF02 - ldr r1, _0811AF0C @ =0x040000d4 - ldr r0, _0811AF10 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811AF14 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811AF02: - pop {r0} - bx r0 - .align 2, 0 -_0811AF08: .4byte 0x0200c000 -_0811AF0C: .4byte 0x040000d4 -_0811AF10: .4byte gUnknown_03004DE0 -_0811AF14: .4byte 0x800000a0 - thumb_func_end sub_811AEE0 - - thumb_func_start sub_811AF18 -sub_811AF18: @ 811AF18 - ldr r1, _0811AF38 @ =gUnknown_03004DE0 - ldr r0, _0811AF3C @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811AF40 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811AF38: .4byte gUnknown_03004DE0 -_0811AF3C: .4byte REG_VCOUNT -_0811AF40: .4byte REG_BG1HOFS - thumb_func_end sub_811AF18 - - thumb_func_start sub_811AF44 -sub_811AF44: @ 811AF44 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811AF74 @ =gUnknown_083FD7B8 - ldr r2, _0811AF78 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811AF56: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811AF56 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811AF74: .4byte gUnknown_083FD7B8 -_0811AF78: .4byte gTasks - thumb_func_end sub_811AF44 - - thumb_func_start sub_811AF7C -sub_811AF7C: @ 811AF7C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0811AFE4 @ =0x0200c000 - ldr r0, _0811AFE8 @ =gUnknown_03005560 - movs r2, 0x16 - ldrsh r1, [r1, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - ldr r0, _0811AFEC @ =sub_811B08C - bl SetVBlankCallback - ldr r0, _0811AFF0 @ =sub_811B0C4 - bl SetHBlankCallback - ldr r3, _0811AFF4 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0811AFF8 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0811AFFC @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x18 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811AFE4: .4byte 0x0200c000 -_0811AFE8: .4byte gUnknown_03005560 -_0811AFEC: .4byte sub_811B08C -_0811AFF0: .4byte sub_811B0C4 -_0811AFF4: .4byte 0x04000208 -_0811AFF8: .4byte 0x04000200 -_0811AFFC: .4byte REG_DISPSTAT - thumb_func_end sub_811AF7C - - thumb_func_start sub_811B000 -sub_811B000: @ 811B000 - push {r4-r7,lr} - ldr r2, _0811B07C @ =0x0200c000 - ldrb r1, [r2] - movs r1, 0 - strb r1, [r2] - ldrh r4, [r0, 0xA] - ldrh r2, [r0, 0xC] - lsls r3, r2, 16 - asrs r3, 24 - movs r5, 0x84 - lsls r5, 5 - adds r1, r4, r5 - strh r1, [r0, 0xA] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r1 - strh r2, [r0, 0xC] - movs r5, 0 - lsls r7, r3, 16 -_0811B026: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r2, _0811B080 @ =gUnknown_03004DE0 - lsls r1, r5, 1 - adds r1, r2 - ldr r6, _0811B07C @ =0x0200c000 - ldrh r2, [r6, 0x16] - adds r0, r2 - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x84 - lsls r1, 5 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811B026 - ldr r0, _0811B084 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811B06A - ldr r0, _0811B088 @ =sub_811AF44 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B06A: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B07C: .4byte 0x0200c000 -_0811B080: .4byte gUnknown_03004DE0 -_0811B084: .4byte gPaletteFade -_0811B088: .4byte sub_811AF44 - thumb_func_end sub_811B000 - - thumb_func_start sub_811B08C -sub_811B08C: @ 811B08C - push {lr} - bl sub_811D67C - ldr r0, _0811B0B4 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811B0AE - ldr r1, _0811B0B8 @ =0x040000d4 - ldr r0, _0811B0BC @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811B0C0 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B0AE: - pop {r0} - bx r0 - .align 2, 0 -_0811B0B4: .4byte 0x0200c000 -_0811B0B8: .4byte 0x040000d4 -_0811B0BC: .4byte gUnknown_03004DE0 -_0811B0C0: .4byte 0x800000a0 - thumb_func_end sub_811B08C - - thumb_func_start sub_811B0C4 -sub_811B0C4: @ 811B0C4 - ldr r1, _0811B0E4 @ =gUnknown_03004DE0 - ldr r0, _0811B0E8 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811B0EC @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811B0E4: .4byte gUnknown_03004DE0 -_0811B0E8: .4byte REG_VCOUNT -_0811B0EC: .4byte REG_BG1VOFS - thumb_func_end sub_811B0C4 - - thumb_func_start sub_811B0F0 -sub_811B0F0: @ 811B0F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B120 @ =gUnknown_083FD7C0 - ldr r2, _0811B124 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B102: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B102 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B120: .4byte gUnknown_083FD7C0 -_0811B124: .4byte gTasks - thumb_func_end sub_811B0F0 - - thumb_func_start sub_811B128 -sub_811B128: @ 811B128 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r3, 0x10 - strh r3, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0x10] - movs r0, 0x80 - lsls r0, 7 - strh r0, [r4, 0x12] - ldr r1, _0811B1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r0, _0811B1C0 @ =0x00003f41 - strh r0, [r1, 0xE] - lsls r3, 8 - strh r3, [r1, 0x10] - movs r1, 0 - add r5, sp, 0x4 - add r6, sp, 0x8 - ldr r3, _0811B1C4 @ =gUnknown_03005560 - movs r2, 0xF0 -_0811B168: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B168 - ldr r0, _0811B1C8 @ =sub_811B520 - bl SetVBlankCallback - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_811D6A8 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811B1CC @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811B1D0 @ =gUnknown_083FBB88 - ldr r1, [sp, 0x8] - movs r2, 0xB0 - lsls r2, 2 - bl CpuSet - ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B1BC: .4byte 0x0200c000 -_0811B1C0: .4byte 0x00003f41 -_0811B1C4: .4byte gUnknown_03005560 -_0811B1C8: .4byte sub_811B520 -_0811B1CC: .4byte 0x01000400 -_0811B1D0: .4byte gUnknown_083FBB88 -_0811B1D4: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B128 - - thumb_func_start sub_811B1D8 -sub_811B1D8: @ 811B1D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r5, _0811B260 @ =gUnknown_083FDB44 - add r1, sp, 0xC - add r0, sp, 0x8 - bl sub_811D6A8 - movs r1, 0 - ldr r0, [sp, 0x8] - mov r9, r0 - ldr r6, _0811B264 @ =gUnknown_03004DE0 - mov r8, r6 - movs r0, 0xF0 - lsls r0, 8 - mov r12, r0 -_0811B1FE: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811B204: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - add r1, r9 - ldrh r0, [r5] - mov r6, r12 - orrs r0, r6 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r5, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1D - ble _0811B204 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811B1FE - movs r6, 0x10 - ldrsh r2, [r7, r6] - movs r1, 0x12 - ldrsh r0, [r7, r1] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - mov r0, r8 - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0x1 - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B260: .4byte gUnknown_083FDB44 -_0811B264: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B1D8 - - thumb_func_start sub_811B268 -sub_811B268: @ 811B268 - push {r4,lr} - sub sp, 0x8 - adds r2, r0, 0 - ldr r1, _0811B2E8 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r3, [r2, 0xE] - movs r4, 0xE - ldrsh r0, [r2, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B28C - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B296 -_0811B28C: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r0, 0x2 - strh r0, [r2, 0xE] -_0811B296: - ldrh r0, [r2, 0xA] - lsls r0, 8 - ldrh r1, [r2, 0xC] - orrs r0, r1 - strh r0, [r4, 0x10] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF - ble _0811B2AE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811B2AE: - ldrh r0, [r2, 0x10] - adds r0, 0x8 - strh r0, [r2, 0x10] - ldr r0, _0811B2EC @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r2, 0x12] - adds r1, r3 - strh r1, [r2, 0x12] - ldr r0, _0811B2F0 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r2, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B2E8: .4byte 0x0200c000 -_0811B2EC: .4byte 0xffffff00 -_0811B2F0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B268 - - thumb_func_start sub_811B2F4 -sub_811B2F4: @ 811B2F4 - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r0, 0 - ldr r1, _0811B374 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _0811B318 - subs r0, r2, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811B322 -_0811B318: - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - movs r0, 0x2 - strh r0, [r3, 0xE] -_0811B322: - ldrh r0, [r3, 0xA] - lsls r1, r0, 8 - ldrh r2, [r3, 0xC] - orrs r1, r2 - strh r1, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bne _0811B338 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_0811B338: - ldrh r0, [r3, 0x10] - adds r0, 0x8 - strh r0, [r3, 0x10] - ldr r5, _0811B378 @ =0xffffff00 - adds r1, r5, 0 - ldrh r0, [r3, 0x12] - adds r1, r0 - strh r1, [r3, 0x12] - ldr r0, _0811B37C @ =gUnknown_03004DE0 - movs r5, 0x10 - ldrsh r2, [r3, r5] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B374: .4byte 0x0200c000 -_0811B378: .4byte 0xffffff00 -_0811B37C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B2F4 - - thumb_func_start sub_811B380 -sub_811B380: @ 811B380 - push {r4-r7,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, _0811B3E0 @ =0x0200c000 - ldrb r0, [r5] - movs r7, 0 - strb r7, [r5] - ldrh r0, [r4, 0x10] - adds r0, 0x8 - strh r0, [r4, 0x10] - ldr r0, _0811B3E4 @ =0xffffff00 - adds r1, r0, 0 - ldrh r3, [r4, 0x12] - adds r1, r3 - strh r1, [r4, 0x12] - ldr r0, _0811B3E8 @ =gUnknown_03004DE0 - movs r3, 0x10 - ldrsh r2, [r4, r3] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r6, 0xA0 - str r6, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl sub_811D6E8 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _0811B3CE - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - strh r6, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - strh r7, [r4, 0xE] -_0811B3CE: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B3E0: .4byte 0x0200c000 -_0811B3E4: .4byte 0xffffff00 -_0811B3E8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B380 - - thumb_func_start sub_811B3EC -sub_811B3EC: @ 811B3EC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - movs r3, 0 - strb r3, [r0] - ldrh r2, [r4, 0xC] - movs r0, 0xC - ldrsh r1, [r4, r0] - ldr r0, _0811B48C @ =0x000003ff - cmp r1, r0 - bgt _0811B40A - adds r0, r2, 0 - adds r0, 0x80 - strh r0, [r4, 0xC] -_0811B40A: - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B426 - ldrh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 24 - subs r0, r1, r0 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0811B426 - strh r3, [r4, 0xA] -_0811B426: - ldr r0, _0811B490 @ =gUnknown_03004DE0 - movs r1, 0xA - ldrsh r3, [r4, r1] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D764 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B462 - ldr r1, _0811B494 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B498 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B49C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811B4A0 @ =sub_811B0F0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B462: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0811B476 - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811B4A4 @ =sub_811B54C - bl SetVBlankCallback -_0811B476: - ldr r0, _0811B488 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B488: .4byte 0x0200c000 -_0811B48C: .4byte 0x000003ff -_0811B490: .4byte gUnknown_03004DE0 -_0811B494: .4byte 0x040000b0 -_0811B498: .4byte 0x0000c5ff -_0811B49C: .4byte 0x00007fff -_0811B4A0: .4byte sub_811B0F0 -_0811B4A4: .4byte sub_811B54C - thumb_func_end sub_811B3EC - - thumb_func_start sub_811B4A8 -sub_811B4A8: @ 811B4A8 - push {lr} - ldr r1, _0811B500 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811B504 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811B508 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D67C - ldr r2, _0811B50C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811B4DE - ldr r1, _0811B510 @ =0x040000d4 - ldr r0, _0811B514 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811B518 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811B4DE: - ldr r1, _0811B51C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - adds r1, 0xC - ldrh r0, [r2, 0xE] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x10] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811B500: .4byte 0x040000b0 -_0811B504: .4byte 0x0000c5ff -_0811B508: .4byte 0x00007fff -_0811B50C: .4byte 0x0200c000 -_0811B510: .4byte 0x040000d4 -_0811B514: .4byte gUnknown_03004DE0 -_0811B518: .4byte 0x800000a0 -_0811B51C: .4byte REG_WININ - thumb_func_end sub_811B4A8 - - thumb_func_start sub_811B520 -sub_811B520: @ 811B520 - push {lr} - bl sub_811B4A8 - ldr r1, _0811B53C @ =0x040000b0 - ldr r0, _0811B540 @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B544 @ =REG_BG0HOFS - str r0, [r1, 0x4] - ldr r0, _0811B548 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B53C: .4byte 0x040000b0 -_0811B540: .4byte gUnknown_03005560 -_0811B544: .4byte REG_BG0HOFS -_0811B548: .4byte 0xa2400001 - thumb_func_end sub_811B520 - - thumb_func_start sub_811B54C -sub_811B54C: @ 811B54C - push {lr} - bl sub_811B4A8 - ldr r1, _0811B568 @ =0x040000b0 - ldr r0, _0811B56C @ =gUnknown_03005560 - str r0, [r1] - ldr r0, _0811B570 @ =REG_WIN0H - str r0, [r1, 0x4] - ldr r0, _0811B574 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0811B568: .4byte 0x040000b0 -_0811B56C: .4byte gUnknown_03005560 -_0811B570: .4byte REG_WIN0H -_0811B574: .4byte 0xa2400001 - thumb_func_end sub_811B54C - - thumb_func_start sub_811B578 -sub_811B578: @ 811B578 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B5A8 @ =gUnknown_083FD7D8 - ldr r2, _0811B5AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B58A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B58A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B5A8: .4byte gUnknown_083FD7D8 -_0811B5AC: .4byte gTasks - thumb_func_end sub_811B578 - - thumb_func_start sub_811B5B0 -sub_811B5B0: @ 811B5B0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811B5F0 @ =gUnknown_083FC108 - ldr r1, [sp, 0x8] - movs r2, 0x20 - bl CpuSet - movs r0, 0 - str r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, _0811B5F4 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B5F0: .4byte gUnknown_083FC108 -_0811B5F4: .4byte 0x05000200 -_0811B5F8: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811B5B0 - - thumb_func_start sub_811B5FC -sub_811B5FC: @ 811B5FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r1, _0811B67C @ =gUnknown_083FD7E4 - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811B680 @ =gUnknown_083FD7E8 - adds r0, r4, 0 - movs r2, 0xA - bl memcpy - bl Random - movs r5, 0x1 - ands r5, r0 - movs r1, 0 - mov r8, r4 - ldr r6, _0811B684 @ =gUnknown_0202FF84 -_0811B62A: - lsls r5, 16 - asrs r5, 16 - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - str r0, [r6] - lsls r4, r1, 16 - asrs r4, 16 - lsls r0, r4, 5 - adds r0, 0x10 - str r0, [r6, 0x4] - str r5, [r6, 0x8] - lsls r0, r4, 1 - add r0, r8 - movs r1, 0 - ldrsh r0, [r0, r1] - str r0, [r6, 0xC] - movs r0, 0x2D - bl FieldEffectStart - adds r4, 0x1 - lsls r4, 16 - movs r0, 0x1 - eors r5, r0 - lsls r5, 16 - lsrs r5, 16 - lsrs r1, r4, 16 - asrs r4, 16 - cmp r4, 0x4 - ble _0811B62A - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B67C: .4byte gUnknown_083FD7E4 -_0811B680: .4byte gUnknown_083FD7E8 -_0811B684: .4byte gUnknown_0202FF84 - thumb_func_end sub_811B5FC - - thumb_func_start sub_811B688 -sub_811B688: @ 811B688 - push {lr} - movs r0, 0x2D - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _0811B6A8 - bl sub_811D6D4 - ldr r0, _0811B6B0 @ =sub_811B578 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811B6A8: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811B6B0: .4byte sub_811B578 - thumb_func_end sub_811B688 - - thumb_func_start FldEff_Pokeball -FldEff_Pokeball: @ 811B6B4 - push {r4,r5,lr} - ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C - ldr r5, _0811B714 @ =gUnknown_0202FF84 - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r5, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0811B718 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5, 0xC] - strh r0, [r4, 0x30] - ldr r0, _0811B71C @ =0x0000ffff - strh r0, [r4, 0x32] - adds r0, r4, 0 - bl InitSpriteAffineAnim - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B710: .4byte gSpriteTemplate_83FD98C -_0811B714: .4byte gUnknown_0202FF84 -_0811B718: .4byte gSprites -_0811B71C: .4byte 0x0000ffff - thumb_func_end FldEff_Pokeball - - thumb_func_start sub_811B720 -sub_811B720: @ 811B720 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0811B740 @ =gUnknown_083FD7F2 - mov r0, sp - movs r2, 0x4 - bl memcpy - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811B744 - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _0811B7D6 - .align 2, 0 -_0811B740: .4byte gUnknown_083FD7F2 -_0811B744: - ldrh r0, [r4, 0x20] - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r0, 0xF0 - bhi _0811B7B2 - asrs r0, r1, 19 - lsls r0, 16 - ldrh r1, [r4, 0x22] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r0, 16 - asrs r5, r0, 16 - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r5, r0 - beq _0811B7B2 - strh r2, [r4, 0x32] - ldr r0, _0811B7E0 @ =REG_BG0CNT - ldrh r2, [r0] - lsrs r2, 8 - movs r0, 0x1F - ands r2, r0 - lsls r2, 11 - movs r0, 0xC0 - lsls r0, 19 - adds r2, r0 - lsls r1, 16 - asrs r1, 16 - subs r0, r1, 0x2 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - ldr r6, _0811B7E4 @ =0x0000f001 - adds r3, r6, 0 - strh r3, [r0] - subs r0, r1, 0x1 - lsls r0, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - lsls r0, r1, 5 - adds r0, r5 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r1, 0x1 - lsls r1, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r2 - strh r3, [r1] -_0811B7B2: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, 0xF - lsls r0, 16 - movs r1, 0x87 - lsls r1, 17 - cmp r0, r1 - bls _0811B7D6 - adds r0, r4, 0 - movs r1, 0x2D - bl FieldEffectStop -_0811B7D6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811B7E0: .4byte REG_BG0CNT -_0811B7E4: .4byte 0x0000f001 - thumb_func_end sub_811B720 - - thumb_func_start sub_811B7E8 -sub_811B7E8: @ 811B7E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811B818 @ =gUnknown_083FD7F8 - ldr r2, _0811B81C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811B7FA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811B7FA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B818: .4byte gUnknown_083FD7F8 -_0811B81C: .4byte gTasks - thumb_func_end sub_811B7E8 - - thumb_func_start sub_811B820 -sub_811B820: @ 811B820 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0 - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - ldr r0, _0811B874 @ =0x0000f0f1 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811B878 @ =gUnknown_03005560 - ldr r2, _0811B87C @ =0x0000f3f4 -_0811B844: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811B844 - ldr r0, _0811B880 @ =sub_811BC2C - bl SetVBlankCallback - ldr r1, _0811B870 @ =0x0200c000 - movs r0, 0x78 - strh r0, [r1, 0x2C] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B870: .4byte 0x0200c000 -_0811B874: .4byte 0x0000f0f1 -_0811B878: .4byte gUnknown_03005560 -_0811B87C: .4byte 0x0000f3f4 -_0811B880: .4byte sub_811BC2C - thumb_func_end sub_811B820 - - thumb_func_start sub_811B884 -sub_811B884: @ 811B884 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811B904 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811B908 @ =gUnknown_03004DE0 -_0811B8B0: - movs r3, 0x2A - ldrsh r2, [r4, r3] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - movs r3, 0xF0 - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811B8B0 - ldr r2, _0811B904 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811B8F2 - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811B8F2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811B904: .4byte 0x0200c000 -_0811B908: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B884 - - thumb_func_start sub_811B90C -sub_811B90C: @ 811B90C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811B988 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0xF0 - bl sub_811D8FC - adds r6, r4, 0 - ldr r5, _0811B98C @ =gUnknown_03004DE0 - mov r8, r5 - add r5, sp, 0xC -_0811B946: - movs r1, 0x78 - ldrh r0, [r4, 0x28] - adds r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x4F - ble _0811B95C - ldrh r1, [r4, 0x28] - movs r3, 0xF0 -_0811B95C: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - add r2, r8 - lsls r1, 16 - asrs r1, 8 - lsls r0, r3, 16 - asrs r3, r0, 16 - orrs r3, r1 - strh r3, [r2] - ldrb r0, [r5] - cmp r0, 0 - bne _0811B990 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r5] - b _0811B946 - .align 2, 0 -_0811B988: .4byte 0x0200c000 -_0811B98C: .4byte gUnknown_03004DE0 -_0811B990: - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x9F - ble _0811B9AA - movs r0, 0xF0 - strh r0, [r4, 0x2C] - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811B9D0 -_0811B9AA: - movs r2, 0x2A - ldrsh r0, [r4, r2] - cmp r0, r1 - bge _0811B9D0 - ldr r4, _0811B9E8 @ =gUnknown_03004DE0 - ldr r2, _0811B9EC @ =0x0200c000 -_0811B9B6: - ldrh r0, [r2, 0x2A] - adds r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r5, 0x2E - ldrsh r0, [r2, r5] - cmp r1, r0 - blt _0811B9B6 -_0811B9D0: - ldrb r0, [r6] - adds r0, 0x1 - ldrb r1, [r6] - strb r0, [r6] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B9E8: .4byte gUnknown_03004DE0 -_0811B9EC: .4byte 0x0200c000 - thumb_func_end sub_811B90C - - thumb_func_start sub_811B9F0 -sub_811B9F0: @ 811B9F0 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BA68 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x2C - ldrsh r3, [r4, r1] - movs r1, 0xA0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BA6C @ =gUnknown_03004DE0 -_0811BA1A: - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - adds r2, r5 - ldrh r0, [r4, 0x28] - lsls r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BA1A - ldr r2, _0811BA68 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - subs r0, 0x10 - strh r0, [r2, 0x2C] - lsls r0, 16 - cmp r0, 0 - bgt _0811BA56 - movs r0, 0xA0 - strh r0, [r2, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BA56: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BA68: .4byte 0x0200c000 -_0811BA6C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811B9F0 - - thumb_func_start sub_811BA70 -sub_811BA70: @ 811BA70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r8, r0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _0811BAF0 @ =0x0200c000 - ldrb r0, [r4] - movs r0, 0 - strb r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl sub_811D8FC - ldr r3, _0811BAF4 @ =gUnknown_03004DE0 - mov r9, r3 - mov r10, r4 - add r6, sp, 0xC -_0811BAAE: - movs r5, 0x2A - ldrsh r0, [r4, r5] - lsls r0, 1 - mov r7, r9 - adds r5, r0, r7 - ldrb r1, [r5] - ldrh r2, [r4, 0x28] - adds r3, r2, 0 - movs r7, 0x2E - ldrsh r0, [r4, r7] - cmp r0, 0x50 - bgt _0811BACA - movs r2, 0x78 - adds r1, r3, 0 -_0811BACA: - lsls r0, r2, 16 - asrs r0, 8 - lsls r1, 16 - asrs r1, 16 - orrs r1, r0 - movs r3, 0 - strh r1, [r5] - ldrb r0, [r6] - cmp r0, 0 - bne _0811BAF8 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - strb r0, [r6] - b _0811BAAE - .align 2, 0 -_0811BAF0: .4byte 0x0200c000 -_0811BAF4: .4byte gUnknown_03004DE0 -_0811BAF8: - ldrh r0, [r4, 0x2E] - subs r0, 0x8 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bgt _0811BB12 - strh r3, [r4, 0x2C] - mov r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0811BB3A -_0811BB12: - movs r3, 0x2A - ldrsh r0, [r4, r3] - cmp r0, r2 - ble _0811BB3A - ldr r4, _0811BB58 @ =gUnknown_03004DE0 - ldr r2, _0811BB5C @ =0x0200c000 - adds r3, r1, 0 -_0811BB20: - ldrh r0, [r2, 0x2A] - subs r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r4 - strh r3, [r0] - movs r5, 0x2A - ldrsh r1, [r2, r5] - movs r7, 0x2E - ldrsh r0, [r2, r7] - cmp r1, r0 - bgt _0811BB20 -_0811BB3A: - mov r1, r10 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r10 - strb r0, [r2] - movs r0, 0 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BB58: .4byte gUnknown_03004DE0 -_0811BB5C: .4byte 0x0200c000 - thumb_func_end sub_811BA70 - - thumb_func_start sub_811BB60 -sub_811BB60: @ 811BB60 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r4, _0811BBE4 @ =0x0200c000 - ldrb r0, [r4] - movs r1, 0 - strb r1, [r4] - adds r0, r4, 0 - adds r0, 0x24 - movs r2, 0x2C - ldrsh r3, [r4, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl sub_811D8FC - ldr r5, _0811BBE8 @ =gUnknown_03004DE0 -_0811BB88: - movs r2, 0x78 - ldrh r3, [r4, 0x28] - movs r1, 0x28 - ldrsh r0, [r4, r1] - cmp r0, 0x77 - ble _0811BB98 - movs r2, 0 - movs r3, 0xF0 -_0811BB98: - movs r0, 0x2A - ldrsh r1, [r4, r0] - lsls r1, 1 - adds r1, r5 - lsls r2, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r2 - strh r0, [r1] - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - cmp r0, 0 - beq _0811BB88 - ldr r2, _0811BBE4 @ =0x0200c000 - ldrh r0, [r2, 0x2C] - adds r0, 0x10 - strh r0, [r2, 0x2C] - movs r1, 0x28 - ldrsh r0, [r2, r1] - cmp r0, 0x78 - ble _0811BBD2 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0811BBD2: - ldrb r0, [r2] - adds r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811BBE4: .4byte 0x0200c000 -_0811BBE8: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BB60 - - thumb_func_start sub_811BBEC -sub_811BBEC: @ 811BBEC - push {lr} - ldr r1, _0811BC1C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BC20 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BC24 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811BC28 @ =sub_811B7E8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BC1C: .4byte 0x040000b0 -_0811BC20: .4byte 0x0000c5ff -_0811BC24: .4byte 0x00007fff -_0811BC28: .4byte sub_811B7E8 - thumb_func_end sub_811BBEC - - thumb_func_start sub_811BC2C -sub_811BC2C: @ 811BC2C - push {r4,lr} - ldr r4, _0811BC94 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811BC98 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811BC9C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811BCA0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811BC62 - ldr r1, _0811BCA4 @ =0x040000d4 - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811BCAC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BC62: - ldr r1, _0811BCB0 @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811BCB4 @ =REG_WIN0H - ldr r0, _0811BCA8 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811BCB8 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811BC94: .4byte 0x040000b0 -_0811BC98: .4byte 0x0000c5ff -_0811BC9C: .4byte 0x00007fff -_0811BCA0: .4byte 0x0200c000 -_0811BCA4: .4byte 0x040000d4 -_0811BCA8: .4byte gUnknown_03004DE0 -_0811BCAC: .4byte 0x800000a0 -_0811BCB0: .4byte REG_WININ -_0811BCB4: .4byte REG_WIN0H -_0811BCB8: .4byte 0xa2400001 - thumb_func_end sub_811BC2C - - thumb_func_start sub_811BCBC -sub_811BCBC: @ 811BCBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BCEC @ =gUnknown_083FD814 - ldr r2, _0811BCF0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BCCE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BCCE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BCEC: .4byte gUnknown_083FD814 -_0811BCF0: .4byte gTasks - thumb_func_end sub_811BCBC - - thumb_func_start sub_811BCF4 -sub_811BCF4: @ 811BCF4 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - ldr r4, _0811BD48 @ =gUnknown_03005560 - ldr r3, _0811BD4C @ =0x0200c000 -_0811BD06: - lsls r0, r2, 1 - adds r0, r4 - ldrh r1, [r3, 0x16] - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x9F - bls _0811BD06 - ldr r0, _0811BD50 @ =sub_811BE3C - bl SetVBlankCallback - ldr r0, _0811BD54 @ =sub_811BE74 - bl SetHBlankCallback - ldr r2, _0811BD58 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811BD5C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811BD48: .4byte gUnknown_03005560 -_0811BD4C: .4byte 0x0200c000 -_0811BD50: .4byte sub_811BE3C -_0811BD54: .4byte sub_811BE74 -_0811BD58: .4byte 0x04000200 -_0811BD5C: .4byte REG_DISPSTAT - thumb_func_end sub_811BCF4 - - thumb_func_start sub_811BD60 -sub_811BD60: @ 811BD60 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, _0811BE28 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r6, 0xC] - lsls r1, r2, 16 - asrs r0, r1, 24 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r6, 0xA] - movs r0, 0xC0 - lsls r0, 1 - mov r8, r0 - movs r5, 0x80 - lsls r5, 3 - adds r0, r4, r5 - strh r0, [r6, 0xA] - ldr r0, _0811BE2C @ =0x1fff0000 - cmp r1, r0 - bgt _0811BD9A - movs r1, 0xC0 - lsls r1, 1 - adds r0, r2, r1 - strh r0, [r6, 0xC] -_0811BD9A: - movs r5, 0 - lsls r7, r3, 16 -_0811BD9E: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r1, _0811BE30 @ =gUnknown_03004DE0 - lsls r2, r5, 1 - adds r2, r1 - ldr r1, _0811BE28 @ =0x0200c000 - ldrh r1, [r1, 0x16] - adds r0, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _0811BD9E - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x51 - bne _0811BDEC - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade -_0811BDEC: - movs r5, 0x10 - ldrsh r0, [r6, r5] - cmp r0, 0 - beq _0811BE0E - ldr r0, _0811BE34 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811BE0E - ldr r0, _0811BE38 @ =sub_811BCBC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811BE0E: - ldr r0, _0811BE28 @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BE28: .4byte 0x0200c000 -_0811BE2C: .4byte 0x1fff0000 -_0811BE30: .4byte gUnknown_03004DE0 -_0811BE34: .4byte gPaletteFade -_0811BE38: .4byte sub_811BCBC - thumb_func_end sub_811BD60 - - thumb_func_start sub_811BE3C -sub_811BE3C: @ 811BE3C - push {lr} - bl sub_811D67C - ldr r0, _0811BE64 @ =0x0200c000 - ldrb r0, [r0] - cmp r0, 0 - beq _0811BE5E - ldr r1, _0811BE68 @ =0x040000d4 - ldr r0, _0811BE6C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811BE70 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811BE5E: - pop {r0} - bx r0 - .align 2, 0 -_0811BE64: .4byte 0x0200c000 -_0811BE68: .4byte 0x040000d4 -_0811BE6C: .4byte gUnknown_03004DE0 -_0811BE70: .4byte 0x800000a0 - thumb_func_end sub_811BE3C - - thumb_func_start sub_811BE74 -sub_811BE74: @ 811BE74 - ldr r1, _0811BE94 @ =gUnknown_03004DE0 - ldr r0, _0811BE98 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811BE9C @ =REG_BG1VOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811BE94: .4byte gUnknown_03004DE0 -_0811BE98: .4byte REG_VCOUNT -_0811BE9C: .4byte REG_BG1VOFS - thumb_func_end sub_811BE74 - - thumb_func_start sub_811BEA0 -sub_811BEA0: @ 811BEA0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811BED0 @ =gUnknown_083FD81C - ldr r2, _0811BED4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811BEB2: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811BEB2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BED0: .4byte gUnknown_083FD81C -_0811BED4: .4byte gTasks - thumb_func_end sub_811BEA0 - - thumb_func_start sub_811BED8 -sub_811BED8: @ 811BED8 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811BF20 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811BF24 @ =gUnknown_03005560 - movs r2, 0xF2 -_0811BEFC: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811BEFC - ldr r0, _0811BF28 @ =sub_811C004 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811BF20: .4byte 0x0200c000 -_0811BF24: .4byte gUnknown_03005560 -_0811BF28: .4byte sub_811C004 - thumb_func_end sub_811BED8 - - thumb_func_start sub_811BF2C -sub_811BF2C: @ 811BF2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r1, _0811BFBC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811BFC0 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xC] - ldrb r5, [r4, 0xC] - adds r0, 0x10 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xA] - adds r0, 0x8 - strh r0, [r4, 0xA] - movs r6, 0 - movs r0, 0x1 - mov r8, r0 -_0811BF52: - adds r0, r5, 0 - movs r1, 0x28 - bl Sin - ldrh r1, [r4, 0xA] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _0811BF68 - movs r1, 0 -_0811BF68: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811BF72 - movs r1, 0xF0 -_0811BF72: - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 8 - movs r2, 0xF1 - orrs r1, r2 - strh r1, [r7] - cmp r0, 0xEF - bgt _0811BF86 - movs r0, 0 - mov r8, r0 -_0811BF86: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, 0x2 - cmp r6, 0x9F - bls _0811BF52 - mov r1, r8 - cmp r1, 0 - beq _0811BFA4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811BFA4: - ldr r0, _0811BFBC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811BFBC: .4byte 0x0200c000 -_0811BFC0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811BF2C - - thumb_func_start sub_811BFC4 -sub_811BFC4: @ 811BFC4 - push {lr} - ldr r1, _0811BFF4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811BFF8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811BFFC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811C000 @ =sub_811BEA0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811BFF4: .4byte 0x040000b0 -_0811BFF8: .4byte 0x0000c5ff -_0811BFFC: .4byte 0x00007fff -_0811C000: .4byte sub_811BEA0 - thumb_func_end sub_811BFC4 - - thumb_func_start sub_811C004 -sub_811C004: @ 811C004 - push {r4,lr} - ldr r4, _0811C060 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C064 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C068 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C06C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C03A - ldr r1, _0811C070 @ =0x040000d4 - ldr r0, _0811C074 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C078 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C03A: - ldr r1, _0811C07C @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C080 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C084 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C088 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C060: .4byte 0x040000b0 -_0811C064: .4byte 0x0000c5ff -_0811C068: .4byte 0x00007fff -_0811C06C: .4byte 0x0200c000 -_0811C070: .4byte 0x040000d4 -_0811C074: .4byte gUnknown_03004DE0 -_0811C078: .4byte 0x800000a0 -_0811C07C: .4byte REG_WININ -_0811C080: .4byte gUnknown_03005560 -_0811C084: .4byte REG_WIN0H -_0811C088: .4byte 0xa2400001 - thumb_func_end sub_811C004 - - thumb_func_start sub_811C08C -sub_811C08C: @ 811C08C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0A8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0A8: .4byte gTasks - thumb_func_end sub_811C08C - - thumb_func_start sub_811C0AC -sub_811C0AC: @ 811C0AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x1 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0C8: .4byte gTasks - thumb_func_end sub_811C0AC - - thumb_func_start sub_811C0CC -sub_811C0CC: @ 811C0CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C0E8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x2 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C0E8: .4byte gTasks - thumb_func_end sub_811C0CC - - thumb_func_start sub_811C0EC -sub_811C0EC: @ 811C0EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C108 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x3 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C108: .4byte gTasks - thumb_func_end sub_811C0EC - - thumb_func_start sub_811C10C -sub_811C10C: @ 811C10C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811C128 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x4 - strh r2, [r1, 0x26] - bl sub_811C12C - pop {r0} - bx r0 - .align 2, 0 -_0811C128: .4byte gTasks - thumb_func_end sub_811C10C - - thumb_func_start sub_811C12C -sub_811C12C: @ 811C12C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811C15C @ =gUnknown_083FD828 - ldr r2, _0811C160 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811C13E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C13E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C15C: .4byte gUnknown_083FD828 -_0811C160: .4byte gTasks - thumb_func_end sub_811C12C - - thumb_func_start sub_811C164 -sub_811C164: @ 811C164 - push {r4,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - adds r0, r4, 0 - bl sub_811C7B0 - movs r0, 0 - strh r0, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0xC] - movs r0, 0xEF - strh r0, [r4, 0xE] - ldr r1, _0811C1BC @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - movs r0, 0x3E - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _0811C1C0 @ =gUnknown_03005560 - ldr r2, _0811C1C4 @ =0x0000f0f1 -_0811C196: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _0811C196 - ldr r0, _0811C1C8 @ =sub_811C670 - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C1BC: .4byte 0x0200c000 -_0811C1C0: .4byte gUnknown_03005560 -_0811C1C4: .4byte 0x0000f0f1 -_0811C1C8: .4byte sub_811C670 - thumb_func_end sub_811C164 - - thumb_func_start sub_811C1CC -sub_811C1CC: @ 811C1CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r8, r0 - ldr r6, _0811C284 @ =gUnknown_083FDFF4 - add r1, sp, 0x4 - mov r0, sp - bl sub_811D6A8 - ldr r0, _0811C288 @ =gUnknown_083FC348 - ldr r1, [sp, 0x4] - movs r2, 0xF0 - bl CpuSet - ldr r1, _0811C28C @ =gUnknown_083FDB00 - mov r2, r8 - movs r3, 0x26 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0811C290 @ =gUnknown_083FDB14 - ldr r0, _0811C294 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xFA - movs r2, 0xC - bl LoadPalette - movs r1, 0 - ldr r5, [sp] - ldr r0, _0811C298 @ =sub_811C77C - mov r12, r0 - movs r2, 0xF0 - lsls r2, 8 - adds r7, r2, 0 -_0811C222: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_0811C228: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r6] - orrs r0, r7 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r6, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1F - ble _0811C228 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0811C222 - ldr r2, _0811C29C @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811C2A0 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - mov r0, r12 - bl SetHBlankCallback - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C284: .4byte gUnknown_083FDFF4 -_0811C288: .4byte gUnknown_083FC348 -_0811C28C: .4byte gUnknown_083FDB00 -_0811C290: .4byte gUnknown_083FDB14 -_0811C294: .4byte gSaveBlock2 -_0811C298: .4byte sub_811C77C -_0811C29C: .4byte 0x04000200 -_0811C2A0: .4byte REG_DISPSTAT - thumb_func_end sub_811C1CC - - thumb_func_start sub_811C2A4 -sub_811C2A4: @ 811C2A4 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C384 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _0811C388 @ =gUnknown_03004DE0 - ldrh r0, [r4, 0xA] - ldrb r5, [r4, 0xA] - adds r0, 0x10 - strh r0, [r4, 0xA] - movs r6, 0 -_0811C2BC: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xC] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _0811C2D2 - movs r2, 0x1 -_0811C2D2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811C2DC - movs r2, 0xF0 -_0811C2DC: - strh r2, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x4F - bls _0811C2BC - cmp r6, 0x9F - bhi _0811C334 -_0811C2F6: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xE] - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r1, 0 - bge _0811C30C - movs r2, 0 -_0811C30C: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _0811C316 - movs r2, 0xEF -_0811C316: - lsls r0, r2, 16 - asrs r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x9F - bls _0811C2F6 -_0811C334: - ldrh r1, [r4, 0xC] - adds r1, 0x8 - strh r1, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x8 - strh r0, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _0811C34C - movs r0, 0xF0 - strh r0, [r4, 0xC] -_0811C34C: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0811C358 - movs r0, 0 - strh r0, [r4, 0xE] -_0811C358: - ldr r0, [r4, 0xC] - cmp r0, 0xF0 - bne _0811C364 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C364: - ldr r1, _0811C384 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C384: .4byte 0x0200c000 -_0811C388: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C2A4 - - thumb_func_start sub_811C38C -sub_811C38C: @ 811C38C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, _0811C3F8 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - ldr r2, _0811C3FC @ =gUnknown_03004DE0 - adds r5, r0, 0 - movs r3, 0xF0 -_0811C39E: - strh r3, [r2] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, 0x2 - cmp r1, 0x9F - bls _0811C39E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - strh r1, [r4, 0xE] - ldrh r0, [r5, 0x18] - subs r0, 0x8 - strh r0, [r5, 0x18] - ldrh r0, [r5, 0x1A] - adds r0, 0x8 - strh r0, [r5, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r1, 0 - bl sub_811CA10 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl sub_811CA10 - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA28 - movs r0, 0x68 - bl PlaySE - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C3F8: .4byte 0x0200c000 -_0811C3FC: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C38C - - thumb_func_start sub_811C400 -sub_811C400: @ 811C400 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C438 @ =0x0200c000 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C42E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0x24 - ldrsh r0, [r4, r1] - bl sub_811CA28 -_0811C42E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C438: .4byte 0x0200c000 - thumb_func_end sub_811C400 - - thumb_func_start sub_811C43C -sub_811C43C: @ 811C43C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r7, _0811C4D0 @ =0x0200c000 - ldrh r0, [r7, 0x18] - subs r0, 0x8 - movs r1, 0 - mov r8, r1 - strh r0, [r7, 0x18] - ldrh r0, [r7, 0x1A] - adds r0, 0x8 - strh r0, [r7, 0x1A] - movs r1, 0x24 - ldrsh r0, [r6, r1] - bl sub_811CA44 - lsls r0, 16 - cmp r0, 0 - beq _0811C4C4 - ldrb r0, [r7] - movs r0, 0 - strb r0, [r7] - movs r0, 0 - bl SetVBlankCallback - ldr r1, _0811C4D4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C4D8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C4DC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r4, _0811C4E0 @ =gUnknown_03004DE0 - movs r5, 0xA0 - lsls r5, 1 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r0, 0xF0 - lsls r0, 3 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - ldr r1, _0811C4E4 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, _0811C4E8 @ =REG_BLDY - mov r1, r8 - strh r1, [r0] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - strh r1, [r6, 0xE] - strh r1, [r6, 0x10] - movs r0, 0xBF - strh r0, [r7, 0xE] - ldr r0, _0811C4EC @ =sub_811C700 - bl SetVBlankCallback -_0811C4C4: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C4D0: .4byte 0x0200c000 -_0811C4D4: .4byte 0x040000b0 -_0811C4D8: .4byte 0x0000c5ff -_0811C4DC: .4byte 0x00007fff -_0811C4E0: .4byte gUnknown_03004DE0 -_0811C4E4: .4byte REG_WIN0H -_0811C4E8: .4byte REG_BLDY -_0811C4EC: .4byte sub_811C700 - thumb_func_end sub_811C43C - - thumb_func_start sub_811C4F0 -sub_811C4F0: @ 811C4F0 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r1, _0811C5AC @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - movs r6, 0x1 - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrh r2, [r4, 0x10] - movs r3, 0x10 - ldrsh r0, [r4, r3] - adds r7, r1, 0 - cmp r0, 0x4F - bgt _0811C51A - adds r0, r2, 0x2 - strh r0, [r4, 0x10] -_0811C51A: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _0811C526 - movs r0, 0x50 - strh r0, [r4, 0x10] -_0811C526: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - movs r1, 0x1 - ands r0, r1 - ldrh r2, [r4, 0x10] - cmp r0, 0 - beq _0811C58C - movs r3, 0 - lsls r0, r2, 16 - movs r6, 0 - cmp r0, 0 - blt _0811C58C - movs r2, 0x50 - mov r12, r2 - ldr r5, _0811C5B0 @ =gUnknown_03004DE0 -_0811C546: - lsls r0, r3, 16 - asrs r2, r0, 16 - mov r3, r12 - subs r1, r3, r2 - adds r0, r2, 0 - adds r0, 0x50 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - asrs r1, 15 - adds r1, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C568 - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C568: - lsls r0, r3, 16 - asrs r0, 15 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _0811C57A - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_0811C57A: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - ldrh r2, [r4, 0x10] - cmp r0, r1 - ble _0811C546 -_0811C58C: - cmp r2, 0x50 - bne _0811C59A - cmp r6, 0 - bne _0811C59A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C59A: - ldrb r0, [r7] - adds r0, 0x1 - ldrb r1, [r7] - strb r0, [r7] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C5AC: .4byte 0x0200c000 -_0811C5B0: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C4F0 - - thumb_func_start sub_811C5B4 -sub_811C5B4: @ 811C5B4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _0811C5E0 @ =0x0200c000 - ldrb r0, [r4] - movs r6, 0 - strb r6, [r4] - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811C5E4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - movs r0, 0xFF - strh r0, [r4, 0xE] - strh r6, [r5, 0xE] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811C5E0: .4byte 0x0200c000 -_0811C5E4: .4byte 0x00007fff - thumb_func_end sub_811C5B4 - - thumb_func_start sub_811C5E8 -sub_811C5E8: @ 811C5E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C628 @ =0x0200c000 - ldrb r0, [r5] - movs r0, 0 - strb r0, [r5] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - ldr r0, _0811C62C @ =gUnknown_03004DE0 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0xF - ble _0811C616 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811C616: - ldrb r0, [r5] - adds r0, 0x1 - ldrb r1, [r5] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C628: .4byte 0x0200c000 -_0811C62C: .4byte gUnknown_03004DE0 - thumb_func_end sub_811C5E8 - - thumb_func_start sub_811C630 -sub_811C630: @ 811C630 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0811C664 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811C668 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811C66C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, [r4] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811C664: .4byte 0x040000b0 -_0811C668: .4byte 0x0000c5ff -_0811C66C: .4byte 0x00007fff - thumb_func_end sub_811C630 - - thumb_func_start sub_811C670 -sub_811C670: @ 811C670 - push {r4,lr} - ldr r4, _0811C6D4 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C6D8 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C6DC @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C6E0 @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C6A6 - ldr r1, _0811C6E4 @ =0x040000d4 - ldr r0, _0811C6E8 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C6EC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C6A6: - ldr r1, _0811C6F0 @ =REG_BG0VOFS - ldrh r0, [r2, 0x1C] - strh r0, [r1] - adds r1, 0x36 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r0, _0811C6F4 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C6F8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811C6FC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C6D4: .4byte 0x040000b0 -_0811C6D8: .4byte 0x0000c5ff -_0811C6DC: .4byte 0x00007fff -_0811C6E0: .4byte 0x0200c000 -_0811C6E4: .4byte 0x040000d4 -_0811C6E8: .4byte gUnknown_03004DE0 -_0811C6EC: .4byte 0x800000a0 -_0811C6F0: .4byte REG_BG0VOFS -_0811C6F4: .4byte gUnknown_03005560 -_0811C6F8: .4byte REG_WIN0H -_0811C6FC: .4byte 0xa2400001 - thumb_func_end sub_811C670 - - thumb_func_start sub_811C700 -sub_811C700: @ 811C700 - push {r4,lr} - ldr r4, _0811C750 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811C754 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811C758 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811C75C @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811C736 - ldr r1, _0811C760 @ =0x040000d4 - ldr r0, _0811C764 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811C768 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811C736: - ldr r1, _0811C76C @ =REG_BLDCNT - ldrh r0, [r2, 0xE] - strh r0, [r1] - ldr r0, _0811C770 @ =gUnknown_03005560 - str r0, [r4] - ldr r0, _0811C774 @ =REG_BLDY - str r0, [r4, 0x4] - ldr r0, _0811C778 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C750: .4byte 0x040000b0 -_0811C754: .4byte 0x0000c5ff -_0811C758: .4byte 0x00007fff -_0811C75C: .4byte 0x0200c000 -_0811C760: .4byte 0x040000d4 -_0811C764: .4byte gUnknown_03004DE0 -_0811C768: .4byte 0x800000a0 -_0811C76C: .4byte REG_BLDCNT -_0811C770: .4byte gUnknown_03005560 -_0811C774: .4byte REG_BLDY -_0811C778: .4byte 0xa2400001 - thumb_func_end sub_811C700 - - thumb_func_start sub_811C77C -sub_811C77C: @ 811C77C - push {lr} - ldr r0, _0811C790 @ =REG_VCOUNT - ldrh r0, [r0] - cmp r0, 0x4F - bhi _0811C79C - ldr r0, _0811C794 @ =REG_BG0HOFS - ldr r1, _0811C798 @ =0x0200c000 - ldrh r1, [r1, 0x18] - b _0811C7A2 - .align 2, 0 -_0811C790: .4byte REG_VCOUNT -_0811C794: .4byte REG_BG0HOFS -_0811C798: .4byte 0x0200c000 -_0811C79C: - ldr r0, _0811C7A8 @ =REG_BG0HOFS - ldr r1, _0811C7AC @ =0x0200c000 - ldrh r1, [r1, 0x1A] -_0811C7A2: - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0811C7A8: .4byte REG_BG0HOFS -_0811C7AC: .4byte 0x0200c000 - thumb_func_end sub_811C77C - - thumb_func_start sub_811C7B0 -sub_811C7B0: @ 811C7B0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, _0811C8EC @ =gUnknown_083FD850 - movs r2, 0x26 - ldrsh r1, [r4, r2] - mov r8, r1 - add r0, r8 - ldrb r0, [r0] - ldr r2, _0811C8F0 @ =gUnknown_083FD86A - lsls r1, 2 - mov r8, r1 - adds r1, r2 - ldrh r1, [r1] - subs r1, 0x20 - lsls r1, 16 - asrs r1, 16 - adds r2, 0x2 - add r2, r8 - ldrh r2, [r2] - adds r2, 0x2A - lsls r2, 16 - asrs r2, 16 - ldr r5, _0811C8F4 @ =0x0200c03c - str r5, [sp] - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _0811C8F8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0x88 - lsls r1, 1 - str r5, [sp] - movs r2, 0x6A - movs r3, 0 - bl CreateTrainerSprite_BirchSpeech - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r3, 0x22 - ldrsh r0, [r4, r3] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r1, _0811C8FC @ =gSprites - adds r5, r1 - movs r2, 0x24 - ldrsh r0, [r4, r2] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - adds r6, r1 - ldr r0, _0811C900 @ =sub_811C90C - str r0, [r5, 0x1C] - str r0, [r6, 0x1C] - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - orrs r0, r1 - strb r0, [r6, 0x1] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1F - mov r9, r3 - mov r4, r9 - ands r0, r4 - lsls r0, 1 - ldrb r2, [r5, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - mov r1, r9 - ands r0, r1 - lsls r0, 1 - ldrb r1, [r6, 0x3] - ands r4, r1 - orrs r4, r0 - strb r4, [r6, 0x3] - ldrb r2, [r5, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x40 - orrs r0, r2 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - ands r1, r0 - orrs r1, r2 - strb r1, [r6, 0x1] - ldrb r0, [r5, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r0, [r6, 0x3] - orrs r0, r1 - strb r0, [r6, 0x3] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r2, _0811C904 @ =gUnknown_083FD856 - mov r3, r8 - adds r1, r3, r2 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r2, 0x2 - add r8, r2 - mov r3, r8 - movs r4, 0 - ldrsh r2, [r3, r4] - movs r3, 0 - bl SetOamMatrixRotationScaling - ldrb r0, [r6, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _0811C908 @ =0xfffffe00 - movs r2, 0x80 - lsls r2, 2 - movs r3, 0 - bl SetOamMatrixRotationScaling - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811C8EC: .4byte gUnknown_083FD850 -_0811C8F0: .4byte gUnknown_083FD86A -_0811C8F4: .4byte 0x0200c03c -_0811C8F8: .4byte gSaveBlock2 -_0811C8FC: .4byte gSprites -_0811C900: .4byte sub_811C90C -_0811C904: .4byte gUnknown_083FD856 -_0811C908: .4byte 0xfffffe00 - thumb_func_end sub_811C7B0 - - thumb_func_start sub_811C90C -sub_811C90C: @ 811C90C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0811C930 @ =gUnknown_083FD880 -_0811C912: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811C912 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811C930: .4byte gUnknown_083FD880 - thumb_func_end sub_811C90C - - thumb_func_start sub_811C934 -sub_811C934: @ 811C934 - movs r0, 0 - bx lr - thumb_func_end sub_811C934 - - thumb_func_start sub_811C938 -sub_811C938: @ 811C938 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _0811C97C @ =gUnknown_083FD89C - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _0811C980 @ =gUnknown_083FD8A0 - adds r0, r4, 0 - movs r2, 0x4 - bl memcpy - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x30] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r4, r0 - ldrh r0, [r4] - strh r0, [r5, 0x32] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811C97C: .4byte gUnknown_083FD89C -_0811C980: .4byte gUnknown_083FD8A0 - thumb_func_end sub_811C938 - - thumb_func_start sub_811C984 -sub_811C984: @ 811C984 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - ldrh r3, [r1, 0x20] - adds r2, r0, r3 - strh r2, [r1, 0x20] - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0811C9A2 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x84 - bgt _0811C9B0 - b _0811C9AA -_0811C9A2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x67 - ble _0811C9B0 -_0811C9AA: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_0811C9B0: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C984 - - thumb_func_start sub_811C9B8 -sub_811C9B8: @ 811C9B8 - push {lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x32] - ldrh r0, [r2, 0x30] - adds r1, r3, r0 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - lsls r1, 16 - cmp r1, 0 - bne _0811C9DE - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - negs r0, r3 - strh r0, [r2, 0x32] - movs r0, 0x1 - strh r0, [r2, 0x3A] -_0811C9DE: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9B8 - - thumb_func_start sub_811C9E4 -sub_811C9E4: @ 811C9E4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x20] - adds r1, r0 - strh r1, [r2, 0x20] - adds r1, 0x1F - lsls r1, 16 - movs r0, 0x97 - lsls r0, 17 - cmp r1, r0 - bls _0811CA08 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_0811CA08: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C9E4 - - thumb_func_start sub_811CA10 -sub_811CA10: @ 811CA10 - ldr r3, _0811CA24 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - strh r1, [r2, 0x3C] - bx lr - .align 2, 0 -_0811CA24: .4byte gSprites - thumb_func_end sub_811CA10 - - thumb_func_start sub_811CA28 -sub_811CA28: @ 811CA28 - ldr r2, _0811CA40 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - bx lr - .align 2, 0 -_0811CA40: .4byte gSprites - thumb_func_end sub_811CA28 - - thumb_func_start sub_811CA44 -sub_811CA44: @ 811CA44 - ldr r2, _0811CA58 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x3A - ldrsh r0, [r1, r2] - bx lr - .align 2, 0 -_0811CA58: .4byte gSprites - thumb_func_end sub_811CA44 - - thumb_func_start sub_811CA5C -sub_811CA5C: @ 811CA5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CA8C @ =gUnknown_083FD8A4 - ldr r2, _0811CA90 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CA6E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CA6E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CA8C: .4byte gUnknown_083FD8A4 -_0811CA90: .4byte gTasks - thumb_func_end sub_811CA5C - - thumb_func_start sub_811CA94 -sub_811CA94: @ 811CA94 - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - movs r0, 0x1 - strh r0, [r4, 0xE] - ldr r1, _0811CB08 @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r3, _0811CB0C @ =gUnknown_03005560 - adds r6, r1, 0 - movs r5, 0xF0 -_0811CABE: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r6, 0x14] - strh r1, [r0] - adds r0, r2, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r3 - strh r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9F - bls _0811CABE - ldr r2, _0811CB10 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CB14 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CB18 @ =sub_811CC28 - bl SetVBlankCallback - ldr r0, _0811CB1C @ =sub_811CCB0 - bl SetHBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CB08: .4byte 0x0200c000 -_0811CB0C: .4byte gUnknown_03005560 -_0811CB10: .4byte 0x04000200 -_0811CB14: .4byte REG_DISPSTAT -_0811CB18: .4byte sub_811CC28 -_0811CB1C: .4byte sub_811CCB0 - thumb_func_end sub_811CA94 - - thumb_func_start sub_811CB20 -sub_811CB20: @ 811CB20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r2, r0, 0 - ldr r1, _0811CB98 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0xF0 - ble _0811CB4A - movs r0, 0xF0 - strh r0, [r2, 0xA] -_0811CB4A: - ldrh r4, [r2, 0xC] - movs r0, 0xC - ldrsh r1, [r2, r0] - ldr r0, _0811CB9C @ =0x00000fff - ldrh r3, [r2, 0xE] - cmp r1, r0 - bgt _0811CB5C - adds r0, r4, r3 - strh r0, [r2, 0xC] -_0811CB5C: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x7F - bgt _0811CB68 - lsls r0, r3, 1 - strh r0, [r2, 0xE] -_0811CB68: - movs r5, 0 - ldr r7, _0811CBA0 @ =gUnknown_03004DE0 - movs r1, 0xA0 - lsls r1, 1 - adds r1, r7 - mov r8, r1 - mov r6, r12 -_0811CB76: - lsls r0, r5, 1 - adds r3, r0, r7 - mov r1, r8 - adds r4, r0, r1 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _0811CBA4 - ldrh r0, [r2, 0xA] - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r3] - ldrh r1, [r2, 0xA] - movs r0, 0xF0 - subs r0, r1 - b _0811CBB4 - .align 2, 0 -_0811CB98: .4byte 0x0200c000 -_0811CB9C: .4byte 0x00000fff -_0811CBA0: .4byte gUnknown_03004DE0 -_0811CBA4: - ldrh r0, [r6, 0x14] - ldrh r1, [r2, 0xA] - subs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0xA] - lsls r0, 8 - movs r1, 0xF1 - orrs r0, r1 -_0811CBB4: - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9F - bls _0811CB76 - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0xEF - ble _0811CBCE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811CBCE: - mov r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r12 - strb r0, [r2] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811CB20 - - thumb_func_start sub_811CBE8 -sub_811CBE8: @ 811CBE8 - push {lr} - ldr r1, _0811CC18 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CC1C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CC20 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811CC24 @ =sub_811CA5C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CC18: .4byte 0x040000b0 -_0811CC1C: .4byte 0x0000c5ff -_0811CC20: .4byte 0x00007fff -_0811CC24: .4byte sub_811CA5C - thumb_func_end sub_811CBE8 - - thumb_func_start sub_811CC28 -sub_811CC28: @ 811CC28 - push {r4,lr} - ldr r4, _0811CC84 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CC88 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CC8C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811CC90 @ =REG_WININ - ldr r1, _0811CC94 @ =0x0200c000 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x8] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CC70 - ldr r1, _0811CC98 @ =0x040000d4 - ldr r0, _0811CC9C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CCA0 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CC70: - ldr r0, _0811CCA4 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CCA8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CCAC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CC84: .4byte 0x040000b0 -_0811CC88: .4byte 0x0000c5ff -_0811CC8C: .4byte 0x00007fff -_0811CC90: .4byte REG_WININ -_0811CC94: .4byte 0x0200c000 -_0811CC98: .4byte 0x040000d4 -_0811CC9C: .4byte gUnknown_03004DE0 -_0811CCA0: .4byte 0x80000140 -_0811CCA4: .4byte gUnknown_030056A0 -_0811CCA8: .4byte REG_WIN0H -_0811CCAC: .4byte 0xa2400001 - thumb_func_end sub_811CC28 - - thumb_func_start sub_811CCB0 -sub_811CCB0: @ 811CCB0 - ldr r1, _0811CCD0 @ =gUnknown_03004DE0 - ldr r0, _0811CCD4 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811CCD8 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811CCD0: .4byte gUnknown_03004DE0 -_0811CCD4: .4byte REG_VCOUNT -_0811CCD8: .4byte REG_BG1HOFS - thumb_func_end sub_811CCB0 - - thumb_func_start sub_811CCDC -sub_811CCDC: @ 811CCDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CD0C @ =gUnknown_083FD8B0 - ldr r2, _0811CD10 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CCEE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CCEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CD0C: .4byte gUnknown_083FD8B0 -_0811CD10: .4byte gTasks - thumb_func_end sub_811CCDC - - thumb_func_start sub_811CD14 -sub_811CD14: @ 811CD14 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811CD88 @ =0x0200c000 - movs r2, 0 - movs r0, 0xBF - strh r0, [r1, 0xE] - strh r2, [r1, 0x12] - movs r0, 0x1E - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811CD8C @ =gUnknown_03005560 - movs r4, 0 - movs r3, 0xF0 -_0811CD3E: - lsls r0, r1, 1 - adds r0, r2 - strh r4, [r0] - adds r0, r1, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811CD3E - ldr r2, _0811CD90 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CD94 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CD98 @ =sub_811CFAC - bl SetHBlankCallback - ldr r0, _0811CD9C @ =sub_811CEE4 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811CD88: .4byte 0x0200c000 -_0811CD8C: .4byte gUnknown_03005560 -_0811CD90: .4byte 0x04000200 -_0811CD94: .4byte REG_DISPSTAT -_0811CD98: .4byte sub_811CFAC -_0811CD9C: .4byte sub_811CEE4 - thumb_func_end sub_811CD14 - - thumb_func_start sub_811CDA0 -sub_811CDA0: @ 811CDA0 - push {r4-r6,lr} - sub sp, 0x10 - adds r6, r0, 0 - ldr r1, _0811CE08 @ =gUnknown_083FD8C4 - mov r0, sp - movs r2, 0x10 - bl memcpy - movs r5, 0 - movs r4, 0 -_0811CDB4: - ldr r0, _0811CE0C @ =sub_811CFD0 - bl CreateInvisibleSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0811CE10 @ =gSprites - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2, 0x20] - strh r4, [r2, 0x22] - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r2, 0x38] - adds r1, 0x1 - lsls r1, 16 - lsls r0, r4, 16 - movs r3, 0xA0 - lsls r3, 13 - adds r0, r3 - lsrs r4, r0, 16 - lsrs r5, r1, 16 - asrs r1, 16 - cmp r1, 0x7 - ble _0811CDB4 - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - strh r0, [r2, 0x3A] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE08: .4byte gUnknown_083FD8C4 -_0811CE0C: .4byte sub_811CFD0 -_0811CE10: .4byte gSprites - thumb_func_end sub_811CDA0 - - thumb_func_start sub_811CE14 -sub_811CE14: @ 811CE14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811CE44 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - ble _0811CE3A - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811CE48 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811CE3A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811CE44: .4byte 0x0200c000 -_0811CE48: .4byte 0x00007fff - thumb_func_end sub_811CE14 - - thumb_func_start sub_811CE4C -sub_811CE4C: @ 811CE4C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _0811CE9C @ =0x0200c000 - ldrb r0, [r4] - movs r5, 0 - strb r5, [r4] - ldr r1, _0811CEA0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r0, 0xF0 - strh r0, [r4, 0x6] - strh r5, [r4, 0x12] - movs r0, 0xFF - strh r0, [r4, 0xE] - movs r0, 0x3F - strh r0, [r4, 0x2] - ldr r0, _0811CEAC @ =sub_811CF74 - bl SetVBlankCallback - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE9C: .4byte 0x0200c000 -_0811CEA0: .4byte 0x040000b0 -_0811CEA4: .4byte 0x0000c5ff -_0811CEA8: .4byte 0x00007fff -_0811CEAC: .4byte sub_811CF74 - thumb_func_end sub_811CE4C - - thumb_func_start sub_811CEB0 -sub_811CEB0: @ 811CEB0 - push {lr} - ldr r1, _0811CEDC @ =0x0200c000 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _0811CED4 - bl sub_811D6D4 - ldr r0, _0811CEE0 @ =sub_811CCDC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811CED4: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CEDC: .4byte 0x0200c000 -_0811CEE0: .4byte sub_811CCDC - thumb_func_end sub_811CEB0 - - thumb_func_start sub_811CEE4 -sub_811CEE4: @ 811CEE4 - push {r4,lr} - ldr r4, _0811CF48 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CF4C @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CF50 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811CF54 @ =REG_BLDCNT - ldr r1, _0811CF58 @ =0x0200c000 - ldrh r0, [r1, 0xE] - strh r0, [r2] - subs r2, 0x8 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x6] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CF32 - ldr r1, _0811CF5C @ =0x040000d4 - ldr r0, _0811CF60 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CF64 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CF32: - ldr r0, _0811CF68 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CF6C @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CF70 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CF48: .4byte 0x040000b0 -_0811CF4C: .4byte 0x0000c5ff -_0811CF50: .4byte 0x00007fff -_0811CF54: .4byte REG_BLDCNT -_0811CF58: .4byte 0x0200c000 -_0811CF5C: .4byte 0x040000d4 -_0811CF60: .4byte gUnknown_03004DE0 -_0811CF64: .4byte 0x80000140 -_0811CF68: .4byte gUnknown_030056A0 -_0811CF6C: .4byte REG_WIN0H -_0811CF70: .4byte 0xa2400001 - thumb_func_end sub_811CEE4 - - thumb_func_start sub_811CF74 -sub_811CF74: @ 811CF74 - push {lr} - bl sub_811D67C - ldr r1, _0811CFA4 @ =REG_BLDY - ldr r2, _0811CFA8 @ =0x0200c000 - ldrh r0, [r2, 0x12] - strh r0, [r1] - subs r1, 0x4 - ldrh r0, [r2, 0xE] - strh r0, [r1] - subs r1, 0x8 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0xA - ldrh r0, [r2, 0x6] - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r2, 0x8] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811CFA4: .4byte REG_BLDY -_0811CFA8: .4byte 0x0200c000 - thumb_func_end sub_811CF74 - - thumb_func_start sub_811CFAC -sub_811CFAC: @ 811CFAC - ldr r2, _0811CFC4 @ =REG_BLDY - ldr r1, _0811CFC8 @ =gUnknown_03004DE0 - ldr r0, _0811CFCC @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0811CFC4: .4byte REG_BLDY -_0811CFC8: .4byte gUnknown_03004DE0 -_0811CFCC: .4byte REG_VCOUNT - thumb_func_end sub_811CFAC - - thumb_func_start sub_811CFD0 -sub_811CFD0: @ 811CFD0 - push {r4-r6,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x38] - movs r2, 0x38 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _0811CFF8 - subs r0, r1, 0x1 - strh r0, [r3, 0x38] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r0, _0811CFF4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - b _0811D0AA - .align 2, 0 -_0811CFF4: .4byte 0x0200c000 -_0811CFF8: - movs r2, 0x22 - ldrsh r1, [r3, r2] - lsls r1, 1 - ldr r0, _0811D0B0 @ =gUnknown_03004DE0 - adds r6, r1, r0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2 - adds r5, r1, r0 - movs r4, 0 -_0811D00C: - lsls r1, r4, 1 - adds r2, r1, r6 - ldrh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2] - adds r1, r5 - ldrh r0, [r3, 0x20] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _0811D00C - movs r1, 0x20 - ldrsh r0, [r3, r1] - ldrh r2, [r3, 0x20] - cmp r0, 0 - bne _0811D046 - movs r0, 0x2E - ldrsh r1, [r3, r0] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _0811D046 - movs r0, 0x1 - strh r0, [r3, 0x30] -_0811D046: - adds r1, r2, 0 - subs r1, 0x10 - strh r1, [r3, 0x20] - ldrh r0, [r3, 0x2E] - adds r0, 0x80 - strh r0, [r3, 0x2E] - lsls r1, 16 - cmp r1, 0 - bge _0811D05C - movs r0, 0 - strh r0, [r3, 0x20] -_0811D05C: - movs r1, 0x2E - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 5 - cmp r0, r1 - ble _0811D06A - strh r1, [r3, 0x2E] -_0811D06A: - movs r0, 0x3A - ldrsh r2, [r3, r0] - cmp r2, 0 - beq _0811D07A - ldr r0, _0811D0B4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_0811D07A: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r4, _0811D0B4 @ =0x0200c000 - cmp r2, 0 - beq _0811D09E - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x6 - ble _0811D0AA - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0811D0AA -_0811D09E: - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - adds r0, r3, 0 - bl DestroySprite -_0811D0AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D0B0: .4byte gUnknown_03004DE0 -_0811D0B4: .4byte 0x0200c000 - thumb_func_end sub_811CFD0 - - thumb_func_start sub_811D0B8 -sub_811D0B8: @ 811D0B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D0E8 @ =gUnknown_083FD8D4 - ldr r2, _0811D0EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D0CA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D0CA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D0E8: .4byte gUnknown_083FD8D4 -_0811D0EC: .4byte gTasks - thumb_func_end sub_811D0B8 - - thumb_func_start sub_811D0F0 -sub_811D0F0: @ 811D0F0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811D138 @ =gUnknown_083FD528 - ldr r1, [sp, 0x8] - movs r2, 0x10 - bl CpuSet - mov r1, sp - movs r2, 0xF0 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811D13C @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811D140 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D138: .4byte gUnknown_083FD528 -_0811D13C: .4byte 0x01000400 -_0811D140: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811D0F0 - - thumb_func_start sub_811D144 -sub_811D144: @ 811D144 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0811D186 - mov r0, sp - bl sub_811D690 - movs r0, 0x3 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 5 - ldr r1, _0811D198 @ =gUnknown_083FD528 - adds r0, r1 - ldr r1, [sp] - movs r2, 0x10 - bl CpuSet - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xD - ble _0811D186 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x10 - strh r0, [r4, 0xA] -_0811D186: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D198: .4byte gUnknown_083FD528 - thumb_func_end sub_811D144 - - thumb_func_start sub_811D19C -sub_811D19C: @ 811D19C - push {lr} - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - lsls r1, 16 - cmp r1, 0 - bne _0811D1BC - bl sub_811D6D4 - ldr r0, _0811D1C4 @ =sub_811D0B8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811D1BC: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811D1C4: .4byte sub_811D0B8 - thumb_func_end sub_811D19C - - thumb_func_start sub_811D1C8 -sub_811D1C8: @ 811D1C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D1F8 @ =gUnknown_083FD8E0 - ldr r2, _0811D1FC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D1DA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D1DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D1F8: .4byte gUnknown_083FD8E0 -_0811D1FC: .4byte gTasks - thumb_func_end sub_811D1C8 - - thumb_func_start sub_811D200 -sub_811D200: @ 811D200 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811D254 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811D258 @ =gUnknown_03004DE0 - movs r3, 0xF0 - adds r4, r2, 0 -_0811D222: - lsls r0, r1, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811D222 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA0 - bl CpuSet - ldr r0, _0811D25C @ =sub_811D438 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811D254: .4byte 0x0200c000 -_0811D258: .4byte gUnknown_03004DE0 -_0811D25C: .4byte sub_811D438 - thumb_func_end sub_811D200 - - thumb_func_start sub_811D260 -sub_811D260: @ 811D260 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - ldr r0, _0811D2D0 @ =0x0200c024 - ldr r6, _0811D2D4 @ =gUnknown_083FD8F4 - mov r2, r8 - movs r3, 0xA - ldrsh r1, [r2, r3] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 1 - adds r1, r4, r6 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r2, r6, 0x2 - adds r2, r4, r2 - movs r3, 0 - ldrsh r2, [r2, r3] - adds r3, r6, 0x4 - adds r3, r4, r3 - movs r5, 0 - ldrsh r3, [r3, r5] - adds r5, r6, 0x6 - adds r4, r5 - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_811D8FC - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r6, 0x8 - adds r0, r6 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - movs r0, 0x1 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811D2D0: .4byte 0x0200c024 -_0811D2D4: .4byte gUnknown_083FD8F4 - thumb_func_end sub_811D260 - - thumb_func_start sub_811D2D8 -sub_811D2D8: @ 811D2D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - ldr r0, _0811D324 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - mov r8, r1 - mov r12, r1 - adds r6, r0, 0 - ldr r0, _0811D328 @ =gUnknown_03004DE0 - mov r9, r0 -_0811D2F4: - ldr r1, _0811D328 @ =gUnknown_03004DE0 - movs r2, 0x2A - ldrsh r0, [r6, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsrs r3, r0, 8 - movs r4, 0xFF - ands r4, r0 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0811D32C - movs r2, 0x28 - ldrsh r0, [r6, r2] - cmp r3, r0 - bge _0811D318 - ldrh r3, [r6, 0x28] -_0811D318: - lsls r0, r3, 16 - lsls r1, r4, 16 - cmp r0, r1 - ble _0811D344 - lsrs r3, r1, 16 - b _0811D344 - .align 2, 0 -_0811D324: .4byte 0x0200c000 -_0811D328: .4byte gUnknown_03004DE0 -_0811D32C: - lsls r0, r4, 16 - asrs r0, 16 - movs r2, 0x28 - ldrsh r1, [r6, r2] - cmp r0, r1 - ble _0811D33A - ldrh r4, [r6, 0x28] -_0811D33A: - lsls r0, r4, 16 - lsls r1, r3, 16 - cmp r0, r1 - bgt _0811D344 - lsrs r4, r1, 16 -_0811D344: - ldr r5, _0811D368 @ =0x0200c000 - movs r0, 0x2A - ldrsh r2, [r5, r0] - lsls r2, 1 - add r2, r9 - lsls r1, r3, 16 - asrs r1, 8 - lsls r0, r4, 16 - asrs r0, 16 - orrs r0, r1 - strh r0, [r2] - mov r1, r12 - cmp r1, 0 - beq _0811D36C - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811D392 - .align 2, 0 -_0811D368: .4byte 0x0200c000 -_0811D36C: - adds r0, r5, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - mov r2, r8 - lsls r0, r2, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r2, r0, 16 - mov r8, r2 - asrs r0, 16 - cmp r0, 0xF - ble _0811D2F4 -_0811D392: - ldr r0, _0811D3AC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811D3AC: .4byte 0x0200c000 - thumb_func_end sub_811D2D8 - - thumb_func_start sub_811D3B0 -sub_811D3B0: @ 811D3B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _0811D3FC - ldr r1, _0811D3EC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811D3F8 @ =sub_811D1C8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - b _0811D414 - .align 2, 0 -_0811D3EC: .4byte 0x040000b0 -_0811D3F0: .4byte 0x0000c5ff -_0811D3F4: .4byte 0x00007fff -_0811D3F8: .4byte sub_811D1C8 -_0811D3FC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _0811D418 @ =gUnknown_083FD93A - movs r3, 0xA - ldrsh r0, [r2, r3] - subs r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0xE] - movs r0, 0x1 -_0811D414: - pop {r1} - bx r1 - .align 2, 0 -_0811D418: .4byte gUnknown_083FD93A - thumb_func_end sub_811D3B0 - - thumb_func_start sub_811D41C -sub_811D41C: @ 811D41C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - beq _0811D430 - movs r0, 0 - b _0811D434 -_0811D430: - movs r0, 0x1 - strh r0, [r1, 0x8] -_0811D434: - pop {r1} - bx r1 - thumb_func_end sub_811D41C - - thumb_func_start sub_811D438 -sub_811D438: @ 811D438 - push {r4,lr} - ldr r4, _0811D4A0 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A4 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A8 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl sub_811D67C - ldr r2, _0811D4AC @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811D46E - ldr r1, _0811D4B0 @ =0x040000d4 - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811D4B8 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811D46E: - ldr r1, _0811D4BC @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811D4C0 @ =REG_WIN0H - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811D4C4 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D4A0: .4byte 0x040000b0 -_0811D4A4: .4byte 0x0000c5ff -_0811D4A8: .4byte 0x00007fff -_0811D4AC: .4byte 0x0200c000 -_0811D4B0: .4byte 0x040000d4 -_0811D4B4: .4byte gUnknown_03004DE0 -_0811D4B8: .4byte 0x800000a0 -_0811D4BC: .4byte REG_WININ -_0811D4C0: .4byte REG_WIN0H -_0811D4C4: .4byte 0xa2400001 - thumb_func_end sub_811D438 - - thumb_func_start sub_811D4C8 -sub_811D4C8: @ 811D4C8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x18] - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _0811D524 @ =sub_811D54C - movs r1, 0x3 - str r3, [sp] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0811D528 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - mov r0, r8 - strh r0, [r1, 0xA] - strh r4, [r1, 0xC] - strh r5, [r1, 0xE] - strh r6, [r1, 0x10] - ldr r3, [sp] - strh r3, [r1, 0x12] - strh r0, [r1, 0x14] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D524: .4byte sub_811D54C -_0811D528: .4byte gTasks - thumb_func_end sub_811D4C8 - - thumb_func_start sub_811D52C -sub_811D52C: @ 811D52C - push {lr} - ldr r0, _0811D540 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0811D544 - movs r0, 0 - b _0811D546 - .align 2, 0 -_0811D540: .4byte sub_811D54C -_0811D544: - movs r0, 0x1 -_0811D546: - pop {r1} - bx r1 - thumb_func_end sub_811D52C - - thumb_func_start sub_811D54C -sub_811D54C: @ 811D54C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D57C @ =gUnknown_083FD948 - ldr r2, _0811D580 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D55E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D55E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D57C: .4byte gUnknown_083FD948 -_0811D580: .4byte gTasks - thumb_func_end sub_811D54C - - thumb_func_start sub_811D584 -sub_811D584: @ 811D584 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D59C - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D5C0 -_0811D59C: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _0811D5B4 - movs r0, 0x10 - strh r0, [r4, 0x16] -_0811D5B4: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D5DC @ =0x00002d6b - bl BlendPalettes -_0811D5C0: - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0xF - ble _0811D5D2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] -_0811D5D2: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D5DC: .4byte 0x00002d6b - thumb_func_end sub_811D584 - - thumb_func_start sub_811D5E0 -sub_811D5E0: @ 811D5E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0811D5F8 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _0811D61A -_0811D5F8: - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - bge _0811D60E - movs r0, 0 - strh r0, [r4, 0x16] -_0811D60E: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _0811D640 @ =0x00002d6b - bl BlendPalettes -_0811D61A: - movs r0, 0x16 - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _0811D64E - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0811D648 - ldr r0, _0811D644 @ =sub_811D54C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - b _0811D64E - .align 2, 0 -_0811D640: .4byte 0x00002d6b -_0811D644: .4byte sub_811D54C -_0811D648: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - strh r1, [r4, 0x8] -_0811D64E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811D5E0 - - thumb_func_start sub_811D658 -sub_811D658: @ 811D658 - push {lr} - ldr r0, _0811D674 @ =gUnknown_083FD708 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x3C - bl memset - ldr r0, _0811D678 @ =0x0200c014 - adds r1, r0, 0x2 - bl sub_8057B14 - pop {r0} - bx r0 - .align 2, 0 -_0811D674: .4byte gUnknown_083FD708 -_0811D678: .4byte 0x0200c014 - thumb_func_end sub_811D658 - - thumb_func_start sub_811D67C -sub_811D67C: @ 811D67C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_811D67C - - thumb_func_start sub_811D690 -sub_811D690: @ 811D690 - ldr r1, _0811D6A4 @ =REG_BG0CNT - ldrh r1, [r1] - lsrs r1, 2 - lsls r1, 30 - lsrs r1, 16 - movs r2, 0xC0 - lsls r2, 19 - adds r1, r2 - str r1, [r0] - bx lr - .align 2, 0 -_0811D6A4: .4byte REG_BG0CNT - thumb_func_end sub_811D690 - - thumb_func_start sub_811D6A8 -sub_811D6A8: @ 811D6A8 - push {r4,lr} - ldr r3, _0811D6D0 @ =REG_BG0CNT - ldrh r2, [r3] - lsrs r2, 8 - ldrh r3, [r3] - lsrs r3, 2 - lsls r2, 27 - lsrs r2, 16 - lsls r3, 30 - lsrs r3, 16 - movs r4, 0xC0 - lsls r4, 19 - adds r2, r4 - str r2, [r0] - adds r3, r4 - str r3, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D6D0: .4byte REG_BG0CNT - thumb_func_end sub_811D6A8 - - thumb_func_start sub_811D6D4 -sub_811D6D4: @ 811D6D4 - push {lr} - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - pop {r0} - bx r0 - thumb_func_end sub_811D6D4 - - thumb_func_start sub_811D6E8 -sub_811D6E8: @ 811D6E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - ldr r0, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r4, 16 - movs r6, 0 - lsrs r5, r4, 16 - cmp r4, 0 - ble _0811D750 - lsls r0, r7, 16 - asrs r0, 16 - mov r9, r0 - lsls r1, 16 - mov r8, r1 - lsls r0, r3, 16 - asrs r7, r0, 16 -_0811D720: - lsls r4, r2, 16 - asrs r4, 16 - movs r0, 0xFF - ands r0, r4 - mov r2, r8 - asrs r1, r2, 16 - bl Sin - lsls r1, r6, 1 - add r1, r10 - add r0, r9 - strh r0, [r1] - lsls r1, r5, 16 - ldr r0, _0811D760 @ =0xffff0000 - adds r1, r0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r7 - lsls r4, 16 - lsrs r2, r4, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _0811D720 -_0811D750: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D760: .4byte 0xffff0000 - thumb_func_end sub_811D6E8 - - thumb_func_start sub_811D764 -sub_811D764: @ 811D764 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - adds r5, r2, 0 - adds r4, r3, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0xA0 - lsls r2, 1 - movs r1, 0xA - bl memset - movs r1, 0 - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x8] -_0811D79C: - lsls r5, r1, 16 - asrs r0, r5, 16 - mov r10, r0 - ldr r1, [sp, 0x4] - bl Sin - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r10 - ldr r1, [sp, 0x4] - bl Cos - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, 16 - asrs r4, 16 - subs r2, r1, r4 - lsls r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r0, 16 - asrs r0, 16 - ldr r3, [sp, 0x8] - subs r1, r3, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r3, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsrs r1, r2, 16 - str r5, [sp, 0x10] - cmp r2, 0 - bge _0811D7E8 - movs r1, 0 -_0811D7E8: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _0811D7F2 - movs r6, 0xF0 -_0811D7F2: - lsls r0, r7, 16 - cmp r0, 0 - bge _0811D7FA - movs r7, 0 -_0811D7FA: - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D808 - movs r3, 0x9F - mov r8, r3 -_0811D808: - lsls r0, r1, 24 - lsrs r0, 16 - orrs r6, r0 - lsls r0, r7, 16 - asrs r0, 16 - str r0, [sp, 0xC] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r4, 15 - add r0, r9 - strh r6, [r0] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - ldr r1, [sp, 0x4] - bl Cos - lsls r0, 16 - asrs r0, 16 - ldr r2, [sp, 0x8] - subs r1, r2, r0 - lsls r1, 16 - adds r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - lsrs r3, r1, 16 - cmp r1, 0 - bge _0811D84A - movs r3, 0 -_0811D84A: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _0811D854 - movs r2, 0x9F -_0811D854: - lsls r0, r3, 16 - asrs r1, r0, 16 - adds r3, r0, 0 - lsls r5, r2, 16 - ldr r0, [sp, 0xC] - cmp r0, r1 - ble _0811D878 - adds r2, r1, 0 -_0811D864: - lsls r1, r7, 16 - ldr r0, _0811D8F8 @ =0xffff0000 - adds r1, r0 - asrs r0, r1, 15 - add r0, r9 - strh r6, [r0] - lsrs r7, r1, 16 - asrs r1, 16 - cmp r1, r2 - bgt _0811D864 -_0811D878: - lsls r1, r7, 16 - asrs r0, r3, 16 - cmp r1, r3 - bge _0811D896 - adds r2, r0, 0 -_0811D882: - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, r3 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r1, r0, 0 - asrs r0, r1, 16 - cmp r0, r2 - blt _0811D882 -_0811D896: - asrs r0, r5, 16 - cmp r4, r5 - ble _0811D8B4 - adds r1, r0, 0 -_0811D89E: - ldr r2, _0811D8F8 @ =0xffff0000 - adds r0, r4, r2 - lsrs r3, r0, 16 - mov r8, r3 - asrs r0, 15 - add r0, r9 - strh r6, [r0] - lsls r4, r3, 16 - asrs r0, r4, 16 - cmp r0, r1 - bgt _0811D89E -_0811D8B4: - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r5, 16 - cmp r4, r5 - bge _0811D8D4 - adds r2, r0, 0 -_0811D8C0: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r4, r0, 0 - asrs r0, r4, 16 - cmp r0, r2 - blt _0811D8C0 -_0811D8D4: - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x3F - bgt _0811D8E6 - b _0811D79C -_0811D8E6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811D8F8: .4byte 0xffff0000 - thumb_func_end sub_811D764 - - thumb_func_start sub_811D8FC -sub_811D8FC: @ 811D8FC - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r4, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - strh r1, [r6] - strh r2, [r6, 0x2] - strh r1, [r6, 0x4] - strh r2, [r6, 0x6] - strh r3, [r6, 0x8] - strh r7, [r6, 0xA] - strh r5, [r6, 0xC] - strh r4, [r6, 0xE] - lsls r3, 16 - asrs r3, 16 - lsls r1, 16 - asrs r1, 16 - subs r3, r1 - strh r3, [r6, 0x10] - lsls r0, r3, 16 - cmp r0, 0 - bge _0811D94E - negs r0, r3 - strh r0, [r6, 0x10] - lsls r0, r5, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xC] -_0811D94E: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r1, 16 - subs r1, r0, r1 - strh r1, [r6, 0x12] - lsls r0, r1, 16 - cmp r0, 0 - bge _0811D96C - negs r0, r1 - strh r0, [r6, 0x12] - lsls r0, r4, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xE] -_0811D96C: - movs r0, 0 - strh r0, [r6, 0x14] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811D8FC - - thumb_func_start sub_811D978 -sub_811D978: @ 811D978 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrh r0, [r3, 0x10] - mov r8, r0 - movs r1, 0x10 - ldrsh r6, [r3, r1] - ldrh r2, [r3, 0x12] - mov r12, r2 - movs r4, 0x12 - ldrsh r5, [r3, r4] - cmp r6, r5 - ble _0811D9C8 - ldrh r0, [r3, 0xC] - ldrh r2, [r3, 0x4] - adds r1, r0, r2 - strh r1, [r3, 0x4] - ldrh r2, [r3, 0x14] - add r2, r12 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r0, 0 - ldrh r7, [r3, 0xE] - cmp r1, r6 - ble _0811D9EE - ldrh r1, [r3, 0x6] - adds r0, r7, r1 - strh r0, [r3, 0x6] - mov r1, r8 - b _0811D9EA -_0811D9C8: - ldrh r0, [r3, 0xE] - ldrh r2, [r3, 0x6] - adds r1, r0, r2 - strh r1, [r3, 0x6] - ldrh r2, [r3, 0x14] - add r2, r8 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - ldrh r4, [r3, 0xC] - adds r7, r0, 0 - cmp r1, r5 - ble _0811D9EE - ldrh r1, [r3, 0x4] - adds r0, r4, r1 - strh r0, [r3, 0x4] - mov r1, r12 -_0811D9EA: - subs r0, r2, r1 - strh r0, [r3, 0x14] -_0811D9EE: - movs r5, 0 - lsls r0, r4, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA06 - movs r4, 0x4 - ldrsh r1, [r3, r4] - movs r4, 0x8 - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bge _0811DA18 -_0811DA06: - cmp r2, 0 - bge _0811DA26 - movs r0, 0x4 - ldrsh r1, [r3, r0] - movs r2, 0x8 - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bgt _0811DA26 -_0811DA18: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - cmp r0, 0 - beq _0811DA26 - strh r4, [r3, 0x4] -_0811DA26: - lsls r0, r7, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _0811DA3C - movs r4, 0x6 - ldrsh r1, [r3, r4] - movs r4, 0xA - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bge _0811DA4E -_0811DA3C: - cmp r2, 0 - bge _0811DA5C - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r2, 0xA - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bgt _0811DA5C -_0811DA4E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r10 - cmp r0, 0 - beq _0811DA5C - strh r4, [r3, 0x6] -_0811DA5C: - cmp r5, 0x2 - beq _0811DA64 - movs r0, 0 - b _0811DA66 -_0811DA64: - movs r0, 0x1 -_0811DA66: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811D978 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/berry_blender.s b/asm/berry_blender.s deleted file mode 100644 index b6ee5f9f3..000000000 --- a/asm/berry_blender.s +++ /dev/null @@ -1,9164 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x2 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte sub_804E2BC -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl sub_804E844 - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl BuyMenuDrawFieldObjects -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte gUnknown_03004854 -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte sub_804E2BC -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 - thumb_func_end sub_804F0F4 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl sub_80516C4 - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte gUnknown_03004854 -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte gUnknown_03004854 -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_80516C4 - ldr r5, _0804F470 @ =gUnknown_03004854 - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl sub_804E844 - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte gUnknown_03004854 -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte gUnknown_03004854 -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl BuyMenuDrawFieldObjects -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl sub_804E290 -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte gUnknown_03004854 -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte gUnknown_03004854 -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl sub_804E290 - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - 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 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte gUnknown_03004854 -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte gUnknown_03004854 -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte gUnknown_03004854 -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte gUnknown_03004854 - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_03004854 -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte gUnknown_03004854 -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte gUnknown_03004854 -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte gUnknown_03004854 -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl sub_804E290 - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte gUnknown_03004854 -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 -_08050AD0: - bl sub_8052228 - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl sub_8051C58 - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte gUnknown_03004854 -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte gUnknown_03004854 -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte gUnknown_03004854 -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte gUnknown_03004854 -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 -_08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510C4 -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte gUnknown_03004854 -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F18 - .4byte _08050F6C - .4byte _08050F8C - .4byte _08050FAA - .4byte _08050FD4 - .4byte _08051004 - .4byte _08051020 - .4byte _08051030 - .4byte _08051054 - .4byte _08051094 - .4byte _080510B6 -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - bne _08050E9C - b _08050FA2 -_08050E9C: - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA4 - b _080510C4 -_08050EA4: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050FA2 - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F0C @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F10 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F14 @ =gOtherText_OtherCaseIsFull - b _08050F4C - .align 2, 0 -_08050F0C: .4byte gStringVar4 -_08050F10: .4byte gLinkPlayers + 0x8 -_08050F14: .4byte gOtherText_OtherCaseIsFull -_08050F18: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F60 @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F64 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F68 @ =gOtherText_NoBerriesForBlend -_08050F4C: - adds r0, r4, 0 - bl StringAppend - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510C4 - .align 2, 0 -_08050F60: .4byte gStringVar4 -_08050F64: .4byte gLinkPlayers + 0x8 -_08050F68: .4byte gOtherText_NoBerriesForBlend -_08050F6C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F78 - b _080510C4 -_08050F78: - ldr r0, _08050F88 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _080510AC - .align 2, 0 -_08050F88: .4byte gUnknown_03004854 -_08050F8C: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050FA0 - b _080510C4 -_08050FA0: - adds r1, r2, 0 -_08050FA2: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510C4 -_08050FAA: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FCC @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FD0 @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08050FCC: .4byte gMultiText_Saving -_08050FD0: .4byte gUnknown_03004854 -_08050FD4: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - ldr r3, _08051000 @ =gUnknown_03004854 - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510C4 - .align 2, 0 -_08051000: .4byte gUnknown_03004854 -_08051004: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x37 - bl PlaySE - ldr r0, _0805101C @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_0805101C: .4byte gUnknown_03004854 -_08051020: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510C4 -_08051030: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051050 @ =gUnknown_03004854 - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08051050: .4byte gUnknown_03004854 -_08051054: - ldr r0, _0805107C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510C4 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051080 @ =0x00002222 - cmp r1, r0 - bne _08051088 - ldr r0, _08051084 @ =sub_804E538 - bl SetMainCallback2 - b _080510C4 - .align 2, 0 -_0805107C: .4byte gPaletteFade -_08051080: .4byte 0x00002222 -_08051084: .4byte sub_804E538 -_08051088: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _080510AC -_08051094: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510C4 - bl sub_800832C - ldr r1, [r5] -_080510AC: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510C4 -_080510B6: - ldr r0, _080510E0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510C4 - ldr r0, _080510E4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510C4: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510E0: .4byte gReceivedRemoteLinkPlayers -_080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte gUnknown_03004854 -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte gUnknown_03004854 -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte gUnknown_03004854 -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 -_08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte gUnknown_03004854 -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte gUnknown_03004854 -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte gUnknown_03004854 -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte gUnknown_03004854 - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte gUnknown_03004854 - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =gUnknown_03004854 - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl sub_804E844 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte gUnknown_03004854 - thumb_func_end sub_80516C4 - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte gUnknown_03004854 - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte gUnknown_03004854 - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte gUnknown_03004854 - thumb_func_end sub_8051C04 - - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 -_08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 - - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _0805200A -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F44 - .4byte _08051F58 - .4byte _08051FF8 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _0805200A -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _0805200A -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FE2 -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _0805200A -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051D18: .4byte gUnknown_03004854 -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F14 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F18 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F1C @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F20 @ =gOtherText_Berry - bl StringAppend - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F24 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F28 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F2C @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F18 @ =gUnknown_03004854 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F30 @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x8E - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F34 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F38 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x66 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F40 @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051F14: .4byte gOtherText_ResultsOfBlending -_08051F18: .4byte gUnknown_03004854 -_08051F1C: .4byte gLinkPlayers -_08051F20: .4byte gOtherText_Berry -_08051F24: .4byte gLinkPlayers + 0x8 -_08051F28: .4byte gUnknown_082165E9 -_08051F2C: .4byte gUnknown_082165EE -_08051F30: .4byte gOtherText_MaxSpeed -_08051F34: .4byte gOtherText_RPM -_08051F38: .4byte gOtherText_RequiredTime -_08051F3C: .4byte gOtherText_Min -_08051F40: .4byte gOtherText_Sec -_08051F44: - ldr r0, _08051F54 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805200A - ldr r1, [r2] - b _08051FE2 - .align 2, 0 -_08051F54: .4byte gMain -_08051F58: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FEC @ =gUnknown_03004854 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F76: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F86 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F86: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F76 - bl sub_8050760 - ldr r4, _08051FEC @ =gUnknown_03004854 - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FF0 @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF4 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FE2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805200A - .align 2, 0 -_08051FEC: .4byte gUnknown_03004854 -_08051FF0: .4byte sub_8052BD0 -_08051FF4: .4byte gScriptItemId -_08051FF8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805200A - bl sub_8051C24 - movs r0, 0x1 - b _0805200C -_0805200A: - movs r0, 0 -_0805200C: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8051C58 - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80520CC - - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte gUnknown_03004854 -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl sub_80520CC - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8052124 - - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte gUnknown_03004854 -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl sub_8052124 - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8052228 - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte sub_804E2D8 -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC - - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_804E844 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl sub_8052530 - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BBC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BC0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BC4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BC8 @ =0x0000096c - adds r6, r0, r1 - movs r0, 0 - mov r9, r0 -_08052B50: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - mov r1, r9 - strb r1, [r5] - movs r0, 0xAD - strb r0, [r5, 0x1] - strb r1, [r5, 0x2] - adds r5, 0x3 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BCC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B50 - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BBC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BC0: .4byte gMultiText_2P3P4P -_08052BC4: .4byte gSaveBlock1 -_08052BC8: .4byte 0x0000096c -_08052BCC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 - thumb_func_end sub_8052BD0 diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s index afacc19f6..14c28327d 100644 --- a/asm/cute_sketch.s +++ b/asm/cute_sketch.s @@ -6,445 +6,6 @@ .text - thumb_func_start sub_80FC7A0 -sub_80FC7A0: @ 80FC7A0 - push {lr} - ldr r2, _080FC7E8 @ =gUnknown_03005DEC - ldr r1, [r0, 0x4] - str r1, [r2] - ldr r2, _080FC7EC @ =gUnknown_03005E00 - ldrb r1, [r0, 0x1F] - strb r1, [r2] - ldr r2, _080FC7F0 @ =gUnknown_03005DE8 - ldrb r1, [r0, 0x19] - strb r1, [r2] - ldr r2, _080FC7F4 @ =gUnknown_03005DFC - ldrb r1, [r0, 0x1A] - strb r1, [r2] - ldr r2, _080FC7F8 @ =gUnknown_03005DF8 - ldrb r1, [r0, 0x1B] - strb r1, [r2] - ldr r2, _080FC7FC @ =gUnknown_03005DF0 - ldrb r1, [r0, 0x1C] - strb r1, [r2] - ldr r2, _080FC800 @ =gUnknown_03005E04 - ldrb r1, [r0, 0x1D] - strb r1, [r2] - ldr r2, _080FC804 @ =gUnknown_03005DF4 - ldrb r1, [r0, 0x1E] - strb r1, [r2] - ldrb r0, [r0] - subs r0, 0x2 - cmp r0, 0x22 - bls _080FC7DC - b _080FC928 -_080FC7DC: - lsls r0, 2 - ldr r1, _080FC808 @ =_080FC80C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC7E8: .4byte gUnknown_03005DEC -_080FC7EC: .4byte gUnknown_03005E00 -_080FC7F0: .4byte gUnknown_03005DE8 -_080FC7F4: .4byte gUnknown_03005DFC -_080FC7F8: .4byte gUnknown_03005DF8 -_080FC7FC: .4byte gUnknown_03005DF0 -_080FC800: .4byte gUnknown_03005E04 -_080FC804: .4byte gUnknown_03005DF4 -_080FC808: .4byte _080FC80C - .align 2, 0 -_080FC80C: - .4byte _080FC898 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC8F8 - .4byte _080FC928 - .4byte _080FC89E - .4byte _080FC8A4 - .4byte _080FC8B8 - .4byte _080FC8CA - .4byte _080FC928 - .4byte _080FC8E0 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC8E6 - .4byte _080FC8C4 - .4byte _080FC8EC - .4byte _080FC8F2 - .4byte _080FC928 - .4byte _080FC928 - .4byte _080FC904 -_080FC898: - bl sub_80FCAA4 - b _080FC928 -_080FC89E: - bl sub_80FCB5C - b _080FC928 -_080FC8A4: - bl sub_80FCD54 - ldr r0, _080FC8B4 @ =gUnknown_03005E00 - ldrb r0, [r0] - bl sub_80FCC18 - b _080FC928 - .align 2, 0 -_080FC8B4: .4byte gUnknown_03005E00 -_080FC8B8: - bl sub_80FCD54 - bl sub_80FCEA4 - bl sub_80FCCBC -_080FC8C4: - bl sub_80FCEA4 - b _080FC928 -_080FC8CA: - bl sub_80FCD54 - bl sub_80FD06C - bl sub_80FD06C - bl sub_80FD114 - bl sub_80FCCBC - b _080FC928 -_080FC8E0: - bl sub_80FCF3C - b _080FC928 -_080FC8E6: - bl sub_80FCD54 - b _080FC928 -_080FC8EC: - bl sub_80FD06C - b _080FC928 -_080FC8F2: - bl sub_80FD114 - b _080FC928 -_080FC8F8: - bl sub_80FCAC4 - movs r0, 0x3 - bl sub_80FC92C - b _080FC928 -_080FC904: - bl sub_80FCD54 - bl sub_80FD06C - bl sub_80FD114 - bl sub_80FCCBC - bl sub_80FCB5C - bl sub_80FCB5C - movs r0, 0x2 - bl sub_80FC92C - movs r0, 0x4 - bl sub_80FC9E4 -_080FC928: - pop {r0} - bx r0 - thumb_func_end sub_80FC7A0 - - thumb_func_start sub_80FC92C -sub_80FC92C: @ 80FC92C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0 - ldr r0, _080FC9CC @ =gUnknown_03005DF0 - mov r8, r0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FC9BE - ldr r1, _080FC9D0 @ =gUnknown_03005DF8 - mov r12, r1 - ldr r3, _080FC9D4 @ =gUnknown_03005E04 - mov r10, r3 - ldr r0, _080FC9D8 @ =gUnknown_03005DE8 - mov r9, r0 -_080FC952: - ldr r1, _080FC9DC @ =gUnknown_03005DFC - ldrb r0, [r1] - adds r0, r2 - mov r3, r10 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080FC9E0 @ =gUnknown_03005DEC - ldr r1, [r3] - adds r1, r0 - mov r3, r9 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r4, 0 - adds r5, r2, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r4, r0 - bcs _080FC9B2 - movs r6, 0x80 - lsls r6, 8 -_080FC97E: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080FC9A2 - movs r0, 0x1F - ands r0, r1 - adds r0, r7 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080FC998 - movs r2, 0x1F -_080FC998: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080FC9A2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, 0x2 - mov r1, r12 - ldrb r1, [r1] - cmp r4, r1 - bcc _080FC97E -_080FC9B2: - lsls r0, r5, 24 - lsrs r2, r0, 24 - mov r3, r8 - ldrb r3, [r3] - cmp r2, r3 - bcc _080FC952 -_080FC9BE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC9CC: .4byte gUnknown_03005DF0 -_080FC9D0: .4byte gUnknown_03005DF8 -_080FC9D4: .4byte gUnknown_03005E04 -_080FC9D8: .4byte gUnknown_03005DE8 -_080FC9DC: .4byte gUnknown_03005DFC -_080FC9E0: .4byte gUnknown_03005DEC - thumb_func_end sub_80FC92C - - thumb_func_start sub_80FC9E4 -sub_80FC9E4: @ 80FC9E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080FCA8C @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FCA7C - ldr r1, _080FCA90 @ =gUnknown_03005DF8 - mov r10, r1 -_080FCA02: - ldr r3, _080FCA94 @ =gUnknown_03005DFC - ldrb r0, [r3] - adds r0, r2 - ldr r3, _080FCA98 @ =gUnknown_03005E04 - ldrb r1, [r3] - muls r0, r1 - lsls r0, 1 - ldr r3, _080FCA9C @ =gUnknown_03005DEC - ldr r1, [r3] - adds r1, r0 - ldr r3, _080FCAA0 @ =gUnknown_03005DE8 - ldrb r0, [r3] - lsls r0, 1 - adds r3, r1, r0 - movs r5, 0 - adds r7, r2, 0x1 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcs _080FCA70 - movs r1, 0x80 - lsls r1, 8 - mov r9, r1 - movs r0, 0x1F - mov r12, r0 - mov r1, r8 - subs r6, r0, r1 -_080FCA38: - ldrh r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _080FCA60 - movs r4, 0x1F - mov r2, r12 - ands r2, r1 - cmp r2, r6 - ble _080FCA56 - mov r1, r8 - lsrs r0, r1, 1 - subs r0, r4, r0 - lsls r0, 24 - lsrs r2, r0, 24 -_080FCA56: - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] -_080FCA60: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, 0x2 - mov r0, r10 - ldrb r0, [r0] - cmp r5, r0 - bcc _080FCA38 -_080FCA70: - lsls r0, r7, 24 - lsrs r2, r0, 24 - ldr r1, _080FCA8C @ =gUnknown_03005DF0 - ldrb r1, [r1] - cmp r2, r1 - bcc _080FCA02 -_080FCA7C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCA8C: .4byte gUnknown_03005DF0 -_080FCA90: .4byte gUnknown_03005DF8 -_080FCA94: .4byte gUnknown_03005DFC -_080FCA98: .4byte gUnknown_03005E04 -_080FCA9C: .4byte gUnknown_03005DEC -_080FCAA0: .4byte gUnknown_03005DE8 - thumb_func_end sub_80FC9E4 - - thumb_func_start sub_80FCAA4 -sub_80FCAA4: @ 80FCAA4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080FCAC0 @ =0x00000c7f -_080FCAAA: - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_80FD1C8 - adds r4, 0x1 - cmp r4, r5 - bls _080FCAAA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FCAC0: .4byte 0x00000c7f - thumb_func_end sub_80FCAA4 - - thumb_func_start sub_80FCAC4 -sub_80FCAC4: @ 80FCAC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r2, 0 - ldr r0, _080FCB44 @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcs _080FCB36 - ldr r0, _080FCB48 @ =gUnknown_03005DEC - mov r8, r0 - ldr r3, _080FCB4C @ =gUnknown_03005DF8 -_080FCADC: - ldr r0, _080FCB50 @ =gUnknown_03005DFC - ldrb r1, [r0] - adds r1, r2 - ldr r0, _080FCB54 @ =gUnknown_03005E04 - ldrb r0, [r0] - muls r0, r1 - lsls r0, 1 - mov r4, r8 - ldr r1, [r4] - adds r1, r0 - ldr r0, _080FCB58 @ =gUnknown_03005DE8 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r1, r0 - movs r5, 0 - adds r6, r2, 0x1 - ldrb r0, [r3] - cmp r5, r0 - bcs _080FCB2A - movs r0, 0x80 - lsls r0, 8 - adds r7, r0, 0 -_080FCB08: - ldrh r0, [r4] - ands r0, r7 - cmp r0, 0 - bne _080FCB1C - adds r0, r4, 0 - str r3, [sp] - bl sub_80FD39C - strh r0, [r4] - ldr r3, [sp] -_080FCB1C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x2 - ldrb r0, [r3] - cmp r5, r0 - bcc _080FCB08 -_080FCB2A: - lsls r0, r6, 24 - lsrs r2, r0, 24 - ldr r0, _080FCB44 @ =gUnknown_03005DF0 - ldrb r0, [r0] - cmp r2, r0 - bcc _080FCADC -_080FCB36: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCB44: .4byte gUnknown_03005DF0 -_080FCB48: .4byte gUnknown_03005DEC -_080FCB4C: .4byte gUnknown_03005DF8 -_080FCB50: .4byte gUnknown_03005DFC -_080FCB54: .4byte gUnknown_03005E04 -_080FCB58: .4byte gUnknown_03005DE8 - thumb_func_end sub_80FCAC4 thumb_func_start sub_80FCB5C sub_80FCB5C: @ 80FCB5C diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s deleted file mode 100644 index 1130e085e..000000000 --- a/asm/evolution_graphics.s +++ /dev/null @@ -1,1829 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_84 -nullsub_84: @ 814951C - bx lr - thumb_func_end nullsub_84 - - thumb_func_start sub_8149520 -sub_8149520: @ 8149520 - push {r4,r5,lr} - sub sp, 0x4 - movs r4, 0 - ldr r5, _08149554 @ =gUnknown_08416ED0 -_08149528: - adds r0, r4, 0 - adds r0, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xB - bls _08149528 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149554: .4byte gUnknown_08416ED0 - thumb_func_end sub_8149520 - - thumb_func_start sub_8149558 -sub_8149558: @ 8149558 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _08149606 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x50 - bl __divsi3 - movs r1, 0x58 - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08149592 - adds r0, 0x3 -_08149592: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081495BC - ldrh r0, [r4, 0x38] - subs r0, 0x1 - strh r0, [r4, 0x38] -_081495BC: - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _081495D2 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - b _081495D8 -_081495D2: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 -_081495D8: - strb r0, [r1] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _081495E4 - adds r0, 0x3 -_081495E4: - asrs r0, 2 - adds r0, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _081495F2 - movs r2, 0x1F -_081495F2: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - b _0814960C -_08149606: - adds r0, r4, 0 - bl DestroySprite -_0814960C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149558 - - thumb_func_start sub_8149614 -sub_8149614: @ 8149614 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08149664 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x58 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0814965E - ldr r4, _08149668 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x30 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x34 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r4, 0x1C - adds r3, r4 - ldr r0, _0814966C @ =sub_8149558 - str r0, [r3] -_0814965E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149664: .4byte gSpriteTemplate_8416EB8 -_08149668: .4byte gSprites -_0814966C: .4byte sub_8149558 - thumb_func_end sub_8149614 - - thumb_func_start sub_8149670 -sub_8149670: @ 8149670 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x57 - bgt _081496D6 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x5 - bl __divsi3 - adds r0, 0x8 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081496A8 - adds r0, 0x3 -_081496A8: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 26 - lsrs r0, 24 - movs r1, 0x28 - bl Sin - adds r0, 0x8 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _081496DC -_081496D6: - adds r0, r4, 0 - bl DestroySprite -_081496DC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149670 - - thumb_func_start sub_81496E4 -sub_81496E4: @ 81496E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08149740 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0814973A - ldr r4, _08149744 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x8 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0xC - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x32 - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _08149748 @ =sub_8149670 - str r0, [r3] -_0814973A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149740: .4byte gSpriteTemplate_8416EB8 -_08149744: .4byte gSprites -_08149748: .4byte sub_8149670 - thumb_func_end sub_81496E4 - - thumb_func_start sub_814974C -sub_814974C: @ 814974C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _08149788 - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - subs r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - b _0814978E -_08149788: - adds r0, r4, 0 - bl DestroySprite -_0814978E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_814974C - - thumb_func_start sub_8149794 -sub_8149794: @ 8149794 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _081497F0 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081497EA - ldr r4, _081497F4 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - strh r5, [r2, 0x34] - movs r0, 0x78 - strh r0, [r2, 0x38] - strh r6, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x7C - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _081497F8 @ =sub_814974C - str r0, [r3] -_081497EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081497F0: .4byte gSpriteTemplate_8416EB8 -_081497F4: .4byte gSprites -_081497F8: .4byte sub_814974C - thumb_func_end sub_8149794 - - thumb_func_start sub_81497FC -sub_81497FC: @ 81497FC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08149810 - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_08149810: - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x7F - bgt _081498C0 - lsls r0, r1, 24 - lsrs r0, 24 - movs r5, 0x38 - ldrsh r1, [r4, r5] - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x3C - ldrsh r0, [r4, r2] - muls r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r0, 0x78 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x3A] - adds r3, r0, 0x1 - strh r3, [r4, 0x3A] - movs r5, 0x3A - ldrsh r1, [r4, r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - cmp r0, 0 - bge _08149854 - adds r0, 0x7F -_08149854: - asrs r0, 7 - movs r1, 0x1F - subs r1, r0 - lsls r1, 24 - lsrs r2, r1, 24 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x40 - ble _08149870 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - strb r0, [r1] - b _081498A0 -_08149870: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 - strb r0, [r1] - ldrh r1, [r4, 0x3A] - movs r5, 0x3A - ldrsh r0, [r4, r5] - cmp r0, 0x70 - ble _081498A0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081498A0 - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] -_081498A0: - cmp r2, 0x13 - bhi _081498A6 - movs r2, 0x14 -_081498A6: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _081498C6 -_081498C0: - adds r0, r4, 0 - bl DestroySprite -_081498C6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81497FC - - thumb_func_start sub_81498CC -sub_81498CC: @ 81498CC - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _08149948 @ =gSpriteTemplate_8416EB8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _0814993C - bl Random - ldr r6, _0814994C @ =gSprites - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - adds r4, r5, r6 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - bl __umodsi3 - movs r1, 0x3 - subs r1, r0 - movs r0, 0 - mov r8, r0 - strh r1, [r4, 0x34] - bl Random - movs r1, 0x3F - ands r1, r0 - adds r1, 0x30 - strh r1, [r4, 0x38] - mov r0, r8 - strh r0, [r4, 0x3C] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r4, 0x3] - adds r4, 0x43 - movs r0, 0x14 - strb r0, [r4] - adds r6, 0x1C - adds r5, r6 - ldr r0, _08149950 @ =sub_81497FC - str r0, [r5] -_0814993C: - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149948: .4byte gSpriteTemplate_8416EB8 -_0814994C: .4byte gSprites -_08149950: .4byte sub_81497FC - thumb_func_end sub_81498CC - - thumb_func_start sub_8149954 -sub_8149954: @ 8149954 - push {lr} - ldr r0, _08149968 @ =gUnknown_08416E84 - bl LoadCompressedObjectPic - ldr r0, _0814996C @ =gUnknown_08416E94 - bl LoadSpritePalettes - pop {r0} - bx r0 - .align 2, 0 -_08149968: .4byte gUnknown_08416E84 -_0814996C: .4byte gUnknown_08416E94 - thumb_func_end sub_8149954 - - thumb_func_start sub_8149970 -sub_8149970: @ 8149970 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149998 @ =sub_81499A0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0814999C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149998: .4byte sub_81499A0 -_0814999C: .4byte gTasks - thumb_func_end sub_8149970 - - thumb_func_start sub_81499A0 -sub_81499A0: @ 81499A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _081499E4 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - movs r0, 0xA - ldrsh r1, [r5, r0] - movs r0, 0x3 - lsls r0, r1 - ldr r1, _081499E8 @ =0x00007fff - str r1, [sp] - movs r1, 0xA - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081499EC @ =sub_81499F0 - str r0, [r5] - movs r0, 0x8C - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081499E4: .4byte gTasks -_081499E8: .4byte 0x00007fff -_081499EC: .4byte sub_81499F0 - thumb_func_end sub_81499A0 - - thumb_func_start sub_81499F0 -sub_81499F0: @ 81499F0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149A48 @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0x3F - bgt _08149A4C - movs r0, 0x7 - ands r0, r2 - adds r7, r3, 0 - cmp r0, 0 - bne _08149A36 - movs r4, 0 - adds r6, r1, 0 -_08149A18: - ldrh r1, [r6, 0x26] - movs r0, 0x78 - ands r0, r1 - lsls r0, 1 - lsls r1, r4, 6 - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl sub_8149614 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08149A18 -_08149A36: - ldr r0, _08149A48 @ =gTasks - adds r1, r7, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149A54 - .align 2, 0 -_08149A48: .4byte gTasks -_08149A4C: - movs r0, 0x60 - strh r0, [r1, 0x26] - ldr r0, _08149A5C @ =sub_8149A60 - str r0, [r1] -_08149A54: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08149A5C: .4byte sub_8149A60 - thumb_func_end sub_81499F0 - - thumb_func_start sub_8149A60 -sub_8149A60: @ 8149A60 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08149A80 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r3, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _08149A84 - subs r0, r3, 0x1 - strh r0, [r1, 0x26] - b _08149A8A - .align 2, 0 -_08149A80: .4byte gTasks -_08149A84: - adds r0, r2, 0 - bl DestroyTask -_08149A8A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8149A60 - - thumb_func_start sub_8149A90 -sub_8149A90: @ 8149A90 - push {lr} - ldr r0, _08149AA4 @ =sub_8149AA8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08149AA4: .4byte sub_8149AA8 - thumb_func_end sub_8149A90 - - thumb_func_start sub_8149AA8 -sub_8149AA8: @ 8149AA8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r1, _08149AD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _08149AD8 @ =sub_8149ADC - str r1, [r0] - movs r0, 0xB7 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149AD4: .4byte gTasks -_08149AD8: .4byte sub_8149ADC - thumb_func_end sub_8149AA8 - - thumb_func_start sub_8149ADC -sub_8149ADC: @ 8149ADC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149B20 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x5F - bgt _08149B24 - adds r6, r2, 0 - cmp r0, 0x5 - bgt _08149B0E - movs r4, 0 -_08149AFC: - lsls r0, r4, 28 - lsrs r0, 24 - bl sub_81496E4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _08149AFC -_08149B0E: - ldr r0, _08149B20 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149B28 - .align 2, 0 -_08149B20: .4byte gTasks -_08149B24: - ldr r0, _08149B30 @ =sub_8149B34 - str r0, [r1] -_08149B28: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149B30: .4byte sub_8149B34 - thumb_func_end sub_8149ADC - - thumb_func_start sub_8149B34 -sub_8149B34: @ 8149B34 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_8149B34 - - thumb_func_start sub_8149B44 -sub_8149B44: @ 8149B44 - push {lr} - ldr r0, _08149B58 @ =sub_8149B5C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08149B58: .4byte sub_8149B5C - thumb_func_end sub_8149B44 - - thumb_func_start sub_8149B5C -sub_8149B5C: @ 8149B5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r1, _08149B88 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _08149B8C @ =sub_8149B90 - str r1, [r0] - movs r0, 0x66 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08149B88: .4byte gTasks -_08149B8C: .4byte sub_8149B90 - thumb_func_end sub_8149B5C - - thumb_func_start sub_8149B90 -sub_8149B90: @ 8149B90 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08149BFC @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x2F - bgt _08149C00 - adds r6, r2, 0 - cmp r0, 0 - bne _08149BC4 - movs r4, 0 -_08149BB0: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x4 - bl sub_8149794 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08149BB0 -_08149BC4: - ldr r0, _08149BFC @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - bne _08149BEA - movs r4, 0 -_08149BD6: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x8 - bl sub_8149794 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08149BD6 -_08149BEA: - ldr r0, _08149BFC @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149C04 - .align 2, 0 -_08149BFC: .4byte gTasks -_08149C00: - ldr r0, _08149C0C @ =sub_8149C10 - str r0, [r1] -_08149C04: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149C0C: .4byte sub_8149C10 - thumb_func_end sub_8149B90 - - thumb_func_start sub_8149C10 -sub_8149C10: @ 8149C10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_8149C10 - - thumb_func_start sub_8149C20 -sub_8149C20: @ 8149C20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149C48 @ =sub_8149C50 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149C4C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149C48: .4byte sub_8149C50 -_08149C4C: .4byte gTasks - thumb_func_end sub_8149C20 - - thumb_func_start sub_8149C50 -sub_8149C50: @ 8149C50 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _08149C98 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - ldr r0, _08149C9C @ =gPlttBufferFaded + 0x40 - ldr r1, _08149CA0 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _08149CA4 @ =0xfff9001c - ldr r1, _08149CA8 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08149CAC @ =sub_8149CB0 - str r0, [r5] - movs r0, 0xCA - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149C98: .4byte gTasks -_08149C9C: .4byte gPlttBufferFaded + 0x40 -_08149CA0: .4byte gPlttBufferUnfaded + 0x40 -_08149CA4: .4byte 0xfff9001c -_08149CA8: .4byte 0x00007fff -_08149CAC: .4byte sub_8149CB0 - thumb_func_end sub_8149C50 - - thumb_func_start sub_8149CB0 -sub_8149CB0: @ 8149CB0 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08149CE8 @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _08149D2C - adds r0, r2, 0 - cmp r0, 0 - beq _08149CEC - cmp r0, 0x20 - beq _08149D00 - cmp r2, 0x31 - bgt _08149D10 - bl Random - movs r1, 0x7 - ands r0, r1 - bl sub_81498CC - b _08149D10 - .align 2, 0 -_08149CE8: .4byte gTasks -_08149CEC: - movs r4, 0 -_08149CEE: - adds r0, r4, 0 - bl sub_81498CC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08149CEE - b _08149D10 -_08149D00: - ldr r0, _08149D20 @ =0xffff001c - ldr r1, _08149D24 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08149D10: - ldr r0, _08149D28 @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149D30 - .align 2, 0 -_08149D20: .4byte 0xffff001c -_08149D24: .4byte 0x00007fff -_08149D28: .4byte gTasks -_08149D2C: - ldr r0, _08149D38 @ =sub_8149D3C - str r0, [r1] -_08149D30: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149D38: .4byte sub_8149D3C - thumb_func_end sub_8149CB0 - - thumb_func_start sub_8149D3C -sub_8149D3C: @ 8149D3C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08149D58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08149D54 - adds r0, r2, 0 - bl DestroyTask -_08149D54: - pop {r0} - bx r0 - .align 2, 0 -_08149D58: .4byte gPaletteFade - thumb_func_end sub_8149D3C - - thumb_func_start sub_8149D5C -sub_8149D5C: @ 8149D5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08149D84 @ =sub_8149D8C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149D88 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08149D84: .4byte sub_8149D8C -_08149D88: .4byte gTasks - thumb_func_end sub_8149D5C - - thumb_func_start sub_8149D8C -sub_8149D8C: @ 8149D8C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8149520 - ldr r0, _08149DD4 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - ldr r0, _08149DD8 @ =gPlttBufferFaded + 0x40 - ldr r1, _08149DDC @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _08149DE0 @ =0xfff90001 - ldr r1, _08149DE4 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08149DE8 @ =sub_8149DEC - str r0, [r5] - movs r0, 0xCA - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08149DD4: .4byte gTasks -_08149DD8: .4byte gPlttBufferFaded + 0x40 -_08149DDC: .4byte gPlttBufferUnfaded + 0x40 -_08149DE0: .4byte 0xfff90001 -_08149DE4: .4byte 0x00007fff -_08149DE8: .4byte sub_8149DEC - thumb_func_end sub_8149D8C - - thumb_func_start sub_8149DEC -sub_8149DEC: @ 8149DEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08149E24 @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _08149E68 - adds r0, r2, 0 - cmp r0, 0 - beq _08149E28 - cmp r0, 0x20 - beq _08149E3C - cmp r2, 0x31 - bgt _08149E4C - bl Random - movs r1, 0x7 - ands r0, r1 - bl sub_81498CC - b _08149E4C - .align 2, 0 -_08149E24: .4byte gTasks -_08149E28: - movs r4, 0 -_08149E2A: - adds r0, r4, 0 - bl sub_81498CC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08149E2A - b _08149E4C -_08149E3C: - ldr r0, _08149E5C @ =0xffff0001 - ldr r1, _08149E60 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08149E4C: - ldr r0, _08149E64 @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08149E6C - .align 2, 0 -_08149E5C: .4byte 0xffff0001 -_08149E60: .4byte 0x00007fff -_08149E64: .4byte gTasks -_08149E68: - ldr r0, _08149E74 @ =sub_8149D3C - str r0, [r1] -_08149E6C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08149E74: .4byte sub_8149D3C - thumb_func_end sub_8149DEC - - thumb_func_start nullsub_85 -nullsub_85: @ 8149E78 - bx lr - thumb_func_end nullsub_85 - - thumb_func_start sub_8149E7C -sub_8149E7C: @ 8149E7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - movs r1, 0 - ldr r3, _08149FB0 @ =sub_8149FC8 - ldr r2, _08149FB4 @ =0x00007fff -_08149E96: - lsls r0, r1, 1 - add r0, sp - adds r0, 0x4 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _08149E96 - adds r0, r3, 0 - movs r1, 0 - bl CreateTask - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08149FB8 @ =gTasks - mov r1, r8 - lsls r6, r1, 2 - add r6, r8 - lsls r6, 3 - adds r6, r0 - strh r5, [r6, 0xA] - strh r7, [r6, 0xC] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r6, 0xE] - movs r0, 0x10 - strh r0, [r6, 0x10] - movs r4, 0x80 - lsls r4, 9 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r0, 0x10 - ldrsh r1, [r6, r0] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r1, _08149FBC @ =gSprites - mov r9, r1 - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - mov r3, r9 - adds r3, 0x1C - adds r0, r2, r3 - ldr r1, _08149FC0 @ =nullsub_85 - str r1, [r0] - add r2, r9 - ldrb r1, [r2, 0x1] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x3C - orrs r0, r1 - strb r0, [r2, 0x3] - movs r0, 0x3E - adds r0, r2 - mov r10, r0 - ldrb r1, [r0] - movs r5, 0x5 - negs r5, r5 - adds r0, r5, 0 - ands r0, r1 - mov r1, r10 - strb r0, [r1] - ldrb r1, [r2, 0x5] - lsrs r1, 4 - lsls r1, 5 - ldr r0, _08149FC4 @ =gPlttBufferFaded + 0x200 - mov r10, r0 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - str r3, [sp, 0x24] - bl CpuSet - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - ldr r3, [sp, 0x24] - adds r3, r1, r3 - ldr r0, _08149FC0 @ =nullsub_85 - str r0, [r3] - add r1, r9 - ldrb r0, [r1, 0x1] - ands r4, r0 - movs r0, 0x1 - orrs r4, r0 - strb r4, [r1, 0x1] - ldrb r0, [r1, 0x3] - movs r2, 0x3E - orrs r0, r2 - strb r0, [r1, 0x3] - adds r2, r1, 0 - adds r2, 0x3E - ldrb r0, [r2] - ands r5, r0 - strb r5, [r2] - ldrb r1, [r1, 0x5] - lsrs r1, 4 - lsls r1, 5 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - bl CpuSet - movs r1, 0 - strh r1, [r6, 0x18] - mov r0, r8 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08149FB0: .4byte sub_8149FC8 -_08149FB4: .4byte 0x00007fff -_08149FB8: .4byte gTasks -_08149FBC: .4byte gSprites -_08149FC0: .4byte nullsub_85 -_08149FC4: .4byte gPlttBufferFaded + 0x200 - thumb_func_end sub_8149E7C - - thumb_func_start sub_8149FC8 -sub_8149FC8: @ 8149FC8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08149FE4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x12] - movs r0, 0x8 - strh r0, [r1, 0x14] - ldr r0, _08149FE8 @ =sub_8149FEC - str r0, [r1] - bx lr - .align 2, 0 -_08149FE4: .4byte gTasks -_08149FE8: .4byte sub_8149FEC - thumb_func_end sub_8149FC8 - - thumb_func_start sub_8149FEC -sub_8149FEC: @ 8149FEC - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0814A00C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x18 - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _0814A010 - adds r0, r3, 0 - bl sub_814A208 - b _0814A032 - .align 2, 0 -_0814A00C: .4byte gTasks -_0814A010: - ldrh r1, [r2, 0x14] - movs r4, 0x14 - ldrsh r0, [r2, r4] - cmp r0, 0x80 - bne _0814A022 - adds r0, r3, 0 - bl sub_814A158 - b _0814A032 -_0814A022: - adds r0, r1, 0x2 - strh r0, [r2, 0x14] - ldrh r0, [r2, 0x12] - movs r1, 0x1 - eors r0, r1 - strh r0, [r2, 0x12] - ldr r0, _0814A038 @ =sub_814A03C - str r0, [r2] -_0814A032: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814A038: .4byte sub_814A03C - thumb_func_end sub_8149FEC - - thumb_func_start sub_814A03C -sub_814A03C: @ 814A03C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0814A060 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x18 - ldrsh r0, [r2, r3] - adds r5, r1, 0 - cmp r0, 0 - beq _0814A068 - ldr r0, _0814A064 @ =sub_814A208 - str r0, [r2] - b _0814A14C - .align 2, 0 -_0814A060: .4byte gTasks -_0814A064: .4byte sub_814A208 -_0814A068: - movs r6, 0 - movs r7, 0x12 - ldrsh r0, [r2, r7] - cmp r0, 0 - bne _0814A0B8 - movs r0, 0xE - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _0814A08E - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0xE] - adds r0, r7 - strh r0, [r2, 0xE] - b _0814A092 -_0814A08E: - strh r3, [r2, 0xE] - movs r6, 0x1 -_0814A092: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0x10 - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _0814A0B2 - ldrh r0, [r3, 0x10] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0x10] - b _0814A102 -_0814A0B2: - movs r0, 0x10 - strh r0, [r3, 0x10] - b _0814A0FC -_0814A0B8: - movs r0, 0x10 - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _0814A0D4 - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0x10] - adds r0, r7 - strh r0, [r2, 0x10] - b _0814A0D8 -_0814A0D4: - strh r3, [r2, 0x10] - movs r6, 0x1 -_0814A0D8: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0xE - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _0814A0F8 - ldrh r0, [r3, 0xE] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0xE] - b _0814A102 -_0814A0F8: - movs r0, 0x10 - strh r0, [r3, 0xE] -_0814A0FC: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0814A102: - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r5 - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r4, 0x80 - lsls r4, 9 - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r3, 0x10 - ldrsh r1, [r5, r3] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - cmp r6, 0x2 - bne _0814A14C - ldr r0, _0814A154 @ =sub_8149FEC - str r0, [r5] -_0814A14C: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814A154: .4byte sub_8149FEC - thumb_func_end sub_814A03C - - thumb_func_start sub_814A158 -sub_814A158: @ 814A158 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0814A200 @ =gSprites - mov r8, r1 - ldr r1, _0814A204 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0814A200: .4byte gSprites -_0814A204: .4byte gTasks - thumb_func_end sub_814A158 - - thumb_func_start sub_814A208 -sub_814A208: @ 814A208 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0814A2B0 @ =gSprites - mov r8, r1 - ldr r1, _0814A2B4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0814A2B0: .4byte gSprites -_0814A2B4: .4byte gTasks - thumb_func_end sub_814A208 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index c6d3c0978..54011fb4e 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -365,7 +365,7 @@ EvolutionScene: @ 8111984 movs r3, 0x4 orrs r0, r3 strb r0, [r1] - bl sub_8149954 + bl LoadEvoSparkleSpriteAndPal ldr r0, _08111C74 @ =Task_EvolutionScene movs r1, 0 bl CreateTask @@ -1035,7 +1035,7 @@ TradeEvolutionScene: @ 81120E4 movs r2, 0x4 orrs r0, r2 strb r0, [r1] - bl sub_8149954 + bl LoadEvoSparkleSpriteAndPal ldr r0, _08112264 @ =Task_TradeEvolutionScene movs r1, 0 bl CreateTask @@ -1502,7 +1502,7 @@ _081125FC: bl _08112FD0 _0811260C: movs r0, 0x11 - bl sub_8149970 + bl LaunchTask_PreEvoSparklesSet1 ldr r1, _08112628 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _0811262C @ =gTasks @@ -1537,7 +1537,7 @@ _08112646: ldr r1, _08112668 @ =0x02014800 movs r0, 0x1 strb r0, [r1, 0x3] - bl sub_8149A90 + bl LaunchTask_PreEvoSparklesSet2 strb r0, [r4, 0x2] bl _08112FD0 .align 2, 0 @@ -1600,7 +1600,7 @@ _081126CC: _081126D8: .4byte 0x02014800 _081126DC: .4byte gBattleCommunication _081126E0: - bl sub_8149B44 + bl LaunchTask_PostEvoSparklesSet1 ldr r1, _081126F4 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _081126F8 @ =gTasks @@ -1629,7 +1629,7 @@ _08112712: lsls r4, 3 adds r4, r6 ldrh r0, [r4, 0x10] - bl sub_8149C20 + bl LaunchTask_PostEvoSparklesSet2AndFlash strb r0, [r5, 0x2] b _08112992 .align 2, 0 @@ -2807,7 +2807,7 @@ _0811315C: adds r0, r2, 0 strh r0, [r1] movs r0, 0x11 - bl sub_8149970 + bl LaunchTask_PreEvoSparklesSet1 ldr r1, _08113184 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r1, _08113188 @ =gTasks @@ -2842,7 +2842,7 @@ _081131A2: ldr r1, _081131C4 @ =0x02014800 movs r0, 0x1 strb r0, [r1, 0x3] - bl sub_8149A90 + bl LaunchTask_PreEvoSparklesSet2 strb r0, [r4, 0x2] bl _08113B3A .align 2, 0 @@ -2897,7 +2897,7 @@ _08113220: _08113224: .4byte 0x02014800 _08113228: .4byte gBattleCommunication _0811322C: - bl sub_8149B44 + bl LaunchTask_PostEvoSparklesSet1 ldr r1, _08113240 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r1, _08113244 @ =gTasks @@ -2926,7 +2926,7 @@ _0811325E: lsls r4, 3 adds r4, r6 ldrh r0, [r4, 0x10] - bl sub_8149D5C + bl LaunchTask_PostEvoSparklesSet2AndFlash_Trade strb r0, [r5, 0x2] b _081132E2 .align 2, 0 diff --git a/asm/learn_move.s b/asm/learn_move.s deleted file mode 100644 index 89cd2efb8..000000000 --- a/asm/learn_move.s +++ /dev/null @@ -1,2739 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_813265C -sub_813265C: @ 813265C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813265C - - thumb_func_start sub_8132670 -sub_8132670: @ 8132670 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08132698 @ =sub_813269C - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08132698: .4byte sub_813269C - thumb_func_end sub_8132670 - - thumb_func_start sub_813269C -sub_813269C: @ 813269C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081326C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081326C0 - ldr r0, _081326CC @ =sub_81326D8 - bl SetMainCallback2 - ldr r1, _081326D0 @ =gFieldCallback - ldr r0, _081326D4 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_081326C0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081326C8: .4byte gPaletteFade -_081326CC: .4byte sub_81326D8 -_081326D0: .4byte gFieldCallback -_081326D4: .4byte sub_8080990 - thumb_func_end sub_813269C - - thumb_func_start sub_81326D8 -sub_81326D8: @ 81326D8 - push {r4,r5,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132778 @ =gUnknown_030007B0 - ldr r0, _0813277C @ =0x02017000 - str r0, [r4] - bl sub_81332A0 - ldr r1, [r4] - ldr r0, _08132780 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - ldr r2, _08132784 @ =0x000002c5 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8133558 - ldr r0, _08132788 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _0813278C @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _08132790 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r0, _08132794 @ =REG_BG0VOFS - strh r5, [r0] - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132798 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _0813279C @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _081327A0 @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132778: .4byte gUnknown_030007B0 -_0813277C: .4byte 0x02017000 -_08132780: .4byte gSpecialVar_0x8004 -_08132784: .4byte 0x000002c5 -_08132788: .4byte sub_813265C -_0813278C: .4byte gWindowConfig_81E7240 -_08132790: .4byte gWindowConfig_81E6CE4 -_08132794: .4byte REG_BG0VOFS -_08132798: .4byte gUnknown_08402D80 -_0813279C: .4byte gUnknown_08402D88 -_081327A0: .4byte sub_8132870 - thumb_func_end sub_81326D8 - - thumb_func_start sub_81327A4 -sub_81327A4: @ 81327A4 - push {r4,r5,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132844 @ =gUnknown_030007B0 - ldr r0, _08132848 @ =0x02017000 - str r0, [r4] - bl sub_8133558 - ldr r1, [r4] - ldr r0, _0813284C @ =gSpecialVar_0x8005 - ldrh r0, [r0] - ldr r2, _08132850 @ =0x000002c6 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - ldr r0, _08132854 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _08132858 @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _0813285C @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08132860 @ =REG_BG0VOFS - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132864 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _08132868 @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _0813286C @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132844: .4byte gUnknown_030007B0 -_08132848: .4byte 0x02017000 -_0813284C: .4byte gSpecialVar_0x8005 -_08132850: .4byte 0x000002c6 -_08132854: .4byte sub_813265C -_08132858: .4byte gWindowConfig_81E7240 -_0813285C: .4byte gWindowConfig_81E6CE4 -_08132860: .4byte REG_BG0VOFS -_08132864: .4byte gUnknown_08402D80 -_08132868: .4byte gUnknown_08402D88 -_0813286C: .4byte sub_8132870 - thumb_func_end sub_81327A4 - - thumb_func_start sub_8132870 -sub_8132870: @ 8132870 - push {r4,lr} - bl sub_8132908 - ldr r4, _081328E0 @ =gUnknown_030007B0 - ldr r1, [r4] - ldrb r0, [r1, 0x1D] - cmp r0, 0 - beq _08132896 - movs r0, 0 - strb r0, [r1, 0x1D] - ldr r0, [r4] - ldrb r1, [r0, 0x18] - lsls r1, 1 - adds r1, 0x1 - lsls r1, 27 - lsrs r1, 24 - movs r0, 0x58 - bl sub_814AD7C -_08132896: - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - cmp r0, 0 - beq _081328A6 - movs r0, 0 - strb r0, [r1, 0x1E] - bl sub_8133800 -_081328A6: - ldr r1, [r4] - ldr r2, _081328E4 @ =0x000002c3 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _081328C8 - adds r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - ldr r0, [r4] - ldr r1, _081328E4 @ =0x000002c3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_081328C8: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081328E0: .4byte gUnknown_030007B0 -_081328E4: .4byte 0x000002c3 - thumb_func_end sub_8132870 - - thumb_func_start sub_81328E8 -sub_81328E8: @ 81328E8 - push {r4,lr} - adds r1, r0, 0 - ldr r4, _08132904 @ =gStringVar4 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132904: .4byte gStringVar4 - thumb_func_end sub_81328E8 - - thumb_func_start sub_8132908 -sub_8132908: @ 8132908 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r1, _0813292C @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x21 - bls _08132920 - b _08132FD6 -_08132920: - lsls r0, 2 - ldr r1, _08132930 @ =_08132934 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813292C: .4byte gUnknown_030007B0 -_08132930: .4byte _08132934 - .align 2, 0 -_08132934: - .4byte _081329BC - .4byte _08132A0C - .4byte _08132A24 - .4byte _08132A2C - .4byte _08132A60 - .4byte _08132A66 - .4byte _08132A98 - .4byte _08132FD6 - .4byte _08132AAA - .4byte _08132AD0 - .4byte _08132FD6 - .4byte _08132FD6 - .4byte _08132B74 - .4byte _08132B98 - .4byte _08132DD8 - .4byte _08132DF8 - .4byte _08132BF0 - .4byte _08132C08 - .4byte _08132C2C - .4byte _08132D40 - .4byte _08132D68 - .4byte _08132DB8 - .4byte _08132DC6 - .4byte _08132FD6 - .4byte _08132C74 - .4byte _08132C8C - .4byte _08132CB0 - .4byte _08132D0C - .4byte _08132E18 - .4byte _08132E7C - .4byte _08132F58 - .4byte _08132F84 - .4byte _08132FA4 - .4byte _08132FBC -_081329BC: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - movs r4, 0 - strb r0, [r1] - bl sub_8132FEC - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r0, _08132A04 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r0, [r7] - ldr r1, _08132A08 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132A04: .4byte gSprites -_08132A08: .4byte 0x000002c3 -_08132A0C: - ldr r0, _08132A20 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132A1A - b _08132FD6 -_08132A1A: - ldr r1, [r7] - movs r0, 0x4 - b _08132FD4 - .align 2, 0 -_08132A20: .4byte gPaletteFade -_08132A24: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 -_08132A2C: - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r2, _08132A54 @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A58 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _08132A5C @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - b _08132FD6 - .align 2, 0 -_08132A54: .4byte gUnknown_030007B0 -_08132A58: .4byte 0x000002c3 -_08132A5C: .4byte gSprites -_08132A60: - bl sub_81330E8 - b _08132A9C -_08132A66: - movs r0, 0 - bl sub_8133140 - bl sub_8133800 - ldr r2, _08132A8C @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A90 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08132A94 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132A8C: .4byte gUnknown_030007B0 -_08132A90: .4byte 0x000002c3 -_08132A94: .4byte gSprites -_08132A98: - bl sub_8133248 -_08132A9C: - lsls r0, 24 - cmp r0, 0 - beq _08132AA4 - b _08132FD6 -_08132AA4: - bl sub_813362C - b _08132FD6 -_08132AAA: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132AB6 - b _08132FD6 -_08132AB6: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132ACC @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132ACC: .4byte gUnknown_030007B0 -_08132AD0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132B3A - bl sub_8133CA4 - ldr r4, _08132B1C @ =gUnknown_030007B0 - ldr r2, [r4] - ldr r1, _08132B20 @ =0x000002c5 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08132B24 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x1B] - lsls r1, 1 - adds r2, 0x20 - adds r2, r1 - ldrh r1, [r2] - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _08132B28 @ =0xffff0000 - cmp r0, r1 - beq _08132B34 - ldr r0, _08132B2C @ =gOtherText_PokeLearnedMove - bl sub_81328E8 - ldr r1, _08132B30 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - ldr r1, [r4] - movs r0, 0x1F - b _08132FD4 - .align 2, 0 -_08132B1C: .4byte gUnknown_030007B0 -_08132B20: .4byte 0x000002c5 -_08132B24: .4byte gPlayerParty -_08132B28: .4byte 0xffff0000 -_08132B2C: .4byte gOtherText_PokeLearnedMove -_08132B30: .4byte gSpecialVar_0x8004 -_08132B34: - ldr r1, [r4] - movs r0, 0x10 - b _08132FD4 -_08132B3A: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132B48 - cmp r1, 0x1 - beq _08132B48 - b _08132FD6 -_08132B48: - bl sub_8133CA4 - ldr r3, _08132B70 @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132B60 - movs r0, 0x3 - strb r0, [r1] -_08132B60: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132B6C - b _08132FD6 -_08132B6C: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132B70: .4byte gUnknown_030007B0 -_08132B74: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132B80 - b _08132FD6 -_08132B80: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132B94 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132B94: .4byte gUnknown_030007B0 -_08132B98: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - bne _08132BB4 - bl sub_8133CA4 - ldr r0, _08132BB0 @ =gSpecialVar_0x8004 - strh r4, [r0] - b _08132FCE - .align 2, 0 -_08132BB0: .4byte gSpecialVar_0x8004 -_08132BB4: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08132BC2 - cmp r4, 0x1 - beq _08132BC2 - b _08132FD6 -_08132BC2: - bl sub_8133CA4 - ldr r3, _08132BEC @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132BDA - movs r0, 0x3 - strb r0, [r1] -_08132BDA: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132BE6 - b _08132FD6 -_08132BE6: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132BEC: .4byte gUnknown_030007B0 -_08132BF0: - ldr r0, _08132C00 @ =gOtherText_DeleteOlderMove - bl sub_81328E8 - ldr r0, _08132C04 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C00: .4byte gOtherText_DeleteOlderMove -_08132C04: .4byte gUnknown_030007B0 -_08132C08: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C14 - b _08132FD6 -_08132C14: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132C28 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x12 - b _08132FD4 - .align 2, 0 -_08132C28: .4byte gUnknown_030007B0 -_08132C2C: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132C54 - bl sub_8133CA4 - ldr r0, _08132C4C @ =gOtherText_WhichMoveToForget - bl sub_81328E8 - ldr r0, _08132C50 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x13 - b _08132FD4 - .align 2, 0 -_08132C4C: .4byte gOtherText_WhichMoveToForget -_08132C50: .4byte gUnknown_030007B0 -_08132C54: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132C62 - cmp r1, 0x1 - beq _08132C62 - b _08132FD6 -_08132C62: - bl sub_8133CA4 - ldr r0, _08132C70 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132C70: .4byte gUnknown_030007B0 -_08132C74: - ldr r0, _08132C84 @ =gOtherText_StopLearningMove - bl sub_81328E8 - ldr r0, _08132C88 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C84: .4byte gOtherText_StopLearningMove -_08132C88: .4byte gUnknown_030007B0 -_08132C8C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C98 - b _08132FD6 -_08132C98: - ldr r0, _08132CAC @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1A - strb r0, [r1] - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - b _08132FD6 - .align 2, 0 -_08132CAC: .4byte gUnknown_030007B0 -_08132CB0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132CCC - bl sub_8133CA4 - ldr r0, _08132CC8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1B - b _08132FD4 - .align 2, 0 -_08132CC8: .4byte gUnknown_030007B0 -_08132CCC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132CDA - cmp r1, 0x1 - beq _08132CDA - b _08132FD6 -_08132CDA: - bl sub_8133CA4 - ldr r1, _08132D08 @ =gUnknown_030007B0 - ldr r2, [r1] - movs r3, 0xB1 - lsls r3, 2 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08132CF2 - movs r0, 0x3 - strb r0, [r2] -_08132CF2: - ldr r2, [r1] - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132D00 - movs r0, 0x5 - strb r0, [r2] -_08132D00: - ldr r1, [r1] - movs r0, 0x10 - b _08132FD4 - .align 2, 0 -_08132D08: .4byte gUnknown_030007B0 -_08132D0C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D18 - b _08132FD6 -_08132D18: - ldr r3, _08132D3C @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132D2C - movs r0, 0x3 - strb r0, [r1] -_08132D2C: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132D38 - b _08132FD6 -_08132D38: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132D3C: .4byte gUnknown_030007B0 -_08132D40: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D4C - b _08132FD6 -_08132D4C: - ldr r0, _08132D64 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r2, 0 - movs r0, 0x14 - strb r0, [r1] - subs r0, 0x15 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08132FD6 - .align 2, 0 -_08132D64: .4byte gUnknown_030007B0 -_08132D68: - ldr r0, _08132DA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132D76 - b _08132FD6 -_08132D76: - ldr r0, _08132DA8 @ =gPlayerParty - ldr r5, [r7] - ldr r2, _08132DAC @ =0x000002c5 - adds r1, r5, r2 - ldrb r1, [r1] - ldr r2, _08132DB0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08132DB4 @ =sub_81327A4 - ldrb r4, [r5, 0x1B] - lsls r4, 1 - adds r5, 0x20 - adds r5, r4 - ldrh r4, [r5] - str r4, [sp] - bl sub_809D9F0 - ldr r1, [r7] - movs r0, 0x1C - b _08132FD4 - .align 2, 0 -_08132DA4: .4byte gPaletteFade -_08132DA8: .4byte gPlayerParty -_08132DAC: .4byte 0x000002c5 -_08132DB0: .4byte gPlayerPartyCount -_08132DB4: .4byte sub_81327A4 -_08132DB8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132DC4 - b _08132FD6 -_08132DC4: - b _08132FCE -_08132DC6: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08132FD6 -_08132DD8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08132DF4 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132DF4: .4byte gUnknown_030007B0 -_08132DF8: - ldr r0, _08132E10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E06 - b _08132FD6 -_08132E06: - ldr r0, _08132E14 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - b _08132FD6 - .align 2, 0 -_08132E10: .4byte gPaletteFade -_08132E14: .4byte c2_exit_to_overworld_2_switch -_08132E18: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _08132E74 @ =gUnknown_030007B0 - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8132FEC - bl sub_8133800 - ldr r0, [r5] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08132E4E - movs r0, 0x1 - bl sub_8133030 -_08132E4E: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132E66 - ldr r0, _08132E78 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - movs r0, 0x1 - bl sub_8133140 -_08132E66: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - b _08132FD6 - .align 2, 0 -_08132E74: .4byte gUnknown_030007B0 -_08132E78: .4byte gSprites -_08132E7C: - ldr r0, _08132E9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E8A - b _08132FD6 -_08132E8A: - ldr r1, [r7] - ldr r0, _08132EA0 @ =0x000002c6 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0x4 - bne _08132EA4 - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132E9C: .4byte gPaletteFade -_08132EA0: .4byte 0x000002c6 -_08132EA4: - ldr r4, _08132F38 @ =0x000002c5 - adds r0, r1, r4 - ldrb r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08132F3C @ =gPlayerParty - adds r0, r5 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08132F40 @ =gStringVar3 - movs r1, 0xD - mov r9, r1 - mov r1, r9 - muls r1, r0 - ldr r0, _08132F44 @ =gMoveNames - mov r8, r0 - add r1, r8 - adds r0, r2, 0 - bl StringCopy - ldr r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - muls r0, r6 - adds r0, r5 - ldr r2, _08132F48 @ =0x000002c6 - adds r1, r2 - ldrb r1, [r1] - bl RemoveMonPPBonus - ldr r3, [r7] - adds r4, r3, r4 - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - ldrb r2, [r3, 0x1B] - lsls r2, 1 - adds r1, r3, 0 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - ldr r2, _08132F48 @ =0x000002c6 - adds r3, r2 - ldrb r2, [r3] - bl SetMonMoveSlot - ldr r0, _08132F4C @ =gStringVar2 - ldr r1, [r7] - ldrb r2, [r1, 0x1B] - lsls r2, 1 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - add r1, r8 - bl StringCopy - ldr r0, _08132F50 @ =gOtherText_ForgotMove123 - bl sub_81328E8 - ldr r1, [r7] - movs r0, 0x1E - strb r0, [r1] - ldr r1, _08132F54 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132F38: .4byte 0x000002c5 -_08132F3C: .4byte gPlayerParty -_08132F40: .4byte gStringVar3 -_08132F44: .4byte gMoveNames -_08132F48: .4byte 0x000002c6 -_08132F4C: .4byte gStringVar2 -_08132F50: .4byte gOtherText_ForgotMove123 -_08132F54: .4byte gSpecialVar_0x8004 -_08132F58: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F78 @ =gOtherText_ForgotOrDidNotLearnMove / deuOtherText_ForgotAndLearned - bl sub_81328E8 - ldr r0, _08132F7C @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1F - strb r0, [r1] - ldr r0, _08132F80 @ =0x0000016f - bl PlayFanfare - b _08132FD6 - .align 2, 0 -.ifdef ENGLISH -_08132F78: .4byte gOtherText_ForgotOrDidNotLearnMove -.else -_08132F78: .4byte deuOtherText_ForgotAndLearned -.endif -_08132F7C: .4byte gUnknown_030007B0 -_08132F80: .4byte 0x0000016f -_08132F84: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F9C @ =0x0000016f - bl PlayFanfare - ldr r0, _08132FA0 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x20 - b _08132FD4 - .align 2, 0 -_08132F9C: .4byte 0x0000016f -_08132FA0: .4byte gUnknown_030007B0 -_08132FA4: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132FB8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x21 - b _08132FD4 - .align 2, 0 -_08132FB8: .4byte gUnknown_030007B0 -_08132FBC: - ldr r0, _08132FE4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08132FD6 - movs r0, 0x5 - bl PlaySE -_08132FCE: - ldr r0, _08132FE8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xE -_08132FD4: - strb r0, [r1] -_08132FD6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08132FE4: .4byte gMain -_08132FE8: .4byte gUnknown_030007B0 - thumb_func_end sub_8132908 - - thumb_func_start sub_8132FEC -sub_8132FEC: @ 8132FEC - push {r4-r6,lr} - ldr r0, _08133024 @ =gWindowConfig_81E7240 - bl BasicInitMenuWindow - movs r5, 0 - ldr r4, _08133028 @ =gUnknown_08402CF8 - adds r6, r4, 0 -_08132FFA: - lsls r3, r5, 2 - ldrb r0, [r4] - adds r1, r6, 0x1 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r6, 0x2 - adds r3, r2 - ldrb r2, [r3] - ldrb r3, [r4, 0x3] - bl MenuDrawTextWindow - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0x3 - bls _08132FFA - ldr r0, _0813302C @ =gWindowConfig_81E6CE4 - bl BasicInitMenuWindow - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08133024: .4byte gWindowConfig_81E7240 -_08133028: .4byte gUnknown_08402CF8 -_0813302C: .4byte gWindowConfig_81E6CE4 - thumb_func_end sub_8132FEC - - thumb_func_start sub_8133030 -sub_8133030: @ 8133030 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _081330D4 @ =gSprites - ldr r5, _081330D8 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - movs r2, 0 - ldr r6, _081330DC @ =gUnknown_08402D08 - movs r3, 0x4 -_08133070: - ldr r0, [r5] - adds r0, r2 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xF - ble _08133070 - ldr r0, [r6] - cmp r0, 0 - beq _081330B4 - ldr r5, _081330E0 @ =gTileBuffer - adds r4, r6, 0 -_08133096: - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - ldrb r1, [r4, 0x4] - ldrb r2, [r4, 0x5] - adds r0, r5, 0 - bl MenuPrint - adds r4, 0x8 - ldr r0, [r4] - cmp r0, 0 - bne _08133096 -_081330B4: - cmp r7, 0 - bne _081330CC - ldr r0, _081330E4 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_081330CC: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081330D4: .4byte gSprites -_081330D8: .4byte gUnknown_030007B0 -_081330DC: .4byte gUnknown_08402D08 -_081330E0: .4byte gTileBuffer -_081330E4: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133030 - - thumb_func_start sub_81330E8 -sub_81330E8: @ 81330E8 - push {r4,lr} - ldr r0, _08133134 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133138 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813310C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813310C - adds r4, 0x1 -_0813310C: - cmp r4, 0 - beq _0813312A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813313C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_0813312A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133134: .4byte gMain -_08133138: .4byte gSaveBlock2 -_0813313C: .4byte gUnknown_030007B0 - thumb_func_end sub_81330E8 - - thumb_func_start sub_8133140 -sub_8133140: @ 8133140 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - ldr r4, _08133234 @ =gSprites - ldr r5, _08133238 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - adds r1, r3, 0 - ands r1, r2 - strb r1, [r0] - movs r6, 0 - ldr r7, _0813323C @ =gUnknown_08402D08 -_0813318A: - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0xF - ble _0813318A - movs r6, 0 - ldr r0, [r7] - cmp r0, 0 - beq _08133208 - mov r9, r7 - mov r10, r6 - movs r0, 0x24 - add r0, r9 - mov r8, r0 -_081331BA: - mov r0, r9 - adds r0, 0x20 - add r0, r10 - ldr r1, [r0] - ldr r0, _08133240 @ =gTileBuffer - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - mov r0, r8 - ldrb r5, [r0] - ldrb r4, [r0, 0x1] - ldr r0, _08133240 @ =gTileBuffer - adds r1, r5, 0 - adds r2, r4, 0 - bl MenuPrint - cmp r6, 0 - beq _081331F8 - adds r1, r4, 0x2 - lsls r1, 24 - lsrs r1, 24 - adds r2, r5, 0x7 - lsls r2, 24 - lsrs r2, 24 - adds r3, r4, 0x3 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - bl MenuZeroFillWindowRect -_081331F8: - movs r0, 0x8 - add r10, r0 - add r8, r0 - adds r7, 0x8 - adds r6, 0x1 - ldr r0, [r7] - cmp r0, 0 - bne _081331BA -_08133208: - ldr r0, [sp, 0x8] - cmp r0, 0 - bne _08133222 - ldr r0, _08133244 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_08133222: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133234: .4byte gSprites -_08133238: .4byte gUnknown_030007B0 -_0813323C: .4byte gUnknown_08402D08 -_08133240: .4byte gTileBuffer -_08133244: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133140 - - thumb_func_start sub_8133248 -sub_8133248: @ 8133248 - push {r4,lr} - ldr r0, _08133294 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133298 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813326C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813326C - adds r4, 0x1 -_0813326C: - cmp r4, 0 - beq _0813328A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813329C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - strb r3, [r0] -_0813328A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133294: .4byte gMain -_08133298: .4byte gSaveBlock2 -_0813329C: .4byte gUnknown_030007B0 - thumb_func_end sub_8133248 - - thumb_func_start sub_81332A0 -sub_81332A0: @ 81332A0 - push {r4,lr} - ldr r2, _081332F8 @ =gUnknown_030007B0 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x2] - ldr r0, [r2] - strb r1, [r0, 0x19] - ldr r0, [r2] - strb r1, [r0, 0x18] - ldr r0, [r2] - strb r1, [r0, 0x1C] - ldr r0, [r2] - strb r1, [r0, 0x1A] - ldr r0, [r2] - strb r1, [r0, 0x1B] - ldr r0, [r2] - strb r1, [r0, 0x1D] - ldr r0, [r2] - strb r1, [r0, 0x1E] - ldr r0, [r2] - ldr r3, _081332FC @ =0x000002c3 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r3, 0 - adds r4, r2, 0 - movs r2, 0 -_081332E0: - ldr r0, [r4] - lsls r1, r3, 1 - adds r0, 0x20 - adds r0, r1 - strh r2, [r0] - adds r3, 0x1 - cmp r3, 0x13 - ble _081332E0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081332F8: .4byte gUnknown_030007B0 -_081332FC: .4byte 0x000002c3 - thumb_func_end sub_81332A0 - - thumb_func_start sub_8133300 -sub_8133300: @ 8133300 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0xFF - ands r1, r0 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x1 - beq _08133324 - cmp r0, 0x1 - ble _0813334A - cmp r0, 0x2 - beq _08133338 - b _0813334A -_08133324: - adds r0, r1, 0 - movs r1, 0x3 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x24] - b _0813334A -_08133338: - adds r0, r1, 0 - movs r1, 0x1 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x26] -_0813334A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8133300 - - thumb_func_start sub_8133358 -sub_8133358: @ 8133358 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r6, _0813353C @ =gSpriteTemplate_8402D90 - adds r0, r6, 0 - movs r1, 0x8 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r4, _08133540 @ =gUnknown_030007B0 - ldr r1, [r4] - strb r0, [r1, 0x3] - ldr r5, _08133544 @ =gSprites - ldr r2, [r4] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - mov r8, r1 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08133548 @ =0x0000ffff - strh r1, [r0, 0x32] - adds r0, r6, 0 - movs r1, 0x48 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x4] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldr r0, _0813354C @ =gSpriteTemplate_8402DC0 - mov r9, r0 - movs r1, 0xA0 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x5] - ldr r0, [r4] - ldrb r1, [r0, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r6, 0x2 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x32] - mov r0, r9 - movs r1, 0xA0 - movs r2, 0x3C - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x6] - ldr r2, [r4] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - movs r5, 0 - ldr r6, _08133550 @ =gSpriteTemplate_8402E08 -_0813344E: - adds r2, r5, 0 - cmp r5, 0 - bge _08133456 - adds r2, r5, 0x3 -_08133456: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xD0 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - adds r0, r6, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r2, r5, 0x4 - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08133544 @ =gSprites - adds r0, r1 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _0813344E - movs r5, 0 - ldr r7, _08133550 @ =gSpriteTemplate_8402E08 - ldr r6, _08133540 @ =gUnknown_030007B0 -_081334A6: - adds r2, r5, 0 - cmp r5, 0 - bge _081334AE - adds r2, r5, 0x3 -_081334AE: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xB8 - lsls r0, 15 - adds r2, r0 - asrs r2, 16 - adds r0, r7, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r2, r5, 0 - adds r2, 0xC - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08133544 @ =gSprites - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _081334A6 - movs r5, 0 - ldr r3, _08133540 @ =gUnknown_030007B0 - movs r2, 0x4 -_08133500: - ldr r0, [r3] - adds r0, 0x3 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x13 - ble _08133500 - ldr r1, _08133548 @ =0x0000ffff - ldr r3, _08133554 @ =0x00002d9f - movs r0, 0x12 - str r0, [sp] - movs r0, 0x10 - movs r2, 0xC - bl CreateBlendedOutlineCursor - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813353C: .4byte gSpriteTemplate_8402D90 -_08133540: .4byte gUnknown_030007B0 -_08133544: .4byte gSprites -_08133548: .4byte 0x0000ffff -_0813354C: .4byte gSpriteTemplate_8402DC0 -_08133550: .4byte gSpriteTemplate_8402E08 -_08133554: .4byte 0x00002d9f - thumb_func_end sub_8133358 - - thumb_func_start sub_8133558 -sub_8133558: @ 8133558 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, _081335F4 @ =gUnknown_030007B0 - ldr r1, [r5] - ldr r2, _081335F8 @ =0x000002c5 - adds r0, r1, r2 - ldrb r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081335FC @ =gPlayerParty - adds r0, r2 - adds r1, 0x20 - bl GetMoveRelearnerMoves - ldr r1, [r5] - strb r0, [r1, 0x1A] - movs r4, 0 - ldr r0, [r5] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - bge _081335AA - adds r6, r5, 0 - movs r5, 0x52 -_08133586: - lsls r2, r4, 1 - ldr r1, [r6] - adds r0, r1, r5 - adds r1, 0x20 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08133600 @ =gMoveNames - adds r1, r2 - bl StringCopy - adds r5, 0x19 - adds r4, 0x1 - ldr r0, [r6] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - blt _08133586 -_081335AA: - ldr r4, _081335F4 @ =gUnknown_030007B0 - ldr r0, [r4] - ldr r1, _081335F8 @ =0x000002c5 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081335FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08133604 @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, [r4] - ldrb r2, [r0, 0x1A] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r2 - adds r1, 0x52 - adds r0, r1 - ldr r1, _08133608 @ =gUnknownText_Exit - bl StringCopy - ldr r1, [r4] - ldrb r0, [r1, 0x1A] - adds r0, 0x1 - strb r0, [r1, 0x1A] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081335F4: .4byte gUnknown_030007B0 -_081335F8: .4byte 0x000002c5 -_081335FC: .4byte gPlayerParty -_08133600: .4byte gMoveNames -_08133604: .4byte gStringVar1 -_08133608: .4byte gUnknownText_Exit - thumb_func_end sub_8133558 - - thumb_func_start sub_813360C -sub_813360C: @ 813360C - lsls r0, 24 - ldr r3, _08133628 @ =gUnknown_030007B0 - ldr r2, [r3] - ldrb r1, [r2, 0x18] - strb r1, [r2, 0x1C] - ldr r1, [r3] - lsrs r0, 24 - ldrb r2, [r1, 0x18] - adds r0, r2 - strb r0, [r1, 0x18] - ldr r1, [r3] - movs r0, 0x1 - strb r0, [r1, 0x1D] - bx lr - .align 2, 0 -_08133628: .4byte gUnknown_030007B0 - thumb_func_end sub_813360C - - thumb_func_start sub_813362C -sub_813362C: @ 813362C - push {r4,r5,lr} - ldr r2, _08133670 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08133688 - ldr r4, _08133674 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08133646 - b _08133796 -_08133646: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r1, _08133678 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0 - beq _0813367C - movs r0, 0x1 - negs r0, r0 - bl sub_813360C - b _08133796 - .align 2, 0 -_08133670: .4byte gMain -_08133674: .4byte gUnknown_030007B0 -_08133678: .4byte 0x000002c3 -_0813367C: - ldrb r0, [r1, 0x19] - cmp r0, 0 - bne _08133684 - b _08133796 -_08133684: - subs r0, 0x1 - b _081336DC -_08133688: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081336E8 - ldr r4, _081336C8 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r1, [r0, 0x1B] - ldrb r0, [r0, 0x1A] - subs r0, 0x1 - cmp r1, r0 - blt _081336A0 - b _08133796 -_081336A0: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - adds r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r3, _081336CC @ =0x000002c3 - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0x2 - beq _081336D0 - movs r0, 0x1 - bl sub_813360C - b _08133796 - .align 2, 0 -_081336C8: .4byte gUnknown_030007B0 -_081336CC: .4byte 0x000002c3 -_081336D0: - ldrb r2, [r1, 0x19] - ldrb r0, [r1, 0x1A] - subs r0, 0x3 - cmp r2, r0 - beq _08133796 - adds r0, r2, 0x1 -_081336DC: - strb r0, [r1, 0x19] - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - adds r0, 0x1 - strb r0, [r1, 0x1E] - b _08133796 -_081336E8: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813376C - movs r0, 0x5 - bl PlaySE - ldr r5, _08133738 @ =gUnknown_030007B0 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - beq _08133748 - movs r0, 0x8 - strb r0, [r2] - ldr r0, _0813373C @ =gStringVar2 - ldr r1, [r5] - ldrb r3, [r1, 0x1B] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 3 - adds r2, r3 - adds r2, 0x52 - adds r1, r2 - bl StringCopy - ldr r4, _08133740 @ =gStringVar4 - ldr r1, _08133744 @ =gOtherText_TeachSpecificMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - b _08133796 - .align 2, 0 -_08133738: .4byte gUnknown_030007B0 -_0813373C: .4byte gStringVar2 -_08133740: .4byte gStringVar4 -_08133744: .4byte gOtherText_TeachSpecificMove -_08133748: - ldr r4, _08133764 @ =gStringVar4 - ldr r1, _08133768 @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, [r5] - movs r0, 0xC - strb r0, [r1] - b _08133796 - .align 2, 0 -_08133764: .4byte gStringVar4 -_08133768: .4byte gOtherText_GiveUpTeachingMove -_0813376C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08133796 - movs r0, 0x5 - bl PlaySE - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xC - strb r0, [r1] - ldr r4, _081337D8 @ =gStringVar4 - ldr r1, _081337DC @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage -_08133796: - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r4, [r0] - ldrb r0, [r4, 0x1A] - cmp r0, 0x3 - bls _081337F8 - ldr r3, _081337E0 @ =gSprites - adds r5, r3, 0 - adds r5, 0xC6 - ldrb r0, [r5] - movs r1, 0x5 - negs r1, r1 - adds r2, r1, 0 - ands r2, r0 - strb r2, [r5] - movs r0, 0x85 - lsls r0, 1 - adds r0, r3 - mov r12, r0 - ldrb r0, [r0] - adds r3, r1, 0 - ands r3, r0 - mov r1, r12 - strb r3, [r1] - ldrb r0, [r4, 0x19] - cmp r0, 0 - bne _081337E4 - movs r1, 0x4 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r5] - b _081337F8 - .align 2, 0 -_081337D4: .4byte gUnknown_030007B0 -_081337D8: .4byte gStringVar4 -_081337DC: .4byte gOtherText_GiveUpTeachingMove -_081337E0: .4byte gSprites -_081337E4: - ldrb r1, [r4, 0x19] - ldrb r0, [r4, 0x1A] - subs r0, 0x3 - cmp r1, r0 - bne _081337F8 - movs r1, 0x4 - adds r0, r3, 0 - orrs r0, r1 - mov r3, r12 - strb r0, [r3] -_081337F8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813362C - - thumb_func_start sub_8133800 -sub_8133800: @ 8133800 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08133834 @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r6, [r0, 0x19] - ldr r3, _08133838 @ =gTileBuffer - mov r10, r1 - ldr r0, _0813383C @ =gBattleMoves - mov r9, r0 - movs r1, 0x2 - mov r8, r1 -_0813381C: - mov r4, r10 - ldr r2, [r4] - ldrb r0, [r2, 0x1A] - cmp r6, r0 - bcc _08133844 - adds r0, r3, 0 - ldr r1, _08133840 @ =gEmptyString_81E72B0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_08133834: .4byte gUnknown_030007B0 -_08133838: .4byte gTileBuffer -_0813383C: .4byte gBattleMoves -_08133840: .4byte gEmptyString_81E72B0 -_08133844: - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r6, r0 - bne _08133860 - adds r0, r3, 0 - ldr r1, _0813385C @ =gUnknownText_Exit - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_0813385C: .4byte gUnknownText_Exit -_08133860: - lsls r1, r6, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r2, r4 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _081338A4 - ldr r1, _0813389C @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 27 - ldr r1, _081338A0 @ =gUnknown_083CAF70 - adds r0, r1 - ldr r1, [r0] - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - lsls r4, r5, 1 - b _081338C2 - .align 2, 0 -_0813389C: .4byte gContestMoves -_081338A0: .4byte gUnknown_083CAF70 -_081338A4: - lsls r4, r5, 1 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08133938 @ =gTypeNames - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 -_081338C2: - adds r0, r7, r6 - lsls r0, 3 - adds r0, r6 - adds r0, 0x52 - mov r2, r10 - ldr r1, [r2] - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x72 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - movs r0, 0xCA - strb r0, [r3] - strb r0, [r3, 0x1] - movs r0, 0xBA - strb r0, [r3, 0x2] - adds r3, 0x3 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x4] - adds r0, r3, 0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C14 -_081338FA: - adds r3, r0, 0 - movs r0, 0xFE - strb r0, [r3] - adds r3, 0x1 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0x1 - negs r4, r4 - add r8, r4 - mov r0, r8 - cmp r0, 0 - blt _08133916 - b _0813381C -_08133916: - movs r0, 0xFF - strb r0, [r3] - ldr r0, _0813393C @ =gTileBuffer - movs r1, 0xB - movs r2, 0x1 - bl MenuPrint - movs r0, 0 - bl sub_813360C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133938: .4byte gTypeNames -_0813393C: .4byte gTileBuffer - thumb_func_end sub_8133800 - - thumb_func_start sub_8133940 -sub_8133940: @ 8133940 - push {r4-r7,lr} - sub sp, 0x34 - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _08133968 @ =gExpandedPlaceholder_Empty - mov r0, sp - bl StringCopy - ldrb r0, [r4, 0x2] - subs r0, 0x1 - cmp r0, 0x6 - bls _0813395C - b _08133AE2 -_0813395C: - lsls r0, 2 - ldr r1, _0813396C @ =_08133970 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08133968: .4byte gExpandedPlaceholder_Empty -_0813396C: .4byte _08133970 - .align 2, 0 -_08133970: - .4byte _08133AE2 - .4byte _0813398C - .4byte _08133AE2 - .4byte _081339A4 - .4byte _08133AE2 - .4byte _081339E4 - .4byte _08133A64 -_0813398C: - ldr r0, _081339A0 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - bls _081339B4 - ldrb r1, [r1, 0x1] - b _081339CE - .align 2, 0 -_081339A0: .4byte gBattleMoves -_081339A4: - ldr r0, _081339C4 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _081339CC -_081339B4: - ldr r1, _081339C8 @ =gOtherText_ThreeDashes2 - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C74 - b _081339D8 - .align 2, 0 -_081339C4: .4byte gBattleMoves -_081339C8: .4byte gOtherText_ThreeDashes2 -_081339CC: - ldrb r1, [r1, 0x3] -_081339CE: - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C14 -_081339D8: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - mov r0, sp - bl MenuPrint - b _08133AE2 -_081339E4: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133A34 @ =gContestEffects - ldr r1, _08133A38 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A14 - movs r5, 0 -_08133A14: - movs r4, 0 - ldr r7, _08133A3C @ =gUnknown_030007B0 - ldr r6, _08133A40 @ =gSprites -_08133A1A: - cmp r4, r5 - bcs _08133A44 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAnim - b _08133A58 - .align 2, 0 -_08133A34: .4byte gContestEffects -_08133A38: .4byte gContestMoves -_08133A3C: .4byte gUnknown_030007B0 -_08133A40: .4byte gSprites -_08133A44: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim -_08133A58: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A1A - b _08133AE2 -_08133A64: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133AB4 @ =gContestEffects - ldr r1, _08133AB8 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A94 - movs r5, 0 -_08133A94: - movs r4, 0 - ldr r7, _08133ABC @ =gUnknown_030007B0 - ldr r6, _08133AC0 @ =gSprites -_08133A9A: - cmp r4, r5 - bcs _08133AC4 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x3 - bl StartSpriteAnim - b _08133AD8 - .align 2, 0 -_08133AB4: .4byte gContestEffects -_08133AB8: .4byte gContestMoves -_08133ABC: .4byte gUnknown_030007B0 -_08133AC0: .4byte gSprites -_08133AC4: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - bl StartSpriteAnim -_08133AD8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A9A -_08133AE2: - add sp, 0x34 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8133940 - - thumb_func_start sub_8133AEC -sub_8133AEC: @ 8133AEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r6, _08133B88 @ =gUnknown_030007B0 - ldr r2, [r6] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - bne _08133B08 - b _08133C04 -_08133B08: - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - cmp r3, 0 - beq _08133BA0 - movs r4, 0 - lsls r0, r5, 3 - mov r8, r0 - ldr r7, _08133B8C @ =gSprites - adds r3, r6, 0 - movs r6, 0x5 - negs r6, r6 -_08133B24: - ldr r0, [r3] - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133B24 - movs r4, 0 -_08133B48: - ldr r0, _08133B90 @ =gUnknown_08402E3D - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133B94 @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _08133B48 - ldr r1, _08133B98 @ =gUnknown_083CADD4 - ldr r0, _08133B9C @ =gContestMoves - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072AB0 - b _08133C92 - .align 2, 0 -_08133B88: .4byte gUnknown_030007B0 -_08133B8C: .4byte gSprites -_08133B90: .4byte gUnknown_08402E3D -_08133B94: .4byte gUnknown_08402E24 -_08133B98: .4byte gUnknown_083CADD4 -_08133B9C: .4byte gContestMoves -_08133BA0: - movs r4, 0 - subs r6, r5, 0x1 -_08133BA4: - ldr r0, _08133BF8 @ =gUnknown_08402E39 - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133BFC @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08133BA4 - ldr r1, _08133C00 @ =gMoveDescriptions - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - str r1, [sp] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072A18 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08133C92 - lsls r1, r0, 25 - movs r0, 0x90 - lsls r0, 20 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xB - movs r2, 0x1C - movs r3, 0xC - bl MenuFillWindowRectWithBlankTile - b _08133C92 - .align 2, 0 -_08133BF8: .4byte gUnknown_08402E39 -_08133BFC: .4byte gUnknown_08402E24 -_08133C00: .4byte gMoveDescriptions -_08133C04: - cmp r3, 0 - beq _08133C5C - ldr r4, _08133C54 @ =gUnknown_08402E24 - ldrb r2, [r4, 0xF] - ldrb r1, [r4, 0x10] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldrb r2, [r4, 0x12] - ldrb r1, [r4, 0x13] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - movs r4, 0 - ldr r5, _08133C58 @ =gSprites - adds r3, r6, 0 - movs r2, 0x4 -_08133C32: - ldr r0, [r3] - adds r0, r4 - ldrb r1, [r0, 0x7] - 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] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133C32 - b _08133C86 - .align 2, 0 -_08133C54: .4byte gUnknown_08402E24 -_08133C58: .4byte gSprites -_08133C5C: - ldr r4, _08133CA0 @ =gUnknown_08402E24 - ldrb r0, [r4, 0x3] - ldrb r1, [r4, 0x4] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - ldrb r0, [r4, 0x9] - ldrb r1, [r4, 0xA] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect -_08133C86: - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect -_08133C92: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133CA0: .4byte gUnknown_08402E24 - thumb_func_end sub_8133AEC - - thumb_func_start sub_8133CA4 -sub_8133CA4: @ 8133CA4 - push {lr} - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1B - movs r3, 0xC - bl MenuZeroFillWindowRect - ldr r0, _08133CC8 @ =gUnknown_030007B0 - ldr r0, [r0] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_8133AEC - pop {r0} - bx r0 - .align 2, 0 -_08133CC8: .4byte gUnknown_030007B0 - thumb_func_end sub_8133CA4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s deleted file mode 100644 index 7df634399..000000000 --- a/asm/pokeblock_feed.s +++ /dev/null @@ -1,1836 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8147890 -sub_8147890: @ 8147890 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8147890 - - thumb_func_start sub_81478A8 -sub_81478A8: @ 81478A8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81478A8 - - thumb_func_start sub_81478BC -sub_81478BC: @ 81478BC - push {r4,lr} - sub sp, 0x4 - ldr r0, _081478D8 @ =gMain - ldr r1, _081478DC @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xD - bls _081478CE - b _08147AD0 -_081478CE: - lsls r0, 2 - ldr r1, _081478E0 @ =_081478E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081478D8: .4byte gMain -_081478DC: .4byte 0x0000043c -_081478E0: .4byte _081478E4 - .align 2, 0 -_081478E4: - .4byte _0814791C - .4byte _08147938 - .4byte _0814794C - .4byte _08147960 - .4byte _08147966 - .4byte _08147980 - .4byte _0814798C - .4byte _081479B8 - .4byte _081479DC - .4byte _081479F4 - .4byte _08147A20 - .4byte _08147A3C - .4byte _08147A5C - .4byte _08147A8C -_0814791C: - bl sub_80F9438 - bl sub_80F9368 - bl sub_8147B04 - ldr r1, _08147930 @ =gMain - ldr r2, _08147934 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147930: .4byte gMain -_08147934: .4byte 0x0000043c -_08147938: - bl ResetPaletteFade - ldr r2, _08147948 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - b _08147A44 - .align 2, 0 -_08147948: .4byte gPaletteFade -_0814794C: - bl ResetSpriteData - ldr r1, _08147958 @ =gMain - ldr r2, _0814795C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147958: .4byte gMain -_0814795C: .4byte 0x0000043c -_08147960: - bl FreeAllSpritePalettes - b _08147A44 -_08147966: - ldr r0, _08147974 @ =gWindowConfig_81E6E50 - bl SetUpWindowConfig - ldr r1, _08147978 @ =gMain - ldr r2, _0814797C @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147974: .4byte gWindowConfig_81E6E50 -_08147978: .4byte gMain -_0814797C: .4byte 0x0000043c -_08147980: - ldr r0, _08147988 @ =gWindowConfig_81E6E50 - bl MultistepInitMenuWindowBegin - b _08147A44 - .align 2, 0 -_08147988: .4byte gWindowConfig_81E6E50 -_0814798C: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _08147996 - b _08147AD0 -_08147996: - ldr r0, _081479A8 @ =0x02000000 - ldr r1, _081479AC @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, _081479B0 @ =gMain - ldr r2, _081479B4 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_081479A8: .4byte 0x02000000 -_081479AC: .4byte 0x0001ffff -_081479B0: .4byte gMain -_081479B4: .4byte 0x0000043c -_081479B8: - ldr r0, _081479D4 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081479D8 @ =gPlayerParty - adds r0, r1 - bl sub_8147B20 - lsls r0, 24 - cmp r0, 0 - bne _081479D0 - b _08147AD0 -_081479D0: - b _08147A44 - .align 2, 0 -_081479D4: .4byte gUnknown_02039310 -_081479D8: .4byte gPlayerParty -_081479DC: - bl sub_81480B4 - ldr r1, _081479EC @ =0x02000000 - ldr r2, _081479F0 @ =0x0001fffd - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_081479EC: .4byte 0x02000000 -_081479F0: .4byte 0x0001fffd -_081479F4: - ldr r0, _08147A10 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08147A14 @ =gPlayerParty - adds r0, r1 - bl sub_8147F84 - ldr r1, _08147A18 @ =0x02000000 - ldr r2, _08147A1C @ =0x0001fffe - adds r1, r2 - strb r0, [r1] - b _08147A44 - .align 2, 0 -_08147A10: .4byte gUnknown_02039310 -_08147A14: .4byte gPlayerParty -_08147A18: .4byte 0x02000000 -_08147A1C: .4byte 0x0001fffe -_08147A20: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _08147A34 @ =gMain - ldr r2, _08147A38 @ =0x0000043c - adds r1, r2 - b _08147A4A - .align 2, 0 -_08147A34: .4byte gMain -_08147A38: .4byte 0x0000043c -_08147A3C: - bl sub_8055870 - cmp r0, 0x1 - beq _08147AD0 -_08147A44: - ldr r1, _08147A54 @ =gMain - ldr r0, _08147A58 @ =0x0000043c - adds r1, r0 -_08147A4A: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147AD0 - .align 2, 0 -_08147A54: .4byte gMain -_08147A58: .4byte 0x0000043c -_08147A5C: - ldr r3, _08147AB0 @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _08147AB4 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _08147AB8 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _08147ABC @ =sub_81478A8 - bl SetVBlankCallback - ldr r1, _08147AC0 @ =gMain - ldr r2, _08147AC4 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08147A8C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08147AC8 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _08147ACC @ =sub_8147890 - bl SetMainCallback2 - movs r0, 0x1 - b _08147AD2 - .align 2, 0 -_08147AB0: .4byte 0x04000208 -_08147AB4: .4byte 0x04000200 -_08147AB8: .4byte REG_DISPSTAT -_08147ABC: .4byte sub_81478A8 -_08147AC0: .4byte gMain -_08147AC4: .4byte 0x0000043c -_08147AC8: .4byte gPaletteFade -_08147ACC: .4byte sub_8147890 -_08147AD0: - movs r0, 0 -_08147AD2: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81478BC - - thumb_func_start sub_8147ADC -sub_8147ADC: @ 8147ADC - push {lr} -_08147ADE: - bl sub_81478BC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147AF2 - movs r0, 0x1 - bl sub_8147DDC - b _08147AFE -_08147AF2: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147ADE -_08147AFE: - pop {r0} - bx r0 - thumb_func_end sub_8147ADC - - thumb_func_start sub_8147B04 -sub_8147B04: @ 8147B04 - ldr r1, _08147B18 @ =REG_BG1CNT - ldr r2, _08147B1C @ =0x00001d02 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_08147B18: .4byte REG_BG1CNT -_08147B1C: .4byte 0x00001d02 - thumb_func_end sub_8147B04 - - thumb_func_start sub_8147B20 -sub_8147B20: @ 8147B20 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _08147B40 @ =0x02000000 - ldr r1, _08147B44 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08147B34 - b _08147C84 -_08147B34: - lsls r0, 2 - ldr r1, _08147B48 @ =_08147B4C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08147B40: .4byte 0x02000000 -_08147B44: .4byte 0x0001ffff -_08147B48: .4byte _08147B4C - .align 2, 0 -_08147B4C: - .4byte _08147B70 - .4byte _08147BB8 - .4byte _08147BF0 - .4byte _08147BFC - .4byte _08147C08 - .4byte _08147C14 - .4byte _08147C2C - .4byte _08147C38 - .4byte _08147C60 -_08147B70: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _08147BAC @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08147BB0 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08147BB4 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _08147C40 - .align 2, 0 -_08147BAC: .4byte gMonFrontPicTable -_08147BB0: .4byte gMonFrontPicCoords -_08147BB4: .4byte gUnknown_081FAF4C -_08147BB8: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r1, r0, 0 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_80409C8 - adds r4, r0, 0 - bl LoadCompressedObjectPalette - ldrh r0, [r4, 0x4] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - b _08147C40 -_08147BF0: - ldr r0, _08147BF8 @ =gUnknown_083F7F74 - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147BF8: .4byte gUnknown_083F7F74 -_08147BFC: - ldr r0, _08147C04 @ =gUnknown_083F7F7C - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C04: .4byte gUnknown_083F7F7C -_08147C08: - ldr r0, _08147C10 @ =gUnknown_084121DC - bl LoadCompressedObjectPic - b _08147C40 - .align 2, 0 -_08147C10: .4byte gUnknown_084121DC -_08147C14: - ldr r0, _08147C24 @ =gScriptItemId - ldrb r0, [r0] - bl sub_8147C90 - ldr r0, _08147C28 @ =gUnknown_02039350 - bl LoadCompressedObjectPalette - b _08147C40 - .align 2, 0 -_08147C24: .4byte gScriptItemId -_08147C28: .4byte gUnknown_02039350 -_08147C2C: - ldr r0, _08147C34 @ =gBattleTerrainTiles_Building - movs r1, 0xC0 - lsls r1, 19 - b _08147C3C - .align 2, 0 -_08147C34: .4byte gBattleTerrainTiles_Building -_08147C38: - ldr r0, _08147C50 @ =gUnknown_08E782FC - ldr r1, _08147C54 @ =0x0600e800 -_08147C3C: - bl LZDecompressVram -_08147C40: - ldr r1, _08147C58 @ =0x02000000 - ldr r0, _08147C5C @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08147C84 - .align 2, 0 -_08147C50: .4byte gUnknown_08E782FC -_08147C54: .4byte 0x0600e800 -_08147C58: .4byte 0x02000000 -_08147C5C: .4byte 0x0001ffff -_08147C60: - ldr r0, _08147C78 @ =gBattleTerrainPalette_BattleTower - movs r1, 0x20 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _08147C7C @ =0x02000000 - ldr r1, _08147C80 @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _08147C86 - .align 2, 0 -_08147C78: .4byte gBattleTerrainPalette_BattleTower -_08147C7C: .4byte 0x02000000 -_08147C80: .4byte 0x0001ffff -_08147C84: - movs r0, 0 -_08147C86: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8147B20 - - thumb_func_start sub_8147C90 -sub_8147C90: @ 8147C90 - push {lr} - lsls r0, 24 - lsrs r0, 21 - ldr r1, _08147CB8 @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - movs r1, 0 - bl sub_810CA9C - lsls r0, 24 - ldr r2, _08147CBC @ =gUnknown_02039350 - ldr r1, _08147CC0 @ =gUnknown_084120A4 - lsrs r0, 22 - subs r0, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, _08147CC4 @ =0x000039e2 - strh r0, [r2, 0x4] - pop {r0} - bx r0 - .align 2, 0 -_08147CB8: .4byte gSaveBlock1 + 0x7F8 -_08147CBC: .4byte gUnknown_02039350 -_08147CC0: .4byte gUnknown_084120A4 -_08147CC4: .4byte 0x000039e2 - thumb_func_end sub_8147C90 - - thumb_func_start sub_8147CC8 -sub_8147CC8: @ 8147CC8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147D00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08147CDC - b _08147DCE -_08147CDC: - ldr r0, _08147D04 @ =gTasks - lsls r2, r4, 2 - adds r1, r2, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x8 - ldrsh r3, [r1, r0] - ldr r0, _08147D08 @ =0x0000010d - adds r5, r2, 0 - cmp r3, r0 - beq _08147D50 - cmp r3, r0 - bgt _08147D0C - cmp r3, 0 - beq _08147D20 - cmp r3, 0xFF - beq _08147D38 - b _08147D8C - .align 2, 0 -_08147D00: .4byte gPaletteFade -_08147D04: .4byte gTasks -_08147D08: .4byte 0x0000010d -_08147D0C: - ldr r0, _08147D1C @ =0x00000119 - cmp r3, r0 - beq _08147D68 - adds r0, 0x10 - cmp r3, r0 - beq _08147D80 - b _08147D8C - .align 2, 0 -_08147D1C: .4byte 0x00000119 -_08147D20: - ldr r0, _08147D30 @ =gUnknown_03005F3C - strb r3, [r0] - ldr r0, _08147D34 @ =gUnknown_03005F94 - strh r3, [r0] - bl sub_81481DC - b _08147D8C - .align 2, 0 -_08147D30: .4byte gUnknown_03005F3C -_08147D34: .4byte gUnknown_03005F94 -_08147D38: - ldr r0, _08147D48 @ =0x02000000 - ldr r2, _08147D4C @ =0x0001fffd - adds r0, r2 - ldrb r0, [r0] - ldrb r1, [r1, 0xA] - bl sub_8148108 - b _08147D8C - .align 2, 0 -_08147D48: .4byte 0x02000000 -_08147D4C: .4byte 0x0001fffd -_08147D50: - bl sub_814817C - ldr r1, _08147D60 @ =0x02000000 - ldr r2, _08147D64 @ =0x0001fffc - adds r1, r2 - strb r0, [r1] - b _08147D8C - .align 2, 0 -_08147D60: .4byte 0x02000000 -_08147D64: .4byte 0x0001fffc -_08147D68: - ldr r0, _08147D78 @ =0x02000000 - ldr r1, _08147D7C @ =0x0001fffe - adds r0, r1 - ldrb r0, [r0] - bl sub_8148044 - b _08147D8C - .align 2, 0 -_08147D78: .4byte 0x02000000 -_08147D7C: .4byte 0x0001fffe -_08147D80: - ldr r0, _08147D88 @ =sub_8147E40 - str r0, [r1] - b _08147DCE - .align 2, 0 -_08147D88: .4byte sub_8147E40 -_08147D8C: - ldr r0, _08147DA0 @ =gUnknown_03005F94 - ldr r1, _08147DA4 @ =gUnknown_03005F34 - ldrh r2, [r0] - ldrh r0, [r1] - cmp r2, r0 - bcs _08147DA8 - bl sub_814825C - b _08147DB8 - .align 2, 0 -_08147DA0: .4byte gUnknown_03005F94 -_08147DA4: .4byte gUnknown_03005F34 -_08147DA8: - cmp r2, r0 - bne _08147DB8 - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0xFE - strh r0, [r1, 0x8] -_08147DB8: - ldr r1, _08147DD8 @ =gUnknown_03005F94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _08147DD4 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_08147DCE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08147DD4: .4byte gTasks -_08147DD8: .4byte gUnknown_03005F94 - thumb_func_end sub_8147CC8 - - thumb_func_start sub_8147DDC -sub_8147DDC: @ 8147DDC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08147E08 @ =sub_8147CC8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08147E0C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E08: .4byte sub_8147CC8 -_08147E0C: .4byte gTasks - thumb_func_end sub_8147DDC - - thumb_func_start sub_8147E10 -sub_8147E10: @ 8147E10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl MenuUpdateWindowText - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08147E30 - ldr r0, _08147E38 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08147E3C @ =sub_8147F4C - str r0, [r1] -_08147E30: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147E38: .4byte gTasks -_08147E3C: .4byte sub_8147F4C - thumb_func_end sub_8147E10 - - thumb_func_start sub_8147E40 -sub_8147E40: @ 8147E40 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08147E94 @ =gUnknown_02039310 - ldrb r1, [r0] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _08147E98 @ =gPlayerParty - adds r5, r0 - ldr r0, _08147E9C @ =gScriptItemId - ldrh r4, [r0] - lsls r4, 3 - ldr r0, _08147EA0 @ =gSaveBlock1 + 0x7F8 - adds r4, r0 - adds r0, r5, 0 - bl GetNature - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_810CAE4 - ldr r6, _08147EA4 @ =gUnknown_02039312 - strh r0, [r6] - ldr r1, _08147EA8 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r1, _08147EAC @ =gStringVar2 - adds r0, r4, 0 - bl sub_810CB44 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08147EB8 - ldr r0, _08147EB0 @ =gStringVar4 - ldr r1, _08147EB4 @ =gContestStatsText_NormallyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147E94: .4byte gUnknown_02039310 -_08147E98: .4byte gPlayerParty -_08147E9C: .4byte gScriptItemId -_08147EA0: .4byte gSaveBlock1 + 0x7F8 -_08147EA4: .4byte gUnknown_02039312 -_08147EA8: .4byte gStringVar1 -_08147EAC: .4byte gStringVar2 -_08147EB0: .4byte gStringVar4 -_08147EB4: .4byte gContestStatsText_NormallyAte -_08147EB8: - cmp r0, 0 - ble _08147ED0 - ldr r0, _08147EC8 @ =gStringVar4 - ldr r1, _08147ECC @ =gContestStatsText_HappilyAte - bl StringExpandPlaceholders - b _08147ED8 - .align 2, 0 -_08147EC8: .4byte gStringVar4 -_08147ECC: .4byte gContestStatsText_HappilyAte -_08147ED0: - ldr r0, _08147EF8 @ =gStringVar4 - ldr r1, _08147EFC @ =gContestStatsText_DisdainfullyAte - bl StringExpandPlaceholders -_08147ED8: - ldr r0, _08147EF8 @ =gStringVar4 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, _08147F00 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F04 @ =sub_8147E10 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08147EF8: .4byte gStringVar4 -_08147EFC: .4byte gContestStatsText_DisdainfullyAte -_08147F00: .4byte gTasks -_08147F04: .4byte sub_8147E10 - thumb_func_end sub_8147E40 - - thumb_func_start sub_8147F08 -sub_8147F08: @ 8147F08 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08147F3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08147F34 - ldr r0, _08147F40 @ =gMPlay_BGM - ldr r1, _08147F44 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, _08147F48 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08147F34: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F3C: .4byte gPaletteFade -_08147F40: .4byte gMPlay_BGM -_08147F44: .4byte 0x0000ffff -_08147F48: .4byte gMain - thumb_func_end sub_8147F08 - - thumb_func_start sub_8147F4C -sub_8147F4C: @ 8147F4C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08147F7C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08147F80 @ =sub_8147F08 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08147F7C: .4byte gTasks -_08147F80: .4byte sub_8147F08 - thumb_func_end sub_8147F4C - - thumb_func_start sub_8147F84 -sub_8147F84: @ 8147F84 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08148024 @ =gUnknown_02024E8C - movs r1, 0x30 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08148028 @ =gUnknown_03005F24 - strh r4, [r0] - ldr r0, _0814802C @ =gUnknown_03005F2C - mov r1, r8 - strb r1, [r0] - adds r0, r5, 0 - bl GetNature - ldr r1, _08148030 @ =gUnknown_03005F30 - strb r0, [r1] - ldr r7, _08148034 @ =gSprites - mov r1, r8 - lsls r0, r1, 4 - add r0, r8 - lsls r5, r0, 2 - adds r6, r5, r7 - strh r4, [r6, 0x32] - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _08148038 @ =SpriteCallbackDummy - str r1, [r0] - ldr r0, _0814803C @ =gUnknown_03005F28 - mov r9, r0 - movs r0, 0x1 - mov r1, r9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _08148016 - adds r0, r7, 0 - adds r0, 0x10 - adds r0, r5, r0 - ldr r1, _08148040 @ =gSpriteAffineAnimTable_84120EC - str r1, [r0] - ldrb r3, [r6, 0x1] - movs r0, 0x3 - orrs r3, r0 - strb r3, [r6, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r6, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r6, 0 - bl CalcCenterToCornerVec - movs r0, 0 - mov r1, r9 - strb r0, [r1] -_08148016: - mov r0, r8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08148024: .4byte gUnknown_02024E8C -_08148028: .4byte gUnknown_03005F24 -_0814802C: .4byte gUnknown_03005F2C -_08148030: .4byte gUnknown_03005F30 -_08148034: .4byte gSprites -_08148038: .4byte SpriteCallbackDummy -_0814803C: .4byte gUnknown_03005F28 -_08148040: .4byte gSpriteAffineAnimTable_84120EC - thumb_func_end sub_8147F84 - - thumb_func_start sub_8148044 -sub_8148044: @ 8148044 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0814806C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r3 - movs r0, 0x30 - strh r0, [r2, 0x20] - movs r0, 0x50 - strh r0, [r2, 0x22] - ldr r0, _08148070 @ =0x0000fff8 - strh r0, [r2, 0x2E] - movs r0, 0x1 - strh r0, [r2, 0x30] - adds r3, 0x1C - adds r1, r3 - ldr r0, _08148074 @ =sub_8148078 - str r0, [r1] - bx lr - .align 2, 0 -_0814806C: .4byte gSprites -_08148070: .4byte 0x0000fff8 -_08148074: .4byte sub_8148078 - thumb_func_end sub_8148044 - - thumb_func_start sub_8148078 -sub_8148078: @ 8148078 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - adds r0, 0x4 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x2E] - ldrh r2, [r4, 0x22] - adds r1, r0, r2 - strh r1, [r4, 0x22] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0814809E - ldrh r0, [r4, 0x32] - movs r1, 0 - bl PlayCry1 -_0814809E: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x9 - bne _081480AA - ldr r0, _081480B0 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_081480AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081480B0: .4byte SpriteCallbackDummy - thumb_func_end sub_8148078 - - thumb_func_start sub_81480B4 -sub_81480B4: @ 81480B4 - push {r4,r5,lr} - movs r0, 0xBC - movs r1, 0x64 - movs r2, 0x2 - bl sub_810BA50 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _081480FC @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r0, r3, r5 - ldrb r2, [r0, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r1, r5, 0 - adds r1, 0x10 - adds r1, r3, r1 - ldr r2, _08148100 @ =gSpriteAffineAnimTable_84121A0 - str r2, [r1] - adds r5, 0x1C - adds r3, r5 - ldr r1, _08148104 @ =SpriteCallbackDummy - str r1, [r3] - bl InitSpriteAffineAnim - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081480FC: .4byte gSprites -_08148100: .4byte gSpriteAffineAnimTable_84121A0 -_08148104: .4byte SpriteCallbackDummy - thumb_func_end sub_81480B4 - - thumb_func_start sub_8148108 -sub_8148108: @ 8148108 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08148148 @ =gSprites - mov r8, r0 - lsls r0, r7, 4 - adds r0, r7 - lsls r6, r0, 2 - mov r0, r8 - adds r4, r6, r0 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - cmp r5, 0 - bne _08148150 - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _0814814C @ =gSpriteAffineAnimTable_84121A4 - b _08148158 - .align 2, 0 -_08148148: .4byte gSprites -_0814814C: .4byte gSpriteAffineAnimTable_84121A4 -_08148150: - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _08148174 @ =gSpriteAffineAnimTable_84121A8 -_08148158: - str r1, [r0] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _08148178 @ =gSprites - adds r0, r1 - bl InitSpriteAffineAnim - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148174: .4byte gSpriteAffineAnimTable_84121A8 -_08148178: .4byte gSprites - thumb_func_end sub_8148108 - - thumb_func_start sub_814817C -sub_814817C: @ 814817C - push {lr} - ldr r0, _081481A4 @ =gSpriteTemplate_84121E4 - movs r1, 0xAE - movs r2, 0x54 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081481A8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r2, _081481AC @ =0x0000fff4 - strh r2, [r1, 0x2E] - movs r2, 0x1 - strh r2, [r1, 0x30] - pop {r1} - bx r1 - .align 2, 0 -_081481A4: .4byte gSpriteTemplate_84121E4 -_081481A8: .4byte gSprites -_081481AC: .4byte 0x0000fff4 - thumb_func_end sub_814817C - - thumb_func_start sub_81481B0 -sub_81481B0: @ 81481B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - subs r0, 0x4 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x2E] - ldrh r3, [r2, 0x22] - adds r1, r0, r3 - strh r1, [r2, 0x22] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _081481D6 - adds r0, r2, 0 - bl DestroySprite -_081481D6: - pop {r0} - bx r0 - thumb_func_end sub_81481B0 - - thumb_func_start sub_81481DC -sub_81481DC: @ 81481DC - push {r4-r7,lr} - ldr r6, _0814824C @ =gUnknown_03005F34 - movs r0, 0x1 - strh r0, [r6] - ldr r1, _08148250 @ =gNatureToMonPokeblockAnim - ldr r0, _08148254 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r3, [r0] - movs r4, 0 - ldr r2, _08148258 @ =gMonPokeblockAnims - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r7, r2, 0 - adds r7, 0x8 - adds r0, r1, r7 - ldrh r0, [r0] - adds r0, 0x1 - strh r0, [r6] - adds r5, r2, 0 - adds r5, 0x12 - adds r1, r5 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _08148244 - adds r2, r6, 0 - adds r6, r5, 0 - adds r5, r7, 0 -_0814821A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r4, 0x7 - bhi _08148244 - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r0, r1, r5 - ldrh r0, [r0] - ldrh r7, [r2] - adds r0, r7 - strh r0, [r2] - adds r1, r6 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x1 - bne _0814821A -_08148244: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814824C: .4byte gUnknown_03005F34 -_08148250: .4byte gNatureToMonPokeblockAnim -_08148254: .4byte gUnknown_03005F30 -_08148258: .4byte gMonPokeblockAnims - thumb_func_end sub_81481DC - - thumb_func_start sub_814825C -sub_814825C: @ 814825C - push {lr} - ldr r0, _08148274 @ =gUnknown_03005F3C - ldrb r0, [r0] - cmp r0, 0x5A - bls _08148268 - b _08148532 -_08148268: - lsls r0, 2 - ldr r1, _08148278 @ =_0814827C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08148274: .4byte gUnknown_03005F3C -_08148278: .4byte _0814827C - .align 2, 0 -_0814827C: - .4byte _081483E8 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814843C - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _0814847A - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _081484CC - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148524 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 - .4byte _08148532 -_081483E8: - ldr r2, _0814841C @ =gUnknown_03005F40 - ldr r1, _08148420 @ =gNatureToMonPokeblockAnim - ldr r0, _08148424 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, _08148428 @ =gUnknown_03005F20 - ldr r0, _0814842C @ =gUnknown_03005F2C - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08148430 @ =gSprites - adds r1, r0 - str r1, [r2] - ldr r0, _08148434 @ =gUnknown_03005F50 - movs r2, 0x44 - bl memcpy - ldr r1, _08148438 @ =gUnknown_03005F3C - movs r0, 0xA - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814841C: .4byte gUnknown_03005F40 -_08148420: .4byte gNatureToMonPokeblockAnim -_08148424: .4byte gUnknown_03005F30 -_08148428: .4byte gUnknown_03005F20 -_0814842C: .4byte gUnknown_03005F2C -_08148430: .4byte gSprites -_08148434: .4byte gUnknown_03005F50 -_08148438: .4byte gUnknown_03005F3C -_0814843C: - bl sub_8148540 - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08148474 - ldr r3, _081484AC @ =gUnknown_03005F20 - ldr r2, [r3] - ldrb r0, [r2, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r2, [r3] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x3] - ldr r0, [r3] - ldr r1, _081484B0 @ =gSpriteAffineAnimTable_8412050 - str r1, [r0, 0x10] - bl InitSpriteAffineAnim -_08148474: - ldr r1, _081484B4 @ =gUnknown_03005F3C - movs r0, 0x32 - strb r0, [r1] -_0814847A: - ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim - ldr r0, _081484A8 @ =gUnknown_03005F30 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x1 - adds r2, r0, r1 - ldrb r1, [r2] - cmp r1, 0 - beq _081484EE - ldr r0, _081484B8 @ =gUnknown_03005F28 - ldrb r0, [r0] - cmp r0, 0 - bne _081484BC - ldr r0, _081484AC @ =gUnknown_03005F20 - ldr r0, [r0] - adds r1, 0xA - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484A4: .4byte gNatureToMonPokeblockAnim -_081484A8: .4byte gUnknown_03005F30 -_081484AC: .4byte gUnknown_03005F20 -_081484B0: .4byte gSpriteAffineAnimTable_8412050 -_081484B4: .4byte gUnknown_03005F3C -_081484B8: .4byte gUnknown_03005F28 -_081484BC: - ldr r0, _081484C8 @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r1, [r2] - bl StartSpriteAffineAnim - b _081484EE - .align 2, 0 -_081484C8: .4byte gUnknown_03005F20 -_081484CC: - bl sub_81485CC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08148532 - ldr r0, _081484F8 @ =gUnknown_03005FA0 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08148504 - ldr r1, _081484FC @ =gUnknown_03005F40 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8148540 -_081484EE: - ldr r1, _08148500 @ =gUnknown_03005F3C - movs r0, 0x3C - strb r0, [r1] - b _08148532 - .align 2, 0 -_081484F8: .4byte gUnknown_03005FA0 -_081484FC: .4byte gUnknown_03005F40 -_08148500: .4byte gUnknown_03005F3C -_08148504: - ldr r0, _0814851C @ =gUnknown_03005F20 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r1, _08148520 @ =gUnknown_03005F3C - movs r0, 0x46 - strb r0, [r1] - b _08148532 - .align 2, 0 -_0814851C: .4byte gUnknown_03005F20 -_08148520: .4byte gUnknown_03005F3C -_08148524: - bl sub_8148618 - ldr r0, _08148538 @ =gUnknown_03005F40 - movs r1, 0 - strb r1, [r0] - ldr r0, _0814853C @ =gUnknown_03005F3C - strb r1, [r0] -_08148532: - pop {r0} - bx r0 - .align 2, 0 -_08148538: .4byte gUnknown_03005F40 -_0814853C: .4byte gUnknown_03005F3C - thumb_func_end sub_814825C - - thumb_func_start sub_8148540 -sub_8148540: @ 8148540 - push {r4-r7,lr} - movs r4, 0 - ldr r5, _081485B4 @ =gUnknown_03005FA0 - mov r12, r5 - ldr r7, _081485B8 @ =gMonPokeblockAnims - ldr r6, _081485BC @ =gUnknown_03005F40 -_0814854C: - lsls r2, r4, 1 - mov r0, r12 - adds r3, r2, r0 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - adds r2, r7 - ldrh r0, [r2] - strh r0, [r3] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _0814854C - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081485C4 - movs r2, 0 - ldrsh r0, [r5, r2] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x14] - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x8] - strh r0, [r5, 0x18] - ldr r0, _081485C0 @ =gUnknown_03005F20 - ldr r1, [r0] - ldrh r0, [r1, 0x24] - strh r0, [r5, 0x1A] - ldrh r0, [r1, 0x26] - strh r0, [r5, 0x1C] - bl sub_8148710 - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - bl sub_814862C - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x8] - movs r0, 0 - b _081485C6 - .align 2, 0 -_081485B4: .4byte gUnknown_03005FA0 -_081485B8: .4byte gMonPokeblockAnims -_081485BC: .4byte gUnknown_03005F40 -_081485C0: .4byte gUnknown_03005F20 -_081485C4: - movs r0, 0x1 -_081485C6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8148540 - - thumb_func_start sub_81485CC -sub_81485CC: @ 81485CC - push {r4,lr} - ldr r3, _08148604 @ =gUnknown_03005FA0 - ldrh r0, [r3, 0x18] - ldrh r1, [r3, 0x8] - subs r0, r1 - lsls r0, 16 - ldr r1, _08148608 @ =gUnknown_03005F20 - ldr r4, [r1] - lsrs r0, 15 - ldr r1, _0814860C @ =0x0201d000 - adds r2, r0, r1 - ldrh r2, [r2] - strh r2, [r4, 0x24] - movs r2, 0x80 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x26] - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _08148610 - movs r0, 0 - b _08148612 - .align 2, 0 -_08148604: .4byte gUnknown_03005FA0 -_08148608: .4byte gUnknown_03005F20 -_0814860C: .4byte 0x0201d000 -_08148610: - movs r0, 0x1 -_08148612: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81485CC - - thumb_func_start sub_8148618 -sub_8148618: @ 8148618 - push {lr} - ldr r0, _08148628 @ =gUnknown_03005F20 - ldr r0, [r0] - bl FreeSpriteOamMatrix - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_08148628: .4byte gUnknown_03005F20 - thumb_func_end sub_8148618 - - thumb_func_start sub_814862C -sub_814862C: @ 814862C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r1, _08148700 @ =gUnknown_03005FA0 - ldrh r0, [r1, 0x10] - mov r8, r0 - ldrh r0, [r1, 0x18] - mov r2, r8 - subs r0, r2 - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r1, 0xC] - ldrh r3, [r1, 0x1A] - adds r0, r3 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - ldrh r0, [r1, 0xE] - ldrh r1, [r1, 0x1C] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r6, 0 - subs r0, r7, 0x1 - ldr r4, _08148704 @ =0x0201cffe - mov r10, r4 - cmp r6, r0 - bge _081486D4 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x4] -_08148674: - mov r2, r8 - adds r5, r2, r6 - lsls r5, 1 - ldr r4, _08148708 @ =0x0201d000 - adds r3, r5, r4 - ldrh r2, [r3] - ldr r0, [sp, 0x4] - subs r1, r2, r0 - ldr r4, _0814870C @ =0x0201d400 - adds r5, r4 - ldrh r0, [r5] - mov r12, r0 - mov r4, r9 - lsls r0, r4, 16 - asrs r0, 16 - mov r4, r12 - subs r0, r4, r0 - lsls r4, r0, 16 - lsrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r6, 0x1 - adds r0, r1, 0 - muls r0, r6 - adds r1, r7, 0 - str r2, [sp, 0x8] - str r3, [sp, 0xC] - bl __divsi3 - ldr r2, [sp, 0x8] - subs r2, r0 - ldr r3, [sp, 0xC] - strh r2, [r3] - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r6 - adds r1, r7, 0 - bl __divsi3 - ldrh r1, [r5] - subs r1, r0 - strh r1, [r5] - lsls r6, 16 - lsrs r6, 16 - subs r0, r7, 0x1 - cmp r6, r0 - blt _08148674 -_081486D4: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 1 - mov r2, r10 - adds r1, r0, r2 - mov r3, sp - ldrh r3, [r3] - strh r3, [r1] - movs r1, 0x80 - lsls r1, 3 - add r1, r10 - adds r0, r1 - mov r4, r9 - strh r4, [r0] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08148700: .4byte gUnknown_03005FA0 -_08148704: .4byte 0x0201cffe -_08148708: .4byte 0x0201d000 -_0814870C: .4byte 0x0201d400 - thumb_func_end sub_814862C - - thumb_func_start sub_8148710 -sub_8148710: @ 8148710 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _081487A4 @ =gUnknown_03005FA0 - ldrh r2, [r1, 0x1A] - ldrh r0, [r1, 0x14] - subs r2, r0 - ldrh r3, [r1, 0x1C] - ldrh r0, [r1, 0x16] - subs r3, r0 - adds r6, r1, 0 - ldr r1, _081487A8 @ =0x0201d000 - mov r9, r1 - lsls r2, 16 - asrs r2, 16 - mov r8, r2 - movs r2, 0x80 - lsls r2, 3 - add r2, r9 - mov r10, r2 - lsls r3, 16 - asrs r7, r3, 16 -_08148746: - movs r1, 0xA - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _08148750 - negs r0, r0 -_08148750: - lsls r0, 16 - lsrs r0, 16 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r5, r0, 16 - strh r0, [r6, 0x6] - ldrh r2, [r6, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _0814876A - movs r0, 0x1 - str r0, [sp] -_0814876A: - ldrh r0, [r6, 0x18] - ldrh r1, [r6, 0x8] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r1, 0 - beq _081487F0 - ldr r1, [sp] - cmp r1, 0 - bne _081487AC - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - adds r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - adds r1, r5 - b _081487CE - .align 2, 0 -_081487A4: .4byte gUnknown_03005FA0 -_081487A8: .4byte 0x0201d000 -_081487AC: - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r5, 24 - subs r1, r2, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r4, 1 - mov r2, r9 - adds r1, r4, r2 - add r0, r8 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x6] - subs r1, r5 -_081487CE: - lsls r1, 16 - asrs r1, 16 - bl Cos - add r4, r10 - adds r0, r7, r0 - strh r0, [r4] - ldrh r0, [r6, 0x2] - ldrh r2, [r6] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6] - ldrh r0, [r6, 0x8] - subs r0, 0x1 - strh r0, [r6, 0x8] - b _08148746 -_081487F0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8148710 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s deleted file mode 100644 index 59b08dd01..000000000 --- a/asm/reshow_battle_screen.s +++ /dev/null @@ -1,1097 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_14 -nullsub_14: @ 807AD54 - bx lr - thumb_func_end nullsub_14 - - thumb_func_start ReshowBattleScreenAfterMenu -ReshowBattleScreenAfterMenu: @ 807AD58 - push {lr} - ldr r2, _0807AD90 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - ldr r0, _0807AD94 @ =REG_MOSAIC - movs r2, 0 - strh r2, [r0] - ldr r0, _0807AD98 @ =0x02000000 - ldr r3, _0807AD9C @ =0x0001ffff - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0807ADA0 @ =0x0001fffe - adds r0, r1 - strb r2, [r0] - ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0807AD90: .4byte gPaletteFade -_0807AD94: .4byte REG_MOSAIC -_0807AD98: .4byte 0x02000000 -_0807AD9C: .4byte 0x0001ffff -_0807ADA0: .4byte 0x0001fffe -_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu - thumb_func_end ReshowBattleScreenAfterMenu - - thumb_func_start CB2_ReshowBattleScreenAfterMenu -CB2_ReshowBattleScreenAfterMenu: @ 807ADA8 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _0807ADC4 @ =0x02000000 - ldr r1, _0807ADC8 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x13 - bls _0807ADBA - b _0807B010 -_0807ADBA: - lsls r0, 2 - ldr r1, _0807ADCC @ =_0807ADD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807ADC4: .4byte 0x02000000 -_0807ADC8: .4byte 0x0001ffff -_0807ADCC: .4byte _0807ADD0 - .align 2, 0 -_0807ADD0: - .4byte _0807AE20 - .4byte _0807AE84 - .4byte _0807AE9C - .4byte _0807AEC8 - .4byte _0807AECE - .4byte _0807AEE0 - .4byte _0807AEE6 - .4byte _0807AF18 - .4byte _0807AF1C - .4byte _0807AF20 - .4byte _0807AF24 - .4byte _0807AF48 - .4byte _0807AF50 - .4byte _0807AF58 - .4byte _0807AF60 - .4byte _0807AF68 - .4byte _0807AF70 - .4byte _0807AF78 - .4byte _0807AF80 - .4byte _0807AF88 -_0807AE20: - bl dp12_8087EA4 - ldr r4, _0807AE5C @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _0807AE60 @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r0, _0807AE64 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0807AE68 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0807AE6C @ =gUnknown_030042C0 - strh r1, [r0] - ldr r0, _0807AE70 @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _0807AE74 @ =gUnknown_03004288 - strh r1, [r0] - ldr r0, _0807AE78 @ =gUnknown_03004280 - strh r1, [r0] - ldr r0, _0807AE7C @ =gUnknown_030041B0 - strh r1, [r0] - ldr r0, _0807AE80 @ =gUnknown_030041B8 - strh r1, [r0] - b _0807B040 - .align 2, 0 -_0807AE5C: .4byte gWindowConfig_81E6C58 -_0807AE60: .4byte gUnknown_03004210 -_0807AE64: .4byte gUnknown_030042A4 -_0807AE68: .4byte gUnknown_030042A0 -_0807AE6C: .4byte gUnknown_030042C0 -_0807AE70: .4byte gUnknown_030041B4 -_0807AE74: .4byte gUnknown_03004288 -_0807AE78: .4byte gUnknown_03004280 -_0807AE7C: .4byte gUnknown_030041B0 -_0807AE80: .4byte gUnknown_030041B8 -_0807AE84: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0807AE98 @ =0x01006000 - add r0, sp, 0x4 - bl CpuFastSet - b _0807B040 - .align 2, 0 -_0807AE98: .4byte 0x01006000 -_0807AE9C: - ldr r5, _0807AEBC @ =0x02000000 - ldr r0, _0807AEC0 @ =0x0001fffe - adds r4, r5, r0 - ldrb r0, [r4] - bl sub_800E414 - lsls r0, 24 - cmp r0, 0 - bne _0807AEF8 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AEC4 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AEBC: .4byte 0x02000000 -_0807AEC0: .4byte 0x0001fffe -_0807AEC4: .4byte 0x0001ffff -_0807AEC8: - bl ResetSpriteData - b _0807B040 -_0807AECE: - bl FreeAllSpritePalettes - ldr r1, _0807AEDC @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AEDC: .4byte gReservedSpritePaletteCount -_0807AEE0: - bl sub_8031EE8 - b _0807B040 -_0807AEE6: - ldr r5, _0807AF00 @ =0x02000000 - ldr r1, _0807AF04 @ =0x0001fffe - adds r4, r5, r1 - ldrb r0, [r4] - bl sub_8031C30 - lsls r0, 24 - cmp r0, 0 - beq _0807AF08 -_0807AEF8: - movs r0, 0 - strb r0, [r4] - b _0807B040 - .align 2, 0 -_0807AF00: .4byte 0x02000000 -_0807AF04: .4byte 0x0001fffe -_0807AF08: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r0, _0807AF14 @ =0x0001ffff - adds r1, r5, r0 - b _0807AF38 - .align 2, 0 -_0807AF14: .4byte 0x0001ffff -_0807AF18: - movs r0, 0 - b _0807AF26 -_0807AF1C: - movs r0, 0x1 - b _0807AF26 -_0807AF20: - movs r0, 0x2 - b _0807AF26 -_0807AF24: - movs r0, 0x3 -_0807AF26: - bl sub_807B094 - lsls r0, 24 - cmp r0, 0 - beq _0807AF32 - b _0807B040 -_0807AF32: - ldr r1, _0807AF40 @ =0x02000000 - ldr r0, _0807AF44 @ =0x0001ffff - adds r1, r0 -_0807AF38: - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - b _0807B040 - .align 2, 0 -_0807AF40: .4byte 0x02000000 -_0807AF44: .4byte 0x0001ffff -_0807AF48: - movs r0, 0 - bl sub_807B184 - b _0807B040 -_0807AF50: - movs r0, 0x1 - bl sub_807B184 - b _0807B040 -_0807AF58: - movs r0, 0x2 - bl sub_807B184 - b _0807B040 -_0807AF60: - movs r0, 0x3 - bl sub_807B184 - b _0807B040 -_0807AF68: - movs r0, 0 - bl sub_807B508 - b _0807B040 -_0807AF70: - movs r0, 0x1 - bl sub_807B508 - b _0807B040 -_0807AF78: - movs r0, 0x2 - bl sub_807B508 - b _0807B040 -_0807AF80: - movs r0, 0x3 - bl sub_807B508 - b _0807B040 -_0807AF88: - bl sub_80327CC - movs r0, 0x1 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _0807B000 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0807B004 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0807AFEC - movs r0, 0x3 - bl GetBankByPlayerAI - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 -_0807AFEC: - ldr r1, _0807B008 @ =gActionSelectionCursor - ldr r0, _0807B00C @ =gBankInMenu - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - b _0807B040 - .align 2, 0 -_0807B000: .4byte gBattlePartyID -_0807B004: .4byte gEnemyParty -_0807B008: .4byte gActionSelectionCursor -_0807B00C: .4byte gBankInMenu -_0807B010: - ldr r0, _0807B054 @ =sub_800FCD4 - bl SetHBlankCallback - ldr r0, _0807B058 @ =sub_800FCFC - bl SetVBlankCallback - bl sub_807B06C - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r2, _0807B05C @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0807B060 @ =sub_800F808 - bl SetMainCallback2 -_0807B040: - ldr r1, _0807B064 @ =0x02000000 - ldr r0, _0807B068 @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807B054: .4byte sub_800FCD4 -_0807B058: .4byte sub_800FCFC -_0807B05C: .4byte gPaletteFade -_0807B060: .4byte sub_800F808 -_0807B064: .4byte 0x02000000 -_0807B068: .4byte 0x0001ffff - thumb_func_end CB2_ReshowBattleScreenAfterMenu - - thumb_func_start sub_807B06C -sub_807B06C: @ 807B06C - push {lr} - bl sub_800D6D4 - ldr r3, _0807B08C @ =REG_BG1CNT - ldrb r2, [r3] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _0807B090 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0807B08C: .4byte REG_BG1CNT -_0807B090: .4byte REG_BG2CNT - thumb_func_end sub_807B06C - - thumb_func_start sub_807B094 -sub_807B094: @ 807B094 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807B0D8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r4, r0 - bcs _0807B172 - adds r0, r4, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B0F2 - lsls r0, r4, 2 - ldr r1, _0807B0DC @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B0E8 - ldr r1, _0807B0E0 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B0E4 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl sub_8031794 - b _0807B168 - .align 2, 0 -_0807B0D8: .4byte gNoOfAllBanks -_0807B0DC: .4byte 0x02017800 -_0807B0E0: .4byte gBattlePartyID -_0807B0E4: .4byte gEnemyParty -_0807B0E8: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 - b _0807B168 -_0807B0F2: - ldr r2, _0807B108 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B110 - cmp r4, 0 - bne _0807B110 - ldr r0, _0807B10C @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - b _0807B122 - .align 2, 0 -_0807B108: .4byte gBattleTypeFlags -_0807B10C: .4byte gSaveBlock2 -_0807B110: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B12A - cmp r4, 0 - bne _0807B12A - movs r0, 0x2 -_0807B122: - movs r1, 0 - bl sub_8031AF4 - b _0807B168 -_0807B12A: - lsls r0, r4, 2 - ldr r1, _0807B154 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0807B160 - ldr r1, _0807B158 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B15C @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_80318FC - b _0807B168 - .align 2, 0 -_0807B154: .4byte 0x02017800 -_0807B158: .4byte gBattlePartyID -_0807B15C: .4byte gPlayerParty -_0807B160: - adds r0, r4, 0 - movs r1, 0 - bl sub_8032350 -_0807B168: - ldr r0, _0807B17C @ =0x02000000 - ldr r1, _0807B180 @ =0x0001fffe - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0807B172: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807B17C: .4byte 0x02000000 -_0807B180: .4byte 0x0001fffe - thumb_func_end sub_807B094 - - thumb_func_start sub_807B184 -sub_807B184: @ 807B184 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0807B1B8 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r7, r0 - bcc _0807B19E - b _0807B4D8 -_0807B19E: - lsls r2, r7, 2 - ldr r0, _0807B1BC @ =0x02017800 - adds r0, r2, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - str r2, [sp] - cmp r0, 0 - beq _0807B1C0 - adds r0, r7, 0 - bl sub_8077F7C - b _0807B1C6 - .align 2, 0 -_0807B1B8: .4byte gNoOfAllBanks -_0807B1BC: .4byte 0x02017800 -_0807B1C0: - adds r0, r7, 0 - bl sub_8077F68 -_0807B1C6: - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r7, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0807B1DA - b _0807B2D8 -_0807B1DA: - ldr r1, _0807B2BC @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B2C0 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B1FE - b _0807B4D8 -_0807B1FE: - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B2C4 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B2C8 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B2CC @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B2D0 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B2D4 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - b _0807B4AC - .align 2, 0 -_0807B2BC: .4byte gBattlePartyID -_0807B2C0: .4byte gEnemyParty -_0807B2C4: .4byte gUnknown_02024E8C -_0807B2C8: .4byte gObjectBankIDs -_0807B2CC: .4byte gSprites -_0807B2D0: .4byte SpriteCallbackDummy -_0807B2D4: .4byte gBattleMonForms -_0807B2D8: - ldr r2, _0807B328 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B338 - cmp r7, 0 - bne _0807B338 - ldr r5, _0807B32C @ =gSaveBlock2 - ldrb r4, [r5, 0x8] - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r6, _0807B330 @ =gUnknown_02024E8C - ldr r1, _0807B334 @ =gTrainerBackPicCoords - ldrb r0, [r5, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - b _0807B37C - .align 2, 0 -_0807B328: .4byte gBattleTypeFlags -_0807B32C: .4byte gSaveBlock2 -_0807B330: .4byte gUnknown_02024E8C -_0807B334: .4byte gTrainerBackPicCoords -_0807B338: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B3D0 - cmp r7, 0 - bne _0807B3D0 - movs r0, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x2 - bl GetMonSpriteTemplate_803C5A0 - ldr r5, _0807B3BC @ =gUnknown_02024E8C - ldr r0, _0807B3C0 @ =gTrainerBackPicCoords - ldrb r0, [r0, 0x8] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r4, r1 - asrs r4, 16 - movs r0, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 -_0807B37C: - movs r1, 0x50 - adds r2, r4, 0 - bl CreateSprite - ldr r3, _0807B3C4 @ =gObjectBankIDs - strb r0, [r3] - ldr r4, _0807B3C8 @ =gSprites - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B3CC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - b _0807B4AC - .align 2, 0 -_0807B3BC: .4byte gUnknown_02024E8C -_0807B3C0: .4byte gTrainerBackPicCoords -_0807B3C4: .4byte gObjectBankIDs -_0807B3C8: .4byte gSprites -_0807B3CC: .4byte SpriteCallbackDummy -_0807B3D0: - ldr r1, _0807B4E8 @ =gBattlePartyID - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _0807B4EC @ =gPlayerParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0807B4D8 - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r5, _0807B4F0 @ =gUnknown_02024E8C - adds r0, r7, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _0807B4F4 @ =gObjectBankIDs - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _0807B4F8 @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0807B4FC @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0807B500 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim -_0807B4AC: - ldr r1, _0807B4F8 @ =gSprites - ldr r0, _0807B4F4 @ =gObjectBankIDs - adds r0, r7, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r0, _0807B504 @ =0x02017800 - ldr r1, [sp] - adds r0, r1, r0 - ldr r1, [r0] - lsls r1, 31 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_0807B4D8: - 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 -_0807B4E8: .4byte gBattlePartyID -_0807B4EC: .4byte gPlayerParty -_0807B4F0: .4byte gUnknown_02024E8C -_0807B4F4: .4byte gObjectBankIDs -_0807B4F8: .4byte gSprites -_0807B4FC: .4byte SpriteCallbackDummy -_0807B500: .4byte gBattleMonForms -_0807B504: .4byte 0x02017800 - thumb_func_end sub_807B184 - - thumb_func_start sub_807B508 -sub_807B508: @ 807B508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0807B530 @ =gNoOfAllBanks - ldrb r0, [r0] - cmp r5, r0 - bcc _0807B518 - b _0807B68A -_0807B518: - ldr r2, _0807B534 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B538 - cmp r5, 0 - bne _0807B538 - bl battle_make_oam_safari_battle - b _0807B550 - .align 2, 0 -_0807B530: .4byte gNoOfAllBanks -_0807B534: .4byte gBattleTypeFlags -_0807B538: - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0807B54A - cmp r5, 0 - bne _0807B54A - b _0807B68A -_0807B54A: - adds r0, r5, 0 - bl battle_make_oam_normal_battle -_0807B550: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0807B58C @ =gHealthboxIDs - adds r4, r5, r0 - strb r6, [r4] - adds r0, r5, 0 - bl sub_8043F44 - adds r0, r6, 0 - bl sub_8043DFC - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B598 - ldrb r0, [r4] - ldr r1, _0807B590 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B594 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B58C: .4byte gHealthboxIDs -_0807B590: .4byte gBattlePartyID -_0807B594: .4byte gEnemyParty -_0807B598: - ldr r0, _0807B5C0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0807B5CC - ldrb r0, [r4] - ldr r1, _0807B5C4 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B5C8 @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl sub_8045A5C - b _0807B5E4 - .align 2, 0 -_0807B5C0: .4byte gBattleTypeFlags -_0807B5C4: .4byte gBattlePartyID -_0807B5C8: .4byte gPlayerParty -_0807B5CC: - ldrb r0, [r4] - ldr r1, _0807B610 @ =gBattlePartyID - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0807B614 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_0807B5E4: - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0807B600 - adds r0, r5, 0 - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0807B61C -_0807B600: - ldr r0, _0807B618 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_11 - b _0807B628 - .align 2, 0 -_0807B610: .4byte gBattlePartyID -_0807B614: .4byte gPlayerParty -_0807B618: .4byte gHealthboxIDs -_0807B61C: - ldr r0, _0807B654 @ =gHealthboxIDs - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_11 -_0807B628: - adds r0, r5, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0807B660 - ldr r0, _0807B658 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B65C @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 - b _0807B68A - .align 2, 0 -_0807B654: .4byte gHealthboxIDs -_0807B658: .4byte gBattlePartyID -_0807B65C: .4byte gEnemyParty -_0807B660: - ldr r0, _0807B690 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807B68A - ldr r0, _0807B694 @ =gBattlePartyID - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807B698 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0807B68A - adds r0, r6, 0 - bl sub_8043DB0 -_0807B68A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807B690: .4byte gBattleTypeFlags -_0807B694: .4byte gBattlePartyID -_0807B698: .4byte gPlayerParty - thumb_func_end sub_807B508 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/shop.s b/asm/shop.s deleted file mode 100644 index a341e90a1..000000000 --- a/asm/shop.s +++ /dev/null @@ -1,2613 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B33D0 -sub_80B33D0: @ 80B33D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r2 - lsls r4, 22 - ldr r5, _080B3418 @ =gBGTilemapBuffers + 0x1800 - lsls r6, 17 - asrs r6, 16 - movs r0, 0x80 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - ldr r0, _080B341C @ =0xfffff800 - adds r5, r0 - movs r0, 0x8 - add r8, r0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r8 - bl BuyMenuDrawMapMetatileLayer - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3418: .4byte gBGTilemapBuffers + 0x1800 -_080B341C: .4byte 0xfffff800 - thumb_func_end sub_80B33D0 - - thumb_func_start sub_80B3420 -sub_80B3420: @ 80B3420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - subs r0, 0x3 - strh r0, [r1] - ldrh r0, [r4] - subs r0, 0x3 - strh r0, [r4] - movs r1, 0 - ldr r0, _080B34A8 @ =0x000001ff - mov r10, r0 - ldr r2, _080B34AC @ =gMapHeader - mov r9, r2 -_080B3452: - movs r4, 0 - lsls r1, 16 - mov r8, r1 - asrs r7, r1, 16 -_080B345A: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r5, r0, 16 - cmp r7, 0x5 - beq _080B34D0 - cmp r6, 0x6 - beq _080B34D0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, r6 - mov r2, sp - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileLayerTypeAt - lsls r0, 24 - lsrs r3, r0, 24 - cmp r5, r10 - bhi _080B34B0 - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0, 0x10] - lsls r1, r5, 4 - ldr r2, [r0, 0xC] - adds r2, r1 - b _080B34C0 - .align 2, 0 -_080B34A8: .4byte 0x000001ff -_080B34AC: .4byte gMapHeader -_080B34B0: - mov r2, r9 - ldr r0, [r2] - ldr r1, [r0, 0x14] - ldr r2, _080B34CC @ =0xfffffe00 - adds r0, r5, r2 - lsls r0, 4 - ldr r2, [r1, 0xC] - adds r2, r0 -_080B34C0: - adds r0, r6, 0 - adds r1, r7, 0 - bl BuyMenuDrawMapMetatile - b _080B3506 - .align 2, 0 -_080B34CC: .4byte 0xfffffe00 -_080B34D0: - cmp r5, r10 - bhi _080B34EC - asrs r0, r4, 16 - mov r3, r9 - ldr r1, [r3] - ldr r1, [r1, 0x10] - lsls r3, r5, 4 - ldr r2, [r1, 0xC] - adds r2, r3 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 - b _080B3506 -_080B34EC: - asrs r0, r4, 16 - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x14] - ldr r3, _080B354C @ =0xfffffe00 - adds r1, r5, r3 - lsls r1, 4 - ldr r2, [r2, 0xC] - adds r2, r1 - mov r3, r8 - asrs r1, r3, 16 - bl sub_80B33D0 -_080B3506: - cmp r7, 0 - bne _080B3520 - asrs r1, r4, 16 - cmp r1, 0 - beq _080B3520 - cmp r1, 0x6 - beq _080B3520 - lsls r1, 17 - asrs r1, 16 - ldr r0, _080B3550 @ =gBGTilemapBuffers + 0x800 - movs r2, 0x40 - bl sub_80B32EC -_080B3520: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080B345A - adds r0, r1, 0 - add r0, r8 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080B3452 - 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 -_080B354C: .4byte 0xfffffe00 -_080B3550: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3420 - - thumb_func_start BuyMenuDrawMapGraphics -BuyMenuDrawMapGraphics: @ 80B3554 - push {lr} - bl sub_80F9020 - bl sub_80B356C - bl sub_80B368C - bl sub_80B3420 - pop {r0} - bx r0 - thumb_func_end BuyMenuDrawMapGraphics - - thumb_func_start sub_80B356C -sub_80B356C: @ 80B356C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r8, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r5, 0 - ldr r2, _080B3674 @ =gUnknown_020386A4 - movs r1, 0x10 -_080B3598: - lsls r0, r5, 3 - adds r0, r2 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B3598 - movs r5, 0 - ldr r7, _080B3678 @ =gUnknown_020386AA - subs r1, r7, 0x6 - mov r9, r1 -_080B35B0: - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 -_080B35B6: - mov r1, sp - ldr r3, _080B367C @ =0x0000fffd - adds r0, r3, 0 - ldrh r1, [r1] - adds r0, r1 - adds r0, r4 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080B3680 @ =0x0000fffe - adds r1, r2, 0 - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - adds r1, r5 - lsls r1, 16 - lsrs r1, 16 - ldr r2, [sp, 0x4] - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _080B3650 - mov r0, r8 - lsls r3, r0, 3 - mov r1, r9 - adds r0, r3, r1 - movs r6, 0 - strh r2, [r0] - mov r0, r9 - adds r0, 0x2 - adds r0, r3, r0 - strh r4, [r0] - ldr r1, _080B3684 @ =gUnknown_020386A8 - adds r0, r3, r1 - strh r5, [r0] - ldr r1, _080B3688 @ =gMapObjects - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x1 - bne _080B3616 - adds r0, r3, r7 - strh r6, [r0] -_080B3616: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x2 - bne _080B3626 - adds r1, r3, r7 - movs r0, 0x1 - strh r0, [r1] -_080B3626: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x3 - bne _080B3636 - adds r1, r3, r7 - movs r0, 0x2 - strh r0, [r1] -_080B3636: - ldrb r0, [r2, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x4 - bne _080B3646 - adds r1, r3, r7 - movs r0, 0x3 - strh r0, [r1] -_080B3646: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080B3650: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080B35B6 - mov r2, r10 - lsls r0, r2, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080B35B0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3674: .4byte gUnknown_020386A4 -_080B3678: .4byte gUnknown_020386AA -_080B367C: .4byte 0x0000fffd -_080B3680: .4byte 0x0000fffe -_080B3684: .4byte gUnknown_020386A8 -_080B3688: .4byte gMapObjects - thumb_func_end sub_80B356C - - thumb_func_start sub_80B368C -sub_80B368C: @ 80B368C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r5, 0 - ldr r6, _080B3710 @ =gUnknown_020386A4 - adds r0, r6, 0x6 - mov r8, r0 - ldr r7, _080B3714 @ =gMapObjects -_080B369E: - lsls r4, r5, 3 - adds r1, r4, r6 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x10 - beq _080B36F8 - adds r1, r0, 0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x5] - adds r1, r6, 0x2 - adds r1, r4, r1 - ldrh r2, [r1] - lsls r2, 4 - adds r2, 0x8 - lsls r2, 16 - asrs r2, 16 - adds r1, r6, 0x4 - adds r1, r4, r1 - ldrh r3, [r1] - lsls r3, 20 - movs r1, 0x80 - lsls r1, 14 - adds r3, r1 - asrs r3, 16 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3718 @ =SpriteCallbackDummy - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _080B371C @ =gSprites - adds r2, r0 - mov r1, r8 - adds r0, r4, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl StartSpriteAnim -_080B36F8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080B369E - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B3710: .4byte gUnknown_020386A4 -_080B3714: .4byte gMapObjects -_080B3718: .4byte SpriteCallbackDummy -_080B371C: .4byte gSprites - thumb_func_end sub_80B368C - - thumb_func_start sub_80B3720 -sub_80B3720: @ 80B3720 - push {r4-r6,lr} - movs r1, 0 - ldr r6, _080B3754 @ =gBGTilemapBuffers + 0x800 - ldr r5, _080B3758 @ =0x000003ff - ldr r4, _080B375C @ =0x02018000 - ldr r0, _080B3760 @ =0x0000c3e0 - adds r3, r0, 0 -_080B372E: - lsls r0, r1, 16 - asrs r2, r0, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0 - beq _080B3742 - adds r1, r6 - adds r0, r3 - strh r0, [r1] -_080B3742: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, r5 - ble _080B372E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3754: .4byte gBGTilemapBuffers + 0x800 -_080B3758: .4byte 0x000003ff -_080B375C: .4byte 0x02018000 -_080B3760: .4byte 0x0000c3e0 - thumb_func_end sub_80B3720 - - thumb_func_start sub_80B3764 -sub_80B3764: @ 80B3764 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_80B3720 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_80B39D0 - ldr r0, _080B3798 @ =gUnknown_03000708 - ldrb r0, [r0, 0x9] - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0xE - movs r2, 0x2 - movs r3, 0x8 - bl InitMenu - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3798: .4byte gUnknown_03000708 - thumb_func_end sub_80B3764 - - thumb_func_start sub_80B379C -sub_80B379C: @ 80B379C - push {r4-r7,lr} - movs r1, 0 - ldr r0, _080B37E0 @ =gBGTilemapBuffers + 0x800 - mov r12, r0 - ldr r7, _080B37E4 @ =0x02018300 - ldr r0, _080B37E8 @ =0x0000c3e0 - adds r6, r0, 0 -_080B37AA: - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xC - adds r5, r1, 0x1 - lsls r4, r0, 5 - lsls r3, r1, 5 -_080B37B6: - adds r1, r4, r2 - lsls r1, 1 - add r1, r12 - adds r0, r3, r2 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - adds r0, r6, r0 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xD - bls _080B37B6 - lsls r0, r5, 16 - lsrs r1, r0, 16 - cmp r1, 0x7 - bls _080B37AA - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B37E0: .4byte gBGTilemapBuffers + 0x800 -_080B37E4: .4byte 0x02018300 -_080B37E8: .4byte 0x0000c3e0 - thumb_func_end sub_80B379C - - thumb_func_start sub_80B37EC -sub_80B37EC: @ 80B37EC - push {lr} - bl sub_80B3A70 - pop {r0} - bx r0 - thumb_func_end sub_80B37EC - - thumb_func_start sub_80B37F8 -sub_80B37F8: @ 80B37F8 - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B3884 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - ldrb r2, [r1, 0x9] - adds r0, r2 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3888 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - movs r1, 0x6 - movs r2, 0x6 - movs r3, 0xB - bl sub_80B7A94 - ldr r0, _080B388C @ =gStringVar1 - movs r1, 0xFC - strb r1, [r0] - movs r1, 0x14 - strb r1, [r0, 0x1] - movs r1, 0x6 - strb r1, [r0, 0x2] - adds r0, 0x3 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3890 @ =gOtherText_xString1 - movs r1, 0x1 - movs r2, 0xB - bl MenuPrint - ldr r0, _080B3894 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - ldr r1, _080B3898 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3884: .4byte gUnknown_03000708 -_080B3888: .4byte gTasks -_080B388C: .4byte gStringVar1 -_080B3890: .4byte gOtherText_xString1 -_080B3894: .4byte gBGTilemapBuffers + 0x800 -_080B3898: .4byte 0x0000c3e1 - thumb_func_end sub_80B37F8 - - thumb_func_start sub_80B389C -sub_80B389C: @ 80B389C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - mov r8, r2 - lsls r0, 16 - lsrs r2, r0, 16 - mov r9, r2 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, _080B392C @ =gStringVar1 - mov r0, r8 - cmp r0, 0 - beq _080B38C8 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0x2 - strb r0, [r5, 0x2] - adds r5, 0x3 -_080B38C8: - adds r0, r2, 0 - adds r1, r5, 0 - bl CopyItemName - ldr r6, _080B392C @ =gStringVar1 - lsls r7, r4, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r6, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r5, r6, 0 - mov r0, r8 - cmp r0, 0 - beq _080B38EE - adds r5, r6, 0x3 -_080B38EE: - mov r0, r9 - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r6, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B392C: .4byte gStringVar1 - thumb_func_end sub_80B389C - - thumb_func_start sub_80B3930 -sub_80B3930: @ 80B3930 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r2, 0 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r2, _080B39A0 @ =gStringVar1 - cmp r4, 0 - beq _080B395A - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - movs r0, 0x2 - strb r0, [r2, 0x2] - adds r2, 0x3 -_080B395A: - lsls r6, r3, 5 - ldr r0, _080B39A4 @ =gDecorations + 0x1 - mov r8, r0 - adds r1, r6, r0 - adds r0, r2, 0 - bl StringCopy - ldr r5, _080B39A0 @ =gStringVar1 - mov r0, r9 - lsls r7, r0, 3 - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x70 - adds r2, r7, 0 - movs r3, 0x58 - bl sub_8072A18 - adds r2, r5, 0 - cmp r4, 0 - beq _080B3986 - adds r2, r5, 0x3 -_080B3986: - mov r0, r8 - subs r0, 0x1 - adds r3, r6, r0 - ldrh r1, [r3, 0x14] - ldr r0, _080B39A8 @ =0x00002710 - cmp r1, r0 - bne _080B39AC - movs r0, 0x19 - mov r1, r9 - adds r2, r4, 0 - bl sub_80B7B34 - b _080B39C2 - .align 2, 0 -_080B39A0: .4byte gStringVar1 -_080B39A4: .4byte gDecorations + 0x1 -_080B39A8: .4byte 0x00002710 -_080B39AC: - ldrh r1, [r3, 0x14] - adds r0, r2, 0 - movs r2, 0x4 - bl sub_80B79F8 - adds r0, r5, 0 - movs r1, 0xCA - adds r2, r7, 0 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_080B39C2: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3930 - - thumb_func_start sub_80B39D0 -sub_80B39D0: @ 80B39D0 - push {r4-r6,lr} - adds r6, r1, 0 - adds r5, r2, 0 - b _080B3A1A -_080B39D8: - ldrb r0, [r1, 0xC] - cmp r0, 0 - bne _080B39FC - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B389C - b _080B3A18 -_080B39FC: - ldrb r0, [r1, 0xB] - adds r0, r4 - ldr r1, [r1, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 25 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - lsrs r1, 24 - adds r2, r5, 0 - bl sub_80B3930 -_080B3A18: - adds r0, r4, 0x1 -_080B3A1A: - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bgt _080B3A2E - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r2, [r1, 0x8] - cmp r0, r2 - blt _080B39D8 -_080B3A2E: - cmp r4, 0x8 - beq _080B3A60 - ldr r1, _080B3A68 @ =gUnknown_03000708 - ldrb r0, [r1, 0xB] - adds r0, r4 - ldrb r1, [r1, 0x8] - cmp r0, r1 - bne _080B3A60 - lsls r3, r4, 1 - adds r4, r3, 0x2 - lsls r4, 24 - lsrs r4, 24 - adds r3, 0x3 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xE - adds r1, r4, 0 - movs r2, 0x1C - bl MenuFillWindowRectWithBlankTile - ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator - movs r1, 0xE - adds r2, r4, 0 - bl MenuPrint -_080B3A60: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3A68: .4byte gUnknown_03000708 -_080B3A6C: .4byte gOtherText_CancelNoTerminator - thumb_func_end sub_80B39D0 - - thumb_func_start sub_80B3A70 -sub_80B3A70: @ 80B3A70 - push {r4,lr} - sub sp, 0x8 - ldr r2, _080B3A9C @ =gUnknown_03000708 - ldrb r1, [r2, 0xB] - ldrb r0, [r2, 0x9] - adds r0, r1, r0 - ldrb r1, [r2, 0x8] - cmp r0, r1 - beq _080B3ACC - ldrb r4, [r2, 0xC] - cmp r4, 0 - bne _080B3AA0 - ldr r1, [r2, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetDescription - movs r1, 0x30 - str r1, [sp] - str r4, [sp, 0x4] - b _080B3ABA - .align 2, 0 -_080B3A9C: .4byte gUnknown_03000708 -_080B3AA0: - ldr r1, _080B3AC8 @ =gDecorations - ldr r2, [r2, 0x4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 5 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] -_080B3ABA: - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 - b _080B3AE0 - .align 2, 0 -_080B3AC8: .4byte gDecorations -_080B3ACC: - ldr r0, _080B3AE8 @ =gOtherText_QuitShopping - movs r1, 0x30 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x4 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 -_080B3AE0: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3AE8: .4byte gOtherText_QuitShopping - thumb_func_end sub_80B3A70 - - thumb_func_start sub_80B3AEC -sub_80B3AEC: @ 80B3AEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080B3B5C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B3B06 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3B7A -_080B3B06: - ldr r4, _080B3B60 @ =gUnknown_03000708 - ldrb r1, [r4, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x4 - bne _080B3B74 - ldr r0, _080B3B64 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x9 - ble _080B3B74 - movs r0, 0xC - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3B74 - ldr r1, _080B3B68 @ =gOtherText_FreePremierBall - ldr r2, _080B3B6C @ =sub_80B4378 - ldr r3, _080B3B70 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3B7A - .align 2, 0 -_080B3B5C: .4byte gMain -_080B3B60: .4byte gUnknown_03000708 -_080B3B64: .4byte gTasks -_080B3B68: .4byte gOtherText_FreePremierBall -_080B3B6C: .4byte sub_80B4378 -_080B3B70: .4byte 0x0000c3e1 -_080B3B74: - adds r0, r5, 0 - bl sub_80B4378 -_080B3B7A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80B3AEC - - thumb_func_start sub_80B3B80 -sub_80B3B80: @ 80B3B80 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x26 - bl IncrementGameStat - ldr r5, _080B3BC0 @ =gSaveBlock1 + 0x490 - ldr r0, _080B3BC4 @ =gUnknown_020386A0 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80B79E0 - movs r0, 0x5F - bl PlaySE - ldr r0, [r5] - movs r1, 0 - movs r2, 0 - bl sub_80B7BEC - ldr r1, _080B3BC8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B3BCC @ =sub_80B3AEC - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3BC0: .4byte gSaveBlock1 + 0x490 -_080B3BC4: .4byte gUnknown_020386A0 -_080B3BC8: .4byte gTasks -_080B3BCC: .4byte sub_80B3AEC - thumb_func_end sub_80B3B80 - - thumb_func_start sub_80B3BD0 -sub_80B3BD0: @ 80B3BD0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3BF0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3BF0: .4byte gUnknown_03000708 - thumb_func_end sub_80B3BD0 - - thumb_func_start sub_80B3BF4 -sub_80B3BF4: @ 80B3BF4 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3C7C @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldr r0, _080B3C80 @ =gSaveBlock1 - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080B3C84 @ =gUnknown_020386A0 - ldr r1, [r1] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B3D18 - ldr r4, _080B3C88 @ =gUnknown_03000708 - ldrb r0, [r4, 0xC] - cmp r0, 0 - bne _080B3CAC - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r2, _080B3C8C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - ldrh r1, [r1, 0xA] - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _080B3C9C - ldr r1, _080B3C90 @ =gOtherText_HereYouGo - ldr r2, _080B3C94 @ =sub_80B3B80 - ldr r3, _080B3C98 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - adds r0, r5, 0 - bl sub_80B4470 - b _080B3D24 - .align 2, 0 -_080B3C7C: .4byte gBGTilemapBuffers + 0x800 -_080B3C80: .4byte gSaveBlock1 -_080B3C84: .4byte gUnknown_020386A0 -_080B3C88: .4byte gUnknown_03000708 -_080B3C8C: .4byte gTasks -_080B3C90: .4byte gOtherText_HereYouGo -_080B3C94: .4byte sub_80B3B80 -_080B3C98: .4byte 0x0000c3e1 -_080B3C9C: - ldr r1, _080B3CA4 @ =gOtherText_NoRoomFor - ldr r2, _080B3CA8 @ =sub_80B3BD0 - b _080B3CD8 - .align 2, 0 -_080B3CA4: .4byte gOtherText_NoRoomFor -_080B3CA8: .4byte sub_80B3BD0 -_080B3CAC: - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - bl IsThereStorageSpaceForDecoration - lsls r0, 24 - cmp r0, 0 - beq _080B3CF0 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - bne _080B3CD4 - ldr r1, _080B3CD0 @ =gOtherText_HereYouGo2 - b _080B3CD6 - .align 2, 0 -_080B3CD0: .4byte gOtherText_HereYouGo2 -_080B3CD4: - ldr r1, _080B3CE4 @ =gOtherText_HereYouGo3 -_080B3CD6: - ldr r2, _080B3CE8 @ =sub_80B3B80 -_080B3CD8: - ldr r3, _080B3CEC @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3CE4: .4byte gOtherText_HereYouGo3 -_080B3CE8: .4byte sub_80B3B80 -_080B3CEC: .4byte 0x0000c3e1 -_080B3CF0: - ldr r4, _080B3D08 @ =gStringVar4 - ldr r1, _080B3D0C @ =gOtherText_SpaceForIsFull - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3D10 @ =sub_80B3BD0 - ldr r3, _080B3D14 @ =0x0000c3e1 - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3D24 - .align 2, 0 -_080B3D08: .4byte gStringVar4 -_080B3D0C: .4byte gOtherText_SpaceForIsFull -_080B3D10: .4byte sub_80B3BD0 -_080B3D14: .4byte 0x0000c3e1 -_080B3D18: - ldr r1, _080B3D2C @ =gOtherText_NotEnoughMoney - ldr r2, _080B3D30 @ =sub_80B3BD0 - ldr r3, _080B3D34 @ =0x0000c3e1 - adds r0, r5, 0 - bl DisplayItemMessageOnField -_080B3D24: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B3D2C: .4byte gOtherText_NotEnoughMoney -_080B3D30: .4byte sub_80B3BD0 -_080B3D34: .4byte 0x0000c3e1 - thumb_func_end sub_80B3BF4 - - thumb_func_start sub_80B3D38 -sub_80B3D38: @ 80B3D38 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _080B3D70 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - ldr r1, _080B3D74 @ =0x0000c3e1 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - ldr r1, _080B3D78 @ =gUnknown_083CC708 - adds r0, r4, 0 - bl DoYesNoFuncWithChoice - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3D70: .4byte gBGTilemapBuffers + 0x800 -_080B3D74: .4byte 0x0000c3e1 -_080B3D78: .4byte gUnknown_083CC708 - thumb_func_end sub_80B3D38 - - thumb_func_start sub_80B3D7C -sub_80B3D7C: @ 80B3D7C - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B3DC0 @ =gUnknown_03000708 - ldrb r1, [r0, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - movs r0, 0x7 - movs r1, 0x8 - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3DC4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x4 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x8 - movs r2, 0x9 - movs r3, 0x4 - bl sub_80A3FA0 - adds r0, r4, 0 - bl sub_80B4378 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B3DC0: .4byte gUnknown_03000708 -_080B3DC4: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80B3D7C - - thumb_func_start sub_80B3DC8 -sub_80B3DC8: @ 80B3DC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r6, 0 - ldr r7, _080B3EA8 @ =gUnknown_03000708 - ldrb r1, [r7, 0xD] - adds r0, r6, 0 - bl sub_80A52C4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B3DEE - adds r0, r6, 0 - bl sub_80B37F8 -_080B3DEE: - ldr r0, _080B3EAC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B3ED8 - ldr r0, _080B3EB0 @ =gUnknown_020386A0 - mov r8, r0 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, _080B3EB4 @ =gTasks - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - adds r5, r0 - movs r1, 0xA - ldrsh r0, [r5, r1] - muls r0, r4 - mov r2, r8 - str r0, [r2] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B3EB8 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B379C - bl sub_80B3420 - ldrb r0, [r7, 0xB] - ldrb r1, [r7, 0x9] - adds r0, r1 - ldr r1, [r7, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B3EBC @ =gStringVar1 - bl CopyItemName - ldr r0, _080B3EC0 @ =gStringVar2 - movs r2, 0xA - ldrsh r1, [r5, r2] - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _080B3EC4 @ =gStringVar3 - mov r2, r8 - ldr r1, [r2] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldr r4, _080B3EC8 @ =gStringVar4 - ldr r1, _080B3ECC @ =gOtherText_ThatWillBe - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B3ED0 @ =sub_80B3D38 - ldr r3, _080B3ED4 @ =0x0000c3e1 - adds r0, r6, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B3EF0 - .align 2, 0 -_080B3EA8: .4byte gUnknown_03000708 -_080B3EAC: .4byte gMain -_080B3EB0: .4byte gUnknown_020386A0 -_080B3EB4: .4byte gTasks -_080B3EB8: .4byte gBGTilemapBuffers + 0x800 -_080B3EBC: .4byte gStringVar1 -_080B3EC0: .4byte gStringVar2 -_080B3EC4: .4byte gStringVar3 -_080B3EC8: .4byte gStringVar4 -_080B3ECC: .4byte gOtherText_ThatWillBe -_080B3ED0: .4byte sub_80B3D38 -_080B3ED4: .4byte 0x0000c3e1 -_080B3ED8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B3EF0 - ldrb r1, [r7, 0x9] - adds r0, r1, 0 - movs r2, 0 - bl sub_80B39D0 - adds r0, r4, 0 - bl sub_80B4378 -_080B3EF0: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B3DC8 - - thumb_func_start sub_80B3EFC -sub_80B3EFC: @ 80B3EFC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B3F78 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0xA] - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuDrawTextWindow - adds r0, r5, 0 - bl sub_80B37F8 - ldr r6, _080B3F7C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - ldr r1, _080B3F80 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r1, r2 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - ldr r0, [r1] - adds r1, r4, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x63 - bls _080B3F62 - movs r0, 0x63 -_080B3F62: - strb r0, [r6, 0xD] - ldr r0, _080B3F78 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080B3F84 @ =sub_80B3DC8 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B3F78: .4byte gTasks -_080B3F7C: .4byte gUnknown_03000708 -_080B3F80: .4byte gSaveBlock1 -_080B3F84: .4byte sub_80B3DC8 - thumb_func_end sub_80B3EFC - - thumb_func_start sub_80B3F88 -sub_80B3F88: @ 80B3F88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B4020 @ =gMenuWindow - mov r8, r0 - ldr r1, [r0, 0x28] - ldr r3, _080B4024 @ =0x000003de - adds r1, r3 - adds r2, r1, 0 - adds r2, 0x80 - ldr r7, [r0, 0x24] - mov r10, r7 - ldr r0, _080B4028 @ =0x000003ff - mov r9, r0 - movs r6, 0xD -_080B3FAC: - adds r3, r2, 0 - subs r3, 0x40 - str r3, [sp] - movs r7, 0x40 - negs r7, r7 - adds r7, r1 - mov r12, r7 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B3FC0: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B3FD4 - adds r0, r2, 0 - adds r0, 0x3C -_080B3FD4: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B3FC0 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FAC - ldr r1, _080B402C @ =0x00003a20 - add r1, r10 - movs r0, 0xF0 - lsls r0, 3 - adds r2, r1, r0 - ldr r3, _080B4030 @ =0x040000d4 - ldr r5, _080B4034 @ =0x800000f0 - ldr r4, _080B4038 @ =0xfffffc40 - movs r6, 0xD -_080B3FFC: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B3FFC - 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 -_080B4020: .4byte gMenuWindow -_080B4024: .4byte 0x000003de -_080B4028: .4byte 0x000003ff -_080B402C: .4byte 0x00003a20 -_080B4030: .4byte 0x040000d4 -_080B4034: .4byte 0x800000f0 -_080B4038: .4byte 0xfffffc40 - thumb_func_end sub_80B3F88 - - thumb_func_start sub_80B403C -sub_80B403C: @ 80B403C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080B40D8 @ =gMenuWindow - mov r8, r0 - ldr r2, [r0, 0x28] - adds r1, r2, 0 - adds r1, 0x9E - adds r2, r1, 0 - adds r1, 0x80 - ldr r3, [r0, 0x24] - mov r10, r3 - ldr r7, _080B40DC @ =0x000003ff - mov r9, r7 - movs r6, 0xD -_080B4060: - adds r0, r2, 0 - adds r0, 0x40 - str r0, [sp] - movs r3, 0x40 - adds r3, r1 - mov r12, r3 - adds r3, r2, 0 - adds r4, r1, 0 - movs r5, 0xE -_080B4072: - ldrh r2, [r4] - mov r1, r9 - ands r1, r2 - mov r7, r8 - ldrh r0, [r7, 0x1A] - adds r0, 0x1 - cmp r1, r0 - ble _080B4086 - adds r0, r2, 0 - subs r0, 0x3C -_080B4086: - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _080B4072 - ldr r2, [sp] - mov r1, r12 - subs r6, 0x1 - cmp r6, 0 - bge _080B4060 - movs r1, 0x96 - lsls r1, 4 - add r1, r10 - adds r2, r1, 0 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r0 - ldr r3, _080B40E0 @ =0x040000d4 - ldr r5, _080B40E4 @ =0x800000f0 - movs r4, 0xF0 - lsls r4, 2 - movs r6, 0xD -_080B40B4: - str r1, [r3] - str r2, [r3, 0x4] - str r5, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r4 - adds r1, r4 - subs r6, 0x1 - cmp r6, 0 - bge _080B40B4 - 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 -_080B40D8: .4byte gMenuWindow -_080B40DC: .4byte 0x000003ff -_080B40E0: .4byte 0x040000d4 -_080B40E4: .4byte 0x800000f0 - thumb_func_end sub_80B403C - - thumb_func_start sub_80B40E8 -sub_80B40E8: @ 80B40E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - mov r8, r7 - ldr r0, _080B4134 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080B4102 - b _080B436C -_080B4102: - ldr r2, _080B4138 @ =gMain - ldrh r0, [r2, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _080B414C - ldr r4, _080B413C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080B4140 - ldrb r0, [r4, 0xB] - cmp r0, 0 - bne _080B411E - b _080B436C -_080B411E: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - subs r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B3F88 - movs r0, 0 - movs r1, 0 - b _080B417A - .align 2, 0 -_080B4134: .4byte gPaletteFade -_080B4138: .4byte gMain -_080B413C: .4byte gUnknown_03000708 -_080B4140: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _080B41A0 -_080B414C: - cmp r1, 0x80 - bne _080B41AC - ldr r4, _080B418C @ =gUnknown_03000708 - ldrb r0, [r4, 0x9] - cmp r0, 0x7 - bne _080B4190 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldrb r1, [r4, 0x8] - cmp r0, r1 - bne _080B4166 - b _080B436C -_080B4166: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0xB] - adds r0, 0x1 - strb r0, [r4, 0xB] - bl sub_80B403C - movs r0, 0x7 - movs r1, 0x7 -_080B417A: - movs r2, 0 - bl sub_80B39D0 - bl sub_80B3A70 - bl sub_80B32A4 - b _080B436C - .align 2, 0 -_080B418C: .4byte gUnknown_03000708 -_080B4190: - ldrb r2, [r4, 0x8] - cmp r0, r2 - bne _080B4198 - b _080B436C -_080B4198: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_080B41A0: - bl MoveMenuCursor - strb r0, [r4, 0x9] - bl sub_80B3A70 - b _080B436C -_080B41AC: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B41B8 - b _080B4358 -_080B41B8: - movs r0, 0x5 - bl PlaySE - ldr r6, _080B426C @ =gUnknown_03000708 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldrb r1, [r6, 0x8] - cmp r0, r1 - bne _080B41CE - b _080B4350 -_080B41CE: - movs r0, 0 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - ldrb r1, [r6, 0x9] - adds r0, r1, 0 - movs r2, 0x1 - bl sub_80B39D0 - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0xC - movs r2, 0xD - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldrb r0, [r6, 0xC] - cmp r0, 0 - bne _080B428C - ldr r5, _080B4270 @ =gUnknown_020386A0 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPrice - adds r4, r0, 0 - movs r0, 0x1 - bl GetPriceReduction - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - asrs r4, r0 - str r4, [r5] - ldr r0, _080B4274 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - adds r1, r4, 0 - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - beq _080B42BA - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _080B4278 @ =gStringVar1 - bl CopyItemName - ldr r4, _080B427C @ =gStringVar4 - ldr r1, _080B4280 @ =gOtherText_HowManyYouWant - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _080B4284 @ =sub_80B3EFC - ldr r3, _080B4288 @ =0x0000c3e1 - adds r0, r7, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B426C: .4byte gUnknown_03000708 -_080B4270: .4byte gUnknown_020386A0 -_080B4274: .4byte gSaveBlock1 -_080B4278: .4byte gStringVar1 -_080B427C: .4byte gStringVar4 -_080B4280: .4byte gOtherText_HowManyYouWant -_080B4284: .4byte sub_80B3EFC -_080B4288: .4byte 0x0000c3e1 -_080B428C: - ldr r5, _080B42C8 @ =gUnknown_020386A0 - ldr r4, _080B42CC @ =gDecorations - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 5 - adds r0, r4 - ldrh r1, [r0, 0x14] - str r1, [r5] - ldr r0, _080B42D0 @ =gSaveBlock1 - movs r2, 0x92 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - bne _080B42E0 -_080B42BA: - ldr r1, _080B42D4 @ =gOtherText_NotEnoughMoney - ldr r2, _080B42D8 @ =sub_80B3BD0 - ldr r3, _080B42DC @ =0x0000c3e1 - adds r0, r7, 0 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B42C8: .4byte gUnknown_020386A0 -_080B42CC: .4byte gDecorations -_080B42D0: .4byte gSaveBlock1 -_080B42D4: .4byte gOtherText_NotEnoughMoney -_080B42D8: .4byte sub_80B3BD0 -_080B42DC: .4byte 0x0000c3e1 -_080B42E0: - ldr r0, _080B4318 @ =gStringVar1 - ldrb r1, [r6, 0xB] - ldrb r2, [r6, 0x9] - adds r1, r2 - ldr r2, [r6, 0x4] - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 5 - adds r2, r4, 0x1 - adds r1, r2 - bl StringCopy - ldr r0, _080B431C @ =gStringVar2 - ldr r1, [r5] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldrb r0, [r6, 0xC] - cmp r0, 0x1 - bne _080B4328 - ldr r0, _080B4320 @ =gStringVar4 - ldr r1, _080B4324 @ =gOtherText_ThatWillBe2 - bl StringExpandPlaceholders - b _080B4330 - .align 2, 0 -_080B4318: .4byte gStringVar1 -_080B431C: .4byte gStringVar2 -_080B4320: .4byte gStringVar4 -_080B4324: .4byte gOtherText_ThatWillBe2 -_080B4328: - ldr r0, _080B4340 @ =gStringVar4 - ldr r1, _080B4344 @ =gOtherText_ThatWillBe3 - bl StringExpandPlaceholders -_080B4330: - ldr r1, _080B4340 @ =gStringVar4 - ldr r2, _080B4348 @ =sub_80B3D38 - ldr r3, _080B434C @ =0x0000c3e1 - mov r0, r8 - bl DisplayItemMessageOnField - b _080B436C - .align 2, 0 -_080B4340: .4byte gStringVar4 -_080B4344: .4byte gOtherText_ThatWillBe3 -_080B4348: .4byte sub_80B3D38 -_080B434C: .4byte 0x0000c3e1 -_080B4350: - adds r0, r7, 0 - bl sub_80B43F0 - b _080B436C -_080B4358: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B436C - movs r0, 0x5 - bl PlaySE - mov r0, r8 - bl sub_80B43F0 -_080B436C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B40E8 - - thumb_func_start sub_80B4378 -sub_80B4378: @ 80B4378 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xA - movs r2, 0xD - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080B43E4 @ =gBGTilemapBuffers + 0x800 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0xB - movs r3, 0xC - bl sub_80A3FA0 - bl sub_80B3420 - movs r0, 0x6 - movs r1, 0x7 - bl sub_80B3764 - bl sub_80B37EC - movs r0, 0 - bl StartVerticalScrollIndicators - movs r0, 0x1 - bl StartVerticalScrollIndicators - bl sub_80B32A4 - ldr r1, _080B43E8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B43EC @ =sub_80B40E8 - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B43E4: .4byte gBGTilemapBuffers + 0x800 -_080B43E8: .4byte gTasks -_080B43EC: .4byte sub_80B40E8 - thumb_func_end sub_80B4378 - - thumb_func_start sub_80B43F0 -sub_80B43F0: @ 80B43F0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080B4428 @ =gFieldCallback - ldr r0, _080B442C @ =sub_80B3050 - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080B4430 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B4434 @ =Task_ExitBuyMenu - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4428: .4byte gFieldCallback -_080B442C: .4byte sub_80B3050 -_080B4430: .4byte gTasks -_080B4434: .4byte Task_ExitBuyMenu - thumb_func_end sub_80B43F0 - - thumb_func_start Task_ExitBuyMenu -Task_ExitBuyMenu: @ 80B4438 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080B4468 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B4462 - movs r0, 0 - movs r1, 0 - bl RemoveMoneyLabelObject - bl BuyMenuFreeMemory - ldr r0, _080B446C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_080B4462: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4468: .4byte gPaletteFade -_080B446C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end Task_ExitBuyMenu - - thumb_func_start sub_80B4470 -sub_80B4470: @ 80B4470 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r2, 0 - ldr r0, _080B44C8 @ =gUnknown_02038724 - mov r12, r0 - ldr r6, _080B44CC @ =gUnknown_03000708 - mov r8, r12 - adds r4, r6, 0 - ldr r1, _080B44D0 @ =gTasks - mov r9, r1 - lsls r0, r5, 2 - adds r0, r5 - lsls r7, r0, 3 -_080B4492: - lsls r0, r2, 2 - mov r1, r8 - adds r3, r0, r1 - ldrb r0, [r4, 0xB] - ldrb r1, [r4, 0x9] - adds r0, r1 - ldr r1, [r4, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r3] - ldrh r0, [r0] - cmp r1, r0 - bne _080B44DC - ldrh r0, [r3, 0x2] - cmp r0, 0 - beq _080B44DC - adds r2, r0, 0 - mov r4, r9 - adds r1, r7, r4 - movs r4, 0xA - ldrsh r0, [r1, r4] - adds r0, r2, r0 - cmp r0, 0xFF - ble _080B44D4 - movs r0, 0xFF - strh r0, [r3, 0x2] - b _080B451E - .align 2, 0 -_080B44C8: .4byte gUnknown_02038724 -_080B44CC: .4byte gUnknown_03000708 -_080B44D0: .4byte gTasks -_080B44D4: - ldrh r0, [r1, 0xA] - adds r0, r2, r0 - strh r0, [r3, 0x2] - b _080B451E -_080B44DC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x2 - bls _080B4492 - ldr r3, _080B452C @ =gUnknown_02038730 - ldrb r0, [r3] - cmp r0, 0x2 - bhi _080B451E - adds r2, r0, 0 - lsls r2, 2 - add r2, r12 - ldrb r0, [r6, 0xB] - ldrb r1, [r6, 0x9] - adds r0, r1 - ldr r1, [r6, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r12 - ldr r2, _080B4530 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - strh r0, [r1, 0x2] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] -_080B451E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B452C: .4byte gUnknown_02038730 -_080B4530: .4byte gTasks - thumb_func_end sub_80B4470 - - thumb_func_start ClearItemPurchases -ClearItemPurchases: @ 80B4534 - push {lr} - ldr r0, _080B4548 @ =gUnknown_02038730 - movs r1, 0 - strb r1, [r0] - ldr r0, _080B454C @ =gUnknown_02038724 - movs r1, 0x3 - bl ClearItemSlots - pop {r0} - bx r0 - .align 2, 0 -_080B4548: .4byte gUnknown_02038730 -_080B454C: .4byte gUnknown_02038724 - thumb_func_end ClearItemPurchases - - thumb_func_start CreatePokemartMenu -CreatePokemartMenu: @ 80B4550 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - bl ClearItemPurchases - ldr r0, _080B4570 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4570: .4byte EnableBothScriptContexts - thumb_func_end CreatePokemartMenu - - thumb_func_start CreateDecorationShop1Menu -CreateDecorationShop1Menu: @ 80B4574 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B4590 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B4590: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop1Menu - - thumb_func_start CreateDecorationShop2Menu -CreateDecorationShop2Menu: @ 80B4594 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2 - bl CreateShopMenu - adds r0, r4, 0 - bl SetShopItemsForSale - ldr r0, _080B45B0 @ =EnableBothScriptContexts - bl SetShopMenuCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B45B0: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop2Menu - - thumb_func_start sub_80B45B4 -sub_80B45B4: @ 80B45B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - ldr r2, _080B4648 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r1, 0xA] - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B4678 - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp] - asrs r1, 16 - str r1, [sp, 0x4] - lsls r0, r1, 1 - mov r1, r9 - adds r7, r0, r1 -_080B4608: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r2, [sp] - adds r6, r2, r0 -_080B4614: - ldr r0, [sp, 0xC] - asrs r1, r0, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r2, 0 - ldrsh r1, [r7, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B465C - ldr r0, [sp, 0x4] - cmp r0, 0x2 - beq _080B464C - ldrh r0, [r7, 0x2] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B465C - .align 2, 0 -_080B4648: .4byte gTasks -_080B464C: - mov r1, r9 - ldrh r0, [r1] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B465C: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4614 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4608 - b _080B4700 -_080B4678: - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp, 0x8] - asrs r7, r1, 16 -_080B4688: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r1, [sp, 0x8] - adds r6, r1, r0 -_080B4694: - ldr r2, [sp, 0xC] - asrs r1, r2, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r1, 0x2 - subs r1, r7 - lsls r1, 1 - add r1, r9 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _080B46E6 - cmp r7, 0x2 - beq _080B46D6 - movs r0, 0x1 - subs r0, r7 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _080B46E6 -_080B46D6: - mov r1, r9 - ldrh r0, [r1, 0x4] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_080B46E6: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4694 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B4688 -_080B4700: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B45B4 - - thumb_func_start sub_80B4710 -sub_80B4710: @ 80B4710 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B4738 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r0, 0x1 - strh r0, [r4, 0x6] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _080B47AA - lsls r0, 2 - ldr r1, _080B473C @ =_080B4740 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B4738: .4byte gTasks + 0x8 -_080B473C: .4byte _080B4740 - .align 2, 0 -_080B4740: - .4byte _080B475C - .4byte _080B4764 - .4byte _080B476C - .4byte _080B4774 - .4byte _080B477C - .4byte _080B4790 - .4byte _080B47A0 -_080B475C: - ldr r1, _080B4760 @ =gUnknown_083CC714 - b _080B4792 - .align 2, 0 -_080B4760: .4byte gUnknown_083CC714 -_080B4764: - ldr r1, _080B4768 @ =gUnknown_083CC71A - b _080B4792 - .align 2, 0 -_080B4768: .4byte gUnknown_083CC71A -_080B476C: - ldr r1, _080B4770 @ =gUnknown_083CC720 - b _080B477E - .align 2, 0 -_080B4770: .4byte gUnknown_083CC720 -_080B4774: - ldr r1, _080B4778 @ =gUnknown_083CC726 - b _080B4792 - .align 2, 0 -_080B4778: .4byte gUnknown_083CC726 -_080B477C: - ldr r1, _080B478C @ =gUnknown_083CC72C -_080B477E: - movs r2, 0xC0 - lsls r2, 4 - adds r0, r3, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B478C: .4byte gUnknown_083CC72C -_080B4790: - ldr r1, _080B479C @ =gUnknown_083CC732 -_080B4792: - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 - b _080B47AA - .align 2, 0 -_080B479C: .4byte gUnknown_083CC732 -_080B47A0: - ldr r1, _080B47D4 @ =gUnknown_083CC738 - adds r0, r3, 0 - movs r2, 0 - bl sub_80B45B4 -_080B47AA: - ldrh r0, [r4] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - strh r0, [r4] - adds r5, r0, 0 - cmp r5, 0 - bne _080B47CE - bl DrawWholeMapView - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - strh r0, [r4, 0x2] - strh r5, [r4, 0x6] -_080B47CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B47D4: .4byte gUnknown_083CC738 - thumb_func_end sub_80B4710 - - thumb_func_start sub_80B47D8 -sub_80B47D8: @ 80B47D8 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _080B481C @ =sub_80B4710 - adds r0, r6, 0 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080B4820 @ =gTasks + 0x8 - adds r7, r0, r1 - adds r0, r7, 0 - adds r0, 0x8 - adds r1, r7, 0 - adds r1, 0xA - bl PlayerGetDestCoords - movs r0, 0 - strh r0, [r7] - strh r0, [r7, 0x2] - strh r5, [r7, 0x4] - adds r0, r4, 0 - bl _call_via_r6 - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B481C: .4byte sub_80B4710 -_080B4820: .4byte gTasks + 0x8 - thumb_func_end sub_80B47D8 - - thumb_func_start sub_80B4824 -sub_80B4824: @ 80B4824 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80B47D8 - ldr r1, _080B4838 @ =gUnknown_02038731 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B4838: .4byte gUnknown_02038731 - thumb_func_end sub_80B4824 - - thumb_func_start sub_80B483C -sub_80B483C: @ 80B483C - push {lr} - ldr r0, _080B484C @ =gUnknown_02038731 - ldrb r0, [r0] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_080B484C: .4byte gUnknown_02038731 - thumb_func_end sub_80B483C - - thumb_func_start sub_80B4850 -sub_80B4850: @ 80B4850 - push {lr} - ldr r2, _080B4874 @ =gTasks - ldr r0, _080B4878 @ =gUnknown_02038731 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B487C - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x2 - bne _080B487C - movs r0, 0 - b _080B487E - .align 2, 0 -_080B4874: .4byte gTasks -_080B4878: .4byte gUnknown_02038731 -_080B487C: - movs r0, 0x1 -_080B487E: - pop {r1} - bx r1 - thumb_func_end sub_80B4850 - - .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/pokemon/pokeblock_feed.txt b/common_syms/pokemon/pokeblock_feed.txt new file mode 100644 index 000000000..827e6526e --- /dev/null +++ b/common_syms/pokemon/pokeblock_feed.txt @@ -0,0 +1,12 @@ +gPokeblockFeedPokeSprite +gPokeblockFeedMonSpecies +gPokeblockMonNotFlipped +gPokeblockFeedMonSpriteID +gPokeblockFeedMonNature +gUnknown_03005F34 +gPokeblockFeedUnused0 +gUnknown_03005F3C +gUnknown_03005F40 +gPokeblockFeedPokeSpriteCopy +gUnknown_03005F94 +gUnknown_03005FA0 diff --git a/common_syms/scene/berry_blender.txt b/common_syms/scene/berry_blender.txt new file mode 100644 index 000000000..524a31411 --- /dev/null +++ b/common_syms/scene/berry_blender.txt @@ -0,0 +1,4 @@ +gUnknown_03004830 +gInGameOpponentsNo +gUnknown_03004840 +gBerryBlenderData diff --git a/common_syms/scene/cute_sketch.txt b/common_syms/scene/cute_sketch.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/common_syms/scene/cute_sketch.txt diff --git a/common_syms/scene/egg_hatch.txt b/common_syms/scene/egg_hatch.txt index f49202045..891ccc104 100644 --- a/common_syms/scene/egg_hatch.txt +++ b/common_syms/scene/egg_hatch.txt @@ -1 +1 @@ -gEggHatchData
\ No newline at end of file +gEggHatchData diff --git a/data/battle_transition.s b/data/battle_transition.s deleted file mode 100644 index 0d463ddef..000000000 --- a/data/battle_transition.s +++ /dev/null @@ -1,399 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083FBB88:: @ 83FBB88 - .incbin "graphics/battle_transitions/big_pokeball.4bpp" - - .align 2 -gUnknown_083FC108:: @ 83FC108 - .incbin "graphics/battle_transitions/pokeball_trail.4bpp" - - .align 2 -gSpriteImage_83FC148:: @ 83FC148 - .incbin "graphics/battle_transitions/pokeball.4bpp" - - .align 2 -gUnknown_083FC348:: @ 83FC348 - .incbin "graphics/battle_transitions/elite_four_bg.4bpp" - - .align 2 -gSpriteImage_83FC528:: @ 83FC528 - .incbin "graphics/battle_transitions/unused_brendan.4bpp" - - .align 2 -gSpriteImage_83FCD28:: @ 83FCD28 - .incbin "graphics/battle_transitions/unused_lass.4bpp" - - .align 2 -gUnknown_083FD528:: @ 83FD528 - .incbin "graphics/battle_transitions/shrinking_box.4bpp" - - .align 2 -gUnknown_083FD708:: @ 83FD708 - .4byte 0x0200c000 - - .align 2 -gUnknown_083FD70C:: @ 83FD70C - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - .4byte sub_811AC64 - - .align 2 -gBattleTransitionFuncs:: @ 83FD750 - .4byte sub_811ACB4 - .4byte sub_811ADAC - .4byte sub_811AF44 - .4byte sub_811B0F0 - .4byte sub_811B578 - .4byte sub_811B7E8 - .4byte sub_811BCBC - .4byte sub_811BEA0 - .4byte sub_811CA5C - .4byte sub_811CCDC - .4byte sub_811D0B8 - .4byte sub_811D1C8 - .4byte sub_811C08C - .4byte sub_811C0AC - .4byte sub_811C0CC - .4byte sub_811C0EC - .4byte sub_811C10C - - .align 2 -gUnknown_083FD794:: @ 83FD794 - .4byte sub_811AB88 - .4byte sub_811ABD8 - .4byte sub_811AC0C - .4byte sub_811AC34 - - .align 2 -gUnknown_083FD7A4:: @ 83FD7A4 - .4byte sub_811ACEC - .4byte sub_811AD1C - .4byte sub_811AD80 - - .align 2 -gUnknown_083FD7B0:: @ 83FD7B0 - .4byte sub_811ADE4 - .4byte sub_811AE70 - - .align 2 -gUnknown_083FD7B8:: @ 83FD7B8 - .4byte sub_811AF7C - .4byte sub_811B000 - - .align 2 -gUnknown_083FD7C0:: @ 83FD7C0 - .4byte sub_811B128 - .4byte sub_811B1D8 - .4byte sub_811B268 - .4byte sub_811B2F4 - .4byte sub_811B380 - .4byte sub_811B3EC - - .align 2 -gUnknown_083FD7D8:: @ 83FD7D8 - .4byte sub_811B5B0 - .4byte sub_811B5FC - .4byte sub_811B688 - - .align 1 -gUnknown_083FD7E4:: @ 83FD7E4 - .2byte -16 - .2byte 256 - - .align 1 -gUnknown_083FD7E8:: @ 83FD7E8 - .2byte 0 - .2byte 32 - .2byte 64 - .2byte 18 - .2byte 48 - - .align 1 -gUnknown_083FD7F2:: @ 83FD7F2 - .2byte 8 - .2byte -8 - - .align 2 -gUnknown_083FD7F8:: @ 83FD7F8 - .4byte sub_811B820 - .4byte sub_811B884 - .4byte sub_811B90C - .4byte sub_811B9F0 - .4byte sub_811BA70 - .4byte sub_811BB60 - .4byte sub_811BBEC - - .align 2 -gUnknown_083FD814:: @ 83FD814 - .4byte sub_811BCF4 - .4byte sub_811BD60 - - .align 2 -gUnknown_083FD81C:: @ 83FD81C - .4byte sub_811BED8 - .4byte sub_811BF2C - .4byte sub_811BFC4 - - .align 2 -gUnknown_083FD828:: @ 83FD828 - .4byte sub_811C164 - .4byte sub_811C1CC - .4byte sub_811C2A4 - .4byte sub_811C38C - .4byte sub_811C400 - .4byte sub_811C43C - .4byte sub_811C4F0 - .4byte sub_811C5B4 - .4byte sub_811C5E8 - .4byte sub_811C630 - -gUnknown_083FD850:: @ 83FD850 - .byte TRAINER_PIC_SIDNEY - .byte TRAINER_PIC_PHOEBE - .byte TRAINER_PIC_GLACIA - .byte TRAINER_PIC_DRAKE - .byte TRAINER_PIC_STEVEN - - .align 1 -gUnknown_083FD856:: @ 83FD856 - .2byte 0x200, 0x200 - .2byte 0x200, 0x200 - .2byte 0x1B0, 0x1B0 - .2byte 0x1A0, 0x1A0 - .2byte 0x188, 0x188 - - .align 1 -gUnknown_083FD86A:: @ 83FD86A - .2byte 0, 0 - .2byte 0, 0 - .2byte -4, 4 - .2byte 0, 5 - .2byte 0, 7 - - .align 2 -gUnknown_083FD880:: @ 83FD880 - .4byte sub_811C934 - .4byte sub_811C938 - .4byte sub_811C984 - .4byte sub_811C9B8 - .4byte sub_811C934 - .4byte sub_811C9E4 - .4byte sub_811C934 - - .align 1 -gUnknown_083FD89C:: @ 83FD89C - .2byte 12, -12 - - .align 1 -gUnknown_083FD8A0:: @ 83FD8A0 - .2byte -1, 1 - - .align 2 -gUnknown_083FD8A4:: @ 83FD8A4 - .4byte sub_811CA94 - .4byte sub_811CB20 - .4byte sub_811CBE8 - - .align 2 -gUnknown_083FD8B0:: @ 83FD8B0 - .4byte sub_811CD14 - .4byte sub_811CDA0 - .4byte sub_811CE14 - .4byte sub_811CE4C - .4byte sub_811CEB0 - - .align 1 -gUnknown_083FD8C4:: @ 83FD8C4 - .2byte 0 - .2byte 20 - .2byte 15 - .2byte 40 - .2byte 10 - .2byte 25 - .2byte 35 - .2byte 5 - - .align 2 -gUnknown_083FD8D4:: @ 83FD8D4 - .4byte sub_811D0F0 - .4byte sub_811D144 - .4byte sub_811D19C - - .align 2 -gUnknown_083FD8E0:: @ 83FD8E0 - .4byte sub_811D200 - .4byte sub_811D260 - .4byte sub_811D2D8 - .4byte sub_811D3B0 - .4byte sub_811D41C - - .align 1 -gUnknown_083FD8F4:: @ 83FD8F4 - .2byte 56, 0, 0, 160, 0 - .2byte 104, 160, 240, 88, 1 - .2byte 240, 72, 56, 0, 1 - .2byte 0, 32, 144, 160, 0 - .2byte 144, 160, 184, 0, 1 - .2byte 56, 0, 168, 160, 0 - .2byte 168, 160, 48, 0, 1 - - .align 1 -gUnknown_083FD93A:: @ 83FD93A - .2byte 8 - .2byte 4 - .2byte 2 - .2byte 1 - .2byte 1 - .2byte 1 - .2byte 0 - - .align 2 -gUnknown_083FD948:: @ 83FD948 - .4byte sub_811D584 - .4byte sub_811D5E0 - - .align 2 -gSpriteImageTable_83FD950:: @ 83FD950 - obj_frame_tiles gSpriteImage_83FC148, 0x200 - - .align 2 -gSpriteAnim_83FD958:: @ 83FD958 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD960:: @ 83FD960 - .4byte gSpriteAnim_83FD958 - - .align 2 -gSpriteAffineAnim_83FD964:: @ 83FD964 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83FD974:: @ 83FD974 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_83FD984:: @ 83FD984 - .4byte gSpriteAffineAnim_83FD964 - .4byte gSpriteAffineAnim_83FD974 - - .align 2 -gSpriteTemplate_83FD98C:: @ 83FD98C - spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720 - - .align 2 -gOamData_83FD9A4:: @ 83FD9A4 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gSpriteImageTable_83FD9AC:: @ 83FD9AC - obj_frame_tiles gSpriteImage_83FC528, 0x800 - - .align 2 -gSpriteImageTable_83FD9B4:: @ 83FD9B4 - obj_frame_tiles gSpriteImage_83FCD28, 0x800 - - .align 2 -gSpriteAnim_83FD9BC:: @ 83FD9BC - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83FD9C4:: @ 83FD9C4 - .4byte gSpriteAnim_83FD9BC - - .align 2 -gSpriteTemplate_83FD9C8:: @ 83FD9C8 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gSpriteTemplate_83FD9E0:: @ 83FD9E0 - spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C - - .align 2 -gFieldEffectObjectPalette10:: @ 83FD9F8 - .incbin "graphics/field_effect_objects/palettes/10.gbapal" - - .align 2 -gFieldEffectObjectPaletteInfo10:: @ 83FDA18 - obj_pal gFieldEffectObjectPalette10, 0x1009 - - .align 2 -Unknown_83FDA20: - .incbin "graphics/battle_transitions/sidney_bg.gbapal" - - .align 2 -Unknown_83FDA40: - .incbin "graphics/battle_transitions/phoebe_bg.gbapal" - - .align 2 -Unknown_83FDA60: - .incbin "graphics/battle_transitions/glacia_bg.gbapal" - - .align 2 -Unknown_83FDA80: - .incbin "graphics/battle_transitions/drake_bg.gbapal" - - .align 2 -Unknown_83FDAA0: - .incbin "graphics/battle_transitions/steven_bg.gbapal" - - .align 2 -Unknown_83FDAC0: - .incbin "graphics/battle_transitions/brendan_bg.gbapal" - - .align 2 -Unknown_83FDAE0: - .incbin "graphics/battle_transitions/may_bg.gbapal" - - .align 2 -gUnknown_083FDB00:: @ 83FDB00 - .4byte Unknown_83FDA20 - .4byte Unknown_83FDA40 - .4byte Unknown_83FDA60 - .4byte Unknown_83FDA80 - .4byte Unknown_83FDAA0 - - .align 2 -gUnknown_083FDB14:: @ 83FDB14 - .4byte Unknown_83FDAC0 - .4byte Unknown_83FDAE0 - - .align 2 -UnusedTrainerPalette: - .incbin "graphics/battle_transitions/unused_trainer.gbapal" - - .align 2 -gSpritePalette_UnusedTrainer:: @ 83FDB3C - obj_pal UnusedTrainerPalette, 0x100A - - .align 2 -gUnknown_083FDB44:: @ 83FDB44 - .incbin "graphics/battle_transitions/big_pokeball_map.bin" - - .align 2 -gUnknown_083FDFF4:: @ 83FDFF4 - .incbin "graphics/battle_transitions/elite_four_bg_map.bin" diff --git a/data/berry_blender.s b/data/berry_blender.s deleted file mode 100644 index ff0f06473..000000000 --- a/data/berry_blender.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08215C0C:: @ 8215C0C - .incbin "graphics/berry_blender/center.gbapal" - - .align 2 -gUnknown_08215C2C:: @ 8215C2C - .incbin "graphics/berry_blender/center_map.bin" - - .align 2 -gUnknown_0821602C:: @ 821602C - .incbin "graphics/berry_blender/outer.gbapal" - - .incbin "graphics/unused/unknown/821604C.gbapal" - - .space 0x1C0 - - .string "▶$" - .string " $" - .string "カッコイ$" @ "cool" (missing an イ at the end) - .string "カワイイ$" @ "cute" - .string "ウツクシ$" @ "beautiful" (missing an イ at the end) - .string "カシコイ$" @ "smart" - .string "タクマシ$" @ "tough" (missing an イ at the end) - -gUnknown_08216249:: @ 8216249 - .string "\p$" - -@ unreferenced -@ These appear to be the first names of four people who worked on the game. - .string "てつじ$", 10 @ Tetsuji (Ohta) - .string "あきと$", 10 @ Akito (Mori) - .string "シゲル$", 10 @ Shigeru (Ohmori) - .string "ヨシノリ$", 10 @ Yoshinori (Matsuda) - -UnknownText_2Pok: - .string "2Pok$" -UnknownText_3Pok: - .string "3Pok$" -UnknownText_4Pok: - .string "4Pok$" - - .align 2 -gUnknown_08216284:: @ 8216284 - .4byte UnknownText_2Pok - .4byte UnknownText_3Pok - .4byte UnknownText_4Pok - -@ unreferenced - .string "1P$", 4 - .string "2P$", 4 - .string "3P$", 4 - .string "4P$", 4 - -.ifdef ENGLISH -UnknownText_Mister: - .string "MISTER$" -UnknownText_Laddie: - .string "LADDIE$" -UnknownText_Lassie: - .string "LASSIE$" -.else -UnknownText_Mister: - .string "OPI$" -UnknownText_Laddie: - .string "KUMPEL$" -UnknownText_Lassie: - .string "TUSSI$" -.endif - - .align 2 -gUnknown_082162B8:: @ 82162B8 - .4byte UnknownText_Mister - .4byte UnknownText_Laddie - .4byte UnknownText_Lassie - -gUnknown_082162C4:: @ 82162C4 - .string "{COLOR RED}$" - -gUnknown_082162C8:: @ 82162C8 - .string "\n$" - - .string " $" - -gUnknown_082162CC:: @ 82162CC - .byte -1, -1 - .byte 1, -1 - .byte -1, 1 - .byte 1, 1 - -gUnknown_082162D4:: @ 82162D4 - .byte 2, 6 - .byte 23, 6 - .byte 2, 12 - .byte 23, 12 - .byte 1, 6 - .byte 22, 6 - .byte 1, 12 - .byte 22, 12 - -gUnknown_082162E4:: @ 82162E4 - .byte 72, 32 - .byte 168, 32 - .byte 72, 128 - .byte 168, 128 - -gUnknown_082162EC:: @ 82162EC - .byte -1, 0, 1, -1 - .byte -1, 0, 1, 2 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_082162F8:: @ 82162F8 - .2byte 0x0000, 0xC000, 0x4000, 0x8000 - -gUnknown_08216300:: @ 8216300 - .byte 1 - .byte 1 - .byte 0 - -gUnknown_08216303:: @ 8216303 - .byte 32 - .byte 224 - .byte 96 - .byte 160 - .byte 0 - - .align 2 -gUnknown_08216308:: @ 8216308 - .4byte sub_804F8C8 - .4byte sub_804F9F4 - .4byte sub_804FB1C - - .align 2 -gOamData_8216314:: @ 8216314 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821631C:: @ 821631C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216324:: @ 8216324 - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821632C:: @ 821632C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216334:: @ 8216334 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821633C:: @ 821633C - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216350:: @ 8216350 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216364:: @ 8216364 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216378:: @ 8216378 - obj_image_anim_frame 48, 2 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821638C:: @ 821638C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216394:: @ 8216394 - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821639C:: @ 821639C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82163A4:: @ 82163A4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82163AC:: @ 82163AC - .4byte gSpriteAnim_821631C - .4byte gSpriteAnim_8216324 - .4byte gSpriteAnim_821632C - .4byte gSpriteAnim_8216334 - .4byte gSpriteAnim_821633C - .4byte gSpriteAnim_8216350 - .4byte gSpriteAnim_8216364 - .4byte gSpriteAnim_8216378 - .4byte gSpriteAnim_821638C - .4byte gSpriteAnim_8216394 - .4byte gSpriteAnim_821639C - .4byte gSpriteAnim_82163A4 - - .align 2 -gUnknown_082163DC:: @ 82163DC - obj_tiles gBerryBlenderArrowTiles, 0x800, 46545 - - .align 2 -gUnknown_082163E4:: @ 82163E4 - obj_pal gBerryBlenderMiscPalette, 46546 - - .align 2 -gUnknown_082163EC:: @ 82163EC - obj_pal gBerryBlenderArrowPalette, 12312 - - .align 2 -gSpriteTemplate_82163F4:: @ 82163F4 - spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04 - - .align 2 -gOamData_821640C:: @ 821640C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8216414:: @ 8216414 - obj_image_anim_frame 0, 20 - obj_image_anim_end - - .align 2 -gSpriteAnim_821641C:: @ 821641C - obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216424:: @ 8216424 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_821643C:: @ 821643C - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216444:: @ 8216444 - .4byte gSpriteAnim_8216414 - .4byte gSpriteAnim_821641C - .4byte gSpriteAnim_8216424 - .4byte gSpriteAnim_821643C - - .align 2 -gUnknown_08216454:: @ 8216454 - obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888 - - .align 2 -gSpriteTemplate_821645C:: @ 821645C - spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650 - - .align 2 -gOamData_8216474:: @ 8216474 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821647C:: @ 821647C - obj_image_anim_frame 0, 3 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 3, 5 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216494:: @ 8216494 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164AC:: @ 82164AC - obj_image_anim_frame 0, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 3, 3 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D0:: @ 82164D0 - obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D8:: @ 82164D8 - obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82164E0:: @ 82164E0 - .4byte gSpriteAnim_821647C - .4byte gSpriteAnim_8216494 - .4byte gSpriteAnim_82164AC - .4byte gSpriteAnim_82164D0 - .4byte gSpriteAnim_82164D8 - - .align 2 -gUnknown_082164F4:: @ 82164F4 - obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456 - - .align 2 -gSpriteTemplate_82164FC:: @ 82164FC - spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_8216514:: @ 8216514 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821651C:: @ 821651C - obj_image_anim_frame 32, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216524:: @ 8216524 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_821652C:: @ 821652C - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216534:: @ 8216534 - .4byte gSpriteAnim_821651C - .4byte gSpriteAnim_8216524 - .4byte gSpriteAnim_821652C - - .align 2 -gUnknown_08216540:: @ 8216540 - obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345 - - .align 2 -gSpriteTemplate_8216548:: @ 8216548 - spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C - - .align 2 -gOamData_8216560:: @ 8216560 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8216568:: @ 8216568 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216570:: @ 8216570 - .4byte gSpriteAnim_8216568 - - .align 2 -gUnknown_08216574:: @ 8216574 - obj_tiles gBerryBlenderStartTiles, 0x400, 12346 - - .align 2 -gSpriteTemplate_821657C:: @ 821657C - spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC - - .align 1 -gUnknown_08216594:: @ 8216594 - .2byte -10, 20, 10, 2, 1 - .2byte 250, 20, 10, -2, 1 - .2byte -10, 140, 10, 2, -1 - .2byte 250, 140, 10, -2, -1 - -gUnknown_082165BC:: @ 82165BC - .byte 4, 3, 2 - .byte 0, 4, 3 - .byte 1, 0, 4 - .byte 2, 1, 0 - .byte 3, 2, 1 - .byte 0, 2, 3 - .byte 1, 3, 4 - .byte 2, 4, 0 - .byte 3, 0, 1 - .byte 4, 1, 2 - -gUnknown_082165DA:: @ 82165DA - .byte 1, 1, 2, 3, 4 - -gUnknown_082165DF:: @ 82165DF - .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15 - -gUnknown_082165E9:: @ 82165E9 - .byte 6, 6, 6, 6, 5 - -gUnknown_082165EE:: @ 82165EE - .byte 3, 3, 3, 2, 2 - -gUnknown_082165F3:: @ 82165F3 - .byte 3, 3, 3, 3, 2 - -gUnknown_082165F8:: @ 82165F8 - .string " $" - -gOtherText_BPMAndDash:: @ 82165FA - .string "BPM$" - .string "-$" - -gUnknown_08216600:: @ 8216600 - .string "\n$" - - .string "\n$" diff --git a/data/data2b.s b/data/data2b.s index 5fb3fa982..0387b6699 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -3,90 +3,6 @@ .section .rodata - .string "ターン$" @ "turn" - - .align 2 -gPlayerBufferCommands:: @ 81FAD98 - .4byte PlayerHandleGetAttributes - .4byte sub_802ECF0 - .4byte PlayerHandleSetAttributes - .4byte sub_802F7CC - .4byte PlayerHandleLoadPokeSprite - .4byte PlayerHandleSendOutPoke - .4byte PlayerHandleReturnPokeToBall - .4byte PlayerHandleTrainerThrow - .4byte PlayerHandleTrainerSlide - .4byte PlayerHandleTrainerSlideBack - .4byte sub_802FE7C - .4byte sub_802FF60 - .4byte sub_802FF80 - .4byte PlayerHandleBallThrow - .4byte PlayerHandlePuase - .4byte PlayerHandleMoveAnimation - .4byte PlayerHandlePrintString - .4byte PlayerHandlePrintStringPlayerOnly - .4byte sub_803037C - .4byte nullsub_42 - .4byte sub_8030468 - .4byte PlayerHandleOpenBag - .4byte sub_8030594 - .4byte sub_8030674 - .4byte PlayerHandleHealthBarUpdate - .4byte PlayerHandleExpBarUpdate - .4byte PlayerHandleStatusIconUpdate - .4byte PlayerHandleStatusAnimation - .4byte PlayerHandleStatusXor - .4byte sub_803097C - .4byte PlayerHandleDMATransfer - .4byte sub_8030A3C - .4byte sub_8030A6C - .4byte sub_8030A78 - .4byte sub_8030A8C - .4byte sub_8030AA0 - .4byte sub_8030AB4 - .4byte sub_8030AC8 - .4byte sub_8030AE4 - .4byte sub_8030B1C - .4byte sub_8030B34 - .4byte PlayerHandleHitAnimation - .4byte sub_8030BCC - .4byte PlayerHandleEffectivenessSound - .4byte sub_8030C1C - .4byte PlayerHandleFaintingCry - .4byte PlayerHandleIntroSlide - .4byte PlayerHandleTrainerBallThrow - .4byte sub_8030FAC - .4byte sub_80310A4 - .4byte sub_80310F0 - .4byte PlayerHandleSpriteInvisibility - .4byte PlayerHandleBattleAnimation - .4byte PlayerHandleLinkStandbyMsg - .4byte PlayerHandleResetActionMoveSelection - .4byte sub_80312A0 - .4byte nullsub_43 - -gUnknown_081FAE7C:: @ 81FAE7C - .byte 0, 2, 3, 1 - -gUnknown_081FAE80:: @ 81FAE80 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$" - -gUnknown_081FAE89:: @ 81FAE89 - .byte 8, 120 - .byte 88, 120 - .byte 8, 136 - .byte 88, 136 - -gUnknown_081FAE91:: @ 81FAE91 - .byte 144, 120 - .byte 190, 120 - .byte 144, 136 - .byte 190, 136 - .byte 72, 72 - .byte 32, 90 - .byte 80, 80 - .byte 80, 88 - .align 2 gUnknown_081FAEA4:: @ 81FAEA4 obj_tiles gSmokescreenImpactTiles, 0x180, 55019 diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s deleted file mode 100644 index e362b4dba..000000000 --- a/data/evolution_graphics.s +++ /dev/null @@ -1,70 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gEvoSparklePalette: @ 8416E44 - .incbin "graphics/misc/evo_sparkle.gbapal" - - .align 2 -gEvoSparkleTiles: @ 8416E64 - .incbin "graphics/misc/evo_sparkle.4bpp.lz" - -gUnknown_08416E84:: @ 8416E84 - obj_tiles gEvoSparkleTiles, 0x20, 1001 - .space 8 - -gUnknown_08416E94:: @ 8416E94 - obj_pal gEvoSparklePalette, 1001 - .space 8 - - .align 2 -gOamData_8416EA4:: @ 8416EA4 - .2byte 0x00A0 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8416EAC:: @ 8416EAC - obj_image_anim_frame 0, 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8416EB4:: @ 8416EB4 - .4byte gSpriteAnim_8416EAC - - .align 2 -gSpriteTemplate_8416EB8:: @ 8416EB8 - spr_template 1001, 1001, gOamData_8416EA4, gSpriteAnimTable_8416EB4, NULL, gDummySpriteAffineAnimTable, nullsub_84 - - .align 1 -gUnknown_08416ED0:: @ 8416ED0 - .2byte 0x3C0 - .2byte 0x380 - .2byte 0x340 - .2byte 0x300 - .2byte 0x2C0 - .2byte 0x280 - .2byte 0x240 - .2byte 0x200 - .2byte 0x1C0 - .2byte 0x180 - .2byte 0x140 - .2byte 0x100 - .2byte 0xFFFC - .2byte 0x10 - .2byte 0xFFFD - .2byte 0x30 - .2byte 0xFFFE - .2byte 0x50 - .2byte 0xFFFF - .2byte 0x70 - .2byte 0x1 - .2byte 0x70 - .2byte 0x2 - .2byte 0x50 - .2byte 0x3 - .2byte 0x30 - .2byte 0x4 - .2byte 0x10 diff --git a/data/learn_move.s b/data/learn_move.s deleted file mode 100644 index 369fbfdf0..000000000 --- a/data/learn_move.s +++ /dev/null @@ -1,150 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gDexArrows_Pal:: - .incbin "graphics/pokedex/arrows.gbapal" - - .align 2 -gDexArrows_Gfx:: - .incbin "graphics/pokedex/arrows.4bpp" - -gUnknown_08402CF8:: @ 8402CF8 - .byte 0, 0, 9, 13 - .byte 10, 0, 29, 7 - .byte 2, 14, 27, 19 - .byte 10, 8, 29, 13 - -gUnknown_08402D08:: @ 8402D08 - .4byte OtherText_Battle - .byte 1, 1, 0, 0 - .4byte OtherText_Power - .byte 1, 4, 1, 0 - .4byte OtherText_Accuracy - .byte 1, 9, 2, 0 - .space 8 - - .4byte OtherText_Contest - .byte 1, 1, 0, 0 - .4byte OtherText_Appeal - .byte 1, 4, 1, 0 - .4byte OtherText_Jam - .byte 1, 9, 2, 0 - .space 8 - - .4byte 0xFF00FFEF - .4byte gTileBuffer - - .align 2 -gOamData_8402D50:: @ 8402D50 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D58:: @ 8402D58 - .2byte 0x8000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D60:: @ 8402D60 - .2byte 0x4000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8402D68:: @ 8402D68 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402D70:: @ 8402D70 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402D78:: @ 8402D78 - .4byte gSpriteAnim_8402D68 - .4byte gSpriteAnim_8402D70 - - .align 2 -gUnknown_08402D80:: @ 8402D80 - obj_tiles gDexArrows_Gfx, 384, 0x1595 - - .align 2 -gUnknown_08402D88:: @ 8402D88 - obj_pal gDexArrows_Pal, 0x1596 - - .align 2 -gSpriteTemplate_8402D90:: @ 8402D90 - spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DA8:: @ 8402DA8 - obj_image_anim_frame 4, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DB0:: @ 8402DB0 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DB8:: @ 8402DB8 - .4byte gSpriteAnim_8402DA8 - .4byte gSpriteAnim_8402DB0 - - .align 2 -gSpriteTemplate_8402DC0:: @ 8402DC0 - spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DD8:: @ 8402DD8 - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE0:: @ 8402DE0 - obj_image_anim_frame 9, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE8:: @ 8402DE8 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DF0:: @ 8402DF0 - obj_image_anim_frame 11, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DF8:: @ 8402DF8 - .4byte gSpriteAnim_8402DD8 - .4byte gSpriteAnim_8402DE0 - .4byte gSpriteAnim_8402DE8 - .4byte gSpriteAnim_8402DF0 - - .align 2 -gSpriteTemplate_8402E08:: @ 8402E08 - spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .string "あきと$" @ programmer Akito Mori? - -gUnknown_08402E24:: @ 8402E24 - .byte 11, 1, 1 - .byte 3, 6, 2 - .byte 24, 1, 3 - .byte 3, 11, 4 - .byte 5, 4, 5 - .byte 3, 6, 6 - .byte 3, 11, 7 - -gUnknown_08402E39:: @ 8402E39 - .byte 0, 1, 2, 3 - -gUnknown_08402E3D:: @ 8402E3D - .byte 4, 5, 6 diff --git a/data/mon_pokeblock_anims.inc b/data/mon_pokeblock_anims.inc deleted file mode 100644 index d8df29c1d..000000000 --- a/data/mon_pokeblock_anims.inc +++ /dev/null @@ -1,133 +0,0 @@ -gNatureToMonPokeblockAnim:: @ 8411A10 - .byte 0, 0 @ HARDY - .byte 3, 0 @ LONELY - .byte 4, 1 @ BRAVE - .byte 5, 0 @ ADAMANT - .byte 10, 0 @ NAUGHTY - .byte 13, 0 @ BOLD - .byte 15, 0 @ DOCILE - .byte 16, 2 @ RELAXED - .byte 18, 0 @ IMPISH - .byte 19, 0 @ LAX - .byte 20, 0 @ TIMID - .byte 25, 0 @ HASTY - .byte 27, 3 @ SERIOUS - .byte 28, 0 @ JOLLY - .byte 29, 0 @ NAIVE - .byte 33, 4 @ MODEST - .byte 36, 0 @ MILD - .byte 37, 0 @ QUIET - .byte 39, 0 @ BASHFUL - .byte 42, 0 @ RASH - .byte 45, 0 @ CALM - .byte 46, 5 @ GENTLE - .byte 47, 6 @ SASSY - .byte 48, 0 @ CAREFUL - .byte 53, 0 @ QUIRKY - - .align 1 -gMonPokeblockAnims:: @ 8411A42 - @ HARDY - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 16, 24, 0, 0, 0, 12, 0 - .2byte 0, 4, 0, 32, 32, 0, 0, 0, 16, 1 - - @ LONELY - .2byte 0, 3, 6, 0, 48, 0, 0, 0, 24, 1 - - @ BRAVE - .2byte 64, 16, -24, 0, 32, 0, 0, 0, 0, 1 - - @ ADAMANT - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0 - .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0 - .2byte 0, 4, -16, 0, 4, 0, 16, 0, 0, 1 - - @ NAUGHTY - .2byte 0, 3, 6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 3, -6, 0, 12, 0, 0, 0, 6, 0 - .2byte 0, 16, 16, 0, 45, 1, 0, 0, 0, 1 - - @ BOLD - .2byte 0, 16, 0, 24, 32, 0, 0, 0, 16, 0 - .2byte 0, 16, 0, 23, 32, 0, 0, 0, 16, 1 - - @ DOCILE - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 1 - - @ RELAXED - .2byte 0, 2, 8, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 2, -8, 0, 32, 0, 0, 0, 0, 1 - - @ IMPISH - .2byte 0, 32, 2, 1, 48, 1, 0, 0, 24, 1 - - @ LAX - .2byte 0, 2, 16, 16, 128, 0, 0, 0, 0, 1 - - @ TIMID - .2byte 0, 2, -8, 0, 48, 0, -24, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 32, 2, 0, 36, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 48, 0, 24, 0, 0, 1 - - @ HASTY - .2byte 64, 24, 16, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 28, 2, 1, 32, 1, 0, 0, 16, 1 - - @ SERIOUS - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ JOLLY - .2byte 64, 16, -16, 2, 48, 0, 0, 0, 32, 1 - - @ NAIVE - .2byte 0, 12, -8, 4, 24, 0, 8, 0, 12, 0 - .2byte 0, 12, 8, 8, 24, 0, -16, 0, 12, 0 - .2byte 0, 12, -8, 16, 24, 0, 16, 0, 12, 0 - .2byte 0, 12, 8, 28, 24, 0, -8, 0, 12, 1 - - @ MODEST - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0 - .2byte 64, 16, -4, 0, 32, 0, 0, 0, 0, 0 - .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 1 - - @ MILD - .2byte 128, 4, 0, 8, 64, 0, 0, 0, 0, 1 - - @ QUIET - .2byte 0, 2, 16, 0, 48, 0, 0, 0, 0, 0 - .2byte 128, 2, 16, 0, 48, 0, 0, 0, 0, 1 - - @ BASHFUL - .2byte 0, 2, -4, 0, 48, 0, -48, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 2, 8, 0, 24, 0, 48, 0, 0, 1 - - @ RASH - .2byte 64, 4, 64, 58, 52, 0, -88, 0, 0, 0 - .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0 - .2byte 0, 24, 80, 0, 32, 0, 88, 0, 0, 1 - - @ CALM - .2byte 0, 2, 16, 4, 64, 0, 0, 0, 0, 1 - - @ GENTLE - .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1 - - @ SASSY - .2byte 0, 0, 0, 0, 42, 0, 0, 0, 0, 1 - - @ CAREFUL - .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 12, 24, 0, 0, 0, 12, 0 - .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0 - .2byte 0, 4, 0, 4, 24, 0, 0, 0, 12, 1 - - @ QUIRKY - .2byte 0, 4, 16, 12, 64, 0, 0, 0, 0, 0 - .2byte 0, -4, 16, 12, 64, 0, 0, 0, 0, 1 diff --git a/data/pokeblock_feed.s b/data/pokeblock_feed.s deleted file mode 100644 index ae5b17d12..000000000 --- a/data/pokeblock_feed.s +++ /dev/null @@ -1,225 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 8411A10 - .include "data/mon_pokeblock_anims.inc" - - .align 2 -gSpriteAffineAnim_8411E90:: @ 8411E90 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EA0:: @ 8411EA0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 30 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EC0:: @ 8411EC0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 12, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 28 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 3 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411EE8:: @ 8411EE8 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F08:: @ 8411F08 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F30:: @ 8411F30 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F50:: @ 8411F50 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F78:: @ 8411F78 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411F98:: @ 8411F98 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 32 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FC0:: @ 8411FC0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8411FE0:: @ 8411FE0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -1, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 4 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412008:: @ 8412008 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412028:: @ 8412028 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 1, 24 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 16 - obj_rot_scal_anim_frame 0x0, 0x0, -12, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8412050:: @ 8412050 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EA0 - .4byte gSpriteAffineAnim_8411EE8 - .4byte gSpriteAffineAnim_8411F30 - .4byte gSpriteAffineAnim_8411F78 - .4byte gSpriteAffineAnim_8411FC0 - .4byte gSpriteAffineAnim_8412008 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411EC0 - .4byte gSpriteAffineAnim_8411F08 - .4byte gSpriteAffineAnim_8411F50 - .4byte gSpriteAffineAnim_8411F98 - .4byte gSpriteAffineAnim_8411FE0 - .4byte gSpriteAffineAnim_8412028 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - .4byte gSpriteAffineAnim_8411E90 - - .align 2 -gUnknown_084120A4:: @ 84120A4 - .4byte gPokeblockRed_Pal - .4byte gPokeblockBlue_Pal - .4byte gPokeblockPink_Pal - .4byte gPokeblockGreen_Pal - .4byte gPokeblockYellow_Pal - .4byte gPokeblockPurple_Pal - .4byte gPokeblockIndigo_Pal - .4byte gPokeblockBrown_Pal - .4byte gPokeblockLiteBlue_Pal - .4byte gPokeblockOlive_Pal - .4byte gPokeblockGray_Pal - .4byte gPokeblockBlack_Pal - .4byte gPokeblockWhite_Pal - .4byte gPokeblockGold_Pal - - .align 2 -gSpriteAffineAnim_84120DC:: @ 84120DC - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84120EC:: @ 84120EC - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnim_84120F0:: @ 84120F0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8412148:: @ 8412148 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 1 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 8 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0x0, 0x0, -16, 1 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_84121A0:: @ 84121A0 - .4byte gSpriteAffineAnim_84120DC - - .align 2 -gSpriteAffineAnimTable_84121A4:: @ 84121A4 - .4byte gSpriteAffineAnim_84120F0 - - .align 2 -gSpriteAffineAnimTable_84121A8:: @ 84121A8 - .4byte gSpriteAffineAnim_8412148 - - .align 2 -gOamData_84121AC:: @ 84121AC - .2byte 0x0300 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_84121B4:: @ 84121B4 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_84121BC:: @ 84121BC - .4byte gSpriteAnim_84121B4 - - .align 2 -gSpriteAffineAnim_84121C0:: @ 84121C0 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0xFFF8, 0xFFF8, 0, 1 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnimTable_84121D8:: @ 84121D8 - .4byte gSpriteAffineAnim_84121C0 - - .align 2 -gUnknown_084121DC:: @ 84121DC - obj_tiles gPokeblock_Gfx, 0x20, 14818 - - .align 2 -gSpriteTemplate_84121E4:: @ 84121E4 - spr_template 14818, 14818, gOamData_84121AC, gSpriteAnimTable_84121BC, NULL, gSpriteAffineAnimTable_84121D8, sub_81481B0 diff --git a/data/shop.s b/data/shop.s deleted file mode 100644 index 071874d0e..000000000 --- a/data/shop.s +++ /dev/null @@ -1,69 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083CC6D0:: @ 83CC6D0 - .4byte MartText_Buy, sub_80B2EFC - .4byte MartText_Sell, sub_80B2F30 - .4byte MartText_Quit2, HandleShopMenuQuit - -gUnknown_083CC6E8:: @ 83CC6E8 - .byte 0, 1, 2 - -gUnknown_083CC6EB:: @ 83CC6EB - .byte 0, 2 - -@ unknown, unreferenced data - .align 1 - .2byte 0x2 - .2byte 0x3 - .2byte 0x4 - .2byte 0xD - .2byte 0x121 - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0xE - .2byte 0x0 - .2byte 0x0 - - .align 2 -gUnknown_083CC708:: @ 83CC708 - .4byte sub_80B3BF4 - .4byte sub_80B3D7C - - .align 1 -gUnknown_083CC710:: @ 83CC710 - .2byte 0x41EE,0x7FFF - - .align 1 -gUnknown_083CC714:: @ 83CC714 - .2byte 0x284,0x282,0x280 - - .align 1 -gUnknown_083CC71A:: @ 83CC71A - .2byte 0x285,0x283,0x281 - - .align 1 -gUnknown_083CC720:: @ 83CC720 - .2byte 0x28C,0x28A,0x288 - - .align 1 -gUnknown_083CC726:: @ 83CC726 - .2byte 0x28D,0x28B,0x289 - - .align 1 -gUnknown_083CC72C:: @ 83CC72C - .2byte 0x2A0,0x2A2,0x2A4 - - .align 1 -gUnknown_083CC732:: @ 83CC732 - .2byte 0x2A1,0x2A3,0x2A5 - - .align 1 -gUnknown_083CC738:: @ 83CC738 - .2byte 0x2A8,0x2AA,0x2AC diff --git a/include/battle.h b/include/battle.h index 9d8092197..08ed5cf58 100644 --- a/include/battle.h +++ b/include/battle.h @@ -520,12 +520,12 @@ struct BattleResults struct Struct2017800 { - u8 unk0_0:1; + u8 invisible:1; u8 unk0_1:1; - u8 unk0_2:1; + u8 substituteSprite:1; u8 unk0_3:1; u8 unk0_4:1; - u16 unk2; + u16 transformedSpecies; }; struct Struct2017810 diff --git a/include/battle_transition.h b/include/battle_transition.h index b01378505..ca6869c93 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -1,8 +1,42 @@ #ifndef GUARD_BATTLE_TRANSITION_H #define GUARD_BATTLE_TRANSITION_H -void sub_811AABC(u8); -void sub_811AAD8(u8); -u8 sub_811AAE8(void); +void sub_811AABC(u8 transitionID); +void sub_811AAD8(u8 transitionID); +bool8 IsBattleTransitionDone(void); + +#define TRANSITIONS_NO 17 + +enum // TRANSITION_MUGSHOT +{ + MUGSHOT_SYDNEY, + MUGSHOT_PHOEBE, + MUGSHOT_GLACIA, + MUGSHOT_DRAKE, + MUGSHOT_STEVEN, +}; + +#define MUGSHOTS_NO 5 + +// credits for the names go to Dyskinesia and Tetrable +// names are naturally subject to change + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWIRL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_STEVEN 16 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/berry_blender.h b/include/berry_blender.h deleted file mode 100644 index 924b24b00..000000000 --- a/include/berry_blender.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_BERRY_BLENDER_H -#define GUARD_BERRY_BLENDER_H - -void sub_80516C4(u8, u16); - -#endif // GUARD_BERRY_BLENDER_H diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h new file mode 100644 index 000000000..c217f22af --- /dev/null +++ b/include/evolution_graphics.h @@ -0,0 +1,13 @@ +#ifndef GUARD_EVOLUTION_GRAPHICS_H +#define GUARD_EVOLUTION_GRAPHICS_H + +void LoadEvoSparkleSpriteAndPal(void); + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0); +u8 LaunchTask_PreEvoSparklesSet2(void); +u8 LaunchTask_PostEvoSparklesSet1(void); +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 arg0); +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 arg0); +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID); + +#endif // GUARD_EVOLUTION_GRAPHICS_H diff --git a/include/field_effect.h b/include/field_effect.h index ea02c4131..f43b15afb 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -244,7 +244,7 @@ void sub_808948C(struct Task *); void sub_80894C4(struct Task *); void fishE(struct Task *); -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer); +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest); u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority); u8 CreateMonSprite_PicBox(u16, s16, s16, u8); diff --git a/include/gba/types.h b/include/gba/types.h index 96e057ab7..480619d21 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -39,11 +39,11 @@ struct PlttData struct OamData { /*0x00*/ u32 y:8; - /*0x01*/ u32 affineMode:2; - u32 objMode:2; - u32 mosaic:1; - u32 bpp:1; - u32 shape:2; + /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3 + u32 objMode:2; // 0x4, 0x8 = 0xC + u32 mosaic:1; // 0x10 + u32 bpp:1; // 0x20 + u32 shape:2; // 0x40, 0x80 /*0x02*/ u32 x:9; u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode diff --git a/include/money.h b/include/money.h index 49015ee19..06ac00e92 100644 --- a/include/money.h +++ b/include/money.h @@ -7,7 +7,7 @@ void sub_80B79E0(u32 *, u32); void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2); void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y); void sub_80B7AEC(u32, u8 left, u8 top); -void sub_80B7B34(void); +void sub_80B7B34(u8, u8, int); void sub_80B7BEC(u32, u8, u8); void sub_80B7C14(u32, u8, u8); void RemoveMoneyLabelObject(u8, u8); diff --git a/include/pokeblock.h b/include/pokeblock.h index f78ed40c3..6720653a0 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,7 +1,8 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H -enum { +enum +{ PBLOCK_CLR_BLACK, PBLOCK_CLR_RED, PBLOCK_CLR_BLUE, @@ -10,15 +11,32 @@ enum { PBLOCK_CLR_YELLOW }; +enum +{ + PBLOCK_COLOR, + PBLOCK_SPICY, + PBLOCK_DRY, + PBLOCK_SWEET, + PBLOCK_BITTER, + PBLOCK_SOUR, + PBLOCK_FEEL, +}; + void sub_810B96C(void); u8 sub_810BA50(s16, s16, u8); u8 sub_810C9B0(struct Pokeblock *); -s16 sub_810CA9C(const struct Pokeblock *, u8); +s16 GetPokeblockData(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); void ClearPokeblocks(void); -bool8 sub_810CA6C(u8); -s16 sub_810CAE4(u8, const struct Pokeblock *); +bool8 PokeblockClearIfExists(u8); +s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); +void CB2_PreparePokeblockFeedScene(void); + +#include "main.h" + +void sub_8136130(struct Pokeblock *, MainCallback); #endif // GUARD_POKEBLOCK_H diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h deleted file mode 100644 index 65d0d1dc9..000000000 --- a/include/pokeblock_feed.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Created by Scott Norton on 6/28/17. -// - -#ifndef POKERUBY_POKEBLOCK_FEED_H -#define POKERUBY_POKEBLOCK_FEED_H - -void sub_8147ADC(void); - -#endif //POKERUBY_POKEBLOCK_FEED_H diff --git a/include/pokemon.h b/include/pokemon.h index 21173d503..d0ceaf15e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -583,6 +583,7 @@ void AdjustFriendship(struct Pokemon *, u8); u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); void UpdatePartyPokerusTime(u16); u32 CanMonLearnTMHM(struct Pokemon *, u8); +u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); diff --git a/include/rom4.h b/include/rom4.h index 8d5b1bfa2..daccad7e9 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -120,7 +120,7 @@ bool32 is_c1_link_related_active(void); // c1_overworld_normal // c1_overworld // c2_overworld_basic -// sub_8054398 +void sub_8054398(void); void c2_overworld(void); // set_callback1 // sub_80543DC diff --git a/include/shop.h b/include/shop.h index cca6091c9..b785ca764 100644 --- a/include/shop.h +++ b/include/shop.h @@ -1,6 +1,34 @@ #ifndef GUARD_SHOP_H #define GUARD_SHOP_H +enum +{ + MART_TYPE_0, // normal mart + MART_TYPE_1, + MART_TYPE_2, +}; + +// shop view window NPC info enum +enum +{ + MAP_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; + +struct MartInfo +{ + /* 0x0 */ void (* callback) (void); + /* 0x4 */ u16 *itemList; + /* 0x8 */ u8 itemCount; // how many unique items are there for sale? + /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected. + /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY) + /* 0xB */ u8 choicesAbove; // when your cursor is far down, there are choices that have scrolled up past the top. this is the count of that. + /* 0xC */ u8 martType; // 0-2. 0 is normal mart while 1-2 seem to be decor shops or non-stackable purchases in general. + /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have. +}; + void sub_80B2E38(u8); void HandleShopMenuQuit(u8); void sub_80B2FA0(u8); @@ -11,8 +39,10 @@ void BuyMenuDrawMapGraphics(void); void sub_80B3764(int, int); void sub_80B37EC(void); void sub_80B40E8(u8); -void CreatePokemartMenu(void *); -void CreateDecorationShop1Menu(void *); -void CreateDecorationShop2Menu(void *); +void CreatePokemartMenu(u16 *); +void CreateDecorationShop1Menu(u16 *); +void CreateDecorationShop2Menu(u16 *); +void sub_80B356C(void); +void sub_80B368C(void); #endif // GUARD_SHOP_H diff --git a/include/songs.h b/include/songs.h index 8cf7ee5e9..afd26d683 100644 --- a/include/songs.h +++ b/include/songs.h @@ -36,29 +36,29 @@ enum /*0x1E*/ SE_N, /*0x1F*/ SE_SEIKAI, /*0x20*/ SE_HAZURE, - SE_EXP, - SE_JITE_PYOKO, - SE_MU_PACHI, - SE_TK_KASYA, - SE_FU_ZAKU, - SE_FU_ZAKU2, - SE_FU_ZUZUZU, - SE_RU_GASHIN, - SE_RU_GASYAN, - SE_RU_BARI, - SE_RU_HYUU, - SE_KI_GASYAN, - SE_TK_WARPIN, - SE_TK_WARPOUT, - SE_TU_SAA, - SE_HI_TURUN, - SE_TRACK_MOVE, - SE_TRACK_STOP, - SE_TRACK_HAIK, - SE_TRACK_DOOR, - SE_MOTER, - SE_CARD, - SE_SAVE, + /*0x21*/ SE_EXP, + /*0x22*/ SE_JITE_PYOKO, + /*0x23*/ SE_MU_PACHI, + /*0x24*/ SE_TK_KASYA, + /*0x25*/ SE_FU_ZAKU, + /*0x26*/ SE_FU_ZAKU2, + /*0x27*/ SE_FU_ZUZUZU, + /*0x28*/ SE_RU_GASHIN, + /*0x29*/ SE_RU_GASYAN, + /*0x2A*/ SE_RU_BARI, + /*0x2B*/ SE_RU_HYUU, + /*0x2C*/ SE_KI_GASYAN, + /*0x2D*/ SE_TK_WARPIN, + /*0x2E*/ SE_TK_WARPOUT, + /*0x2F*/ SE_TU_SAA, + /*0x30*/ SE_HI_TURUN, + /*0x31*/ SE_TRACK_MOVE, + /*0x32*/ SE_TRACK_STOP, + /*0x33*/ SE_TRACK_HAIK, + /*0x34*/ SE_TRACK_DOOR, + /*0x35*/ SE_MOTER, + /*0x36*/ SE_CARD, + /*0x37*/ SE_SAVE, /*0x38*/ SE_KON, /*0x39*/ SE_KON2, /*0x3A*/ SE_KON3, @@ -105,9 +105,9 @@ enum SE_C_PASI, SE_C_SYU, SE_C_PIKON, - SE_REAPOKE, - SE_OP_BASYU, - SE_BT_START, + /*0x66*/ SE_REAPOKE, + /*0x67*/ SE_OP_BASYU, + /*0x68*/ SE_BT_START, SE_DENDOU, SE_JIHANKI, SE_TAMA, @@ -131,20 +131,20 @@ enum /*0x7D*/ SE_W145B, /*0x7E*/ SE_W145C, /*0x7F*/ SE_W240, - SE_W015, - SE_W081, - SE_W081B, - SE_W088, - SE_W016, - SE_W016B, - SE_W003, - SE_W104, - SE_W013, - SE_W196, - SE_W086, - SE_W004, - SE_W025, - SE_W025B, + /*0x80*/ SE_W015, + /*0x81*/ SE_W081, + /*0x82*/ SE_W081B, + /*0x83*/ SE_W088, + /*0x84*/ SE_W016, + /*0x85*/ SE_W016B, + /*0x86*/ SE_W003, + /*0x87*/ SE_W104, + /*0x88*/ SE_W013, + /*0x89*/ SE_W196, + /*0x8A*/ SE_W086, + /*0x8B*/ SE_W004, + /*0x8C*/ SE_W025, + /*0x8D*/ SE_W025B, SE_W152, SE_W026, SE_W172, @@ -185,29 +185,29 @@ enum SE_W071B, SE_W071, SE_W103, - SE_W062, - SE_W062B, - SE_W048, - SE_W187, - SE_W118, - SE_W155, - SE_W122, - SE_W060, - SE_W185, - SE_W014, - SE_W043, - SE_W207, - SE_W207B, - SE_W215, - SE_W109, - SE_W173, - SE_W280, - SE_W202, - SE_W060B, - SE_W076, - SE_W080, - SE_W100, - SE_W107, + /*0xB6*/ SE_W062, + /*0xB7*/ SE_W062B, + /*0xB8*/ SE_W048, + /*0xB9*/ SE_W187, + /*0xBA*/ SE_W118, + /*0xBB*/ SE_W155, + /*0xBC*/ SE_W122, + /*0xBD*/ SE_W060, + /*0xBE*/ SE_W185, + /*0xBF*/ SE_W014, + /*0xC0*/ SE_W043, + /*0xC1*/ SE_W207, + /*0xC2*/ SE_W207B, + /*0xC3*/ SE_W215, + /*0xC4*/ SE_W109, + /*0xC5*/ SE_W173, + /*0xC6*/ SE_W280, + /*0xC7*/ SE_W202, + /*0xC8*/ SE_W060B, + /*0xC9*/ SE_W076, + /*0xCA*/ SE_W080, + /*0xCB*/ SE_W100, + /*0xCC*/ SE_W107, SE_W166, SE_W129, SE_W115, @@ -274,38 +274,38 @@ enum /*0x171*/ BGM_ME_BACHI, /*0x172*/ BGM_FANFA4, /*0x173*/ BGM_FANFA5, - BGM_ME_WAZA, - BGM_BIJYUTU, - BGM_DOORO_X4, - BGM_FUNE_KAN, - BGM_ME_SHINKA, - BGM_SHINKA, - BGM_ME_WASURE, - BGM_SYOUJOEYE, - BGM_BOYEYE, - BGM_DAN02, - BGM_MACHI_S3, - BGM_ODAMAKI, - BGM_B_TOWER, - BGM_SWIMEYE, - BGM_DAN03, - BGM_ME_KINOMI, - BGM_ME_TAMA, - BGM_ME_B_BIG, - BGM_ME_B_SMALL, - BGM_ME_ZANNEN, - BGM_BD_TIME, - BGM_TEST1, - BGM_TEST2, - BGM_TEST3, - BGM_TEST4, - BGM_TEST, - BGM_GOMACHI0, - BGM_GOTOWN, - BGM_POKECEN, - BGM_NEXTROAD, - BGM_GRANROAD, - BGM_CYCLING, + /*0x174*/ BGM_ME_WAZA, + /*0x175*/ BGM_BIJYUTU, + /*0x176*/ BGM_DOORO_X4, + /*0x177*/ BGM_FUNE_KAN, + /*0x178*/ BGM_ME_SHINKA, + /*0x179*/ BGM_SHINKA, + /*0x17A*/ BGM_ME_WASURE, + /*0x17B*/ BGM_SYOUJOEYE, + /*0x17C*/ BGM_BOYEYE, + /*0x17D*/ BGM_DAN02, + /*0x17E*/ BGM_MACHI_S3, + /*0x17F*/ BGM_ODAMAKI, + /*0x180*/ BGM_B_TOWER, + /*0x181*/ BGM_SWIMEYE, + /*0x182*/ BGM_DAN03, + /*0x183*/ BGM_ME_KINOMI, + /*0x184*/ BGM_ME_TAMA, + /*0x185*/ BGM_ME_B_BIG, + /*0x186*/ BGM_ME_B_SMALL, + /*0x187*/ BGM_ME_ZANNEN, + /*0x188*/ BGM_BD_TIME, + /*0x189*/ BGM_TEST1, + /*0x18A*/ BGM_TEST2, + /*0x18B*/ BGM_TEST3, + /*0x18C*/ BGM_TEST4, + /*0x18D*/ BGM_TEST, + /*0x18E*/ BGM_GOMACHI0, + /*0x18F*/ BGM_GOTOWN, + /*0x190*/ BGM_POKECEN, + /*0x191*/ BGM_NEXTROAD, + /*0x192*/ BGM_GRANROAD, + /*0x193*/ BGM_CYCLING, BGM_FRIENDLY, BGM_MISHIRO, BGM_TOZAN, diff --git a/include/text.h b/include/text.h index 99987d2c3..9a70dec11 100644 --- a/include/text.h +++ b/include/text.h @@ -97,35 +97,35 @@ struct WindowConfig struct Window { - u8 textMode; - u8 fontNum; - u8 language; - u8 foregroundColor; - u8 backgroundColor; - u8 shadowColor; - u8 paletteNum; - u8 tilemapLeft; - u8 tilemapTop; - u8 width; - u8 height; - u8 win_field_B; - u8 win_field_C; - u8 delayCounter; - u8 spacing; - u8 win_field_F; - u8 cursorX; - u8 cursorY; - u8 left; - u16 top; - u16 state; - u16 downArrowCounter; - u16 tileDataStartOffset; - u16 tileDataOffset; - u16 textIndex; - const u8 *text; - u8 *tileData; - u16 *tilemap; - struct WindowConfig *config; + /*0x00*/ u8 textMode; + /*0x01*/ u8 fontNum; + /*0x02*/ u8 language; + /*0x03*/ u8 foregroundColor; + /*0x04*/ u8 backgroundColor; + /*0x05*/ u8 shadowColor; + /*0x06*/ u8 paletteNum; + /*0x07*/ u8 tilemapLeft; + /*0x08*/ u8 tilemapTop; + /*0x09*/ u8 width; + /*0x0A*/ u8 height; + /*0x0B*/ u8 win_field_B; + /*0x0C*/ u8 win_field_C; + /*0x0D*/ u8 delayCounter; + /*0x0E*/ u8 spacing; + /*0x0F*/ u8 win_field_F; + /*0x10*/ u8 cursorX; + /*0x11*/ u8 cursorY; + /*0x12*/ u8 left; + /*0x14*/ u16 top; // padded to 0x14 + /*0x16*/ u16 state; + /*0x18*/ u16 downArrowCounter; + /*0x1A*/ u16 tileDataStartOffset; + /*0x1C*/ u16 tileDataOffset; + /*0x1E*/ u16 textIndex; + /*0x20*/ const u8 *text; + /*0x24*/ u8 *tileData; + /*0x28*/ u16 *tilemap; + /*0x2C*/ struct WindowConfig *config; }; extern vu16 *const gBGControlRegs[]; diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h deleted file mode 100644 index f34857cf1..000000000 --- a/include/use_pokeblock.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Created by Scott Norton on 5/31/17. -// - -#ifndef POKERUBY_USE_POKEBLOCK_H -#define POKERUBY_USE_POKEBLOCK_H - -void sub_8136130(struct Pokeblock *, MainCallback); - -#endif //POKERUBY_USE_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index 6bf8e579d..e89a23fc0 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -55,7 +55,7 @@ SECTIONS { asm/battle_2.o(.text); src/battle/battle_3.o(.text); src/battle/battle_4.o(.text); - asm/battle_5.o(.text); + src/battle/battle_5.o(.text); src/battle/battle_6.o(.text); src/battle/battle_7.o(.text); src/battle/battle_8.o(.text); @@ -83,7 +83,7 @@ SECTIONS { asm/trade.o(.text.sub_804A9F4); src/engine/trade.o(.text.sub_804DAD4); asm/trade.o(.text.sub_804DB2C); - asm/berry_blender.o(.text); + src/scene/berry_blender.o(.text); src/engine/play_time.o(.text); src/scene/new_game.o(.text); src/misc/rom4.o(.text); @@ -120,7 +120,7 @@ SECTIONS { src/battle/battle_anim.o(.text); src/misc/rom_8077ABC.o(.text); src/engine/task.o(.text); - asm/reshow_battle_screen.o(.text); + src/battle/reshow_battle_screen.o(.text); src/battle/battle_anim_807B69C.o(.text); src/scene/title_screen.o(.text); src/field/field_weather.o(.text); @@ -159,7 +159,6 @@ SECTIONS { src/debug/matsuda_debug_menu.o(.text); asm/contest.o(.text); src/field/shop.o(.text); - asm/shop.o(.text); src/field/berry.o(.text); src/field/script_menu.o(.text); src/engine/naming_screen.o(.text); @@ -197,6 +196,7 @@ SECTIONS { src/field/dewford_trend.o(.text); src/field/heal_location.o(.text); src/field/region_map.o(.text); + src/scene/cute_sketch.o(.text); asm/cute_sketch.o(.text); src/field/decoration.o(.text); asm/slot_machine.o(.text); @@ -226,7 +226,7 @@ SECTIONS { src/field/coins.o(.text); src/field/landmark.o(.text); src/field/fldeff_strength.o(.text); - asm/battle_transition.o(.text); + src/battle/battle_transition.o(.text); src/battle/battle_811DA74.o(.text); src/battle/battle_message.o(.text); src/field/choose_party.o(.text); @@ -243,7 +243,7 @@ SECTIONS { asm/battle_anim_81258BC.o(.text_812BBFC); src/field/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); - asm/learn_move.o(.text); + src/pokemon/learn_move.o(.text); src/field/fldeff_softboiled.o(.text); src/field/decoration_inventory.o(.text); src/field/roamer.o(.text); @@ -262,10 +262,10 @@ SECTIONS { src/engine/mystery_event_menu.o(.text); src/engine/save_failed_screen.o(.text); src/field/braille_puzzles.o(.text); - asm/pokeblock_feed.o(.text); + src/pokemon/pokeblock_feed.o(.text); src/engine/clear_save_data_menu.o(.text); src/scene/intro_credits_graphics.o(.text); - asm/evolution_graphics.o(.text); + src/scene/evolution_graphics.o(.text); src/field/bard_music.o(.text); src/field/fldeff_teleport.o(.text); src/debug/unknown_debug_menu.o(.text); @@ -330,6 +330,7 @@ SECTIONS { data/main_menu.o(.rodata); data/data2a.o(.rodata); src/battle/battle_4.o(.rodata); + src/battle/battle_5.o(.rodata); data/data2b.o(.rodata); src/battle/battle_3.o(.rodata); src/pokemon/pokemon_data.o(.rodata); @@ -341,7 +342,7 @@ SECTIONS { data/battle_interface.o(.rodata); src/battle/pokeball.o(.rodata); data/trade.o(.rodata); - data/berry_blender.o(.rodata); + src/scene/berry_blender.o(.rodata); src/scene/new_game.o(.rodata); data/rom4.o(.rodata); data/tilesets.o(.rodata); @@ -397,7 +398,7 @@ SECTIONS { src/field/item.o(.rodata); data/matsuda_debug_menu.o(.rodata); data/contest.o(.rodata); - data/shop.o(.rodata); + src/field/shop.o(.rodata); src/field/berry.o(.rodata); src/field/script_menu.o(.rodata); src/engine/naming_screen.o(.rodata); @@ -443,7 +444,7 @@ SECTIONS { data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); - data/battle_transition.o(.rodata); + src/battle/battle_transition.o(.rodata); data/battle_811DA74.o(.rodata); data/battle_message.o(.rodata); src/field/choose_party.o(.rodata); @@ -453,7 +454,7 @@ SECTIONS { data/contest_ai.o(.rodata); data/battle_anim_81258BC.o(.rodata); data/battle_anim_812C144.o(.rodata); - data/learn_move.o(.rodata); + src/pokemon/learn_move.o(.rodata); src/field/decoration_inventory.o(.rodata); src/field/roamer.o(.rodata); data/battle_tower.o(.rodata); @@ -470,9 +471,9 @@ SECTIONS { src/strings.o(.rodata); src/field/berry_tag_screen.o(.rodata); src/engine/save_failed_screen.o(.rodata); - data/pokeblock_feed.o(.rodata); + src/pokemon/pokeblock_feed.o(.rodata); data/intro_credits_graphics.o(.rodata); - data/evolution_graphics.o(.rodata); + src/scene/evolution_graphics.o(.rodata); data/bard_music.o(.rodata); data/unknown_debug_menu.o(.rodata); data/strings2.o(.rodata); diff --git a/src/battle/battle_10.c b/src/battle/battle_10.c index 0237bab4b..1a01e5383 100644 --- a/src/battle/battle_10.c +++ b/src/battle/battle_10.c @@ -52,7 +52,7 @@ extern u8 gUnknown_0300434C[]; extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern u8 GetBankIdentity(u8); -extern void sub_8031794(struct Pokemon *, u8); +extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8); extern void sub_8037A74(void); extern void sub_8032984(u8, u16); extern void sub_8037E30(void); @@ -696,7 +696,7 @@ void sub_8039294(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -726,7 +726,7 @@ void sub_8039430(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, @@ -765,7 +765,7 @@ void sub_8039648(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -834,7 +834,7 @@ void sub_803995C(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -909,7 +909,7 @@ void sub_8039B64(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -929,7 +929,7 @@ void sub_8039B64(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 7772444d7..bdd908ea5 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1347,8 +1347,8 @@ void sub_8010384(struct Sprite *sprite) u16 species; u8 yOffset; - if (ewram17800[r6].unk2 != 0) - species = ewram17800[r6].unk2; + if (ewram17800[r6].transformedSpecies != 0) + species = ewram17800[r6].transformedSpecies; else species = sprite->data2; diff --git a/src/battle/battle_5.c b/src/battle/battle_5.c new file mode 100644 index 000000000..5972c0cb1 --- /dev/null +++ b/src/battle/battle_5.c @@ -0,0 +1,1579 @@ +#include "global.h" +#include "data2.h" +#include "battle.h" +#include "battle_interface.h" +#include "item.h" +#include "items.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "menu_cursor.h" +#include "moves.h" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" + +extern u8 gActiveBank; +extern void (*gBattleBankFunc[])(void); +extern bool8 gDoingBattleAnim; +extern u16 gBattleTypeFlags; +extern u32 gBattleExecBuffer; +extern u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern u8 gActionSelectionCursor[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gAbsentBankFlags; +extern u8 gUnknown_03004344; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[]; +//extern const struct BattleMove gBattleMoves[]; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern struct Window gUnknown_03004210; +extern const u8 gUnknown_08400D89[]; +extern u8 gUnknown_03004348; +extern struct BattlePokemon gBattleMons[]; +extern MainCallback gPreBattleCallback1; +extern u8 gHealthboxIDs[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gUnknown_0300434C[]; +extern u8 gUnknown_0202E8F4; +extern u8 gUnknown_0202E8F5; +extern u8 gUnknown_02038470[]; +extern u16 gScriptItemId; +extern u8 gDisplayedStringBattle[]; +extern const u8 gUnknown_08400CE0[]; + +extern void dp11b_obj_instanciate(u8, u8, s8, s8); +extern u8 GetBankIdentity(u8); +extern u8 GetBankByPlayerAI(u8); +extern void dp11b_obj_free(u8, u8); +extern void sub_8010520(struct Sprite *); +extern void sub_8010574(struct Sprite *); +extern bool8 IsDoubleBattle(); +extern void sub_804777C(); +extern void sub_8141828(); +extern void sub_8094E20(u8); +extern void nullsub_14(void); +extern void sub_80A6DCC(void); +extern void ReshowBattleScreenAfterMenu(void); + +void PlayerHandleGetAttributes(void); +void sub_802ECF0(void); +void PlayerHandleSetAttributes(void); +void sub_802F7CC(void); +void PlayerHandleLoadPokeSprite(void); +void PlayerHandleSendOutPoke(void); +void PlayerHandleReturnPokeToBall(void); +void PlayerHandleTrainerThrow(void); +void PlayerHandleTrainerSlide(void); +void PlayerHandleTrainerSlideBack(void); +void sub_802FE7C(void); +void sub_802FF60(void); +void sub_802FF80(void); +void PlayerHandleBallThrow(void); +void PlayerHandlePuase(void); +void PlayerHandleMoveAnimation(void); +void PlayerHandlePrintString(void); +void PlayerHandlePrintStringPlayerOnly(void); +void sub_803037C(void); +void nullsub_42(void); +void sub_8030468(void); +void PlayerHandleOpenBag(void); +void sub_8030594(void); +void sub_8030674(void); +void PlayerHandleHealthBarUpdate(void); +void PlayerHandleExpBarUpdate(void); +void PlayerHandleStatusIconUpdate(void); +void PlayerHandleStatusAnimation(void); +void PlayerHandleStatusXor(void); +void sub_803097C(void); +void PlayerHandleDMATransfer(void); +void sub_8030A3C(void); +void sub_8030A6C(void); +void sub_8030A78(void); +void sub_8030A8C(void); +void sub_8030AA0(void); +void sub_8030AB4(void); +void sub_8030AC8(void); +void sub_8030AE4(void); +void sub_8030B1C(void); +void sub_8030B34(void); +void PlayerHandleHitAnimation(void); +void sub_8030BCC(void); +void PlayerHandleEffectivenessSound(void); +void sub_8030C1C(void); +void PlayerHandleFaintingCry(void); +void PlayerHandleIntroSlide(void); +void PlayerHandleTrainerBallThrow(void); +void sub_8030FAC(void); +void sub_80310A4(void); +void sub_80310F0(void); +void PlayerHandleSpriteInvisibility(void); +void PlayerHandleBattleAnimation(void); +void PlayerHandleLinkStandbyMsg(void); +void PlayerHandleResetActionMoveSelection(void); +void sub_80312A0(void); +void nullsub_43(void); + +const u8 gString_TurnJP[] = _("ターン"); + +void (*const gPlayerBufferCommands[])(void) = +{ + PlayerHandleGetAttributes, + sub_802ECF0, + PlayerHandleSetAttributes, + sub_802F7CC, + PlayerHandleLoadPokeSprite, + PlayerHandleSendOutPoke, + PlayerHandleReturnPokeToBall, + PlayerHandleTrainerThrow, + PlayerHandleTrainerSlide, + PlayerHandleTrainerSlideBack, + sub_802FE7C, + sub_802FF60, + sub_802FF80, + PlayerHandleBallThrow, + PlayerHandlePuase, + PlayerHandleMoveAnimation, + PlayerHandlePrintString, + PlayerHandlePrintStringPlayerOnly, + sub_803037C, + nullsub_42, + sub_8030468, + PlayerHandleOpenBag, + sub_8030594, + sub_8030674, + PlayerHandleHealthBarUpdate, + PlayerHandleExpBarUpdate, + PlayerHandleStatusIconUpdate, + PlayerHandleStatusAnimation, + PlayerHandleStatusXor, + sub_803097C, + PlayerHandleDMATransfer, + sub_8030A3C, + sub_8030A6C, + sub_8030A78, + sub_8030A8C, + sub_8030AA0, + sub_8030AB4, + sub_8030AC8, + sub_8030AE4, + sub_8030B1C, + sub_8030B34, + PlayerHandleHitAnimation, + sub_8030BCC, + PlayerHandleEffectivenessSound, + sub_8030C1C, + PlayerHandleFaintingCry, + PlayerHandleIntroSlide, + PlayerHandleTrainerBallThrow, + sub_8030FAC, + sub_80310A4, + sub_80310F0, + PlayerHandleSpriteInvisibility, + PlayerHandleBattleAnimation, + PlayerHandleLinkStandbyMsg, + PlayerHandleResetActionMoveSelection, + sub_80312A0, + nullsub_43, +}; + +void PlayerBufferRunCommand(void); +void sub_802C2EC(void); +void sub_802C68C(void); +void sub_802CA60(void); +void sub_802D730(void); +void sub_802DA9C(u8); +void sub_802DB6C(u8); +void sub_802DCB0(u8); +void sub_802DD10(u8); +void sub_802DDC4(u8); +void sub_802DF88(void); +void sub_802E03C(void); +void sub_802E12C(s32, const u8 *); +void sub_802E1B0(void); +void sub_802E220(void); +void sub_802E2D4(void); +void sub_802E3B4(u8, int); +void nullsub_7(u8); +void b_link_standby_message(void); + +void nullsub_91(void) +{ +} + +void SetBankFuncToPlayerBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + gDoingBattleAnim = FALSE; +} + +void PlayerBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + dp01_prepare_buffer_wireless_probably(2, 4, &playerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void PlayerBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + PlayerBufferExecCompleted(); + } +} + +void bx_0802E404(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + PlayerBufferExecCompleted(); +} + +void sub_802C098(void) +{ + u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + + // Useless switch statement. + switch (gActionSelectionCursor[gActiveBank]) + { + case 0: + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + break; + case 1: + dp01_build_cmdbuf_x21_a_bb(1, 1, 0); + break; + case 2: + dp01_build_cmdbuf_x21_a_bb(1, 2, 0); + break; + case 3: + dp01_build_cmdbuf_x21_a_bb(1, 3, 0); + break; + } + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gActionSelectionCursor[gActiveBank] & 1) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gActionSelectionCursor[gActiveBank] & 1)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 1; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gActionSelectionCursor[gActiveBank] & 2) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gActionSelectionCursor[gActiveBank] & 2)) + { + PlaySE(SE_SELECT); + nullsub_8(gActionSelectionCursor[gActiveBank]); + gActionSelectionCursor[gActiveBank] ^= 2; + sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); + } + } + else if (gMain.newKeys & B_BUTTON) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBankIdentity(gActiveBank) == 2 + && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBank][1] == 1) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + dp01_build_cmdbuf_x21_a_bb(1, 12, 0); + PlayerBufferExecCompleted(); + DestroyMenuCursor(); + } + } + else if (gMain.newKeys & START_BUTTON) + { + sub_804454C(); + } +} + +void unref_sub_802C2B8(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBattleBankFunc[gActiveBank] = sub_802C2EC; +} + +// TODO: fix this function +void sub_802C2EC(void) +{ + u8 arr[4] = {0, 2, 3, 1}; + s32 i; + + dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1); + i = 0; + if (gNoOfAllBanks != 0) + { + do + { + if (i != gUnknown_03004344) + dp11b_obj_free(i, 1); + i++; + } while (i < gNoOfAllBanks); + } + if (gMain.newKeys & A_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + dp01_build_cmdbuf_x21_a_bb(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + dp11b_obj_free(gUnknown_03004344, 1); + PlayerBufferExecCompleted(); + } + //_0802C3A8 + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gBattleBankFunc[gActiveBank] = sub_802C68C; + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + dp11b_obj_free(gUnknown_03004344, 1); + } + else if (gMain.newKeys & 0x60) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i--; + if (i < 0) + i = 3; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while(gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + //_0802C500 + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + //_0802C540 + else if (gMain.newKeys & 0x90) + { + PlaySE(SE_SELECT); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + do + { + u8 var = GetBankIdentity(gUnknown_03004344); + + for (i = 0; i < 4; i++) + { + if (var == arr[i]) + break; + } + do + { + i++; + if (i > 3) + i = 0; + gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + } while (gUnknown_03004344 == gNoOfAllBanks); + i = 0; + switch (GetBankIdentity(gUnknown_03004344)) + { + case 0: + case 2: + if (gActiveBank == gUnknown_03004344) + { + u32 moveId; + + asm("":::"memory"); + moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]); + if (!(gBattleMoves[moveId].target & 2)) + break; + } + i++; + break; + case 1: + case 3: + i++; + } + if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) + i = 0; + } while (i == 0); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } +} + +struct UnknownStruct1 +{ + u16 moves[4]; + u8 pp[4]; + u8 unkC[0x12-0xC]; + u8 unk12; + u8 unk13; + u8 filler14[0x20-0x14]; +}; + +const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); + +void sub_802C68C(void) +{ + u32 r8 = 0; + struct UnknownStruct1 *r6 = (struct UnknownStruct1 *)(gBattleBufferA[gActiveBank] + 4); + + if (gMain.newKeys & A_BUTTON) + { + u32 r4; + + PlaySE(SE_SELECT); + + if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE) + r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0; + else + r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target; + + if (r4 & 0x10) + gUnknown_03004344 = gActiveBank; + else + gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1); + + if (gBattleBufferA[gActiveBank][1] == 0) + { + if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0) + r8++; + } + else + { + if (!(r4 & 0x7D)) + r8++; + if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0) + { + r8 = 0; + } + else if (!(r4 & 0x12) && CountAliveMons(0) <= 1) + { + gUnknown_03004344 = sub_803C434(gActiveBank); + r8 = 0; + } + } + if (r8 == 0) + { + DestroyMenuCursor(); + dp01_build_cmdbuf_x21_a_bb(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); + PlayerBufferExecCompleted(); + } + else + { + gBattleBankFunc[gActiveBank] = sub_802C2EC; + if (r4 & 0x12) + gUnknown_03004344 = gActiveBank; + else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)]) + gUnknown_03004344 = GetBankByPlayerAI(3); + else + gUnknown_03004344 = GetBankByPlayerAI(1); + gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + } + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + dp01_build_cmdbuf_x21_a_bb(1, 10, 0xFFFF); + PlayerBufferExecCompleted(); + } + else if (gMain.newKeys & DPAD_LEFT) + { + if (gMoveSelectionCursor[gActiveBank] & 1) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (!(gMoveSelectionCursor[gActiveBank] & 1) + && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 1; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_UP) + { + if (gMoveSelectionCursor[gActiveBank] & 2) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (!(gMoveSelectionCursor[gActiveBank] & 2) + && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348) + { + nullsub_7(gMoveSelectionCursor[gActiveBank]); + gMoveSelectionCursor[gActiveBank] ^= 2; + PlaySE(SE_SELECT); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E220(); + sub_802E2D4(); + } + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80); + if (gMoveSelectionCursor[gActiveBank] != 0) + gUnknown_03004344 = 0; + else + gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; + sub_802E3B4(gUnknown_03004344, 27); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + gBattleBankFunc[gActiveBank] = sub_802CA60; + } + } +} + +extern const u8 gUnknown_08400D49[]; +extern const u8 gUnknown_08400D38[]; + +void sub_802CA60(void) +{ + u8 perMovePPBonuses[4]; + struct + { + u16 moves[4]; + u8 pp[4]; + u8 filler18[8]; // what is this? + } sp0; + //struct UnknownStruct1 sp0; + u8 totalPPBonuses; + + if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344) + { + struct UnknownStruct1 *r9 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + i = r9->moves[gMoveSelectionCursor[gActiveBank]]; + r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344]; + r9->moves[gUnknown_03004344] = i; + + i = r9->pp[gMoveSelectionCursor[gActiveBank]]; + r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344]; + r9->pp[gUnknown_03004344] = i; + + i = r9->unkC[gMoveSelectionCursor[gActiveBank]]; + r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344]; + r9->unkC[gUnknown_03004344] = i; + + if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]]) + { + gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]]; + gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344]; + } + + sub_802E1B0(); + + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2); + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + gBattleMons[gActiveBank].ppBonuses = totalPPBonuses; + + for (i = 0; i < 4; i++) + { + gBattleMons[gActiveBank].moves[i] = r9->moves[i]; + gBattleMons[gActiveBank].pp[i] = r9->pp[i]; + } + if (!(gBattleMons[gActiveBank].status2 & 0x200000)) + { + for (i = 0; i < 4; i++) + { + sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i); + sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i); + } + + totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES); + for (i = 0; i < 4; i++) + perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); + + i = sp0.moves[gMoveSelectionCursor[gActiveBank]]; + sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344]; + sp0.moves[gUnknown_03004344] = i; + + i = sp0.pp[gMoveSelectionCursor[gActiveBank]]; + sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344]; + sp0.pp[gUnknown_03004344] = i; + + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344]; + perMovePPBonuses[gUnknown_03004344] = totalPPBonuses; + + totalPPBonuses = 0; + for (i = 0; i < 4; i++) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + + for (i = 0; i < 4; i++) + { + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, (u8 *)&sp0.moves[i]); + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]); + } + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses); + } + } + else + { + sub_802E12C(gUnknown_03004344, gUnknown_08400D49); + } + gBattleBankFunc[gActiveBank] = sub_802C68C; + gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + nullsub_7(gUnknown_03004344); + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49); + gBattleBankFunc[gActiveBank] = sub_802C68C; + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37); + sub_8002F44(&gUnknown_03004210); + sub_802E220(); + sub_802E2D4(); + } + if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 1; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2)) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } + if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348) + { + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D); + else + nullsub_7(gUnknown_03004344); + gUnknown_03004344 ^= 2; + PlaySE(SE_SELECT); + if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank]) + sub_802E3B4(gUnknown_03004344, 0); + else + sub_802E3B4(gUnknown_03004344, 0x1B); + } +} + +void sub_802D148(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(c2_8011A1C); + } +} + +void sub_802D18C(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + sub_800832C(); + gBattleBankFunc[gActiveBank] = sub_802D148; + } + else + { + m4aSongNumStop(SE_HINSI); + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +void sub_802D204(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +// duplicate of sub_802D204 +void sub_802D23C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +void sub_802D274(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + { + nullsub_10(gSaveBlock2.playerGender); + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + PlayerBufferExecCompleted(); + } +} + +void sub_802D2E0(void) +{ + if (--ewram17810[gActiveBank].unk9 == 0xFF) + { + ewram17810[gActiveBank].unk9 = 0; + PlayerBufferExecCompleted(); + } +} + +void sub_802D31C(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + if (IsDoubleBattle()) + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2); + ewram17810[gActiveBank].unk9 = 3; + gBattleBankFunc[gActiveBank] = sub_802D2E0; + } +} + +void sub_802D500(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]); + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank ^ 2], + &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], + 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C( + gHealthboxIDs[gActiveBank], + &gPlayerParty[gBattlePartyID[gActiveBank]], + 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_802D31C; + } +} + +void sub_802D680(void) +{ + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy + && ewram17810[gActiveBank].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (ewram17800[gActiveBank].substituteSprite) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + gBattleBankFunc[gActiveBank] = sub_802D730; + } +} + +void sub_802D730(void) +{ + if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D798(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy + && !ewram17810[gActiveBank].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + sub_8031F88(gActiveBank); + gBattleBankFunc[gActiveBank] = sub_802D680; + } +} + +void c3_0802FDF4(u8 taskId) +{ + if (!IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + DestroyTask(taskId); + } +} + +void bx_t1_healthbar_update(void) +{ + s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + { + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + } + else + { + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlayerBufferExecCompleted(); + } +} + +void sub_802D90C(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +// Rare Candy usage, maybe? +void sub_802D924(u8 taskId) +{ + u32 pkmnIndex = (u8)gTasks[taskId].data[0]; + u8 bank = gTasks[taskId].data[2]; + s16 gainedExp = gTasks[taskId].data[1]; + + if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank]) + { + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u32 currExp = GetMonData(pkmn, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBank; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&nextLvlExp); + CalculateMonStats(pkmn); + gainedExp -= nextLvlExp - currExp; + savedActiveBank = gActiveBank; + gActiveBank = bank; + dp01_build_cmdbuf_x21_a_bb(1, 11, gainedExp); + gActiveBank = savedActiveBank; + + if (IsDoubleBattle() == TRUE + && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2])) + gTasks[taskId].func = sub_802DCB0; + else + gTasks[taskId].func = sub_802DDC4; + } + else + { + currExp += gainedExp; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&currExp); + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = sub_802DA9C; + } +} + +void sub_802DA9C(u8 taskId) +{ + u8 pkmnIndex = gTasks[taskId].data[0]; + s32 r9 = gTasks[taskId].data[1]; + u8 bank = gTasks[taskId].data[2]; + struct Pokemon *pkmn = &gPlayerParty[pkmnIndex]; + u8 level = GetMonData(pkmn, MON_DATA_LEVEL); + u16 species = GetMonData(pkmn, MON_DATA_SPECIES); + u32 exp = GetMonData(pkmn, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + sub_8043D84(bank, gHealthboxIDs[bank], expToNextLvl, exp, -r9); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_802DB6C; +} + +#ifdef NONMATCHING +void sub_802DB6C(u8 taskId) +{ + if (gTasks[taskId].data[10] < 13) + { + gTasks[taskId].data[10]++; + } + else + { + u8 r9 = gTasks[taskId].data[0]; + s32 r10 = gTasks[taskId].data[1]; //s16? + u8 r7 = gTasks[taskId].data[2]; + s16 r4; + + r4 = sub_8045C78(r7, gHealthboxIDs[r7], 1, 0); + sub_8043DFC(gHealthboxIDs[r7]); + if (r4 == -1) + { + struct Pokemon *pkmn; + u8 r4; + u32 sp4; + u16 r0; + u32 sp0; + + m4aSongNumStop(SE_EXP); + pkmn = &gPlayerParty[r9]; + r4 = GetMonData(pkmn, MON_DATA_LEVEL); + sp4 = GetMonData(pkmn, MON_DATA_EXP); + r0 = GetMonData(pkmn, MON_DATA_SPECIES); + sp0 = gExperienceTables[gBaseStats[r0].growthRate][r4 + 1]; + if (sp4 + r10 >= sp0) + { + u8 r5; + u32 asdf; + + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp0); + CalculateMonStats(pkmn); + //r10 -= sp0 - sp4; + asdf = sp0 - sp4; + //asdf = r10 - (sp0 - sp4); + r10 -= asdf; + r5 = gActiveBank; + gActiveBank = r7; + dp01_build_cmdbuf_x21_a_bb(1, 11, r10); + gActiveBank = r5; + gTasks[taskId].func = sub_802DCB0; + } + else + { + //u32 asdf = sp4 + r10; + sp4 += r10; + SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp4); + gBattleBankFunc[r7] = sub_802D90C; + DestroyTask(taskId); + } + } + } +} +#else +__attribute__((naked)) +void sub_802DB6C(u8 taskId) +{ + asm_unified("push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r1, _0802DB98 @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r6, r0, r1\n\ + ldrh r1, [r6, 0x1C]\n\ + movs r2, 0x1C\n\ + ldrsh r0, [r6, r2]\n\ + cmp r0, 0xC\n\ + bgt _0802DB9C\n\ + adds r0, r1, 0x1\n\ + strh r0, [r6, 0x1C]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DB98: .4byte gTasks\n\ +_0802DB9C:\n\ + ldrb r0, [r6, 0x8]\n\ + mov r9, r0\n\ + ldrh r2, [r6, 0xA]\n\ + mov r10, r2\n\ + ldrb r7, [r6, 0xC]\n\ + ldr r5, _0802DC64 @ =gHealthboxIDs\n\ + adds r5, r7, r5\n\ + ldrb r1, [r5]\n\ + adds r0, r7, 0\n\ + movs r2, 0x1\n\ + movs r3, 0\n\ + bl sub_8045C78\n\ + adds r4, r0, 0\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + ldrb r0, [r5]\n\ + bl sub_8043DFC\n\ + lsls r4, 16\n\ + asrs r4, 16\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r4, r0\n\ + bne _0802DC98\n\ + movs r0, 0x21\n\ + bl m4aSongNumStop\n\ + movs r0, 0x64\n\ + mov r1, r9\n\ + muls r1, r0\n\ + ldr r0, _0802DC68 @ =gPlayerParty\n\ + adds r5, r1, r0\n\ + adds r0, r5, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + str r0, [sp, 0x4]\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldr r3, _0802DC6C @ =gExperienceTables\n\ + adds r4, 0x1\n\ + lsls r4, 2\n\ + ldr r2, _0802DC70 @ =gBaseStats\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrb r1, [r1, 0x13]\n\ + movs r0, 0xCA\n\ + lsls r0, 1\n\ + muls r0, r1\n\ + adds r4, r0\n\ + adds r4, r3\n\ + ldr r1, [r4]\n\ + str r1, [sp]\n\ + mov r2, r10\n\ + lsls r0, r2, 16\n\ + asrs r4, r0, 16\n\ + ldr r0, [sp, 0x4]\n\ + adds r0, r4\n\ + cmp r0, r1\n\ + blt _0802DC7C\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + mov r2, sp\n\ + bl SetMonData\n\ + adds r0, r5, 0\n\ + bl CalculateMonStats\n\ + ldr r2, [sp]\n\ + add r0, sp, 0x4\n\ + ldrh r0, [r0]\n\ + subs r2, r0\n\ + subs r2, r4, r2\n\ + ldr r4, _0802DC74 @ =gActiveBank\n\ + ldrb r5, [r4]\n\ + strb r7, [r4]\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + movs r0, 0x1\n\ + movs r1, 0xB\n\ + bl dp01_build_cmdbuf_x21_a_bb\n\ + strb r5, [r4]\n\ + ldr r0, _0802DC78 @ =sub_802DCB0\n\ + str r0, [r6]\n\ + b _0802DC98\n\ + .align 2, 0\n\ +_0802DC64: .4byte gHealthboxIDs\n\ +_0802DC68: .4byte gPlayerParty\n\ +_0802DC6C: .4byte gExperienceTables\n\ +_0802DC70: .4byte gBaseStats\n\ +_0802DC74: .4byte gActiveBank\n\ +_0802DC78: .4byte sub_802DCB0\n\ +_0802DC7C:\n\ + str r0, [sp, 0x4]\n\ + add r2, sp, 0x4\n\ + adds r0, r5, 0\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + ldr r1, _0802DCA8 @ =gBattleBankFunc\n\ + lsls r0, r7, 2\n\ + adds r0, r1\n\ + ldr r1, _0802DCAC @ =sub_802D90C\n\ + str r1, [r0]\n\ + mov r0, r8\n\ + bl DestroyTask\n\ +_0802DC98:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0802DCA8: .4byte gBattleBankFunc\n\ +_0802DCAC: .4byte sub_802D90C\n"); +} +#endif + +void sub_802DCB0(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + u8 pkmnIndex = gTasks[taskId].data[0]; + + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + bank ^= 2; + move_anim_start_t4(bank, bank, bank, 0); + gTasks[taskId].func = sub_802DD10; +} + +void sub_802DD10(u8 taskId) +{ + u8 bank = gTasks[taskId].data[2]; + + if (!ewram17810[bank].unk0_6) + { + u8 pkmnIndex = gTasks[taskId].data[0]; + + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2]) + sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0); + gTasks[taskId].func = sub_802DDC4; + } +} + +void sub_802DDC4(u8 taskId) +{ + u8 pkmnIndex; + u8 bank; + + pkmnIndex = gTasks[taskId].data[0]; + GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value + bank = gTasks[taskId].data[2]; + gBattleBankFunc[bank] = sub_802D90C; + DestroyTask(taskId); +} + +void sub_802DE10(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT) + { + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + nullsub_9(species); + FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802DEAC(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +// Duplicate of sub_802D90C +void sub_802DF18(void) +{ + if (gUnknown_03004210.state == 0) + PlayerBufferExecCompleted(); +} + +void sub_802DF30(void) +{ + if (!gPaletteFade.active) + { + u8 r4; + + gBattleBankFunc[gActiveBank] = sub_802DF88; + r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0]; + DestroyTask(gUnknown_0300434C[gActiveBank]); + sub_8094E20(r4); + } +} + +void sub_802DF88(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + if (gUnknown_0202E8F4 == 1) + dp01_build_cmdbuf_x22_a_three_bytes(1, gUnknown_0202E8F5, gUnknown_02038470); + else + dp01_build_cmdbuf_x22_a_three_bytes(1, 6, NULL); + if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1) + b_link_standby_message(); + PlayerBufferExecCompleted(); + } +} + +void sub_802E004(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_802E03C; + nullsub_14(); + sub_80A6DCC(); + } +} + +void sub_802E03C(void) +{ + if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + { + dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId); + PlayerBufferExecCompleted(); + } +} + +void bx_wait_t1(void) +{ + if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6) + PlayerBufferExecCompleted(); +} + +void bx_blink_t1(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = 0; + PlayerBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_802E12C(s32 a, const u8 *b) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + + StringCopy(gDisplayedStringBattle, b); + StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]); + InitWindow( + &gUnknown_03004210, + gDisplayedStringBattle, + 0x300 + a * 20, + (a & 1) ? 11 : 1, + (a < 2) ? 0x37 : 0x39); + sub_8002F44(&gUnknown_03004210); +} + +void sub_802E1B0(void) +{ + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + s32 i; + + gUnknown_03004348 = 0; + FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); + for (i = 0; i < 4; i++) + { + nullsub_7(i); + sub_802E12C(i, gUnknown_08400D49); + if (r4->moves[i] != 0) + gUnknown_03004348++; + } +} + +void sub_802E220(void) +{ + if (gBattleBufferA[gActiveBank][2] != 1) + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x11; + str[2] = 2; + str += 3; + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x14; + str[2] = 6; + str += 3; + str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2); + *str++ = CHAR_SLASH; + ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); + sub_8002F44(&gUnknown_03004210); + } +} + +extern const u8 gUnknown_08400D52[]; +extern const u8 gTypeNames[][7]; + +void sub_802E2D4(void) +{ + if (gBattleBufferA[gActiveBank][2] == 1) + { + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37); + } + else + { + struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4]; + u8 *str = gDisplayedStringBattle; + + str = StringCopy(str, gUnknown_08400D49); + StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); + FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); + } + sub_8002F44(&gUnknown_03004210); +} + +const u8 gUnknown_081FAE89[][2] = +{ + { 8, 120}, + {88, 120}, + { 8, 136}, + {88, 136}, +}; + +const u8 gUnknown_081FAE91[][2] = +{ + {144, 120}, + {190, 120}, + {144, 136}, + {190, 136}, + { 72, 72}, + { 32, 90}, + { 80, 80}, + { 80, 88}, +}; + +void sub_802E3B4(u8 a, int unused) +{ + sub_814A958(0x48); + sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); +} + +void nullsub_7(u8 a) +{ +} + +void sub_802E3E4(u8 a, int unused) +{ + sub_814A958(0x2A); + sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); +} + +void nullsub_8(u8 a) +{ +} + +void sub_802E414(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E424(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void sub_802E434(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + PlayerBufferExecCompleted(); +} + +void sub_802E460(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + PlayerBufferExecCompleted(); +} + +void b_link_standby_message(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15); + } +} diff --git a/src/battle/battle_6.c b/src/battle/battle_6.c index c833aef5e..e7f152a4b 100644 --- a/src/battle/battle_6.c +++ b/src/battle/battle_6.c @@ -98,7 +98,7 @@ extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void oamt_set_x3A_32(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern bool8 IsDoubleBattle(void); extern void sub_802D500(void); extern void dp11b_obj_free(); @@ -121,7 +121,7 @@ extern void sub_80105EC(struct Sprite *); extern void sub_802D274(void); extern void sub_802D23C(void); extern u8 GetBankIdentity(u8); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern void sub_802D204(void); extern u8 sub_8079E90(); @@ -739,7 +739,7 @@ void sub_802F7CC(void) void PlayerHandleLoadPokeSprite(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; gBattleBankFunc[gActiveBank] = bx_0802E404; } @@ -748,7 +748,7 @@ void PlayerHandleSendOutPoke(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); gActionSelectionCursor[gActiveBank] = 0; gMoveSelectionCursor[gActiveBank] = 0; sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); @@ -800,7 +800,7 @@ void sub_802FB2C(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -829,7 +829,7 @@ void PlayerHandleTrainerThrow(void) { r7 = 0; } - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -845,7 +845,7 @@ void PlayerHandleTrainerThrow(void) void PlayerHandleTrainerSlide(void) { - sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -875,7 +875,7 @@ void sub_802FE7C(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -963,7 +963,7 @@ void sub_8030190(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0) + if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -983,7 +983,7 @@ void sub_8030190(void) if (!gAnimScriptActive) { sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2) + if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -1357,7 +1357,7 @@ void sub_8030E38(struct Sprite *sprite) FreeSpriteOamMatrix(sprite); FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); DestroySprite(sprite); - sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4); StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); } @@ -1383,7 +1383,7 @@ void task05_08033660(u8 taskId) sub_802F934(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_802F934(gActiveBank, 0); gActiveBank ^= 2; } diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index f2838467e..0c4b118b4 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -182,9 +182,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) gBattleMonForms[a] = e & 0x7F; return TRUE; } - if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + if (ewram17800[a].substituteSprite && sub_803163C(d) == 0) return TRUE; - if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible) + if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible) { refresh_graphics_maybe(a, 1, gObjectBankIDs[a]); sub_80324E0(a); @@ -273,29 +273,29 @@ bool8 mplay_80342A4(u8 a) return TRUE; } -void sub_8031794(struct Pokemon *pkmn, u8 b) +void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 bank) { u32 personalityValue; u16 species; - u32 r7; + u32 transformPersonality; u32 otId; u8 var; u16 paletteOffset; const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[bank].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); - r7 = personalityValue; + transformPersonality = personalityValue; } else { - species = ewram17800[b].unk2; - r7 = gPID_perBank[b]; + species = ewram17800[bank].transformedSpecies; + transformPersonality = gPID_perBank[bank]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); - var = GetBankIdentity(b); + var = GetBankIdentity(bank); HandleLoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -303,29 +303,29 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) 0x02000000, gUnknown_081FAF4C[var], species, - r7); - paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) + transformPersonality); + paletteOffset = 0x100 + bank * 16; + if (ewram17800[bank].transformedSpecies == 0) lzPaletteData = pokemon_get_pal(pkmn); else lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); - LoadPalette(ewram, 0x80 + b * 16, 0x20); + LoadPalette(ewram, 0x80 + bank * 16, 0x20); if (species == SPECIES_CASTFORM) { - paletteOffset = 0x100 + b * 16; + paletteOffset = 0x100 + bank * 16; sub_800D238(lzPaletteData, ewram + 0x16400); - LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[bank].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } } -void sub_80318FC(struct Pokemon *pkmn, u8 b) +void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 bank) { u32 personalityValue; u16 species; @@ -336,18 +336,18 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); - if (ewram17800[b].unk2 == 0) + if (ewram17800[bank].transformedSpecies == 0) { species = GetMonData(pkmn, MON_DATA_SPECIES); r7 = personalityValue; } else { - species = ewram17800[b].unk2; - r7 = gPID_perBank[b]; + species = ewram17800[bank].transformedSpecies; + r7 = gPID_perBank[bank]; } otId = GetMonData(pkmn, MON_DATA_OT_ID); - var = GetBankIdentity(b); + var = GetBankIdentity(bank); HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -356,21 +356,21 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) gUnknown_081FAF4C[var], species, r7); - paletteOffset = 0x100 + b * 16; - if (ewram17800[b].unk2 == 0) + paletteOffset = 0x100 + bank * 16; + if (ewram17800[bank].transformedSpecies == 0) lzPaletteData = pokemon_get_pal(pkmn); else lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); - LoadPalette(ewram, 0x80 + b * 16, 0x20); + LoadPalette(ewram, 0x80 + bank * 16, 0x20); if (species == SPECIES_CASTFORM) { - paletteOffset = 0x100 + b * 16; + paletteOffset = 0x100 + bank * 16; sub_800D238(lzPaletteData, ewram + 0x16400); - LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + LoadPalette(ewram + 0x16400 + gBattleMonForms[bank] * 32, paletteOffset, 0x20); } - if (ewram17800[b].unk2 != 0) + if (ewram17800[bank].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); @@ -405,11 +405,11 @@ void sub_8031A6C(u16 a, u8 b) LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); } -void sub_8031AF4(u16 a, u8 b) +void LoadPlayerTrainerBankSprite(u16 a, u8 bank) { u8 status; - status = GetBankIdentity(b); + status = GetBankIdentity(bank); DecompressPicFromTable_2( &gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, @@ -417,7 +417,7 @@ void sub_8031AF4(u16 a, u8 b) (void *)0x02000000, gUnknown_081FAF4C[status], 0); - LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + bank * 16, 32); } void nullsub_10(int unused) @@ -607,15 +607,15 @@ void sub_8031F24(void) s32 i; for (i = 0; i < gNoOfAllBanks; i++) - ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible; + ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible; } void sub_8031F88(u8 a) { - ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible; + ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible; } -void sub_8031FC4(u8 a, u8 b, bool8 c) +void sub_8031FC4(u8 bank1, u8 bank2, bool8 c) { u16 paletteOffset; u16 species; @@ -626,16 +626,16 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) if (c) { - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0); - paletteOffset = 0x100 + a * 16; + StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], ewram17840.unk0); + paletteOffset = 0x100 + bank1 * 16; LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32); - gBattleMonForms[a] = ewram17840.unk0; - if (ewram17800[a].unk2 != 0) + gBattleMonForms[bank1] = ewram17840.unk0; + if (ewram17800[bank1].transformedSpecies != 0) { BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); + gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1); } else { @@ -659,15 +659,15 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } else { - r10 = GetBankIdentity(a); - if (GetBankSide(b) == 1) - species = GetMonData(&gEnemyParty[gBattlePartyID[b]], MON_DATA_SPECIES); + r10 = GetBankIdentity(bank1); + if (GetBankSide(bank2) == 1) + species = GetMonData(&gEnemyParty[gBattlePartyID[bank2]], MON_DATA_SPECIES); else - species = GetMonData(&gPlayerParty[gBattlePartyID[b]], MON_DATA_SPECIES); - if (GetBankSide(a) == 0) + species = GetMonData(&gPlayerParty[gBattlePartyID[bank2]], MON_DATA_SPECIES); + if (GetBankSide(bank1) == 0) { - personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_OT_ID); + personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlePartyID[bank1]], MON_DATA_OT_ID); HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -675,12 +675,12 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) 0x02000000, gUnknown_081FAF4C[r10], species, - gPID_perBank[a]); + gPID_perBank[bank1]); } else { - personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_OT_ID); + personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlePartyID[bank1]], MON_DATA_OT_ID); HandleLoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -688,13 +688,13 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) 0x02000000, gUnknown_081FAF4C[r10], species, - gPID_perBank[a]); + gPID_perBank[bank1]); } } src = gUnknown_081FAF4C[r10]; - dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); + dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[bank1]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); - paletteOffset = 0x100 + a * 16; + paletteOffset = 0x100 + bank1 * 16; lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); @@ -703,21 +703,21 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) u16 *paletteSrc = (u16 *)(ewram + 0x16400); sub_800D238(lzPaletteData, paletteSrc); - LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); + LoadPalette(paletteSrc + gBattleMonForms[bank2] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); if (!IsContest()) { - ewram17800[a].unk2 = species; - gBattleMonForms[a] = gBattleMonForms[b]; + ewram17800[bank1].transformedSpecies = species; + gBattleMonForms[bank1] = gBattleMonForms[bank2]; } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); + gSprites[gObjectBankIDs[bank1]].pos1.y = sub_8077F68(bank1); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank1]], gBattleMonForms[bank1]); } } -void sub_8032350(u8 a, u8 b) +void BattleLoadSubstituteSprite(u8 a, u8 b) { u8 r4; u16 foo; @@ -750,16 +750,16 @@ void sub_8032350(u8 a, u8 b) if (!IsContest()) { if (GetBankSide(a) != 0) - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); else - sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a); } } } void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) { - sub_8032350(a, b); + BattleLoadSubstituteSprite(a, b); StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]); if (b == 0) gSprites[spriteId].pos1.y = sub_8077F7C(a); @@ -770,12 +770,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) void sub_80324BC(u8 a, u16 b) { if (b == 0xA4) - ewram17800[a].unk0_2 = 1; + ewram17800[a].substituteSprite = 1; } void sub_80324E0(u8 a) { - ewram17800[a].unk0_2 = 0; + ewram17800[a].substituteSprite = 0; } void sub_80324F8(struct Pokemon *pkmn, u8 b) @@ -896,9 +896,9 @@ void sub_80328A4(struct Sprite *sprite) } if (gAnimScriptActive || r7->invisible) invisible = TRUE; - else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0) invisible = TRUE; - if (ewram17800[r4].unk0_2) + if (ewram17800[r4].substituteSprite) invisible = TRUE; sprite->pos1.x = r7->pos1.x; sprite->pos2.x = r7->pos2.x; @@ -914,8 +914,8 @@ void sub_8032984(u8 a, u16 b) { if (GetBankSide(a) != 0) { - if (ewram17800[a].unk2 != 0) - b = ewram17800[a].unk2; + if (ewram17800[a].transformedSpecies != 0) + b = ewram17800[a].transformedSpecies; if (gEnemyMonElevation[b] != 0) gSprites[ewram17810[a].unk7].callback = sub_80328A4; else @@ -953,7 +953,7 @@ void sub_8032A38(void) void sub_8032AA8(u8 a, u8 b) { - ewram17800[a].unk2 = 0; + ewram17800[a].transformedSpecies = 0; gBattleMonForms[a] = 0; if (b == 0) sub_80324E0(a); @@ -1168,7 +1168,7 @@ void sub_8033264(void) { if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); gBattleBankFunc[gActiveBank] = sub_80332D0; } diff --git a/src/battle/battle_8.c b/src/battle/battle_8.c index 75f10c4b1..44e42d0d6 100644 --- a/src/battle/battle_8.c +++ b/src/battle/battle_8.c @@ -58,7 +58,7 @@ extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern void sub_8033018(void); -extern void sub_8031794(); +extern void BattleLoadOpponentMonSprite(); extern u8 GetBankIdentity(u8); extern void sub_8032984(u8, u16); extern void sub_80333D4(void); @@ -714,7 +714,7 @@ void OpponentHandleLoadPokeSprite(void) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); - sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -746,7 +746,7 @@ void sub_803495C(u8 a, u8 b) gBattlePartyID[a] = gBattleBufferA[a][1]; species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); - sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); gObjectBankIDs[a] = CreateSprite( &gUnknown_02024E8C, @@ -785,7 +785,7 @@ void sub_8034B74(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -876,7 +876,7 @@ void sub_8035030(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -951,7 +951,7 @@ void sub_8035238(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -971,7 +971,7 @@ void sub_8035238(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; diff --git a/src/battle/battle_811DA74.c b/src/battle/battle_811DA74.c index 36a287efc..14f547b82 100644 --- a/src/battle/battle_811DA74.c +++ b/src/battle/battle_811DA74.c @@ -87,12 +87,12 @@ extern void oamt_set_x3A_32(); extern void sub_8078B34(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); extern u8 sub_8046400(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); -extern void sub_80318FC(); +extern void BattleLoadPlayerMonSprite(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); @@ -298,7 +298,7 @@ void sub_811E034(void) { if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); gBattleBankFunc[gActiveBank] = sub_811E0A0; } @@ -989,7 +989,7 @@ void sub_811F664(void) void sub_811F6D8(void) { - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C( GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), GetBankIdentity(gActiveBank)); @@ -1009,7 +1009,7 @@ void sub_811F7F4(void) { sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattleBankFunc[gActiveBank] = sub_811E1BC; } @@ -1059,7 +1059,7 @@ void sub_811FA5C(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1092,7 +1092,7 @@ void sub_811FAE4(void) xOffset = 0; gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; } - sub_8031AF4(gender, gActiveBank); + LoadPlayerTrainerBankSprite(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1125,7 +1125,7 @@ void sub_811FCE8(void) { if (ewram17810[gActiveBank].unk4 == 0) { - if (ewram17800[gActiveBank].unk0_2) + if (ewram17800[gActiveBank].substituteSprite) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4++; } @@ -1200,7 +1200,7 @@ void sub_811FF30(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3) { ewram17800[gActiveBank].unk0_3 = 1; move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); @@ -1220,7 +1220,7 @@ void sub_811FF30(void) if (!gAnimScriptActive) { sub_80326EC(1); - if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1) { move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17800[gActiveBank].unk0_3 = 0; @@ -1508,7 +1508,7 @@ void sub_812071C(u8 taskId) sub_811F864(gActiveBank, 0); gActiveBank ^= 2; gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; - sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); sub_811F864(gActiveBank, 0); gActiveBank ^= 2; } diff --git a/src/battle/battle_anim_8137220.c b/src/battle/battle_anim_8137220.c index bb181d5fb..af2b86c17 100644 --- a/src/battle/battle_anim_8137220.c +++ b/src/battle/battle_anim_8137220.c @@ -73,7 +73,7 @@ extern void sub_8043DFC(); extern bool8 IsDoubleBattle(void); extern void c3_0802FDF4(u8); extern void sub_802ECF0(void); -extern void sub_8031AF4(); +extern void LoadPlayerTrainerBankSprite(); extern u8 GetBankIdentity(u8); extern void sub_80313A0(struct Sprite *); extern u8 GetBankByPlayerAI(u8); @@ -981,7 +981,7 @@ void sub_8138CB4(void) void sub_8138D38(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -996,7 +996,7 @@ void sub_8138D38(void) void sub_8138E04(void) { - sub_8031AF4(2, gActiveBank); + LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); gObjectBankIDs[gActiveBank] = CreateSprite( &gUnknown_02024E8C, @@ -1081,7 +1081,7 @@ void sub_81390D0(void) switch (ewram17810[gActiveBank].unk4) { case 0: - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); ewram17810[gActiveBank].unk4 = 1; break; @@ -1098,7 +1098,7 @@ void sub_81390D0(void) if (!gAnimScriptActive) { sub_80326EC(1); - if (ewram17800[gActiveBank].unk0_2 == 1) + if (ewram17800[gActiveBank].substituteSprite == 1) move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); ewram17810[gActiveBank].unk4 = 3; } @@ -1382,7 +1382,7 @@ void sub_81398BC(u8 bank) { u16 species; - ewram17800[bank].unk2 = 0; + ewram17800[bank].transformedSpecies = 0; gBattlePartyID[bank] = gBattleBufferA[bank][1]; species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c index 04674e739..31c127416 100644 --- a/src/battle/battle_setup.c +++ b/src/battle/battle_setup.c @@ -438,7 +438,7 @@ void task01_battle_start(u8 taskId) } break; case 1: - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); @@ -827,7 +827,7 @@ void CB2_StartFirstBattle(void) UpdatePaletteFade(); RunTasks(); - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = HandleFirstBattleEnd; diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c new file mode 100644 index 000000000..395a38df1 --- /dev/null +++ b/src/battle/battle_transition.c @@ -0,0 +1,2513 @@ +#include "global.h" +#include "battle_transition.h" +#include "main.h" +#include "rom4.h" +#include "task.h" +#include "palette.h" +#include "trig.h" +#include "field_effect.h" +#include "rng.h" +#include "sprite.h" +#include "sound.h" +#include "songs.h" +#include "trainer.h" +#include "field_camera.h" + +void sub_807DE10(void); +void dp12_8087EA4(void); + +extern u8 ewram[]; +extern u16 gUnknown_03005560[]; +extern u16 gUnknown_03004DE0[][0x3C0]; + +extern const struct OamData gFieldOamData_32x32; + +struct TransitionData +{ + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 BLDY; + s16 field_14; + s16 field_16; + s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; // unused + s16 field_20; + s16 field_22; // unused + s16 data[11]; +}; + +#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); + +// this file's functions +static void LaunchBattleTransitionTask(u8 transitionID); +static void Task_BattleTransitionMain(u8 taskID); +static void Phase1Task_TransitionAll(u8 taskID); +static void Phase2Task_Transition_Blur(u8 taskID); +static void Phase2Task_Transition_Swirl(u8 taskID); +static void Phase2Task_Transition_Shuffle(u8 taskID); +static void Phase2Task_Transition_BigPokeball(u8 taskID); +static void Phase2Task_Transition_PokeballsTrail(u8 taskID); +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID); +static void Phase2Task_Transition_Ripple(u8 taskID); +static void Phase2Task_Transition_Wave(u8 taskID); +static void Phase2Task_Transition_Slice(u8 taskID); +static void Phase2Task_Transition_WhiteFade(u8 taskID); +static void Phase2Task_Transition_GridSquares(u8 taskID); +static void Phase2Task_Transition_Shards(u8 taskID); +static void Phase2Task_Transition_Sydney(u8 taskID); +static void Phase2Task_Transition_Phoebe(u8 taskID); +static void Phase2Task_Transition_Glacia(u8 taskID); +static void Phase2Task_Transition_Drake(u8 taskID); +static void Phase2Task_Transition_Steven(u8 taskID); +static bool8 Transition_Phase1(struct Task* task); +static bool8 Transition_WaitForPhase1(struct Task* task); +static bool8 Transition_Phase2(struct Task* task); +static bool8 Transition_WaitForPhase2(struct Task* task); +static void VBlankCB_Phase2_Transition_Swirl(void); +static void HBlankCB_Phase2_Transition_Swirl(void); +static void VBlankCB_Phase2_Transition_Shuffle(void); +static void HBlankCB_Phase2_Transition_Shuffle(void); +static void VBlankCB0_Phase2_Transition_BigPokeball(void); +static void VBlankCB1_Phase2_Transition_BigPokeball(void); +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void); +static void VBlankCB_Phase2_Transition_Ripple(void); +static void HBlankCB_Phase2_Transition_Ripple(void); +static void VBlankCB_Phase2_Transition_Wave(void); +static void VBlankCB_Phase2_Transition_Slice(void); +static void HBlankCB_Phase2_Transition_Slice(void); +static void VBlankCB0_Phase2_Transition_WhiteFade(void); +static void VBlankCB1_Phase2_Transition_WhiteFade(void); +static void HBlankCB_Phase2_Transition_WhiteFade(void); +static void VBlankCB0_Phase2_Mugshots(void); +static void VBlankCB1_Phase2_Mugshots(void); +static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition_Shards(void); +static bool8 Phase2_Transition_Blur_Func1(struct Task* task); +static bool8 Phase2_Transition_Blur_Func2(struct Task* task); +static bool8 Phase2_Transition_Blur_Func3(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func1(struct Task* task); +static bool8 Phase2_Transition_Wave_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func3(struct Task* task); +static bool8 Phase2_Transition_Slice_Func1(struct Task* task); +static bool8 Phase2_Transition_Slice_Func2(struct Task* task); +static bool8 Phase2_Transition_Slice_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func1(struct Task* task); +static bool8 Phase2_Transition_Shards_Func2(struct Task* task); +static bool8 Phase2_Transition_Shards_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func4(struct Task* task); +static bool8 Phase2_Transition_Shards_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func1(struct Task* task); +static bool8 Phase2_Mugshot_Func2(struct Task* task); +static bool8 Phase2_Mugshot_Func3(struct Task* task); +static bool8 Phase2_Mugshot_Func4(struct Task* task); +static bool8 Phase2_Mugshot_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func6(struct Task* task); +static bool8 Phase2_Mugshot_Func7(struct Task* task); +static bool8 Phase2_Mugshot_Func8(struct Task* task); +static bool8 Phase2_Mugshot_Func9(struct Task* task); +static bool8 Phase2_Mugshot_Func10(struct Task* task); +static void Phase2Task_MugShotTransition(u8 taskID); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); +static bool8 sub_811C934(struct Sprite* sprite); +static bool8 sub_811C938(struct Sprite* sprite); +static bool8 sub_811C984(struct Sprite* sprite); +static bool8 sub_811C9B8(struct Sprite* sprite); +static bool8 sub_811C9E4(struct Sprite* sprite); +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +static bool8 sub_811D52C(void); +static void Phase1_Task_RunFuncs(u8 taskID); +static bool8 Phase1_TransitionAll_Func1(struct Task* task); +static bool8 Phase1_TransitionAll_Func2(struct Task* task); +static void sub_811D658(void); +static void VBlankCB_BattleTransition(void); +static void sub_811D6A8(u16** a0, u16** a1); +static void sub_811D690(u16** a0); +static void sub_811D6D4(void); +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); +static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void sub_811CFD0(struct Sprite* sprite); +static void sub_811B720(struct Sprite* sprite); +static void sub_811C90C(struct Sprite* sprite); + +// const data + +static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); + +static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; + +static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = +{ + [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll +}; + +static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = +{ + Phase2Task_Transition_Blur, // 0 + Phase2Task_Transition_Swirl, // 1 + Phase2Task_Transition_Shuffle, // 2 + Phase2Task_Transition_BigPokeball, // 3 + Phase2Task_Transition_PokeballsTrail, // 4 + Phase2Task_Transition_Clockwise_BlackFade, // 5 + Phase2Task_Transition_Ripple, // 6 + Phase2Task_Transition_Wave, // 7 + Phase2Task_Transition_Slice, // 8 + Phase2Task_Transition_WhiteFade, // 9 + Phase2Task_Transition_GridSquares, // 10 + Phase2Task_Transition_Shards, // 11 + Phase2Task_Transition_Sydney, // 12 + Phase2Task_Transition_Phoebe, // 13 + Phase2Task_Transition_Glacia, // 14 + Phase2Task_Transition_Drake, // 15 + Phase2Task_Transition_Steven, // 16 +}; + +static const TransitionState sMainTransitionPhases[] = +{ + &Transition_Phase1, + &Transition_WaitForPhase1, + &Transition_Phase2, + &Transition_WaitForPhase2 +}; + +static const TransitionState sPhase2_Transition_Blur_Funcs[] = +{ + Phase2_Transition_Blur_Func1, + Phase2_Transition_Blur_Func2, + Phase2_Transition_Blur_Func3 +}; + +static const TransitionState sPhase2_Transition_Swirl_Funcs[] = +{ + Phase2_Transition_Swirl_Func1, + Phase2_Transition_Swirl_Func2, +}; + +static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = +{ + Phase2_Transition_Shuffle_Func1, + Phase2_Transition_Shuffle_Func2, +}; + +static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = +{ + Phase2_Transition_BigPokeball_Func1, + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 +}; + +static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = +{ + Phase2_Transition_PokeballsTrail_Func1, + Phase2_Transition_PokeballsTrail_Func2, + Phase2_Transition_PokeballsTrail_Func3 +}; + +static const s16 sUnknown_083FD7E4[2] = {-16, 256}; +static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 sUnknown_083FD7F2[2] = {8, -8}; + +static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] = +{ + Phase2_Transition_Clockwise_BlackFade_Func1, + Phase2_Transition_Clockwise_BlackFade_Func2, + Phase2_Transition_Clockwise_BlackFade_Func3, + Phase2_Transition_Clockwise_BlackFade_Func4, + Phase2_Transition_Clockwise_BlackFade_Func5, + Phase2_Transition_Clockwise_BlackFade_Func6, + Phase2_Transition_Clockwise_BlackFade_Func7 +}; + +static const TransitionState sPhase2_Transition_Ripple_Funcs[] = +{ + Phase2_Transition_Ripple_Func1, + Phase2_Transition_Ripple_Func2 +}; + +static const TransitionState sPhase2_Transition_Wave_Funcs[] = +{ + Phase2_Transition_Wave_Func1, + Phase2_Transition_Wave_Func2, + Phase2_Transition_Wave_Func3 +}; + +static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = +{ + Phase2_Mugshot_Func1, + Phase2_Mugshot_Func2, + Phase2_Mugshot_Func3, + Phase2_Mugshot_Func4, + Phase2_Mugshot_Func5, + Phase2_Mugshot_Func6, + Phase2_Mugshot_Func7, + Phase2_Mugshot_Func8, + Phase2_Mugshot_Func9, + Phase2_Mugshot_Func10 +}; + +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x1B0, 0x1B0}, + {0x1A0, 0x1A0}, + {0x188, 0x188}, +}; +static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = +{ + {0, 0}, + {0, 0}, + {-4, 4}, + {0, 5}, + {0, 7}, +}; + +static const TransitionSpriteCallback sUnknown_083FD880[] = +{ + sub_811C934, + sub_811C938, + sub_811C984, + sub_811C9B8, + sub_811C934, + sub_811C9E4, + sub_811C934 +}; + +static const s16 sUnknown_083FD89C[2] = {12, -12}; +static const s16 sUnknown_083FD8A0[2] = {-1, 1}; + +static const TransitionState sPhase2_Transition_Slice_Funcs[] = +{ + Phase2_Transition_Slice_Func1, + Phase2_Transition_Slice_Func2, + Phase2_Transition_Slice_Func3 +}; + +static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] = +{ + Phase2_Transition_WhiteFade_Func1, + Phase2_Transition_WhiteFade_Func2, + Phase2_Transition_WhiteFade_Func3, + Phase2_Transition_WhiteFade_Func4, + Phase2_Transition_WhiteFade_Func5 +}; + +static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; + +static const TransitionState sPhase2_Transition_GridSquares_Funcs[] = +{ + Phase2_Transition_GridSquares_Func1, + Phase2_Transition_GridSquares_Func2, + Phase2_Transition_GridSquares_Func3 +}; + +static const TransitionState sPhase2_Transition_Shards_Funcs[] = +{ + Phase2_Transition_Shards_Func1, + Phase2_Transition_Shards_Func2, + Phase2_Transition_Shards_Func3, + Phase2_Transition_Shards_Func4, + Phase2_Transition_Shards_Func5 +}; + +static const s16 sUnknown_083FD8F4[][5] = +{ + {56, 0, 0, 160, 0}, + {104, 160, 240, 88, 1}, + {240, 72, 56, 0, 1}, + {0, 32, 144, 160, 0}, + {144, 160, 184, 0, 1}, + {56, 0, 168, 160, 0}, + {168, 160, 48, 0, 1}, +}; + +static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; + +static const TransitionState sPhase1_TransitionAll_Funcs[] = +{ + Phase1_TransitionAll_Func1, + Phase1_TransitionAll_Func2 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + sSpriteImage_83FC148, 0x200 +}; + +static const union AnimCmd sSpriteAnim_83FD958[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD960[] = +{ + sSpriteAnim_83FD958 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] = +{ + sSpriteAffineAnim_83FD964, + sSpriteAffineAnim_83FD974 +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD98C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4105, + .oam = &gFieldOamData_32x32, + .anims = sSpriteAnimTable_83FD960, + .images = sSpriteImageTable_83FD950, + .affineAnims = sSpriteAffineAnimTable_83FD984, + .callback = sub_811B720 +}; + +static const struct OamData gOamData_83FD9A4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] = +{ + sSpriteImage_83FC528, 0x800 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] = +{ + sSpriteImage_83FCD28, 0x800 +}; + +static const union AnimCmd sSpriteAnim_83FD9BC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] = +{ + sSpriteAnim_83FD9BC +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9C8 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9AC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9E0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9B4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal"); + +const struct SpritePalette gFieldEffectObjectPaletteInfo10 = +{ + gFieldEffectObjectPalette10, 0x1009 +}; + +static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal"); +static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal"); +static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal"); +static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal"); +static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal"); +static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal"); +static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal"); + +static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] = +{ + sMugshotPal_Sydney, + sMugshotPal_Phoebe, + sMugshotPal_Glacia, + sMugshotPal_Drake, + sMugshotPal_Steven +}; + +static const u16 * const sPlayerMugshotsPals[2] = +{ + sMugshotPal_Brendan, + sMugshotPal_May +}; + +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + sUnusedTrainerPalette, 0x100A +}; + +static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin"); +static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin"); + +// actual code starts here + +void sub_811AABC(u8 transitionID) +{ + gMain.callback2 = sub_8054398; + LaunchBattleTransitionTask(transitionID); +} + +void sub_811AAD8(u8 transitionID) +{ + LaunchBattleTransitionTask(transitionID); +} + +#define tState data[0] +#define tTransitionID data[1] +#define tTransitionDone data[15] + +bool8 IsBattleTransitionDone(void) +{ + u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain); + if (gTasks[taskID].tTransitionDone) + { + DestroyTask(taskID); + return TRUE; + } + else + return FALSE; +} + +static void LaunchBattleTransitionTask(u8 transitionID) +{ + u8 taskID = CreateTask(Task_BattleTransitionMain, 2); + gTasks[taskID].tTransitionID = transitionID; +} + +static void Task_BattleTransitionMain(u8 taskID) +{ + while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Transition_Phase1(struct Task* task) +{ + sub_807DE10(); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + if (sPhase1_Tasks[task->tTransitionID] != NULL) + { + CreateTask(sPhase1_Tasks[task->tTransitionID], 4); + task->tState++; + return FALSE; + } + else + { + task->tState = 2; + return TRUE; + } +} + +static bool8 Transition_WaitForPhase1(struct Task* task) +{ + if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) + { + task->tState++; + return TRUE; + } + else + return FALSE; +} + +static bool8 Transition_Phase2(struct Task* task) +{ + CreateTask(sPhase2_Tasks[task->tTransitionID], 0); + task->tState++; + return FALSE; +} + +static bool8 Transition_WaitForPhase2(struct Task* task) +{ + task->tTransitionDone = 0; + if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) + task->tTransitionDone = 1; + return FALSE; +} + +static void Phase1Task_TransitionAll(u8 taskID) +{ + if (gTasks[taskID].tState == 0) + { + gTasks[taskID].tState++; + CreatePhase1Task(0, 0, 3, 2, 2); + } + else if (sub_811D52C()) + DestroyTask(taskID); +} + +static void Phase2Task_Transition_Blur(u8 taskID) +{ + while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Blur_Func1(struct Task* task) +{ + REG_MOSAIC = 0; + REG_BG1CNT |= BGCNT_MOSAIC; + REG_BG2CNT |= BGCNT_MOSAIC; + REG_BG3CNT |= BGCNT_MOSAIC; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Blur_Func2(struct Task* task) +{ + if (task->data[1] != 0) + task->data[1]--; + else + { + task->data[1] = 4; + if (++task->data[2] == 10) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0); + REG_MOSAIC = (task->data[2] & 15) * 17; + if (task->data[2] > 14) + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_Blur_Func3(struct Task* task) +{ + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur); + DestroyTask(taskID); + } + return FALSE; +} + +static void Phase2Task_Transition_Swirl(u8 taskID) +{ + while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); + SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + task->data[1] += 4; + task->data[2] += 8; + + sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl); + DestroyTask(taskID); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Swirl(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Swirl(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_Shuffle(u8 taskID) +{ + while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + + SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); + SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + REG_IME = savedIME; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r4 = task->data[1]; + r3 = task->data[2] >> 8; + task->data[1] += 4224; + task->data[2] += 384; + + for (i = 0; i < 160; i++, r4 += 4224) + { + u16 var = r4 / 256; + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + } + + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Shuffle(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Shuffle(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_BigPokeball(u8 taskID) +{ + while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) +{ + u16 i; + u16 *dst1, *dst2; + + sub_811D658(); + dp12_8087EA4(); + + task->data[1] = 16; + task->data[2] = 0; + task->data[4] = 0; + task->data[5] = 0x4000; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + TRANSITION_STRUCT.BLDCNT = 0x3F41; + TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000 + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 240; + } + + SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); + + sub_811D6A8(&dst1, & dst2); + CpuFill16(0, dst1, 0x800); + CpuSet(sBigPokeball_Tileset, dst2, 0x2C0); + LoadPalette(gFieldEffectObjectPalette10, 240, 32); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* BigPokeballMap; + + BigPokeballMap = sBigPokeball_Tilemap; + sub_811D6A8(&dst1, &dst2); + for (i = 0; i < 20; i++) + { + for (j = 0; j < 30; j++, BigPokeballMap++) + { + dst1[i * 32 + j] = *BigPokeballMap | 0xF000; + } + } + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[2]++; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[2] > 15) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[1]--; + task->data[3] = 2; + } + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; + if (task->data[1] == 0) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + if (task->data[5] <= 0) + { + task->tState++; + task->data[1] = 160; + task->data[2] = 256; + task->data[3] = 0; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (task->data[2] < 1024) + task->data[2] += 128; + if (task->data[1] != 0) + { + task->data[1] -= (task->data[2] >> 8); + if (task->data[1] < 0) + task->data[1] = 0; + } + sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + if (task->data[1] == 0) + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball)); + } + if (task->data[3] == 0) + { + task->data[3]++; + SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void Transition_BigPokeball_Vblank(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; +} + +static void VBlankCB0_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_BigPokeball(void) +{ + Transition_BigPokeball_Vblank(); + DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_PokeballsTrail(u8 taskID) +{ + while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sPokeballTrail_Tileset, dst2, 0x20); + CpuFill32(0, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) +{ + s16 i; + s16 rand; + s16 arr0[2]; + s16 arr1[5]; + + memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4)); + memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8)); + rand = Random() & 1; + for (i = 0; i <= 4; i++, rand ^= 1) + { + gUnknown_0202FF84[0] = arr0[rand]; // x + gUnknown_0202FF84[1] = (i * 32) + 16; // y + gUnknown_0202FF84[2] = rand; + gUnknown_0202FF84[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail)); + } + return FALSE; +} + +bool8 FldEff_Pokeball(void) +{ + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + gSprites[spriteID].oam.priority = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].data0 = gUnknown_0202FF84[2]; + gSprites[spriteID].data1 = gUnknown_0202FF84[3]; + gSprites[spriteID].data2 = -1; + InitSpriteAffineAnim(&gSprites[spriteID]); + StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); + return FALSE; +} + +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + +static void sub_811B720(struct Sprite* sprite) +{ + s16 arr0[2]; + + memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2)); + if (sprite->data1 != 0) + sprite->data1--; + else + { + if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240) + { + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data2) + { + u32 var; + u16 *ptr; + + sprite->data2 = posX; + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + ptr = (u16 *)(VRAM + var); + + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); + } + } + sprite->pos1.x += arr0[sprite->data0]; + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} + +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID) +{ + while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0; + TRANSITION_STRUCT.WINOUT = 63; + TRANSITION_STRUCT.field_6 = -3855; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 0xF3F4; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); + TRANSITION_STRUCT.data[4] = 120; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[4] >= 240) + { + TRANSITION_STRUCT.data[5] = 0; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) +{ + s16 r1, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; + if (TRANSITION_STRUCT.data[5] >= 80) + r1 = TRANSITION_STRUCT.data[2], r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] += 8; + if (TRANSITION_STRUCT.data[5] >= 160) + { + TRANSITION_STRUCT.data[4] = 240; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] -= 16; + if (TRANSITION_STRUCT.data[4] <= 0) + { + TRANSITION_STRUCT.data[5] = 160; + task->tState++; + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) +{ + s16 r1, r2, r3; + vu8 var = 0; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1); + + while (1) + { + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[5] <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.data[2]; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + r3 = 0; + if (var != 0) + break; + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.data[5] -= 8; + if (TRANSITION_STRUCT.data[5] <= 0) + { + TRANSITION_STRUCT.data[4] = r3; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) + { + gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + } + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1); + do + { + s16 r2, r3; + + r2 = 120, r3 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[2] >= 120) + r2 = 0, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); + + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); + + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[2] > 120) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void Phase2Task_Transition_Ripple(u8 taskID) +{ + while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); + SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) +{ + u8 i; + s16 r3; + u16 r4, r8; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + r3 = task->data[2] >> 8; + r4 = task->data[1]; + r8 = 384; + task->data[1] += 0x400; + if (task->data[2] <= 0x1FFF) + task->data[2] += 0x180; + + for (i = 0; i < 160; i++, r4 += r8) + { + // todo: fix the asm + s16 var = r4 >> 8; + asm(""); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + asm(""); + } + + if (++task->data[3] == 81) + { + task->data[4]++; + BeginNormalPaletteFade(-1, -2, 0, 0x10, 0); + } + + if (task->data[4] != 0 && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple)); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Ripple(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition_Ripple(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +static void Phase2Task_Transition_Wave(u8 taskID) +{ + while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Wave_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 242; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Wave_Func2(struct Task* task) +{ + u8 i, r5; + u16* toStore; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + toStore = gUnknown_03004DE0[0]; + r5 = task->data[2]; + task->data[2] += 16; + task->data[1] += 8; + + for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++) + { + s16 value = task->data[1] + Sin(r5, 40); + if (value < 0) + value = 0; + if (value > 240) + value = 240; + *toStore = (value << 8) | (0xF1); + if (value < 240) + nextFunc = FALSE; + } + if (nextFunc) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Wave_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Wave(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +#define tMugshotOpponentID data[13] +#define tMugshotPlayerID data[14] +#define tMugshotID data[15] + +static void Phase2Task_Transition_Sydney(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Phoebe(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Glacia(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Drake(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_Transition_Steven(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_MugShotTransition(u8 taskID) +{ + while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Mugshot_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + Mugshots_CreateOpponentPlayerSprites(task); + + task->data[1] = 0; + task->data[2] = 1; + task->data[3] = 239; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 62; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0xF0F1; + } + + SetVBlankCallback(VBlankCB0_Phase2_Mugshots); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* MugshotsMap; + + MugshotsMap = sMugshotsTilemap; + sub_811D6A8(&dst1, &dst2); + CpuSet(sUnknown_083FC348, dst2, 0xF0); + LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++, MugshotsMap++) + { + dst1[i * 32 + j] = *MugshotsMap | 0xF000; + } + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + SetHBlankCallback(HBlankCB_Phase2_Mugshots); + task->tState++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func3(struct Task* task) +{ + u8 i, r5; + u16* toStore; + s16 value; + s32 mergedValue; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + toStore = gUnknown_03004DE0[0]; + r5 = task->data[1]; + task->data[1] += 0x10; + + for (i = 0; i < 80; i++, toStore++, r5 += 0x10) + { + value = task->data[2] + Sin(r5, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; i++, toStore++, r5 += 0x10) + { + value = task->data[3] - Sin(r5, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + + task->data[2] += 8; + task->data[3] -= 8; + if (task->data[2] > 0xF0) + task->data[2] = 0xF0; + if (task->data[3] < 0) + task->data[3] = 0; + mergedValue = *(s32*)(&task->data[2]); + if (mergedValue == 0xF0) + task->tState++; + + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func4(struct Task* task) +{ + u8 i; + u16* toStore; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + { + *toStore = 0xF0; + } + + task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + sub_811CA10(task->tMugshotOpponentID, 0); + sub_811CA10(task->tMugshotPlayerID, 1); + sub_811CA28(task->tMugshotOpponentID); + + PlaySE(SE_BT_START); + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotOpponentID)) + { + task->tState++; + sub_811CA28(task->tMugshotPlayerID); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->tMugshotPlayerID)) + { + TRANSITION_STRUCT.VBlank_DMA = 0; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gUnknown_03004DE0[0], 0, 0x140); + memset(gUnknown_03004DE0[1], 0, 0x140); + REG_WIN0H = 0xF0; + REG_BLDY = 0; + task->tState++; + task->data[3] = 0; + task->data[4] = 0; + TRANSITION_STRUCT.BLDCNT = 0xBF; + SetVBlankCallback(VBlankCB1_Phase2_Mugshots); + } + return FALSE; +} + +static bool8 Phase2_Mugshot_Func7(struct Task* task) +{ + bool32 r6; + + TRANSITION_STRUCT.VBlank_DMA = 0; + r6 = TRUE; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + if (task->data[4] < 0x50) + task->data[4] += 2; + if (task->data[4] > 0x50) + task->data[4] = 0x50; + + if (++task->data[3] & 1) + { + s16 i; + for (i = 0, r6 = FALSE; i <= task->data[4]; i++) + { + s16 index1 = 0x50 - i; + s16 index2 = 0x50 + i; + if (gUnknown_03004DE0[0][index1] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index1]++; + } + if (gUnknown_03004DE0[0][index2] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index2]++; + } + } + } + + if (task->data[4] == 0x50 && !r6) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func8(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + BlendPalettes(-1, 0x10, 0x7FFF); + TRANSITION_STRUCT.BLDCNT = 0xFF; + task->data[3] = 0; + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Mugshot_Func9(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[3]++; + memset(gUnknown_03004DE0[0], task->data[3], 0x140); + if (task->data[3] > 15) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Mugshot_Func10(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(task->func)); + return FALSE; +} + +static void VBlankCB0_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BG0VOFS = TRANSITION_STRUCT.field_1C; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); +} + +static void HBlankCB_Phase2_Mugshots(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = TRANSITION_STRUCT.field_18; + else + REG_BG0HOFS = TRANSITION_STRUCT.field_1A; +} + +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) +{ + struct Sprite *opponentSprite, *playerSprite; + + s16 mugshotID = task->tMugshotID; + task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID], + sMugshotsOpponentCoords[mugshotID][0] - 32, + sMugshotsOpponentCoords[mugshotID][1] + 42, + 0, &ewram[0xC03C]); + task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]); + + opponentSprite = &gSprites[task->tMugshotOpponentID]; + playerSprite = &gSprites[task->tMugshotPlayerID]; + + opponentSprite->callback = sub_811C90C; + playerSprite->callback = sub_811C90C; + + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); +} + +static void sub_811C90C(struct Sprite* sprite) +{ + while (sUnknown_083FD880[sprite->data0](sprite)); +} + +static bool8 sub_811C934(struct Sprite* sprite) +{ + return FALSE; +} + +static bool8 sub_811C938(struct Sprite* sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C)); + memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0)); + + sprite->data0++; + sprite->data1 = arr0[sprite->data7]; + sprite->data2 = arr1[sprite->data7]; + return TRUE; +} + +static bool8 sub_811C984(struct Sprite* sprite) +{ + sprite->pos1.x += sprite->data1; + if (sprite->data7 && sprite->pos1.x < 133) + sprite->data0++; + else if (!sprite->data7 && sprite->pos1.x > 103) + sprite->data0++; + return FALSE; +} + +static bool8 sub_811C9B8(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->data1 == 0) + { + sprite->data0++; + sprite->data2 = -sprite->data2; + sprite->data6 = 1; + } + return FALSE; +} + +static bool8 sub_811C9E4(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + sprite->data0++; + return FALSE; +} + +static void sub_811CA10(s16 spriteID, s16 value) +{ + gSprites[spriteID].data7 = value; +} + +static void sub_811CA28(s16 spriteID) +{ + gSprites[spriteID].data0++; +} + +static s16 sub_811CA44(s16 spriteID) +{ + return gSprites[spriteID].data6; +} + +#undef tMugshotOpponentID +#undef tMugshotPlayerID +#undef tMugshotID + +static void Phase2Task_Transition_Slice(u8 taskID) +{ + while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Slice_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + task->data[2] = 256; + task->data[3] = 1; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; + gUnknown_03004DE0[1][160 + i] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); + SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Slice_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Slice_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice)); + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Slice(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition_Slice(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition_WhiteFade(u8 taskID) +{ + while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; + + SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); + SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.BLDY = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.BLDY > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade)); + } + return FALSE; +} + +static void VBlankCB0_Phase2_Transition_WhiteFade(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.field_6; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition_WhiteFade(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.BLDY; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition_WhiteFade(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +static void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition_GridSquares(u8 taskID) +{ + while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(sShrinkingBoxTileset, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return FALSE; +} + +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares)); + } + return FALSE; +} + +static void Phase2Task_Transition_Shards(u8 taskID) +{ + while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase2_Transition_Shards_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); + + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func2(struct Task* task) +{ + sub_811D8FC(TRANSITION_STRUCT.data, + sUnknown_083FD8F4[task->data[1]][0], + sUnknown_083FD8F4[task->data[1]][1], + sUnknown_083FD8F4[task->data[1]][2], + sUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = sUnknown_083FD8F4[task->data[1]][4]; + task->tState++; + return TRUE; +} + +static bool8 Phase2_Transition_Shards_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, nextFunc = FALSE; i < 16; i++) + { + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.data[2]) + r3 = TRANSITION_STRUCT.data[2]; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.data[2]) + r4 = TRANSITION_STRUCT.data[2]; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return FALSE; +} + +static bool8 Phase2_Transition_Shards_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = sUnknown_083FD93A[task->data[1] - 1]; + return TRUE; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards)); + return FALSE; + } +} + +static bool8 Phase2_Transition_Shards_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return TRUE; + } + else + return FALSE; +} + +static void VBlankCB_Phase2_Transition_Shards(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +{ + u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3); + gTasks[taskID].data[1] = a0; + gTasks[taskID].data[2] = a1; + gTasks[taskID].data[3] = a2; + gTasks[taskID].data[4] = a3; + gTasks[taskID].data[5] = a4; + gTasks[taskID].data[6] = a0; +} + +static bool8 sub_811D52C(void) +{ + if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF) + return TRUE; + else + return FALSE; +} + +static void Phase1_Task_RunFuncs(u8 taskID) +{ + while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase1_TransitionAll_Func1(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[1]; + task->data[7] += task->data[4]; + if (task->data[7] > 16) + task->data[7] = 16; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] > 15) + { + task->tState++; + task->data[6] = task->data[2]; + } + return FALSE; +} + +static bool8 Phase1_TransitionAll_Func2(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[2]; + task->data[7] -= task->data[5]; + if (task->data[7] < 0) + task->data[7] = 0; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] == 0) + { + if (--task->data[3] == 0) + DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs)); + else + { + task->data[6] = task->data[1]; + task->tState = 0; + } + } + return FALSE; +} + +static void sub_811D658(void) +{ + struct TransitionData* const* dummy = &sTransitionStructPtr; + memset(*dummy, 0, sizeof(struct TransitionData)); + sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16); +} + +static void VBlankCB_BattleTransition(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_811D690(u16** a0) +{ + u16 reg, *vram; + + reg = REG_BG0CNT >> 2; + reg <<= 0xE; + vram = (u16*)(VRAM + reg); + + *a0 = vram; +} + +static void sub_811D6A8(u16** a0, u16** a1) +{ + u16 reg0, reg1, *vram0, *vram1; + + reg0 = REG_BG0CNT >> 8; + reg1 = REG_BG0CNT >> 2; + + reg0 <<= 0xB; + reg1 <<= 0xE; + + vram0 = (u16*)(VRAM + reg0); + *a0 = vram0; + + vram1 = (u16*)(VRAM + reg1); + *a1 = vram1; +} + +static void sub_811D6D4(void) +{ + BlendPalettes(-1, 0x10, 0); +} + +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) +{ + u8 i; + for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer) + { + array[i] = sinAdd + Sin(0xFF & index, amplitude); + } +} + +static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +{ + s16 i; + + memset(array, 0xA, 160 * sizeof(s16)); + for (i = 0; i < 64; i++) + { + s16 sinResult, cosResult; + s16 toStoreOrr, r2, r3, toStore, r7, r8; + + sinResult = Sin(i, a3); + cosResult = Cos(i, a3); + + toStoreOrr = a1 - sinResult; + toStore = a1 + sinResult; + r7 = a2 - cosResult; + r8 = a2 + cosResult; + + if (toStoreOrr < 0) + toStoreOrr = 0; + if (toStore > 0xF0) + toStore = 0xF0; + if (r7 < 0) + r7 = 0; + if (r8 > 0x9F) + r8 = 0x9F; + + toStore |= (toStoreOrr << 8); + array[r7] = toStore; + array[r8] = toStore; + + cosResult = Cos(i + 1, a3); + r3 = a2 - cosResult; + r2 = a2 + cosResult; + + if (r3 < 0) + r3 = 0; + if (r2 > 0x9F) + r2 = 0x9F; + + while (r7 > r3) + array[--r7] = toStore; + while (r7 < r3) + array[++r7] = toStore; + + while (r8 > r2) + array[--r8] = toStore; + while (r8 < r2) + array[++r8] = toStore; + } +} + +static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + data[0] = a1; + data[1] = a2; + data[2] = a1; + data[3] = a2; + data[4] = a3; + data[5] = a4; + data[6] = a5; + data[7] = a6; + data[8] = a3 - a1; + if (data[8] < 0) + { + data[8] = -data[8]; + data[6] = -a5; + } + data[9] = a4 - a2; + if (data[9] < 0) + { + data[9] = -data[9]; + data[7] = -a6; + } + data[10] = 0; +} + +static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2) +{ + u8 var; + if (data[8] > data[9]) + { + data[2] += data[6]; + data[10] += data[9]; + if (data[10] > data[8]) + { + data[3] += data[7]; + data[10] -= data[8]; + } + } + else + { + data[3] += data[7]; + data[10] += data[8]; + if (data[10] > data[9]) + { + data[2] += data[6]; + data[10] -= data[9]; + } + } + var = 0; + if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4])) + { + var++; + if (a1) + data[2] = data[4]; + } + if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5])) + { + var++; + if (a2) + data[3] = data[5]; + } + if (var == 2) + return TRUE; + else + return FALSE; +} diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c new file mode 100644 index 000000000..343c8f183 --- /dev/null +++ b/src/battle/reshow_battle_screen.c @@ -0,0 +1,332 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "palette.h" +#include "main.h" +#include "unknown_task.h" +#include "text.h" +#include "rom_8077ABC.h" +#include "data2.h" + +extern struct SpriteTemplate gUnknown_02024E8C; +extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_030042A0; +extern u8 gReservedSpritePaletteCount; +extern u8 gActionSelectionCursor[4]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[4]; +extern u8 gNoOfAllBanks; +extern u16 gBattleTypeFlags; +extern u8 gObjectBankIDs[4]; +extern u8 gBattleMonForms[4]; +extern u8 gHealthboxIDs[4]; + +bool8 sub_800E414(u8 a0); +bool8 sub_8031C30(u8 a0); +void sub_8031EE8(void); +void sub_80327CC(void); +void sub_8032984(u8 a, u16 b); +void sub_800FCD4(void); +void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank); +void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank); +void BattleLoadSubstituteSprite(u8 bank, u8 b); +void LoadPlayerTrainerBankSprite(u16 a0, u8 bank); +u8 sub_8077F7C(u8 bank); +u8 sub_8077F68(u8 bank); +void nullsub_11(u8 healthboxID, u8 a1); +void sub_8043DB0(u8 bank); +u8 battle_make_oam_normal_battle(u8 bank); +u8 battle_make_oam_safari_battle(void); +void sub_8045A5C(u8 healthboxID, struct Pokemon*, u8); +void sub_8043F44(u8 bank); +void sub_8043DFC(u8 healthboxID); + +// this file's functions +static void CB2_ReshowBattleScreenAfterMenu(void); +static bool8 LoadAppropiateBankSprite(u8 bank); +static void sub_807B184(u8 bank); +static void sub_807B508(u8 bank); +static void sub_807B06C(void); + +#define gReshowState ewram[0x1FFFF] +#define gHelperState ewram[0x1FFFE] + +void nullsub_14(void) +{ + +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(0); + SetVBlankCallback(0); + REG_MOSAIC = 0; + gReshowState = 0; + gHelperState = 0; + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + switch (gReshowState) + { + case 0: + dp12_8087EA4(); + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + break; + case 1: + { + const u32 zero = 0; + CpuFastSet(&zero, (void*) VRAM, 0x1006000); + } + break; + case 2: + if (!sub_800E414(gHelperState)) + { + gHelperState++; + gReshowState--; + } + else + gHelperState = 0; + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + sub_8031EE8(); + break; + case 6: + if (sub_8031C30(gHelperState)) + gHelperState = 0; + else + { + gHelperState++; + gReshowState--; + } + break; + case 7: + if (!LoadAppropiateBankSprite(0)) + gReshowState--; + break; + case 8: + if (!LoadAppropiateBankSprite(1)) + gReshowState--; + break; + case 9: + if (!LoadAppropiateBankSprite(2)) + gReshowState--; + break; + case 10: + if (!LoadAppropiateBankSprite(3)) + gReshowState--; + break; + case 11: + sub_807B184(0); + break; + case 12: + sub_807B184(1); + break; + case 13: + sub_807B184(2); + break; + case 14: + sub_807B184(3); + break; + case 15: + sub_807B508(0); + break; + case 16: + sub_807B508(1); + break; + case 17: + sub_807B508(2); + break; + case 18: + sub_807B508(3); + break; + case 19: + { + u8 opponentBank; + u16 species; + + sub_80327CC(); + + opponentBank = GetBankByPlayerAI(1); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + + if (IsDoubleBattle()) + { + opponentBank = GetBankByPlayerAI(3); + species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); + sub_8032984(opponentBank, species); + } + sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0); + } + break; + default: + SetHBlankCallback(sub_800FCD4); + SetVBlankCallback(sub_800FCFC); + sub_807B06C(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(sub_800F808); + break; + } + gReshowState++; +} + +static void sub_807B06C(void) +{ + struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; + + sub_800D6D4(); + + regBgcnt1 = (void*)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (void*)(®_BG2CNT); + regBgcnt2->charBaseBlock = 0; +} + +static bool8 LoadAppropiateBankSprite(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + if (GetBankSide(bank)) + { + if (!ewram17800[bank].substituteSprite) + BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + LoadPlayerTrainerBankSprite(2, 0); + else if (!ewram17800[bank].substituteSprite) + BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank); + else + BattleLoadSubstituteSprite(bank, 0); + + gHelperState = 0; + } + return 1; +} + +static void sub_807B184(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 posY; + + if (ewram17800[bank].substituteSprite) + posY = sub_8077F7C(bank); + else + posY = sub_8077F68(bank); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + { + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + { + GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + (8 - gTrainerBackPicCoords[2].coords) * 4 + 80, + sub_8079E90(0)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + } + else + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + return; + GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); + gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank)); + gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; + gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gObjectBankIDs[bank]].data0 = bank; + gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + } + gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible; + } +} + +static void sub_807B508(u8 bank) +{ + if (bank < gNoOfAllBanks) + { + u8 healthboxID; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) + healthboxID = battle_make_oam_safari_battle(); + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) + return; + else + healthboxID = battle_make_oam_normal_battle(bank); + gHealthboxIDs[bank] = healthboxID; + sub_8043F44(bank); + sub_8043DFC(healthboxID); + if (GetBankSide(bank)) + sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10); + else + sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0); + if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2) + nullsub_11(gHealthboxIDs[bank], 1); + else + nullsub_11(gHealthboxIDs[bank], 0); + if (GetBankSide(bank)) + { + if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + { + if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) + sub_8043DB0(healthboxID); + } + } +} diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 273191192..4eadaa78b 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void) s32 loopCounter; for (loopCounter = 0; loopCounter <= 39; loopCounter++) - sub_810CA6C(loopCounter); + PokeblockClearIfExists(loopCounter); CloseMenu(); return 1; diff --git a/src/engine/link.c b/src/engine/link.c index 5858ad8bf..850201ccb 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -2,7 +2,6 @@ #include "link.h" #include "battle.h" #include "berry.h" -#include "berry_blender.h" #include "hall_of_fame.h" #include "item_use.h" #include "main.h" @@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags; extern u16 word_3004858; +extern void Blender_SetBankBerryData(u8 bank, u16 itemID); + static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); @@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam) sub_8007E24(); break; case 0xAAAB: - sub_80516C4(i, gRecvCmds[1][i]); + Blender_SetBankBerryData(i, gRecvCmds[1][i]); break; case 0xCCCC: #if defined(ENGLISH) diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 09fd06d9e..3b616065b 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -1421,14 +1421,14 @@ void AddBirchSpeechObjects(u8 taskId) gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId; //Create Brendan sprite - spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000); + spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId; //Create May sprite - spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800); + spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 3632d7053..cffed2614 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id) return FALSE; } -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer) +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer); - LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag; + LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); + LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); + spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; + spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; spriteTemplate.oam = &gOamData_839F0F4; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; diff --git a/src/field/money.c b/src/field/money.c index 5d9d0b689..67b7eb03f 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -148,7 +148,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) } __attribute__((naked)) -void sub_80B7B34(void) +void sub_80B7B34(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 775280f6e..029bb066f 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -25,7 +25,6 @@ #include "sound.h" #include "songs.h" #include "safari_zone.h" -#include "use_pokeblock.h" #include "event_data.h" #include "pokeblock.h" @@ -582,7 +581,7 @@ static void sub_810BDAC(bool8 flag) v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6; if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) + if (GetPokeblockData(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) { gBGTilemapBuffers[2][v0] = (i << 12) + 23; gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24; @@ -894,7 +893,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 11); - sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); + PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); sub_810BC98(); @@ -942,9 +941,9 @@ static void sub_810C748(u8 taskId) static void sub_810C788(u8 taskId) { - s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); + s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; if (v0 == 0) { @@ -967,7 +966,7 @@ static void sub_810C854(u8 taskId) SafariZoneActivatePokeblockFeeder(gScriptItemId); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); gScriptResult = gScriptItemId; - sub_810CA6C(gScriptItemId); + PokeblockClearIfExists(gScriptItemId); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } @@ -1024,10 +1023,10 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) { u8 contestStat; u8 maxRating; - u8 rating = sub_810CA9C(pokeblock, 1); + u8 rating = GetPokeblockData(pokeblock, 1); for (contestStat=1; contestStat<5; contestStat++) { - maxRating = sub_810CA9C(pokeblock, contestStat + 1); + maxRating = GetPokeblockData(pokeblock, contestStat + 1); if (rating < maxRating) { rating = maxRating; @@ -1038,7 +1037,7 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock) u8 sub_810C9E8(struct Pokeblock *pokeblock) { - u8 feel = sub_810CA9C(pokeblock, 6); + u8 feel = GetPokeblockData(pokeblock, 6); if (feel > 99) feel = 99; return feel; @@ -1068,7 +1067,7 @@ bool8 sub_810CA34(struct Pokeblock *pokeblock) return TRUE; } -bool8 sub_810CA6C(u8 pokeblockIdx) +bool8 PokeblockClearIfExists(u8 pokeblockIdx) { if (gSaveBlock1.pokeblocks[pokeblockIdx].color == 0) { @@ -1078,33 +1077,33 @@ bool8 sub_810CA6C(u8 pokeblockIdx) return TRUE; } -s16 sub_810CA9C(const struct Pokeblock *pokeblock, u8 field) +s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field) { - if (field == 0) + if (field == PBLOCK_COLOR) return pokeblock->color; - if (field == 1) + if (field == PBLOCK_SPICY) return pokeblock->spicy; - if (field == 2) + if (field == PBLOCK_DRY) return pokeblock->dry; - if (field == 3) + if (field == PBLOCK_SWEET) return pokeblock->sweet; - if (field == 4) + if (field == PBLOCK_BITTER) return pokeblock->bitter; - if (field == 5) + if (field == PBLOCK_SOUR) return pokeblock->sour; - if (field == 6) + if (field == PBLOCK_FEEL) return pokeblock->feel; return 0; } -s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) +s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock) { u8 flavor; s16 curGain; s16 totalGain = 0; for (flavor=0; flavor<5; flavor++) { - curGain = sub_810CA9C(pokeblock, flavor + 1); + curGain = GetPokeblockData(pokeblock, flavor + 1); if (curGain > 0) { totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor]; @@ -1113,9 +1112,9 @@ s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) return totalGain; } -void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest) +void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest) { - u8 color = sub_810CA9C(pokeblock, 0); + u8 color = GetPokeblockData(pokeblock, PBLOCK_COLOR); StringCopy(dest, gPokeblockNames[color]); } @@ -1124,7 +1123,7 @@ bool8 sub_810CB68(u8 nature, u8 *dest) u8 flavor; for (flavor=0; flavor<5; flavor++) { - if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0) + if (PokeblockGetGain(nature, &gUnknown_083F7F9C[flavor]) > 0) { StringCopy(dest, gPokeblockNames[flavor + 1]); return TRUE; diff --git a/src/field/shop.c b/src/field/shop.c index d53646a88..6a88f1394 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -16,68 +16,106 @@ #include "task.h" #include "tv.h" #include "unknown_task.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "item.h" +#include "decoration.h" +#include "items.h" +#include "songs.h" +#include "rom4.h" +#include "decoration_inventory.h" +#include "field_camera.h" -struct UnknownShopStruct -{ - /* 0x0 */ void (* callback) (void); - /* 0x4 */ u16 *itemList; - /* 0x8 */ u8 itemCount; - /* 0x9 */ u8 unk9; - /* 0xA */ u8 unkA; - /* 0xB */ u8 unkB; - /* 0xC */ bool8 unkC; - // unknown size -}; +#define ewram18000 ((u16 *)(ewram + 0x18000)) +#define ewram18300 ((u16 *)(ewram + 0x18300)) -extern struct UnknownShopStruct gUnknown_03000708; -extern struct MenuAction gUnknown_083CC6D0[]; +extern bool8 sub_80A52C4(u8, u8); -extern u8 gUnknown_083CC6E8[]; -extern u8 gUnknown_083CC6EB[]; +extern u8 ewram[]; extern u8 gBuyMenuFrame_Gfx[]; - extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -extern u16 gUnknown_083CC710[2]; -u8 CreateShopMenu(bool8 var) +void sub_80B39D0(int var1, int var2, bool32 hasControlCode); +void sub_80B3A70(void); +void sub_80B4378(u8); +void sub_80B43F0(u8); +void Task_ExitBuyMenu(u8); +void sub_80B4470(u8); +void sub_80B2EFC(u8 taskId); +void sub_80B2F30(u8 taskId); +void HandleShopMenuQuit(u8 taskId); +void sub_80B3BF4(u8 taskId); +void sub_80B3D7C(u8 taskId); + +// iwram +static struct MartInfo gMartInfo; + +// ewram +EWRAM_DATA u32 gMartTotalCost = 0; +EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf? +EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static +EWRAM_DATA u8 gUnknown_02038730 = 0; +EWRAM_DATA u8 gUnknown_02038731 = 0; + +// rodata +static const struct MenuAction2 gUnknown_083CC6D0[] = +{ + { MartText_Buy, sub_80B2EFC }, + { MartText_Sell, sub_80B2F30 }, + { MartText_Quit2, HandleShopMenuQuit }, +}; + +static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT +static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT + +static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; + +static const struct YesNoFuncTable gUnknown_083CC708[] = +{ + sub_80B3BF4, + sub_80B3D7C +}; + +u8 CreateShopMenu(u8 martType) { ScriptContext2_Enable(); - gUnknown_03000708.unkC = var; - gUnknown_03000708.unk9 = 0; + gMartInfo.martType = martType; + gMartInfo.cursor = 0; - if(var == FALSE) + if (martType == MART_TYPE_0) { - gUnknown_03000708.unkA = 2; + gMartInfo.numChoices = 2; MenuDrawTextWindow(0, 0, 10, 7); - PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8); + PrintMenuItemsReordered(1, 1, 3, (struct MenuAction *)gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8); } else { - gUnknown_03000708.unkA = 1; + gMartInfo.numChoices = 1; MenuDrawTextWindow(0, 0, 10, 5); - PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB); + PrintMenuItemsReordered(1, 1, 2, (struct MenuAction *)gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB); } - InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9); + InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel return CreateTask(sub_80B2E38, 8); } void SetShopMenuCallback(void *callbackPtr) { - gUnknown_03000708.callback = callbackPtr; + gMartInfo.callback = callbackPtr; } void SetShopItemsForSale(u16 *items) { u16 i = 0; - gUnknown_03000708.itemList = items; - gUnknown_03000708.itemCount = 0; + gMartInfo.itemList = items; + gMartInfo.itemCount = 0; - while (gUnknown_03000708.itemList[i]) + while (gMartInfo.itemList[i]) { - gUnknown_03000708.itemCount++; + gMartInfo.itemCount++; i++; } } @@ -86,37 +124,37 @@ void sub_80B2E38(u8 var) { const u8 local = var; - if(gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - if(gUnknown_03000708.unk9) + if (gMartInfo.cursor) // can move cursor up? { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(-1); + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); } } - else if(gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA) + if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down? { - PlaySE(0x5); - gUnknown_03000708.unk9 = MoveMenuCursor(1); + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); } } - else if (gMain.newKeys & 1) + else if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - if(!gUnknown_03000708.unkC) + PlaySE(SE_SELECT); + if (gMartInfo.martType == MART_TYPE_0) { - gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local); + gUnknown_083CC6D0[gUnknown_083CC6E8[gMartInfo.cursor]].func(local); } else { - gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local); + gUnknown_083CC6D0[gUnknown_083CC6EB[gMartInfo.cursor]].func(local); } } - else if(gMain.newKeys & 2) + else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); + PlaySE(SE_SELECT); HandleShopMenuQuit(local); } } @@ -141,17 +179,17 @@ void HandleShopMenuQuit(u8 taskId) { HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 8); - sub_80BE3BC(); // in tv.s? + sub_80BE3BC(); ScriptContext2_Disable(); DestroyTask(taskId); - if(gUnknown_03000708.callback) - gUnknown_03000708.callback(); // run the callback if it exists. + if (gMartInfo.callback) + gMartInfo.callback(); // run the callback if it exists. } void sub_80B2FA0(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9])); DestroyTask(taskId); @@ -160,15 +198,15 @@ void sub_80B2FA0(u8 taskId) void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) { - CreateShopMenu(gUnknown_03000708.unkC); + CreateShopMenu(gMartInfo.martType); DestroyTask(taskId); } void Task_ExitSellMenu(u8 taskId) { - if(sub_807D770() == 1) + if (sub_807D770() == 1) { - if(gUnknown_03000708.unkC == 2) + if (gMartInfo.martType == MART_TYPE_2) DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); else DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0); @@ -253,8 +291,8 @@ void BuyMenuDrawGraphics(void) SetUpWindowConfig(&gWindowConfig_81E6DFC); InitMenuWindow(&gWindowConfig_81E6DFC); BuyMenuDrawMapGraphics(); - gUnknown_03000708.unk9 = zero; - gUnknown_03000708.unkB = zero2; + gMartInfo.cursor = zero; + gMartInfo.choicesAbove = zero2; MenuZeroFillWindowRect(0, 0, 0x20, 0x20); sub_80B7C14(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); @@ -272,9 +310,8 @@ void BuyMenuDrawGraphics(void) void sub_80B3240(void) { - u16 tempArr[2]; + u16 tempArr[2] = {0x41EE, 0x7FFF}; - memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr)); LoadPalette(&tempArr[1], 0xD1, 2); LoadPalette(&tempArr[0], 0xD8, 2); } @@ -283,7 +320,7 @@ void sub_80B3270(void) { sub_80F944C(); - if(gUnknown_03000708.itemCount > 7) + if (gMartInfo.itemCount > 7) { CreateVerticalScrollIndicators(0, 172, 12); CreateVerticalScrollIndicators(1, 172, 148); @@ -293,12 +330,12 @@ void sub_80B3270(void) void sub_80B32A4(void) { - if(gUnknown_03000708.unkB == 0) + if (gMartInfo.choicesAbove == 0) sub_80F979C(0, 1); else sub_80F979C(0, 0); - if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount) + if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) sub_80F979C(1, 1); else sub_80F979C(1, 0); @@ -318,13 +355,13 @@ void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *arra array[offset1 + offset2 + 33] = array2[3]; } -void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) +void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) { u8 tempVar4 = var4; s16 offset1 = var1 * 2; s16 offset2 = (var2 * 0x40) + 0x40; - switch(tempVar4) + switch (tempVar4) { case 0: // _080B335C BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); @@ -340,3 +377,975 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) break; } } + +void sub_80B33D0(s16 var1, int var2, u16 *var3) +{ + s16 offset1 = var1 * 2; + s16 offset2 = (var2 * 0x40) + 0x40; + + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); +} + +void sub_80B3420(void) +{ + s16 facingX; + s16 facingY; + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + facingX -= 3; + facingY -= 3; + + for (y = 0; y < 6; y++) + { + for (x = 0; x < 7; x++) + { + u16 metatileId = MapGridGetMetatileIdAt(facingX + x, facingY + y); + + if (y != 5 && x != 6) + { + s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y); + + if (metatileId < 512) + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3); + else + BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3); + } + else + { + if (metatileId < 512) + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); + else + sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); + } + + if (y == 0 && x != 0 && x != 6) + sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64); + } + } +} + +void BuyMenuDrawMapGraphics(void) +{ + sub_80F9020(); + sub_80B356C(); + sub_80B368C(); + sub_80B3420(); +} + +void sub_80B356C(void) +{ + s16 facingX; + s16 facingY; + u8 playerHeight; + u8 y; + u8 x; + u8 r8 = 0; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + playerHeight = PlayerGetZCoord(); + for (y = 0; y < 16; y++) + gUnknown_020386A4[y][MAP_OBJ_ID] = 16; + for (y = 0; y < 5; y++) + { + for (x = 0; x < 7; x++) + { + u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight); + + if (mapObjId != 16) + { + gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId; + gUnknown_020386A4[r8][X_COORD] = x; + gUnknown_020386A4[r8][Y_COORD] = y; + if (gMapObjects[mapObjId].mapobj_unk_18 == 1) + gUnknown_020386A4[r8][ANIM_NUM] = 0; + if (gMapObjects[mapObjId].mapobj_unk_18 == 2) + gUnknown_020386A4[r8][ANIM_NUM] = 1; + if (gMapObjects[mapObjId].mapobj_unk_18 == 3) + gUnknown_020386A4[r8][ANIM_NUM] = 2; + if (gMapObjects[mapObjId].mapobj_unk_18 == 4) + gUnknown_020386A4[r8][ANIM_NUM] = 3; + r8++; + } + } + } +} + +void sub_80B368C(void) +{ + u8 i; + + for (i = 0; i < 16; i++) // max objects? + { + if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16) + continue; + + StartSpriteAnim(&gSprites[AddPseudoFieldObject( + gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId, + SpriteCallbackDummy, + (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8, + (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32, + 2)], + gUnknown_020386A4[i][ANIM_NUM]); + } +} + +void sub_80B3720(void) +{ + s16 i; + + for (i = 0; i < 0x400; i++) + { + if (ewram18000[i] != 0) + gBGTilemapBuffers[1][i] = ewram18000[i] + 0xC3E0; + } +} + +void sub_80B3764(int var1, int var2) +{ + sub_80B3720(); + sub_80B39D0(var1, var2, 0); + InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); +} + +void sub_80B379C(void) +{ + u16 i, j; + + for (i = 0; i < 8; i++) + for (j = 0; j < 14; j++) + gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; +} + +void sub_80B37EC(void) +{ + sub_80B3A70(); +} + +void sub_80B37F8(u8 taskId) +{ + u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; + u16 itemId = gMartInfo.itemList[itemListIndex]; + u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1)); + + sub_80B7A94(gTasks[taskId].data[1] * price, 6, 6, 11); + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 0x6; + ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); + MenuPrint(gOtherText_xString1, 1, 11); + sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); +} + +void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + CopyItemName(itemId, stringPtr); + + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + sub_80B79F8(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); +} + +void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) +{ + u8 *stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + { + stringPtr[0] = EXT_CTRL_CODE_BEGIN; + stringPtr[1] = 0x1; + stringPtr[2] = 0x2; + stringPtr += 3; + } + + StringCopy(stringPtr, gDecorations[itemId].name); + sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); + stringPtr = gStringVar1; + + if (hasControlCode != FALSE) + stringPtr = &gStringVar1[3]; + + if (gDecorations[itemId].price == 10000) + { + sub_80B7B34(0x19, var2, hasControlCode); // huh??? + } + else + { + sub_80B79F8(stringPtr, gDecorations[itemId].price, 0x4); + MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); + } +} + +void sub_80B39D0(int var1, int var2, bool32 hasControlCode) +{ + u8 i; + + for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) + { + if (gMartInfo.martType == MART_TYPE_0) + sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + else + sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + } + + if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) + { + MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); + MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); + } +} + +void sub_80B3A70(void) +{ + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) + { + if (gMartInfo.martType == MART_TYPE_0) + { + sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]), + 0x4, 0x68, 0x68, 0x30, 0); + } + else + sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description, + 0x4, 0x68, 0x68, 0x30, 0); + } + else + { + sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, 0); + } +} + +void sub_80B3AEC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh??? + PlaySE(SE_SELECT); + + if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1); + else + sub_80B4378(taskId); + } +} + +void sub_80B3B80(u8 taskId) +{ + IncrementGameStat(0x26); + sub_80B79E0(&gSaveBlock1.money, gMartTotalCost); + PlaySE(SE_REGI); + sub_80B7BEC(gSaveBlock1.money, 0, 0); + gTasks[taskId].func = sub_80B3AEC; +} + +void sub_80B3BD0(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? + sub_80B4378(taskId); +} + +void sub_80B3BF4(u8 taskId) +{ + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); + sub_80B379C(); + sub_80B3420(); + + if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + if (gMartInfo.martType == MART_TYPE_0) + { + if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1])) + { + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); + sub_80B4470(taskId); + } + else + DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1); + } + else // a normal mart is only type 0, so types 1 and 2 are decoration marts. + { + if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) + { + if (gMartInfo.martType == MART_TYPE_1) + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1); + else + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1); + } + } + } + else + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); +} + +void sub_80B3D38(u8 taskId) +{ + DisplayYesNoMenu(7, 8, 1); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); + DoYesNoFuncWithChoice(taskId, gUnknown_083CC708); +} + +void sub_80B3D7C(u8 taskId) +{ + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); + sub_80B4378(taskId); +} + +void sub_80B3DC8(u8 taskId) +{ + if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) + sub_80B37F8(taskId); + + if (gMain.newKeys & A_BUTTON) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B379C(); + sub_80B3420(); + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2); + ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8); + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + sub_80B4378(taskId); + } +} + +void sub_80B3EFC(u8 taskId) +{ + u16 var; + + gTasks[taskId].data[1] = 1; + MenuDrawTextWindow(0, 0xA, 0xD, 0xD); + sub_80B37F8(taskId); + + var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); + if (var > 99) + gMartInfo.curItemCount = 99; + else + gMartInfo.curItemCount = var; + + gTasks[taskId].func = sub_80B3DC8; +} + +#ifdef NONMATCHING +void sub_80B3F88(void) +{ + u16 *r1; + u16 *r2; + register u8 *r10 asm("r10"); + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x1EF; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 -= 32; + r2 -= 32; + } + + { + u8 *r1 = r10 + 0x3A20; + u8 *r2 = r1 + 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r2 -= 0x3C0; + r1 -= 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B3F88(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B4020 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r1, [r0, 0x28]\n\ + ldr r3, _080B4024 @ =0x000003de\n\ + adds r1, r3\n\ + adds r2, r1, 0\n\ + adds r2, 0x80\n\ + ldr r7, [r0, 0x24]\n\ + mov r10, r7\n\ + ldr r0, _080B4028 @ =0x000003ff\n\ + mov r9, r0\n\ + movs r6, 0xD\n\ +_080B3FAC:\n\ + adds r3, r2, 0\n\ + subs r3, 0x40\n\ + str r3, [sp]\n\ + movs r7, 0x40\n\ + negs r7, r7\n\ + adds r7, r1\n\ + mov r12, r7\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B3FC0:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B3FD4\n\ + adds r0, r2, 0\n\ + adds r0, 0x3C\n\ +_080B3FD4:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B3FC0\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FAC\n\ + ldr r1, _080B402C @ =0x00003a20\n\ + add r1, r10\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r2, r1, r0\n\ + ldr r3, _080B4030 @ =0x040000d4\n\ + ldr r5, _080B4034 @ =0x800000f0\n\ + ldr r4, _080B4038 @ =0xfffffc40\n\ + movs r6, 0xD\n\ +_080B3FFC:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B3FFC\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B4020: .4byte gMenuWindow\n\ +_080B4024: .4byte 0x000003de\n\ +_080B4028: .4byte 0x000003ff\n\ +_080B402C: .4byte 0x00003a20\n\ +_080B4030: .4byte 0x040000d4\n\ +_080B4034: .4byte 0x800000f0\n\ +_080B4038: .4byte 0xfffffc40\n\ + .syntax divided"); +} +#endif + +#ifdef NONMATCHING +void sub_80B403C(void) +{ + u16 *r1; + u16 *r2; + u8 *r10; + s32 i; + s32 j; + struct Window *r8 = &gMenuWindow; + + r1 = r8->tilemap; + r1 += 0x4F; + r2 = r1; + r2 += 64; + r10 = r8->tileData; + + for (i = 0; i < 14; i++) + { + for (j = 0; j < 15; j++) + { + if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1) + r2[j] = r8->tileDataStartOffset + 1; + else + r2[j] = r1[j] + 0x3C; + } + + r1 += 32; + r2 += 32; + } + + { + register u8 *r1 asm("r1") = r10 + 0x960; + register u8 *r2 asm("r2") = r1; + + r1 += 0x780; + for (i = 0; i < 14; i++) + { + DmaCopy16(3, r1, r2, 0x1E0); + r1 += 0x3C0; + r2 += 0x3C0; + } + } +} +#else +__attribute__((naked)) +void sub_80B403C(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r0, _080B40D8 @ =gMenuWindow\n\ + mov r8, r0\n\ + ldr r2, [r0, 0x28]\n\ + adds r1, r2, 0\n\ + adds r1, 0x9E\n\ + adds r2, r1, 0\n\ + adds r1, 0x80\n\ + ldr r3, [r0, 0x24]\n\ + mov r10, r3\n\ + ldr r7, _080B40DC @ =0x000003ff\n\ + mov r9, r7\n\ + movs r6, 0xD\n\ +_080B4060:\n\ + adds r0, r2, 0\n\ + adds r0, 0x40\n\ + str r0, [sp]\n\ + movs r3, 0x40\n\ + adds r3, r1\n\ + mov r12, r3\n\ + adds r3, r2, 0\n\ + adds r4, r1, 0\n\ + movs r5, 0xE\n\ +_080B4072:\n\ + ldrh r2, [r4]\n\ + mov r1, r9\n\ + ands r1, r2\n\ + mov r7, r8\n\ + ldrh r0, [r7, 0x1A]\n\ + adds r0, 0x1\n\ + cmp r1, r0\n\ + ble _080B4086\n\ + adds r0, r2, 0\n\ + subs r0, 0x3C\n\ +_080B4086:\n\ + strh r0, [r3]\n\ + adds r3, 0x2\n\ + adds r4, 0x2\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080B4072\n\ + ldr r2, [sp]\n\ + mov r1, r12\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B4060\n\ + movs r1, 0x96\n\ + lsls r1, 4\n\ + add r1, r10\n\ + adds r2, r1, 0\n\ + movs r0, 0xF0\n\ + lsls r0, 3\n\ + adds r1, r0\n\ + ldr r3, _080B40E0 @ =0x040000d4\n\ + ldr r5, _080B40E4 @ =0x800000f0\n\ + movs r4, 0xF0\n\ + lsls r4, 2\n\ + movs r6, 0xD\n\ +_080B40B4:\n\ + str r1, [r3]\n\ + str r2, [r3, 0x4]\n\ + str r5, [r3, 0x8]\n\ + ldr r0, [r3, 0x8]\n\ + adds r2, r4\n\ + adds r1, r4\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080B40B4\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B40D8: .4byte gMenuWindow\n\ +_080B40DC: .4byte 0x000003ff\n\ +_080B40E0: .4byte 0x040000d4\n\ +_080B40E4: .4byte 0x800000f0\n\ + .syntax divided"); +} +#endif + +void sub_80B40E8(u8 taskId) // Mart_DoCursorAction +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) // only up can be pressed + { + if (gMartInfo.cursor == 0) + { + if (gMartInfo.choicesAbove == 0) // if there are no choices above, dont bother + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. + sub_80B3F88(); + sub_80B39D0(0, 0, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up + sub_80B3A70(); + } + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed + { + if (gMartInfo.cursor == 7) // are you at the bottom of the menu? + { + if (gMartInfo.choicesAbove + gMartInfo.cursor == gMartInfo.itemCount) // are you at cancel? + return; + + PlaySE(SE_SELECT); + gMartInfo.choicesAbove++; + sub_80B403C(); + sub_80B39D0(7, 7, 0); + sub_80B3A70(); + sub_80B32A4(); + } + else if (gMartInfo.cursor != gMartInfo.itemCount) + { + PlaySE(SE_SELECT); + gMartInfo.cursor = MoveMenuCursor(1); + sub_80B3A70(); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL? + { + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + sub_80F979C(1, 1); + sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13); + + if (gMartInfo.martType == MART_TYPE_0) + { + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else // _080B42BA + { + CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1); + } + } + else // _080B428C + { + gMartTotalCost = gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].price; + + if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) + { + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + } + else + { + StringCopy(gStringVar1, gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].name); + ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8); + + if (gMartInfo.martType == MART_TYPE_1) + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + } + } + } + else + sub_80B43F0(taskId); + } + else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu + { + PlaySE(SE_SELECT); + sub_80B43F0(taskId); + } + } +} + +void sub_80B4378(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13); + MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); + sub_80B3420(); + sub_80B3764(6, 7); + sub_80B37EC(); + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + sub_80B32A4(); + gTasks[taskId].func = sub_80B40E8; +} + +void sub_80B43F0(u8 taskId) +{ + gFieldCallback = sub_80B3050; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ExitBuyMenu; +} + +void Task_ExitBuyMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + RemoveMoneyLabelObject(0, 0); + BuyMenuFreeMemory(); + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + } +} + +void sub_80B4470(u8 taskId) +{ + u16 i; + + for (i = 0; i < 3; i++) + { + if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] + && gUnknown_02038724[i].quantity != 0) + { + if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255) + gUnknown_02038724[i].quantity = 255; + else + gUnknown_02038724[i].quantity += gTasks[taskId].data[1]; + return; + } + } + + if (gUnknown_02038730 < 3) + { + gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; + gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1]; + gUnknown_02038730++; + } +} + +void ClearItemPurchases(void) +{ + gUnknown_02038730 = 0; + ClearItemSlots(gUnknown_02038724, 3); +} + +void CreatePokemartMenu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_0); + SetShopItemsForSale(itemList); + ClearItemPurchases(); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop1Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_1); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop2Menu(u16 *itemList) +{ + CreateShopMenu(MART_TYPE_2); + SetShopItemsForSale(itemList); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void sub_80B45B4(u8 taskId, const s16 *list, u16 c) +{ + s16 r5 = gTasks[taskId].data[4] - 1; + s16 r3 = gTasks[taskId].data[5] - 1; + s16 r4 = gTasks[taskId].data[1]; + s16 y; + s16 x; + + if (gTasks[taskId].data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + } + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[2 - r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + } + } + } + } +} + +static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; +static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; +static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; +static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; +static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; +static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; +static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; + +void sub_80B4710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[3] = 1; + + switch (data[0]) + { + case 0: + sub_80B45B4(taskId, gUnknown_083CC714, 0); + break; + case 1: + sub_80B45B4(taskId, gUnknown_083CC71A, 0); + break; + case 2: + sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); + break; + case 3: + sub_80B45B4(taskId, gUnknown_083CC726, 0); + break; + case 4: + sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); + break; + case 5: + sub_80B45B4(taskId, gUnknown_083CC732, 0); + break; + case 6: + sub_80B45B4(taskId, gUnknown_083CC738, 0); + break; + } + + data[0] = (data[0] + 1) & 7; + if (!data[0]) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = 0; + } +} + +u8 sub_80B47D8(u16 var) +{ + u8 taskId = CreateTask(sub_80B4710, 0); + s16 *data = gTasks[taskId].data; + + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; + data[1] = 0; + data[2] = var; + sub_80B4710(taskId); + return taskId; +} + +void sub_80B4824(u8 var) +{ + gUnknown_02038731 = sub_80B47D8(var); +} + +void sub_80B483C(void) +{ + DestroyTask(gUnknown_02038731); +} + +bool8 sub_80B4850(void) +{ + if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) + return FALSE; + else + return TRUE; +} diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 3aa2f1fa5..0c8f59959 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -1,5 +1,6 @@ // // Created by Scott Norton on 5/31/17. +// Modified by Dizzy Egg on 8/15/17. // #include "global.h" @@ -16,8 +17,6 @@ #include "sound.h" #include "songs.h" #include "pokeblock.h" -#include "pokeblock_feed.h" -#include "use_pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 @@ -29,7 +28,7 @@ const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); #endif -const u32 gUnknown_08406118[] = { +static const u32 sContestStatsMonData[] = { MON_DATA_COOL, MON_DATA_TOUGH, MON_DATA_SMART, @@ -37,11 +36,11 @@ const u32 gUnknown_08406118[] = { MON_DATA_BEAUTY }; -const u8 gUnknown_0840612C[] = { +static const u8 gUnknown_0840612C[] = { 0, 4, 3, 2, 1 }; -const u8 *const gUnknown_08406134[] = { +static const u8 *const sContextStatNames[] = { OtherText_Coolness, OtherText_Toughness, OtherText_Smartness, @@ -49,18 +48,18 @@ const u8 *const gUnknown_08406134[] = { OtherText_Beauty }; -const struct SpriteSheet gSpriteSheet_ConditionUpDown = { +static const struct SpriteSheet gSpriteSheet_ConditionUpDown = { (u8 *)ConditionUpDownTiles, sizeof ConditionUpDownTiles, GFX_TAG_CONDITIONUPDOWN }; -const struct SpritePalette gSpritePalette_ConditionUpDown = { +static const struct SpritePalette gSpritePalette_ConditionUpDown = { ConditionUpDownPalette, GFX_TAG_CONDITIONUPDOWN }; -const s16 gUnknown_08406158[][2] = { +static const s16 gUnknown_08406158[][2] = { {0x9c, 0x1e}, {0x75, 0x35}, {0x75, 0x70}, @@ -68,28 +67,28 @@ const s16 gUnknown_08406158[][2] = { {0xc5, 0x35} }; -const struct OamData gOamData_840616C = { +static const struct OamData gOamData_840616C = { .shape = 1, .size = 2, .priority = 1 }; -const union AnimCmd gSpriteAnim_8406174[] = { +static const union AnimCmd gSpriteAnim_8406174[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_840617C[] = { +static const union AnimCmd gSpriteAnim_840617C[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_8406184[] = { +static const union AnimCmd *const gSpriteAnimTable_8406184[] = { gSpriteAnim_8406174, gSpriteAnim_840617C }; -const struct SpriteTemplate gSpriteTemplate_840618C = { +static const struct SpriteTemplate gSpriteTemplate_840618C = { GFX_TAG_CONDITIONUPDOWN, GFX_TAG_CONDITIONUPDOWN, &gOamData_840616C, @@ -99,47 +98,44 @@ const struct SpriteTemplate gSpriteTemplate_840618C = { SpriteCallbackDummy }; -asm(".text\n" - ".include \"constants/gba_constants.inc\""); - static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL; static EWRAM_DATA MainCallback gUnknown_02039308 = NULL; static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; -EWRAM_DATA u8 gUnknown_02039310 = 0; -EWRAM_DATA s16 gUnknown_02039312 = 0; +EWRAM_DATA u8 gPokeblockMonID = 0; +EWRAM_DATA s16 gPokeblockGain = 0; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock -void launch_c3_walk_stairs_and_run_once(void (*const)(void)); -void sub_81361E4(void); -void sub_813622C(void); -void sub_8136244(void); -void sub_8136264(void); -void sub_8136294(void); -void sub_81365A0(void); -void sub_81365C8(void); -void sub_8136638(void); -void sub_81368A4(void); +static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); +static void sub_81361E4(void); +static void sub_813622C(void); +static void sub_8136244(void); +static void sub_8136264(void); +static void sub_8136294(void); +static void sub_81365A0(void); +static void sub_81365C8(void); +static void sub_8136638(void); +static void sub_81368A4(void); void sub_8089668(void); -void sub_8136B44(void); -u8 sub_81370E4(u8); -void sub_8136BB8(void); -s8 sub_8136C40(void); -bool8 sub_8137058(void); -void sub_8136D60(void); -void sub_8136808(void); -void sub_8136D8C(void); -u8 sub_81370A4(u8); -void sub_81369CC(void); -void sub_8136EF0(void); -void sub_8137138(void); -void sub_8136C6C(void); -bool8 sub_8136D00(void); -void sub_8136DC0(u8 *, u8, s16); -void sub_8136DA0(const u8 *); -void sub_8136F74(struct Pokeblock *, struct Pokemon *); -void sub_81371DC(struct Sprite *); +static void sub_8136B44(void); +static u8 sub_81370E4(u8); +static void sub_8136BB8(void); +static s8 sub_8136C40(void); +static bool8 sub_8137058(void); +static void sub_8136D60(void); +static void sub_8136808(void); +static void sub_8136D8C(void); +static u8 sub_81370A4(u8); +static void sub_81369CC(void); +static void sub_8136EF0(void); +static void sub_8137138(void); +static void sub_8136C6C(void); +static bool8 sub_8136D00(void); +static void Pokeblock_BufferEnhancedStatText(u8 *, u8, s16); +static void Pokeblock_MenuWindowTextPrint(const u8 *); +static void sub_8136F74(struct Pokeblock *, struct Pokemon *); +static void sub_81371DC(struct Sprite *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -151,18 +147,18 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) SetMainCallback2(sub_8136244); } -void sub_8136174(void) +static void sub_8136174(void) { gUnknown_02039304->pokeblock = gUnknown_0203930C; gUnknown_02039304->callback = gUnknown_02039308; - gUnknown_02039310 = sub_81370E4(gUnknown_02039310); - gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; + gPokeblockMonID = sub_81370E4(gPokeblockMonID); + gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1; gUnknown_083DFEC4->unkD162[0] = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_81361E4); } -void sub_81361E4(void) +static void sub_81361E4(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -176,7 +172,7 @@ void sub_81361E4(void) } } -void sub_813622C(void) +static void sub_813622C(void) { sub_81368A4(); AnimateSprites(); @@ -184,7 +180,7 @@ void sub_813622C(void) UpdatePaletteFade(); } -void sub_8136244(void) +static void sub_8136244(void) { gUnknown_02039304->unk0(); AnimateSprites(); @@ -192,7 +188,7 @@ void sub_8136244(void) UpdatePaletteFade(); } -void sub_8136264(void) +static void sub_8136264(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -201,13 +197,13 @@ void sub_8136264(void) sub_8089668(); } -void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) +static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) { gUnknown_02039304->unk0 = func; gUnknown_02039304->unk50 = 0; } -void sub_8136294(void) +static void sub_8136294(void) { bool32 c1LinkRelatedActive; switch (gUnknown_02039304->unk50) @@ -346,7 +342,7 @@ void sub_8136294(void) } } -void sub_81365A0(void) +static void sub_81365A0(void) { while (!gUnknown_02039304->unk55) { @@ -354,7 +350,7 @@ void sub_81365A0(void) } } -void sub_81365C8(void) +static void sub_81365C8(void) { switch (gUnknown_02039304->unk50) { @@ -374,7 +370,7 @@ void sub_81365C8(void) } } -void sub_8136638(void) +static void sub_8136638(void) { switch (gUnknown_02039304->unk50) { @@ -464,12 +460,12 @@ void sub_8136638(void) } } -void sub_8136808(void) +static void sub_8136808(void) { switch (gUnknown_02039304->unk50) { case 0: - gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC); + gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC); gUnknown_02039308 = gUnknown_02039304->callback; gUnknown_0203930C = gUnknown_02039304->pokeblock; BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -479,18 +475,18 @@ void sub_8136808(void) if (!gPaletteFade.active) { gMain.savedCallback = sub_8136174; - SetMainCallback2(sub_8147ADC); + SetMainCallback2(CB2_PreparePokeblockFeedScene); } break; } } -void sub_81368A4(void) +static void sub_81368A4(void) { switch (gUnknown_02039304->unk50) { case 0: - if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310) + if (gUnknown_083DFEC4->unk87DC != gPokeblockMonID) { sub_80F5060(gUnknown_02039304->unk56); gUnknown_02039304->unk50++; @@ -538,7 +534,7 @@ void sub_81368A4(void) } } -void sub_81369CC(void) +static void sub_81369CC(void) { switch (gUnknown_02039304->unk50) { @@ -578,14 +574,14 @@ void sub_81369CC(void) case 5: if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) { - sub_810CA6C((u8)gScriptItemId); + PokeblockClearIfExists((u8)gScriptItemId); launch_c3_walk_stairs_and_run_once(sub_8136B44); } break; } } -void sub_8136B44(void) +static void sub_8136B44(void) { switch (gUnknown_02039304->unk50) { @@ -609,7 +605,7 @@ void sub_8136B44(void) } } -void sub_8136BB8(void) +static void sub_8136BB8(void) { GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); StringGetEnd10(gUnknown_02039304->stringBuffer); @@ -621,7 +617,7 @@ void sub_8136BB8(void) MoveMenuCursor(0); } -s8 sub_8136C40(void) +static s8 sub_8136C40(void) { s8 retval = ProcessMenuInputNoWrap(); if ((u8)(retval + 1) < 3) @@ -632,124 +628,68 @@ s8 sub_8136C40(void) return retval; } -void sub_8136C6C(void) +static void sub_8136C6C(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); } else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); } - sub_8136DA0(gUnknown_02039304->stringBuffer); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); } -#ifdef NONMATCHING -bool8 sub_8136D00(void) +static bool8 sub_8136D00(void) { while (1) { - if (++gUnknown_02039304->unk53 >= 5) + gUnknown_02039304->unk53++; + if (gUnknown_02039304->unk53 < 5) { - break; + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + break; } - if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + else { - sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); - sub_8136DA0(gUnknown_02039304->stringBuffer); - return TRUE; + gUnknown_02039304->unk53 = 5; + return FALSE; } } - gUnknown_02039304->unk53 = 5; - return FALSE; + Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer); + return TRUE; } -#else -__attribute__((naked)) -bool8 sub_8136D00(void) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tldr r4, _08136D30 @ =gUnknown_02039304\n" - "\tadds r3, r4, 0\n" - "\tmovs r5, 0x5\n" - "_08136D08:\n" - "\tldr r0, [r3]\n" - "\tadds r0, 0x53\n" - "\tldrb r1, [r0]\n" - "\tadds r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r2, [r3]\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0x4\n" - "\tbhi _08136D34\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x61\n" - "\tldrb r1, [r1]\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _08136D3A\n" - "\tb _08136D08\n" - "\t.align 2, 0\n" - "_08136D30: .4byte gUnknown_02039304\n" - "_08136D34:\n" - "\tstrb r5, [r1]\n" - "\tmovs r0, 0\n" - "\tb _08136D5A\n" - "_08136D3A:\n" - "\tldr r2, [r4]\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x10\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0x53\n" - "\tldrb r1, [r1]\n" - "\tadds r2, 0x61\n" - "\tadds r2, r1\n" - "\tldrb r2, [r2]\n" - "\tbl sub_8136DC0\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x10\n" - "\tbl sub_8136DA0\n" - "\tmovs r0, 0x1\n" - "_08136D5A:\n" - "\tpop {r4,r5}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif -void sub_8136D60(void) +static void sub_8136D60(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(gOtherText_WontEat, 1, 17); } -void sub_8136D8C(void) +static void sub_8136D8C(void) { MenuZeroFillScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } -void sub_8136DA0(const u8 *message) +static void Pokeblock_MenuWindowTextPrint(const u8 *message) { MenuDrawTextWindow(0, 16, 29, 19); MenuPrint(message, 1, 17); } #ifdef NONMATCHING -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) { - u16 v0 = a2; if (a2 != 0) { - if ((v0 = max(a2, 0)) == 0); - StringCopy(dest, gUnknown_08406134[a1]); + StringCopy(dest, sContextStatNames[statID]); StringAppend(dest, gOtherText_WasEnhanced); } else @@ -759,7 +699,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #else __attribute__((naked)) -void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" "\tadds r4, r0, 0\n" @@ -775,7 +715,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tmovs r0, 0\n" "_08136DD8:\n" "\tlsls r0, 16\n" - "\tldr r1, _08136DF4 @ =gUnknown_08406134\n" + "\tldr r1, _08136DF4 @ =sContextStatNames\n" "\tlsls r0, r3, 2\n" "\tadds r0, r1\n" "\tldr r1, [r0]\n" @@ -786,7 +726,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "\tbl StringAppend\n" "\tb _08136E04\n" "\t.align 2, 0\n" - "_08136DF4: .4byte gUnknown_08406134\n" + "_08136DF4: .4byte sContextStatNames\n" "_08136DF8: .4byte gOtherText_WasEnhanced\n" "_08136DFC:\n" "\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n" @@ -801,16 +741,16 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) } #endif -void sub_8136E10(struct Pokemon *pokemon, u8 *data) +static void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data) { u16 i; for (i=0; i<5; i++) { - data[i] = GetMonData(pokemon, gUnknown_08406118[i]); + data[i] = GetMonData(pokemon, sContestStatsMonData[i]); } } -void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { u16 i; s16 cstat; @@ -820,14 +760,14 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) sub_8136F74(pokeblock, pokemon); for (i=0; i<5; i++) { - data = GetMonData(pokemon, gUnknown_08406118[i]); + data = GetMonData(pokemon, sContestStatsMonData[i]); cstat = data + gUnknown_02039304->unk66[i]; if (cstat < 0) cstat = 0; if (cstat > 255) cstat = 255; data = cstat; - SetMonData(pokemon, gUnknown_08406118[i], &data); + SetMonData(pokemon, sContestStatsMonData[i], &data); } cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); cstat = cstat + pokeblock->feel; @@ -838,21 +778,21 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -void sub_8136EF0(void) +static void sub_8136EF0(void) { u16 i; struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; - sub_8136E10(pokemon, gUnknown_02039304->unk57); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk57); sub_8136E40(gUnknown_02039304->pokeblock, pokemon); - sub_8136E10(pokemon, gUnknown_02039304->unk5c); + Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk5c); for (i=0; i<5; i++) { gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; } } -void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +static void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) { s8 direction; s8 i; @@ -864,9 +804,9 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) gUnknown_02039304->unk66[2] = pokeblock->bitter; gUnknown_02039304->unk66[3] = pokeblock->sweet; gUnknown_02039304->unk66[4] = pokeblock->dry; - if (gUnknown_02039312 > 0) + if (gPokeblockGain > 0) direction = 1; - else if (gUnknown_02039312 < 0) + else if (gPokeblockGain < 0) direction = -1; else return; @@ -884,7 +824,7 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } -bool8 sub_8137058(void) +static bool8 sub_8137058(void) { struct Pokemon *pokemon = gPlayerParty; pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; @@ -893,7 +833,7 @@ bool8 sub_8137058(void) return FALSE; } -u8 sub_81370A4(u8 a0) +static u8 sub_81370A4(u8 a0) { u8 i; for (i=0; i<PARTY_SIZE; i++) @@ -908,7 +848,7 @@ u8 sub_81370A4(u8 a0) return 0; } -u8 sub_81370E4(u8 a0) +static u8 sub_81370E4(u8 a0) { u8 ct; u8 i; @@ -927,7 +867,7 @@ u8 sub_8137124(u8 a0) return sub_81370A4(a0); } -void sub_8137138(void) +static void sub_8137138(void) { u16 flavor; u8 spriteidx; @@ -951,7 +891,7 @@ void sub_8137138(void) } } -void sub_81371DC(struct Sprite *sprite) +static void sub_81371DC(struct Sprite *sprite) { if (sprite->data0 <= 5) sprite->pos2.y -= 2; diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 96f47c067..7001c2eaa 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3161,7 +3161,7 @@ static u8 PickWildMonNature(void) } for (i = 0; i < 25; i++) { - if (sub_810CAE4(natures[i], safariPokeblock) > 0) + if (PokeblockGetGain(natures[i], safariPokeblock) > 0) return natures[i]; } } diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c new file mode 100644 index 000000000..51de68171 --- /dev/null +++ b/src/pokemon/learn_move.c @@ -0,0 +1,1081 @@ +#include "global.h" +#include "data2.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "rom4.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "task.h" +#include "trig.h" + +extern u8 ewram[]; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u8 gTileBuffer[]; + +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; +extern const struct WindowConfig gWindowConfig_81E6CE4; +extern const struct WindowConfig gWindowConfig_81E7240; +extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gMoveDescriptions[]; +extern const u8 gTypeNames[][7]; +extern const u8 *const gUnknown_083CAF70[]; + +#ifdef GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); + +struct LearnMoveStruct +{ + u8 state; + u8 filler1; + u8 unk2; + u8 spriteIDs[20]; + u8 filler17[1]; + u8 unk18; + u8 unk19; + u8 numMenuChoices; + u8 menuSelection; + u8 unk1C; + bool8 unk1D; + u8 unk1E; + u8 filler1F; + /*0x020*/ u16 movesToLearn[20]; + u8 filler48[0x52-0x48]; + u8 moveNames[6][0x19]; + u8 fillerE8[0x2C3-0xE8]; + bool8 unk2C3; + bool8 showContestInfo; + /*0x2C5*/ u8 partyMon; + u8 unk2C6; +}; + +static struct LearnMoveStruct *sLearnMoveStruct; + +const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); + +const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); + +const u8 gUnknown_08402CF8[][4] = +{ + { 0, 0, 9, 13}, + {10, 0, 29, 7}, + { 2, 14, 27, 19}, + {10, 8, 29, 13}, +}; + +struct UnknownStruct1 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +const struct UnknownStruct1 gUnknown_08402D08[][4] = +{ + { + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, + { + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, +}; + +// XXX: What are these for? +const u32 unkDataFF00FFEF = 0xFF00FFEF; +const u8 *const gTileBuffer_ = gTileBuffer; + +const struct OamData gOamData_8402D50 = {.shape = 0}; +const struct OamData gOamData_8402D58 = {.shape = 2}; +const struct OamData gOamData_8402D60 = {.shape = 1}; + +const union AnimCmd gSpriteAnim_8402D68[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402D70[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402D78[] = +{ + gSpriteAnim_8402D68, + gSpriteAnim_8402D70, +}; + +const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; +const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526}; + +void sub_8133300(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_8402D90 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D58, + .anims = gSpriteAnimTable_8402D78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DA8[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DB0[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DB8[] = +{ + gSpriteAnim_8402DA8, + gSpriteAnim_8402DB0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402DC0 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D60, + .anims = gSpriteAnimTable_8402DB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DD8[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE0[] = +{ + ANIMCMD_FRAME(9, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE8[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DF0[] = +{ + ANIMCMD_FRAME(11, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DF8[] = +{ + gSpriteAnim_8402DD8, + gSpriteAnim_8402DE0, + gSpriteAnim_8402DE8, + gSpriteAnim_8402DF0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402E08 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D50, + .anims = gSpriteAnimTable_8402DF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? + +void sub_813269C(u8); +void CB2_InitLearnMove(void); +void CB2_LearnMove(void); +void LearnMoveMain(void); +void DrawLearnMoveMenuWindow(void); +void sub_8133030(bool8); +u8 sub_81330E8(void); +void sub_8133140(u8); +u8 sub_8133248(void); +void ClearLearnMoveVars(void); +void sub_8133358(void); +void sub_8133558(void); +void sub_813362C(void); +void sub_8133800(void); +void sub_8133AEC(bool8, int); +void sub_8133CA4(void); + +void VBlankCB_LearnMove(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8132670(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_813269C, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void sub_813269C(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitLearnMove); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +void CB2_InitLearnMove(void) +{ + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + ClearLearnMoveVars(); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + sub_8133558(); + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_BG0VOFS = 0; + REG_BG0VOFS = 0; // huh? + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void sub_81327A4(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + sub_8133558(); + sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_DISPCNT = 0x1340; + REG_BG0VOFS = 0; + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_LearnMove); +} + +void CB2_LearnMove(void) +{ + LearnMoveMain(); + if (sLearnMoveStruct->unk1D) + { + sLearnMoveStruct->unk1D = FALSE; + sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); + } + if (sLearnMoveStruct->unk1E != 0) + { + sLearnMoveStruct->unk1E = 0; + sub_8133800(); + } + if (sLearnMoveStruct->unk2C3) + { + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + sLearnMoveStruct->unk2C3 = FALSE; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_81328E8(const u8 *a) +{ + StringExpandPlaceholders(gStringVar4, a); + MenuPrintMessage(gStringVar4, 3, 15); +} + +void LearnMoveMain(void) +{ + switch (sLearnMoveStruct->state) + { + case 0: + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133030(FALSE); + sub_8133800(); + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->unk2C3 = TRUE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_DISPCNT = 0x1340; + break; + case 1: + if (!gPaletteFade.active) + sLearnMoveStruct->state = 4; + break; + case 2: + sLearnMoveStruct->state++; + break; + case 3: + sub_8133030(FALSE); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + sLearnMoveStruct->state++; + gSprites[1].pos1.x = 0x48; + break; + case 4: + if (sub_81330E8() == 0) + sub_813362C(); + return; + case 5: + sub_8133140(0); + sub_8133800(); + sLearnMoveStruct->unk2C3 = TRUE; + gSprites[1].pos1.x = 0x48; + sLearnMoveStruct->state++; + break; + case 6: + if (sub_8133248() == 0) + sub_813362C(); + break; + case 8: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 9: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF) + { + sub_81328E8(gOtherText_PokeLearnedMove); + gSpecialVar_0x8004 = 1; + sLearnMoveStruct->state = 31; + } + else + { + sLearnMoveStruct->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 12: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state++; + } + break; + case 13: + { + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + sub_8133CA4(); + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; + } + else if (selection == -1 || selection == 1) + { + sub_8133CA4(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + } + break; + case 16: + sub_81328E8(gOtherText_DeleteOlderMove); + sLearnMoveStruct->state++; + break; + case 17: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sLearnMoveStruct->state = 18; + } + break; + case 18: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sub_81328E8(gOtherText_WhichMoveToForget); + sLearnMoveStruct->state = 19; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + sLearnMoveStruct->state = 24; + } + } + break; + case 24: + sub_81328E8(gOtherText_StopLearningMove); + sLearnMoveStruct->state++; + break; + case 25: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 26; + DisplayYesNoMenu(21, 7, 1); + } + break; + case 26: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sLearnMoveStruct->state = 27; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + + // What's the point? It gets set to 16, anyway. + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + sLearnMoveStruct->state = 16; + } + } + break; + case 27: + if (MenuUpdateWindowText()) + { + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + } + break; + case 19: + if (MenuUpdateWindowText()) + { + sLearnMoveStruct->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + break; + case 20: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); + sLearnMoveStruct->state = 28; + } + break; + case 21: + if (MenuUpdateWindowText()) + sLearnMoveStruct->state = 14; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sLearnMoveStruct->state++; + break; + case 15: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133800(); + if (sLearnMoveStruct->showContestInfo == FALSE) + sub_8133030(TRUE); + if (sLearnMoveStruct->showContestInfo == TRUE) + { + gSprites[1].pos1.x = 0x48; + sub_8133140(1); + } + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + break; + case 29: + if (!gPaletteFade.active) + { + if (sLearnMoveStruct->unk2C6 == 4) + { + sLearnMoveStruct->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6); + StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]); + sub_81328E8(gOtherText_ForgotMove123); + sLearnMoveStruct->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (MenuUpdateWindowText()) + { +#ifdef ENGLISH + sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); +#else + sub_81328E8(deuOtherText_ForgotAndLearned); +#endif + sLearnMoveStruct->state = 31; + PlayFanfare(BGM_FANFA1); + } + break; + case 31: + if (MenuUpdateWindowText()) + { + PlayFanfare(BGM_FANFA1); + sLearnMoveStruct->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + sLearnMoveStruct->state = 33; + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 14; + } + break; + } +} + +void DrawLearnMoveMenuWindow(void) +{ + u32 i; + + BasicInitMenuWindow(&gWindowConfig_81E7240); + for (i = 0; i < 4; i++) + { + MenuDrawTextWindow( + gUnknown_08402CF8[i][0], + gUnknown_08402CF8[i][1], + gUnknown_08402CF8[i][2], + gUnknown_08402CF8[i][3]); + } + BasicInitMenuWindow(&gWindowConfig_81E6CE4); +} + +void sub_8133030(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_81330E8(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 5; + sLearnMoveStruct->showContestInfo = TRUE; + } + + return result; +} + +void sub_8133140(bool8 a) +{ + s32 i; + + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + if (i != 0) + { + MenuZeroFillWindowRect( + gUnknown_08402D08[1][i].unk4, + gUnknown_08402D08[1][i].unk5 + 2, + gUnknown_08402D08[1][i].unk4 + 7, + gUnknown_08402D08[1][i].unk5 + 3); + } + } + + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_8133248(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 3; + sLearnMoveStruct->showContestInfo = FALSE; + } + + return result; +} + +void ClearLearnMoveVars(void) +{ + s32 i; + + sLearnMoveStruct->state = 0; + sLearnMoveStruct->unk2 = 0; + sLearnMoveStruct->unk19 = 0; + sLearnMoveStruct->unk18 = 0; + sLearnMoveStruct->unk1C = 0; + sLearnMoveStruct->numMenuChoices = 0; + sLearnMoveStruct->menuSelection = 0; + sLearnMoveStruct->unk1D = FALSE; + sLearnMoveStruct->unk1E = 0; + sLearnMoveStruct->unk2C3 = FALSE; + sLearnMoveStruct->showContestInfo = FALSE; + for (i = 0; i < 20; i++) + sLearnMoveStruct->movesToLearn[i] = 0; +} + +void sub_8133300(struct Sprite *sprite) +{ + s16 var = (sprite->data1 * 10) & 0xFF; + + switch (sprite->data0) + { + case 0: + break; + case 1: + sprite->pos2.x = Sin(var, 3) * sprite->data2; + break; + case 2: + sprite->pos2.y = Sin(var, 1) * sprite->data2; + break; + } + sprite->data1++; +} + +void sub_8133358(void) +{ + s32 i; + + sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1; + + sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1); + gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1; + + sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1); + gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1; + + sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1; + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2); + } + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + + for (i = 0; i < 20; i++) + gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE; + + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); +} + +void sub_8133558(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]); + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit); + sLearnMoveStruct->numMenuChoices++; +} + +void sub_813360C(s8 delta) +{ + sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18; + sLearnMoveStruct->unk18 += delta; + sLearnMoveStruct->unk1D = TRUE; +} + +void sub_813362C(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sLearnMoveStruct->menuSelection != 0) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection--; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 0) + { + sub_813360C(-1); + } + else if (sLearnMoveStruct->unk19 != 0) + { + sLearnMoveStruct->unk19--; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->menuSelection++; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 2) + { + sub_813360C(1); + } + else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3) + { + sLearnMoveStruct->unk19++; + sLearnMoveStruct->unk1E++; + } + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]); + StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + sLearnMoveStruct->state = 12; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 12; + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + if (sLearnMoveStruct->numMenuChoices > 3) + { + gSprites[2].invisible = FALSE; + gSprites[3].invisible = FALSE; + if (sLearnMoveStruct->unk19 == 0) + gSprites[2].invisible = TRUE; + else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3) + gSprites[3].invisible = TRUE; + } +} + +void sub_8133800(void) +{ + u8 r6 = sLearnMoveStruct->unk19; + u8 *str = gTileBuffer; + s32 i; + + for (i = 0; i < 3; i++) + { + if (r6 >= sLearnMoveStruct->numMenuChoices) + { + str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); + } + else if (r6 == sLearnMoveStruct->numMenuChoices - 1) + { + str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); + } + else + { + u16 moveId = sLearnMoveStruct->movesToLearn[r6]; + + if (sLearnMoveStruct->showContestInfo) + str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); + else + str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); + + str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0); + + str[0] = CHAR_P; + str[1] = CHAR_P; + str[2] = CHAR_SLASH; + str += 3; + + str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); + } + *str++ = CHAR_NEWLINE; + r6++; + } + *str = EOS; + MenuPrint(gTileBuffer, 11, 1); + sub_813360C(0); +} + +const u8 gUnknown_08402E24[7][3] = +{ + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, +}; + +const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; +const u8 gUnknown_08402E3D[] = {4, 5, 6}; + +void PrintMoveInfo(u16 moveId, const u8 *b) +{ + u8 str[0x34]; + u8 numHearts; + u8 i; + + StringCopy(str, gExpandedPlaceholder_Empty); + switch (b[2]) + { + case 1: + break; + case 2: + if (gBattleMoves[moveId].power < 2) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 4: + if (gBattleMoves[moveId].accuracy == 0) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 6: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0); + } + break; + case 7: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3); + else + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); + } + break; + } +} + +void sub_8133AEC(bool8 contestInfo, int unused) +{ + u16 i; + + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) + { + u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]; + + if (contestInfo) + { + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + for (i = 0; i < 3; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); + sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + } + else + { + u8 var; + + for (i = 0; i < 4; i++) + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]); + var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); + if (var < 2) + { + u8 r1 = var * 2 + 9; + + MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + } + } + } + else + { + if (contestInfo) + { + MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + for (i = 0; i < 16; i++) + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + } + else + { + MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + } + MenuZeroFillWindowRect(11, 9, 28, 12); + } +} + +void sub_8133CA4(void) +{ + MenuZeroFillWindowRect(21, 7, 27, 12); + sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); +} diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c new file mode 100644 index 000000000..8dc2f47de --- /dev/null +++ b/src/pokemon/pokeblock_feed.c @@ -0,0 +1,1015 @@ +#include "global.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "menu_helpers.h" +#include "text.h" +#include "text_window.h" +#include "menu.h" +#include "rom4.h" +#include "decompress.h" +#include "data2.h" +#include "sprite.h" +#include "item_use.h" +#include "pokeblock.h" +#include "party_menu.h" +#include "strings.h" +#include "string_util.h" +#include "m4a.h" +#include "field_effect.h" +#include "sound.h" +#include "trig.h" + +extern u8 ewram[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 gPokeblockMonID; +extern s16 gPokeblockGain; + +extern const u8 gPokeblockRed_Pal[]; +extern const u8 gPokeblockBlue_Pal[]; +extern const u8 gPokeblockPink_Pal[]; +extern const u8 gPokeblockGreen_Pal[]; +extern const u8 gPokeblockYellow_Pal[]; +extern const u8 gPokeblockPurple_Pal[]; +extern const u8 gPokeblockIndigo_Pal[]; +extern const u8 gPokeblockBrown_Pal[]; +extern const u8 gPokeblockLiteBlue_Pal[]; +extern const u8 gPokeblockOlive_Pal[]; +extern const u8 gPokeblockGray_Pal[]; +extern const u8 gPokeblockBlack_Pal[]; +extern const u8 gPokeblockWhite_Pal[]; +extern const u8 gPokeblockGold_Pal[]; +extern const u8 gPokeblock_Gfx[]; +extern const u8 gBattleTerrainTiles_Building[]; +extern const u8 gUnknown_08E782FC[]; +extern const u8 gBattleTerrainPalette_BattleTower[]; +extern const struct CompressedSpriteSheet gUnknown_083F7F74; +extern const struct CompressedSpritePalette gUnknown_083F7F7C; + +bool8 sub_8040A3C(u16 species); + +// this file's functions +static void sub_8147B04(void); +static void sub_81481DC(void); +static void sub_814825C(void); +static u8 sub_81480B4(void); +static u8 CreatePokeblockSprite(void); +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon); +static bool8 sub_8147B20(struct Pokemon* mon); +static void LaunchPokeblockFeedTask(u8); +static void sub_8148044(u8); +static void sub_8148078(struct Sprite* sprite); +static void Task_PrintAtePokeblockText(u8 taskID); +static void Task_PaletteFadeToReturn(u8 taskID); +static void SetPokeblockFeedSpritePal(u8); +static void sub_8148108(u8, bool8); +static bool8 sub_8148540(void); +static bool8 sub_81485CC(void); +static bool8 FreePokeSpriteMatrix(void); +void sub_8148710(void); +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite); +static void sub_814862C(void); + +// EWRAM +EWRAM_DATA static struct CompressedSpritePalette sPokeblockFeedSpritePal = {0}; + +// IWRAM common +struct Sprite* gPokeblockFeedPokeSprite; +u16 gPokeblockFeedMonSpecies; +bool8 gPokeblockMonNotFlipped; +u8 gPokeblockFeedMonSpriteID; +u8 gPokeblockFeedMonNature; +u16 gUnknown_03005F34; +u8 gPokeblockFeedUnused0; +u8 gUnknown_03005F3C; +u8 gUnknown_03005F40; +struct Sprite gPokeblockFeedPokeSpriteCopy; +u16 gUnknown_03005F94; +s16 gUnknown_03005FA0[24]; + +// rodata + +static const u8 sNatureToMonPokeblockAnim[][2] = +{ + { 0, 0 }, // HARDY + { 3, 0 }, // LONELY + { 4, 1 }, // BRAVE + { 5, 0 }, // ADAMANT + { 10, 0 }, // NAUGHTY + { 13, 0 }, // BOLD + { 15, 0 }, // DOCILE + { 16, 2 }, // RELAXED + { 18, 0 }, // IMPISH + { 19, 0 }, // LAX + { 20, 0 }, // TIMID + { 25, 0 }, // HASTY + { 27, 3 }, // SERIOUS + { 28, 0 }, // JOLLY + { 29, 0 }, // NAIVE + { 33, 4 }, // MODEST + { 36, 0 }, // MILD + { 37, 0 }, // QUIET + { 39, 0 }, // BASHFUL + { 42, 0 }, // RASH + { 45, 0 }, // CALM + { 46, 5 }, // GENTLE + { 47, 6 }, // SASSY + { 48, 0 }, // CAREFUL + { 53, 0 }, // QUIRKY +}; + +static const s16 sMonPokeblockAnims[][10] = +{ + // HARDY + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0}, + { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1}, + + // LONELY + { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1}, + + // BRAVE + { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1}, + + // ADAMANT + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0}, + { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0}, + { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1}, + + // NAUGHTY + { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0}, + { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1}, + + // BOLD + { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0}, + { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1}, + + // DOCILE + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1}, + + // RELAXED + { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0}, + { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1}, + + // IMPISH + { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1}, + + // LAX + { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1}, + + // TIMID + { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1}, + + // HASTY + { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0}, + { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1}, + + // SERIOUS + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // JOLLY + { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1}, + + // NAIVE + { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0}, + { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0}, + { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0}, + { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1}, + + // MODEST + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0}, + { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1}, + + // MILD + { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1}, + + // QUIET + { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0}, + { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1}, + + // BASHFUL + { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1}, + + // RASH + { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0}, + { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0}, + { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1}, + + // CALM + { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1}, + + // GENTLE + { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1}, + + // SASSY + { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1}, + + // CAREFUL + { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0}, + { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}, + { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1}, + + // QUIRKY + { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0}, + { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1}, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 30), + AFFINEANIMCMD_FRAME(0, 0, -12, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 12, 1), + AFFINEANIMCMD_FRAME(0, 0, 0, 28), + AFFINEANIMCMD_FRAME(0, 0, -4, 3), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412008[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412028[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_8412050[] = +{ + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EA0, + sSpriteAffineAnim_8411EE8, + sSpriteAffineAnim_8411F30, + sSpriteAffineAnim_8411F78, + sSpriteAffineAnim_8411FC0, + sSpriteAffineAnim_8412008, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411EC0, + sSpriteAffineAnim_8411F08, + sSpriteAffineAnim_8411F50, + sSpriteAffineAnim_8411F98, + sSpriteAffineAnim_8411FE0, + sSpriteAffineAnim_8412028, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, + sSpriteAffineAnim_8411E90, +}; + +static const u8* const sPokeblocksPals[] = +{ + gPokeblockRed_Pal, + gPokeblockBlue_Pal, + gPokeblockPink_Pal, + gPokeblockGreen_Pal, + gPokeblockYellow_Pal, + gPokeblockPurple_Pal, + gPokeblockIndigo_Pal, + gPokeblockBrown_Pal, + gPokeblockLiteBlue_Pal, + gPokeblockOlive_Pal, + gPokeblockGray_Pal, + gPokeblockBlack_Pal, + gPokeblockWhite_Pal, + gPokeblockGold_Pal +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84120EC[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_8412148[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1), + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A0[] = +{ + sSpriteAffineAnim_84120DC +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A4[] = +{ + sSpriteAffineAnim_84120F0 +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] = +{ + sSpriteAffineAnim_8412148 +}; + +static const struct OamData sThrownPokeblockOamData = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sThrownPokeblockSpriteAnim[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sThrownPokeblockAnimTable[] = +{ + sThrownPokeblockSpriteAnim, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(-8, -8, 0, 1), + AFFINEANIMCMD_JUMP(1) +}; + +static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] = +{ + sSpriteAffineAnim_84121C0 +}; + +static const struct CompressedSpriteSheet sUnknown_084121DC = +{ + gPokeblock_Gfx, 0x20, 14818 +}; + +static const struct SpriteTemplate sThrownPokeblockSpriteTemplate = +{ + .tileTag = 14818, + .paletteTag = 14818, + .oam = &sThrownPokeblockOamData, + .anims = sThrownPokeblockAnimTable, + .images = NULL, + .affineAnims = sThrownPokeblockAffineAnimTable, + .callback = SpriteCB_ThrownPokeblock +}; + +// code + +static void CB2_PokeblockFeed(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +static void VBlankCB_PokeblockFeed(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 TransitionToPokeblockFeedScene(void) +{ + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80F9368(); + sub_8147B04(); + gMain.state++; + break; + case 1: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state++; + break; + case 2: + ResetSpriteData(); + gMain.state++; + break; + case 3: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 4: + SetUpWindowConfig(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 5: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 6: + if (MultistepInitMenuWindowContinue()) + { + ewram[0x1FFFF] = 0; + gMain.state++; + } + break; + case 7: + if (sub_8147B20(&gPlayerParty[gPokeblockMonID])) + { + gMain.state++; + } + break; + case 8: + ewram[0x1FFFD] = sub_81480B4(); + gMain.state++; + break; + case 9: + ewram[0x1FFFE] = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]); + gMain.state++; + break; + case 10: + MenuDrawTextWindow(0, 14, 29, 19); + gMain.state++; + break; + case 11: + if (sub_8055870() != 1) + { + gMain.state++; + } + break; + case 12: + { + u16 savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIME; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_PokeblockFeed); + gMain.state++; + } + case 13: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(CB2_PokeblockFeed); + return TRUE; + } + return FALSE; +} + +void CB2_PreparePokeblockFeedScene(void) +{ + while (1) + { + if (TransitionToPokeblockFeedScene() == 1) + { + LaunchPokeblockFeedTask(1); + break; + } + if (sub_80F9344() == 1) + break; + } +} + +static void sub_8147B04(void) +{ + REG_BG1CNT = 0x1D02l; + REG_DISPCNT = 0x1340; +} + +static bool8 sub_8147B20(struct Pokemon* mon) +{ + u16 species; + u32 PiD, TiD; + switch (ewram[0x1FFFF]) + { + case 0: + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD); + ewram[0x1FFFF]++; + break; + case 1: + { + const struct CompressedSpritePalette* palette; + + species = GetMonData(mon, MON_DATA_SPECIES2); + PiD = GetMonData(mon, MON_DATA_PERSONALITY); + TiD = GetMonData(mon, MON_DATA_OT_ID); + palette = sub_80409C8(species, TiD, PiD); + LoadCompressedObjectPalette(palette); + GetMonSpriteTemplate_803C56C(palette->tag, 1); + ewram[0x1FFFF]++; + } + break; + case 2: + LoadCompressedObjectPic(&gUnknown_083F7F74); + ewram[0x1FFFF]++; + break; + case 3: + LoadCompressedObjectPalette(&gUnknown_083F7F7C); + ewram[0x1FFFF]++; + break; + case 4: + LoadCompressedObjectPic(&sUnknown_084121DC); + ewram[0x1FFFF]++; + break; + case 5: + SetPokeblockFeedSpritePal(gScriptItemId); + LoadCompressedObjectPalette(&sPokeblockFeedSpritePal); + ewram[0x1FFFF]++; + break; + case 6: + LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM)); + ewram[0x1FFFF]++; + break; + case 7: + LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800)); + ewram[0x1FFFF]++; + break; + case 8: + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + ewram[0x1FFFF] = 0; + return TRUE; + } + return FALSE; +} + +static void SetPokeblockFeedSpritePal(u8 pkbID) +{ + u8 color = GetPokeblockData(&gSaveBlock1.pokeblocks[pkbID], PBLOCK_COLOR); + sPokeblockFeedSpritePal.data = sPokeblocksPals[color - 1]; + sPokeblockFeedSpritePal.tag = 0x39E2; +} + +static void sub_8147CC8(u8 taskID) +{ + if (!gPaletteFade.active) + { + switch (gTasks[taskID].data[0]) + { + case 0: + gUnknown_03005F3C = 0; + gUnknown_03005F94 = 0; + sub_81481DC(); + break; + case 255: + sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]); + break; + case 269: + ewram[0x1FFFC] = CreatePokeblockSprite(); + break; + case 281: + sub_8148044(ewram[0x1FFFE]); + break; + case 297: + gTasks[taskID].func = Task_PrintAtePokeblockText; + return; + } + if (gUnknown_03005F94 < gUnknown_03005F34) + sub_814825C(); + else if (gUnknown_03005F94 == gUnknown_03005F34) + gTasks[taskID].data[0] = 254; + + gUnknown_03005F94++; + gTasks[taskID].data[0]++; + } +} + +static void LaunchPokeblockFeedTask(u8 a0) +{ + u8 taskID = CreateTask(sub_8147CC8, 0); + gTasks[taskID].data[0] = 0; + gTasks[taskID].data[1] = a0; +} + +static void Task_WaitForAtePokeblockText(u8 taskID) +{ + if (MenuUpdateWindowText() == 1) + gTasks[taskID].func = Task_PaletteFadeToReturn; +} + +static void Task_PrintAtePokeblockText(u8 taskID) +{ + struct Pokemon* mon = &gPlayerParty[gPokeblockMonID]; + struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId]; + + gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock); + GetMonNickname(mon, gStringVar1); + PokeblockCopyName(pokeblock, gStringVar2); + + if (gPokeblockGain == 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_NormallyAte); + else if (gPokeblockGain > 0) + StringExpandPlaceholders(gStringVar4, gContestStatsText_HappilyAte); + else + StringExpandPlaceholders(gStringVar4, gContestStatsText_DisdainfullyAte); + + MenuPrintMessage(gStringVar4, 1, 15); + gTasks[taskID].func = Task_WaitForAtePokeblockText; +} + +static void Task_ReturnAfterPaletteFade(u8 taskID) +{ + if (!gPaletteFade.active) + { + m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256); + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskID); + } +} + +static void Task_PaletteFadeToReturn(u8 taskID) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskID].func = Task_ReturnAfterPaletteFade; +} + +static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon) +{ + u16 species = GetMonData(mon, MON_DATA_SPECIES2); + u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2); + + gPokeblockFeedMonSpecies = species; + gPokeblockFeedMonSpriteID = spriteID; + gPokeblockFeedMonNature = GetNature(mon); + gSprites[spriteID].data2 = species; + gSprites[spriteID].callback = SpriteCallbackDummy; + gPokeblockMonNotFlipped = 1; + if (!sub_8040A3C(species)) + { + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC; + gSprites[spriteID].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[spriteID], gSprites[spriteID].oam.shape, gSprites[spriteID].oam.size, gSprites[spriteID].oam.affineMode); + gPokeblockMonNotFlipped = 0; + } + return spriteID; +} + +static void sub_8148044(u8 spriteID) +{ + gSprites[spriteID].pos1.x = 48; + gSprites[spriteID].pos1.y = 80; + gSprites[spriteID].data0 = -8; + gSprites[spriteID].data1 = 1; + gSprites[spriteID].callback = sub_8148078; +} + +static void sub_8148078(struct Sprite* sprite) +{ + sprite->pos1.x += 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 0) + PlayCry1(sprite->data2, 0); + if (sprite->data0 == 9) + sprite->callback = SpriteCallbackDummy; +} + +static u8 sub_81480B4(void) +{ + u8 spriteID = sub_810BA50(188, 100, 2); + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A0; + gSprites[spriteID].callback = SpriteCallbackDummy; + InitSpriteAffineAnim(&gSprites[spriteID]); + return spriteID; +} + +static void sub_8148108(u8 spriteID, bool8 a1) +{ + FreeOamMatrix(gSprites[spriteID].oam.matrixNum); + gSprites[spriteID].oam.affineMode = 3; + if (!a1) + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A4; + else + gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A8; + InitSpriteAffineAnim(&gSprites[spriteID]); +} + +static u8 CreatePokeblockSprite(void) +{ + u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1); + gSprites[spriteID].data0 = -12; + gSprites[spriteID].data1 = 1; + return spriteID; +} + +static void SpriteCB_ThrownPokeblock(struct Sprite* sprite) +{ + sprite->pos1.x -= 4; + sprite->pos1.y += sprite->data0; + sprite->data0 += sprite->data1; + if (sprite->data0 == 10) + DestroySprite(sprite); +} + +static void sub_81481DC(void) +{ + u8 animID, i; + + gUnknown_03005F34 = 1; + animID = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + for (i = 0; i < 8; i++, animID++) + { + gUnknown_03005F34 += sMonPokeblockAnims[animID][4]; + if (sMonPokeblockAnims[animID][9] == 1) + break; + } +} + +static void sub_814825C(void) +{ + switch (gUnknown_03005F3C) + { + case 0: + gUnknown_03005F40 = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0]; + gPokeblockFeedPokeSprite = &gSprites[gPokeblockFeedMonSpriteID]; + gPokeblockFeedPokeSpriteCopy = *gPokeblockFeedPokeSprite; + gUnknown_03005F3C = 10; + break; + case 1 ... 9: + break; + case 10: + sub_8148540(); + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + gPokeblockFeedPokeSprite->oam.affineMode = 3; + gPokeblockFeedPokeSprite->oam.matrixNum = 0; + gPokeblockFeedPokeSprite->affineAnims = sSpriteAffineAnimTable_8412050; + InitSpriteAffineAnim(gPokeblockFeedPokeSprite); + } + gUnknown_03005F3C = 50; + case 50: + if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0) + { + if (gPokeblockMonNotFlipped == 0) + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] + 10); + else + StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1]); + } + gUnknown_03005F3C = 60; + break; + case 60: + if (sub_81485CC() == 1) + { + if (gUnknown_03005FA0[9] == 0) + { + gUnknown_03005F40++; + sub_8148540(); + gUnknown_03005F3C = 60; + } + else + { + FreeOamMatrix(gPokeblockFeedPokeSprite->oam.matrixNum); + gUnknown_03005F3C = 70; + } + } + break; + case 70: + FreePokeSpriteMatrix(); + gUnknown_03005F40 = 0; + gUnknown_03005F3C = 0; + break; + case 71 ... 90: + break; + } +} + +static bool8 sub_8148540(void) +{ + u8 i; + for (i = 0; i < 10; i++) + gUnknown_03005FA0[i] = sMonPokeblockAnims[gUnknown_03005F40][i]; + if (gUnknown_03005FA0[4] == 0) + return TRUE; + else + { + gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]); + gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]); + gUnknown_03005FA0[12] = gUnknown_03005FA0[4]; + gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x; + gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y; + sub_8148710(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + sub_814862C(); + gUnknown_03005FA0[4] = gUnknown_03005FA0[12]; + return FALSE; + } +} + +#define ewram1D000 ((u16 *)(ewram + 0x1D000)) +#define ewram1D400 ((u16 *)(ewram + 0x1D400)) + +static bool8 sub_81485CC(void) +{ + u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + gPokeblockFeedPokeSprite->pos2.x = ewram1D000[var]; + gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var]; + + if (--gUnknown_03005FA0[4] == 0) + return TRUE; + else + return FALSE; +} + +static bool8 FreePokeSpriteMatrix(void) +{ + FreeSpriteOamMatrix(gPokeblockFeedPokeSprite); + return FALSE; +} + +static void sub_814862C(void) +{ + u16 i; + u16 r8 = gUnknown_03005FA0[8]; + u16 r7 = gUnknown_03005FA0[12] - r8; + s16 var3 = gUnknown_03005FA0[13] + gUnknown_03005FA0[6]; + s16 r9 = gUnknown_03005FA0[14] + gUnknown_03005FA0[7]; + + for (i = 0; i < r7 - 1; i++) + { + s16* r3 = &ewram1D000[r8 + i]; + s16 r1 = *r3 - (var3); + + s16* r5 = &ewram1D400[r8 + i]; + s16 r4 = *r5 - r9; + + *r3 -= r1 * (i + 1) / r7; + *r5 -= r4 * (i + 1) / r7; + } + + ewram1D000[(r8 + r7) - 1] = var3; + ewram1D400[(r8 + r7) - 1] = r9; +} + +void sub_8148710(void) +{ + bool8 var_24 = FALSE; + s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10]; + s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11]; + while (1) + { + u16 r5; + u16 r4; + u16 var; + + var = abs(gUnknown_03005FA0[5]); + r5 = var + gUnknown_03005FA0[3]; + gUnknown_03005FA0[3] = r5; + + if (gUnknown_03005FA0[2] < 0) + var_24 = TRUE; + + r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; + + if (gUnknown_03005FA0[4] == 0) + break; + + if (!var_24) + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7; + } + else + { + ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8; + ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7; + } + + gUnknown_03005FA0[0] += gUnknown_03005FA0[1]; + gUnknown_03005FA0[0] &= 0xFF; + gUnknown_03005FA0[4]--; + } +} diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c new file mode 100644 index 000000000..f54c6271d --- /dev/null +++ b/src/scene/berry_blender.c @@ -0,0 +1,3884 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" +#include "text_window.h" +#include "menu.h" +#include "strings2.h" +#include "sound.h" +#include "songs.h" +#include "berry.h" +#include "string_util.h" +#include "link.h" +#include "task.h" +#include "rom4.h" +#include "item.h" +#include "items.h" +#include "rng.h" +#include "save.h" +#include "menu_cursor.h" +#include "trig.h" +#include "pokeblock.h" + +//needed to match Blender_ControlHitPitch +struct MusicPlayerInfo +{ + struct SongHeader *songHeader; + u32 status; + u8 trackCount; + u8 priority; + u8 cmd; + u8 unk_B; + u32 clock; + u8 gap[8]; + u8 *memAccArea; + u16 tempoD; + u16 tempoU; + u16 tempoI; + u16 tempoC; + u16 fadeOI; + u16 fadeOC; + u16 fadeOV; + struct MusicPlayerTrack *tracks; + struct ToneData *tone; + u32 ident; + u32 func; + u32 intp; +}; + +#define BLENDER_SCORE_BEST 0 +#define BLENDER_SCORE_GOOD 1 +#define BLENDER_SCORE_MISS 2 + +#define BLENDER_MAX_PLAYERS 4 +#define BLENDER_SCORES_NO 3 + +#define FLAVOUR_SPICY 0 +#define FLAVOUR_DRY 1 +#define FLAVOUR_SWEET 2 +#define FLAVOUR_BITTER 3 +#define FLAVOUR_SOUR 4 + +struct BlenderBerry +{ + u16 itemID; + u8 name[7]; + u8 flavours[5]; + u8 smoothness; +}; + +struct BerryBlenderData +{ + u8 field_0; + u8 field_1; + struct Window field_4; + u8 field_35; + u8 field_36; + u8 field_37; + u8 field_38; + u8 field_39; + u8 field_3A; + u8 field_3B; + u8 field_3C; + u8 field_3D; + u8 field_3E; + u8 field_3F; + u8 field_40; + u8 field_41; + u8 field_42; + u8 field_43; + u8 field_44; + u8 field_45; + u8 field_46; + u8 field_47; + u8 field_48; + u8 field_49; + u8 field_4A; + u8 field_4B; + u8 field_4C; + u8 field_4D; + u16 field_4E; + u8 scoreIconIDs[3]; + u16 arrowPos; + s16 field_56; + s16 field_58; + u16 max_RPM; + u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; + u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS]; + u8 field_64; + u8 field_65; + u8 field_66; + u8 field_67; + u8 field_68; + u8 field_69; + u8 field_6A; + u8 field_6B; + u8 field_6C; + u8 field_6D; + u8 field_6E; + u8 field_6F; + u16 field_70[BLENDER_MAX_PLAYERS]; + u16 field_78; + u16 field_7A; + u16 field_7C; + u8 field_7E; + u8 field_7F; + u16 chosenItemID[BLENDER_MAX_PLAYERS]; + u8 playersNo; + u8 field_89; + u8 field_8A; + u8 field_8B; + u8 field_8C; + u8 field_8D; + u8 field_8E; + u8 field_8F; + u8 field_90; + u8 field_91; + u8 field_92; + u8 field_93; + u16 field_94; + u8 field_96; + u8 field_97; + u8 field_98; + u8 field_99; + u16 field_9A[BLENDER_MAX_PLAYERS]; + u16 field_A2[BLENDER_MAX_PLAYERS]; + u8 field_AA; + u8 stringVar[129]; + u32 gameFrameTime; + s32 framesToWait; + u32 field_134; + u8 field_138; + u8 field_139; + u8 field_13A; + u8 field_13B; + u8 field_13C; + u8 field_13D; + u16 field_13E; + u16 field_140; + u16 field_142; + s16 field_144; + s16 field_146; + u8 field_148[3]; + u8 field_14B; + u16 scores[BLENDER_MAX_PLAYERS][3]; + u8 playerPlaces[BLENDER_MAX_PLAYERS]; + struct BgAffineDstData field_168; + u16 field_178; + struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; + u32 field_1BC; + u16 field_1C0; + u16 field_1C2; + u32 field_1C4; +}; + +struct BlenderDebug +{ + s8 cursorPos; + s8 berries[4]; + struct Pokeblock pokeblock; + u8 field_10; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 feel; + s8 field_17; + s8 field_18; + s8 field_19; + s16 BPM; +}; + +// other files functions +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); +void sub_80A6978(void); +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); +void sub_814A880(u8 a1, u8 a2); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +s8 sub_810CA00(void); +bool8 sub_810CA34(struct Pokeblock *pokeblock); +#ifdef GERMAN +extern void de_sub_8073110(); +#endif + +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u8 ewram[]; +extern u16 gScriptItemId; +extern u8 gUnknown_020297ED; +extern u8 byte_3002A68; + +extern const u8 gUnknown_08E6C100[]; +extern const u8 gUnknown_08E6C920[]; +extern const u8 gUnknown_08E6D354[]; +extern const struct WindowConfig gWindowConfig_81E6F68; +extern const u8 *const gPokeblockNames[]; +extern const struct Berry gBerries[]; + +extern const u8 gBerryBlenderArrowTiles[]; +extern const u8 gBerryBlenderMarubatsuTiles[]; +extern const u8 gBerryBlenderParticlesTiles[]; +extern const u8 gBerryBlenderCountdownNumbersTiles[]; +extern const u8 gBerryBlenderStartTiles[]; +extern const u16 gBerryBlenderMiscPalette[]; +extern const u16 gBerryBlenderArrowPalette[]; + +// ewram +static EWRAM_DATA u8 gUnknown_020297DC = 0; +static EWRAM_DATA u32 gUnknown_020297E0 = 0; +static EWRAM_DATA u32 gUnknown_020297E4 = 0; +static EWRAM_DATA u8 gUnknown_020297E8 = 0; + +// iwram common +u16 gUnknown_03004830; +u8 gInGameOpponentsNo; +u16 gUnknown_03004840[10]; +struct BerryBlenderData* gBerryBlenderData; + +// iwram bss +IWRAM_DATA s16 gUnknown_03000510[8]; +IWRAM_DATA s16 gUnknown_03000520[6]; +IWRAM_DATA s16 gUnknown_0300052C; +IWRAM_DATA s16 gUnknown_0300052E; +IWRAM_DATA s32 gUnknown_03000530[6]; +IWRAM_DATA s32 gUnknown_03000548[5]; +IWRAM_DATA u32 gUnknown_0300055C; +IWRAM_DATA struct BlenderDebug sBlenderDebug; + +// this file's functions +void Blender_SetBankBerryData(u8 bank, u16 itemID); + +static void sub_80514A4(void); +static void sub_80514F0(void); +static void sub_804E56C(void); +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents); +static void sub_8051474(void); +static void sub_804E9F8(void); +static void sub_804F378(void); +static void sub_8051414(struct BgAffineDstData *dest); +static void sub_804F238(void); +static void sub_80501FC(void); +static bool8 sub_8051B8C(void); +static void sub_804F2A8(void); +static void sub_804F81C(void); +static void sub_805156C(void); +void sub_8051684(struct Sprite* sprite); +static void sub_8051AC8(s16* a0, u16 a1); +static void sub_805194C(u16 a0, u16 a1); +static void sub_8051A3C(u16 a0); +static void sub_8051B18(void); +static void sub_805123C(void); +static void sub_8050954(void); +static bool8 Blender_PrintBlendingRanking(void); +static bool8 Blender_PrintBlendingResults(void); +static void sub_80510E8(void); +static void sub_8050E30(void); +static void sub_805197C(u16 a0, u16 a1); +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +static void sub_8052BD0(u8 taskID); +static void sub_8052AF8(void); +static void sub_804F8C8(u8 taskID); +static void sub_804F9F4(u8 taskID); +static void sub_804FB1C(u8 taskID); +static void sub_8051C04(struct Sprite* sprite); +static void sub_8051650(struct Sprite* sprite); +static void sub_805181C(struct Sprite* sprite); +static void sub_80518CC(struct Sprite* sprite); + +// const data +static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); + +// unreferenced pals? +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal"); +static const u16 sUnknownArray_1[224] = {0}; + +// unreferenced Japanese strings +static const u8 sUnknownJpnString0[] = _("▶"); +static const u8 sUnknownJpnString1[] = _(" "); +static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end) +static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute" +static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end) +static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart" +static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end) + +static const u8 gUnknown_08216249[] = _("\p"); + +// unreferenced; These appear to be the first names of four people who worked on the game. +static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta) +static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori) +static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori) +static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda) + +static const u8 sUnknownText_2Pok[] = _("2Pok"); +static const u8 sUnknownText_3Pok[] = _("3Pok"); +static const u8 sUnknownText_4Pok[] = _("4Pok"); +static const u8* const gUnknown_08216284[] = +{ + sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok +}; + +// unreferenced player strings +static const u8 sUnknown1PString[4] = _("1P"); +static const u8 sUnknown2PString[4] = _("2P"); +static const u8 sUnknown3PString[4] = _("3P"); +static const u8 sUnknown4PString[4] = _("4P"); + +#ifdef ENGLISH +static const u8 sBlenderOpponentName1[] = _("MISTER"); +static const u8 sBlenderOpponentName2[] = _("LADDIE"); +static const u8 sBlenderOpponentName3[] = _("LASSIE"); +#else // GERMAN +static const u8 sBlenderOpponentName1[] = _("OPI"); +static const u8 sBlenderOpponentName2[] = _("KUMPEL"); +static const u8 sBlenderOpponentName3[] = _("TUSSI"); +#endif // ENGLISH +static const u8* const sBlenderOpponentsNames[] = +{ + sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3 +}; + +static const u8 sRedColorString[] = _("{COLOR RED}"); +static const u8 sNewLineString_0[] = _("\n"); +static const u8 sSpaceString_0[] = _(" "); + +static const s8 gUnknown_082162CC[][2] = +{ + {-1, -1}, {1, -1}, {-1, 1}, {1, 1} +}; + +static const u8 gUnknown_082162D4[][2] = +{ + {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12} +}; + +static const u8 sBlenderSyncArrowsPos[][2] = +{ + {72, 32}, {168, 32}, {72, 128}, {168, 128} +}; + +static const u8 gUnknown_082162EC[3][4] = +{ + {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} +}; + +static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000}; +static const u8 gUnknown_08216300[] = {1, 1, 0}; +static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0}; + +static const TaskFunc gUnknown_08216308[] = +{ + sub_804F8C8, sub_804F9F4, sub_804FB1C +}; + +static const struct OamData sOamData_8216314 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821631C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216324[] = +{ + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821632C[] = +{ + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216334[] = +{ + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821633C[] = +{ + ANIMCMD_FRAME(48, 2, 1, 1), + ANIMCMD_FRAME(32, 5, 1, 1), + ANIMCMD_FRAME(48, 3, 1, 1), + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216350[] = +{ + ANIMCMD_FRAME(48, 2, .vFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216364[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216378[] = +{ + ANIMCMD_FRAME(48, 2, 0, 0), + ANIMCMD_FRAME(32, 5, 0, 0), + ANIMCMD_FRAME(48, 3, 0, 0), + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821638C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216394[] = +{ + ANIMCMD_FRAME(0, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821639C[] = +{ + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82163A4[] = +{ + ANIMCMD_FRAME(0, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +{ + sSpriteAnim_821631C, + sSpriteAnim_8216324, + sSpriteAnim_821632C, + sSpriteAnim_8216334, + sSpriteAnim_821633C, + sSpriteAnim_8216350, + sSpriteAnim_8216364, + sSpriteAnim_8216378, + sSpriteAnim_821638C, + sSpriteAnim_8216394, + sSpriteAnim_821639C, + sSpriteAnim_82163A4 +}; + +static const struct SpriteSheet gUnknown_082163DC = +{ + gBerryBlenderArrowTiles, 0x800, 46545 +}; + +static const struct SpritePalette gUnknown_082163E4 = +{ + gBerryBlenderMiscPalette, 46546 +}; + +static const struct SpritePalette gUnknown_082163EC = +{ + gBerryBlenderArrowPalette, 12312 +}; + +static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +{ + .tileTag = 46545, + .paletteTag = 12312, + .oam = &sOamData_8216314, + .anims = sSpriteAnimTable_82163AC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051C04 +}; + +static const struct OamData sOamData_821640C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216414[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821641C[] = +{ + ANIMCMD_FRAME(4, 20, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216424[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821643C[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216444[] = +{ + sSpriteAnim_8216414, + sSpriteAnim_821641C, + sSpriteAnim_8216424, + sSpriteAnim_821643C, +}; + +static const struct SpriteSheet gUnknown_08216454 = +{ + gBerryBlenderMarubatsuTiles, 0x200, 48888 +}; + +static const struct SpriteTemplate sSpriteTemplate_821645C = +{ + .tileTag = 48888, + .paletteTag = 46546, + .oam = &sOamData_821640C, + .anims = sSpriteAnimTable_8216444, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051650 +}; + +static const struct OamData sOamData_8216474 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821647C[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216494[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164AC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D0[] = +{ + ANIMCMD_FRAME(5, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D8[] = +{ + ANIMCMD_FRAME(6, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +{ + sSpriteAnim_821647C, + sSpriteAnim_8216494, + sSpriteAnim_82164AC, + sSpriteAnim_82164D0, + sSpriteAnim_82164D8, +}; + +static const struct SpriteSheet gUnknown_082164F4 = +{ + gBerryBlenderParticlesTiles, 0xE0, 23456 +}; + +static const struct SpriteTemplate sSpriteTemplate_82164FC = +{ + .tileTag = 23456, + .paletteTag = 46546, + .oam = &sOamData_8216474, + .anims = sSpriteAnimTable_82164E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_8216514 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821651C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216524[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821652C[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216534[] = +{ + sSpriteAnim_821651C, + sSpriteAnim_8216524, + sSpriteAnim_821652C, +}; + +static const struct SpriteSheet gUnknown_08216540 = +{ + gBerryBlenderCountdownNumbersTiles, 0x600, 12345 +}; + +static const struct SpriteTemplate sSpriteTemplate_8216548 = +{ + .tileTag = 12345, + .paletteTag = 46546, + .oam = &sOamData_8216514, + .anims = sSpriteAnimTable_8216534, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_805181C +}; + +static const struct OamData sOamData_8216560 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216568[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216570[] = +{ + sSpriteAnim_8216568, +}; + +static const struct SpriteSheet gUnknown_08216574 = +{ + gBerryBlenderStartTiles, 0x400, 12346 +}; + +static const struct SpriteTemplate sSpriteTemplate_821657C = +{ + .tileTag = 12346, + .paletteTag = 46546, + .oam = &sOamData_8216560, + .anims = sSpriteAnimTable_8216570, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80518CC +}; + +static const s16 gUnknown_08216594[][5] = +{ + {-10, 20, 10, 2, 1}, + {250, 20, 10, -2, 1}, + {-10, 140, 10, 2, -1}, + {250, 140, 10, -2, -1}, +}; + +static const u8 gUnknown_082165BC[][3] = +{ + {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, +}; + +static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4}; +static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; +static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5}; +static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2}; +static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2}; + +static const u8 sText_Space[] = _(" "); +static const u8 sText_BPM[] = _("BPM"); +static const u8 sText_Dash[] = _("-"); +static const u8 sNewLineString_1[] = _("\n"); +static const u8 sNewLineString_2[] = _("\n"); + +static void Blender_ControlHitPitch(void) +{ + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2); +} + +static void VBlankCB0_BerryBlender(void) +{ + sub_80514A4(); + sub_80514F0(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void VBlankCB1_BerryBlender(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static bool8 sub_804E2EC(void) +{ + switch (gBerryBlenderData->field_1) + { + case 0: + sub_800D238(gUnknown_08E6C100, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 1: + { + const void* offsetRead = sBlenderCenterMap; + void* offsetWrite = (void*)(VRAM + 0x4000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x400); + LoadPalette(sBlenderCenterPal, 0, 0x100); + gBerryBlenderData->field_1++; + } + break; + case 2: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM); + u32 size = 0x2000; + while (TRUE) + { + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, offsetWrite, size); + break; + } + } + gBerryBlenderData->field_1++; + } + break; + case 3: + sub_800D238(gUnknown_08E6C920, &ewram[0x10000]); + gBerryBlenderData->field_1++; + break; + case 4: + sub_800D238(gUnknown_08E6D354, &ewram[0x13000]); + gBerryBlenderData->field_1++; + break; + case 5: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM + 0xE000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 6: + { + void* offsetRead = &ewram[0x11000]; + void* offsetWrite = (void*)(VRAM + 0xF000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + gBerryBlenderData->field_1++; + } + break; + case 7: + { + u16 i; + u16* palStore = (u16*)(&ewram[0x13000]); + void* offsetRead; + void* offsetWrite; + + for (i = 0; i < 640; i++) + { + *(palStore + i) |= 0x100; + } + offsetRead = &ewram[0x13000]; + offsetWrite = (void*)(VRAM + 0x6000); + DmaCopy16(3, offsetRead, offsetWrite, 0x500); + LoadPalette(sBlenderOuterPal, 0x80, 0x20); + gBerryBlenderData->field_1++; + } + break; + case 8: + LoadSpriteSheet(&gUnknown_082163DC); + LoadSpriteSheet(&gUnknown_082164F4); + LoadSpriteSheet(&gUnknown_08216454); + gBerryBlenderData->field_1++; + break; + case 9: + LoadSpriteSheet(&gUnknown_08216540); + LoadSpriteSheet(&gUnknown_08216574); + LoadSpritePalette(&gUnknown_082163EC); + LoadSpritePalette(&gUnknown_082163E4); + gBerryBlenderData->field_1 = 0; + return TRUE; + } + return FALSE; +} + +static void sub_804E4FC(void) +{ + REG_DISPCNT = 0x1341; + REG_BG2CNT = 0x4880; + REG_BG1CNT = 0xC0D; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; +} + +void sub_804E538(void) +{ + u8* field6F; //this temp value is needed to match + + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + + field6F = &gBerryBlenderData->field_6F; + gBerryBlenderData->field_0 = 0; + *field6F = 0; + + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + SetMainCallback2(sub_804E56C); +} + +static void sub_804E56C(void) +{ + s32 i; + switch (gBerryBlenderData->field_0) + { + case 0: + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gBerryBlenderData->field_0++; + gBerryBlenderData->field_140 = 0; + gBerryBlenderData->field_13E = 0; + gBerryBlenderData->field_142 = 0x50; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_1 = 0; + sub_8051474(); + break; + case 1: + if (sub_804E2EC()) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + } + SetVBlankCallback(VBlankCB0_BerryBlender); + gBerryBlenderData->field_0++; + } + break; + case 2: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sub_8051474(); + gBerryBlenderData->field_0++; + break; + case 3: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 4: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); + gBerryBlenderData->field_0++; + break; + case 5: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->field_0++; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80A6978(); + gBerryBlenderData->field_0 = 0; + } + break; + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E738(struct Sprite* sprite) +{ + sprite->data1 += sprite->data6; + sprite->data2 -= sprite->data4; + sprite->data2 += sprite->data7; + sprite->data0 += sprite->data7; + sprite->data4--; + + if (sprite->data0 < sprite->data2) + { + sprite->data3 = sprite->data4 = sprite->data3 - 1; + if (++sprite->data5 > 3) + DestroySprite(sprite); + else + PlaySE(SE_TB_KARA); + } + sprite->pos1.x = sprite->data1; + sprite->pos1.y = sprite->data2; +} + +void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + sprite->data0 = a3; + sprite->data1 = a2; + sprite->data2 = a3; + sprite->data3 = a4; + sprite->data4 = 10; + sprite->data5 = 0; + sprite->data6 = a5; + sprite->data7 = a6; + sprite->callback = sub_804E738; +} + +static void sub_804E7C0(u16 a0, u8 a1) +{ + u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1); + sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]); +} + +static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) +{ + const struct Berry *berryInfo = GetBerryInfo(itemID + 124); + berry->itemID = itemID; + StringCopy(berry->name, berryInfo->name); + berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; + berry->flavours[FLAVOUR_DRY] = berryInfo->dry; + berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; + berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; + berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; + berry->smoothness = berryInfo->smoothness; +} + +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents) +{ + int i; + if (NoOfOpponents) + { + for (i = 0; i < 4; i++) + gLinkPlayers[i].language = GAME_LANGUAGE; + } + switch (NoOfOpponents) + { + case 0: + gInGameOpponentsNo = 0; + break; + case 1: + gInGameOpponentsNo = 1; + gBerryBlenderData->playersNo = 2; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + break; + case 2: + gInGameOpponentsNo = 2; + gBerryBlenderData->playersNo = 3; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + break; + case 3: + gInGameOpponentsNo = 3; + gBerryBlenderData->playersNo = 4; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]); + break; + } +} + +void sub_804E990(void) +{ + s32 i; + + REG_DISPCNT = 0; + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + gBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_134 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->chosenItemID[i] = 0; + } + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + if (gSpecialVar_0x8004 == 0) + SetMainCallback2(sub_804E9F8); + else + SetMainCallback2(sub_804F378); +} + +static void sub_804E9F8(void) +{ + int i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB0_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gLinkType = 0x4422; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_7E = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + break; + case 4: + sub_804E4FC(); + if (!gPaletteFade.active) + { + gBerryBlenderData->field_0++; + } + break; + case 5: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_LinkStandby3, 1, 14); + gBerryBlenderData->field_0 = 8; + gBerryBlenderData->framesToWait = 0; + break; + case 8: + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C = 0; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + sub_80084A4(); + gBerryBlenderData->framesToWait = 0; + break; + case 9: + if (sub_8007ECC()) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() == 0) + sub_8007E9C(4); + gBerryBlenderData->field_0++; + } + break; + case 10: + if (++gBerryBlenderData->framesToWait > 20) + { + MenuZeroFillScreen(); + if (GetBlockReceivedStatus() == sub_8008198()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID; + } + ResetBlockReceivedFlags(); + gBerryBlenderData->field_0++; + } + } + break; + case 11: + gBerryBlenderData->playersNo = GetLinkPlayerCount(); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + if (sub_8007ECC()) + { + gBerryBlenderData->field_0++; + sub_8051414(&gBerryBlenderData->field_168); + } + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + sub_804F238(); + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + sub_80084A4(); + gBerryBlenderData->field_0++; + break; + case 20: + if (sub_8007ECC()) + { + sub_8007E24(); + gBerryBlenderData->field_0++; + } + break; + case 21: + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + SetMainCallback2(sub_80501FC); + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + break; + case 100: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); + gBerryBlenderData->field_0++; + break; + case 101: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_0++; + break; + case 102: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F0F4(void) +{ + REG_DISPCNT = 0; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + + SetVBlankCallback(VBlankCB0_BerryBlender); + + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + + gLinkType = 0x4422; + + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_0++; +} + +static u8 sub_804F16C(u16 arrowPos, u8 a1) +{ + u32 var1 = (arrowPos / 256) + 24; + u8 arrID = gBerryBlenderData->field_A2[a1]; + u32 var2 = gUnknown_08216303[arrID]; + + if (var1 >= var2 && var1 < var2 + 48) + { + if (var1 >= var2 + 20 && var1 < var2 + 28) + return 2; + else + return 1; + } + else + return 0; +} + +static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) +{ + u16 r4 = 0; + u16 i; + if (itemID == ITEM_ENIGMA_BERRY) + { + for (i = 0; i < 5; i++) + { + if (berry->flavours[r4] > berry->flavours[i]) + r4 = i; + } + r4 += 5; + } + else + { + r4 = itemID - 133; + if (r4 >= 5) + r4 = (r4 % 5) + 5; + } + for (i = 0; i < a1 - 1; i++) + { + Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133); + } +} + +static void sub_804F238(void) +{ + s32 i, j; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_A2[i] = 0xFF; + gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + } + for (j = 0; j < BLENDER_MAX_PLAYERS; j++) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] == j) + gBerryBlenderData->field_A2[j] = i; + } + } +} + +static void sub_804F2A8(void) +{ + int i; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->field_9A[i] != 0xFF) + { + u8* stringPtr = gStringVar1; + + gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i]; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i); + if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) + stringPtr = StringCopy(stringPtr, sRedColorString); + StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); + MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + } + } +} + +static void sub_804F378(void) +{ + s32 i, j; + switch (gBerryBlenderData->field_0) + { + case 0: + sub_804F0F4(); + Blender_SetBankBerryData(0, gScriptItemId); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + gBerryBlenderData->scores[i][j] = 0; + } + } + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + gBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + gBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + break; + case 4: + if (++gBerryBlenderData->framesToWait == 2) + sub_804E4FC(); + if (!gPaletteFade.active) + gBerryBlenderData->field_0 = 8; + break; + case 8: + gBerryBlenderData->field_0 = 11; + gBerryBlenderData->field_13C = 0; + break; + case 11: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + if (gBerryBlenderData->field_13C == var) + { + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); + break; + } + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; + break; + case 12: + if (++gBerryBlenderData->framesToWait > 60) + { + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) + { + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + gBerryBlenderData->field_0++; + } + else + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; + } + break; + case 13: + gBerryBlenderData->field_0++; + sub_804F238(); + PlaySE(SE_RU_HYUU); + sub_8051414(&gBerryBlenderData->field_168); + break; + case 14: + REG_DISPCNT |= 0x400; + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) + { + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; + REG_BG2CNT = 0x4882; + gBerryBlenderData->framesToWait = 0; + PlaySE(SE_TRACK_DOOR);; + sub_804F2A8(); + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + gBerryBlenderData->field_0++; + } + sub_8051414(&gBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); + gBerryBlenderData->field_0++; + break; + case 18: + gBerryBlenderData->field_0++; + break; + case 19: + gBerryBlenderData->field_0++; + break; + case 20: + gBerryBlenderData->field_0++; + break; + case 21: + sub_804F81C(); + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + gBerryBlenderData->field_14B = 0; + gBerryBlenderData->field_7E = 0; + SetMainCallback2(sub_80501FC); + + for (i = 0; i < gSpecialVar_0x8004; i++) + { + gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); + } + + if (GetCurrentMapMusic() != 403) + { + gBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(BGM_CYCLING); + PlaySE(SE_MOTER); + Blender_ControlHitPitch(); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804F81C(void) +{ + s32 i; + for (i = 0; i < 4; i++) + { + gSendCmd[0] = 0; + gSendCmd[2] = 0; + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } +} + +static void sub_804F844(u8 taskID) +{ + if(++gTasks[taskID].data[0] > gTasks[taskID].data[1]) + { + gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345; + DestroyTask(taskID); + } +} + +static void sub_804F890(u8 a0, u8 a1) +{ + u8 taskID = CreateTask(sub_804F844, 80); + gTasks[taskID].data[1] = a1; + gTasks[taskID].data[2] = a0; +} + +static void sub_804F8C8(u8 taskID) +{ + if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 75) + gRecvCmds[2][1] = 0x4523; + else + gRecvCmds[2][1] = 0x5432; + gRecvCmds[2][1] = 0x5432; // ??? + } + else if (gBerryBlenderData->field_56 < 1500) + { + if (rand > 80) + gRecvCmds[2][1] = 0x4523; + else + { + u8 value = rand - 21; + if (value < 60) + gRecvCmds[2][1] = 0x5432; + else if (rand < 10) + sub_804F890(1, 5); + } + } + else if (rand <= 90) + { + u8 value = rand - 71; + if (value < 20) + gRecvCmds[2][1] = 0x5432; + else if (rand < 30) + sub_804F890(1, 5); + } + else + gRecvCmds[2][1] = 0x4523; + } + else + gRecvCmds[2][1] = 0x4523; + + gTasks[taskID].data[0] = 1; + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804F9F4(u8 taskID) +{ + u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 66) + gRecvCmds[2][2] = 0x4523; + else + gRecvCmds[2][2] = 0x5432; + } + else + { + u8 value; + if (rand > 65) + gRecvCmds[2][2] = 0x4523; + value = rand - 41; + if (value < 25) + gRecvCmds[2][2] = 0x5432; + if (rand < 10) + sub_804F890(2, 5); + } + + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][2] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FB1C(u8 taskID) +{ + u32 var1, var2; + + var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = gBerryBlenderData->field_A2[3] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (gBerryBlenderData->field_14B == 0) + { + u8 rand = (Random() / 655); + if (gBerryBlenderData->field_56 < 500) + { + if (rand > 88) + gRecvCmds[2][3] = 0x4523; + else + gRecvCmds[2][3] = 0x5432; + } + else + { + if (rand > 60) + gRecvCmds[2][3] = 0x4523; + else + { + s8 value = rand - 56; // makes me wonder what the original code was + u8 value2 = value; + if (value2 < 5) + gRecvCmds[2][3] = 0x5432; + } + if (rand < 5) + sub_804F890(3, 5); + } + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][3] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +static void sub_804FC48(u16 a0, u8 a1) +{ + u8 spriteID; + + spriteID = CreateSprite(&sSpriteTemplate_821645C, + sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]), + 1); + if (a0 == 0x4523) + { + StartSpriteAnim(&gSprites[spriteID], 2); + gSprites[spriteID].callback = sub_8051684; + PlaySE(SE_RU_GASHIN); + } + else if (a0 == 0x5432) + { + StartSpriteAnim(&gSprites[spriteID], 0); + PlaySE(SE_SEIKAI); + } + else if (a0 == 0x2345) + { + StartSpriteAnim(&gSprites[spriteID], 1); + PlaySE(SE_HAZURE); + } + sub_805156C(); +} + +static void sub_804FD30(u16 a0) +{ + Blender_ControlHitPitch(); + switch (a0) + { + case 0x4523: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + else + { + gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10); + sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10); + } + break; + case 0x5432: + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + break; + case 0x2345: + gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 128) + gBerryBlenderData->field_56 = 128; + break; + } +} + +static void sub_804FE70(void) +{ + s32 i; + + if (gSpecialVar_0x8004 != 0) + { + if (gSendCmd[2] != 0) + { + gRecvCmds[2][0] = gSendCmd[2]; + gRecvCmds[0][0] = 0x4444; + gSendCmd[2] = 0; + } + for (i = 1; i < 4; i++) + { + if (gRecvCmds[2][i] != 0) + gRecvCmds[0][i] = 0x4444; + } + } + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + if (gRecvCmds[0][i] == 0x4444) + { + u32 var = gBerryBlenderData->field_A2[i]; + if (gRecvCmds[2][i] == 0x4523) + { + sub_804FD30(0x4523); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); + if (gBerryBlenderData->field_13E >= 1000) + gBerryBlenderData->field_13E = 1000; + sub_804FC48(0x4523, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + } + else if (gRecvCmds[2][i] == 0x5432) + { + sub_804FD30(0x5432); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); + sub_804FC48(0x5432, var); + gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + } + else if (gRecvCmds[2][i] == 0x2345) + { + sub_804FC48(0x2345, var); + sub_804FD30(0x2345); + if (gBerryBlenderData->field_4.win_field_F > 1000) + gBerryBlenderData->field_13E = 1000; + if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + } + if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + { + if (gBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); + else + m4aMPlayTempoControl(&gMPlay_BGM, 256); + } + } + } + if (gSpecialVar_0x8004 != 0) + { + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } + } +} + +static void sub_80500A8(void) +{ + bool8 A_pressed = 0; + u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()]; + if (gBerryBlenderData->field_6F == 0) + { + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)); + else if (gMain.newKeys & A_BUTTON) + A_pressed = 1; + if (A_pressed) + { + u8 var3; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4); + var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId()); + if (var3 == 2) + gSendCmd[2] = 0x4523; + else if (var3 == 1) + gSendCmd[2] = 0x5432; + else + gSendCmd[2] = 0x2345; + } + } + if (++gBerryBlenderData->field_7E > 5) + { + if (gBerryBlenderData->field_56 > 128) + gBerryBlenderData->field_56--; + gBerryBlenderData->field_7E = 0; + } + if (gUnknown_020297ED && gMain.newKeys & L_BUTTON) + gBerryBlenderData->field_14B ^= 1; +} + +static void sub_80501FC(void) +{ + sub_8051474(); + if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + gBerryBlenderData->gameFrameTime++; + sub_80500A8(); + SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E); + sub_804FE70(); + sub_805194C(gBerryBlenderData->field_13E, 1000); + sub_8051A3C(gBerryBlenderData->field_56); + sub_8051B18(); + sub_805123C(); + if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000) + { + gBerryBlenderData->field_13E = 1000; + gBerryBlenderData->field_6F = 1; + SetMainCallback2(sub_8050954); + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) +{ + if (berries[index1].itemID != berries[index2].itemID + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && (berries[index1].flavours[0] == berries[index2].flavours[0] + && berries[index1].flavours[1] == berries[index2].flavours[1] + && berries[index1].flavours[2] == berries[index2].flavours[2] + && berries[index1].flavours[3] == berries[index2].flavours[3] + && berries[index1].flavours[4] == berries[index2].flavours[4] + && berries[index1].smoothness == berries[index2].smoothness))) + return TRUE; + else + return FALSE; +} + +u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) +{ + s16 vars[5]; + s32 i; + s32 r6; + u8 r2; + + for (i = 0; i <= 5; i++) // bug, writing one index too far + vars[i] = a1[i]; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] == 0) + r6++; + } + if (r6 == 5 || a3 > 3) + return 12; + for (i = 0; i < playersNo; i++) + { + for (r6 = 0; r6 < playersNo; r6++) + { + if (berries[i].itemID == berries[r6].itemID && i != r6 + && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) + return 12; + } + } + r2 = 0; + for (r2 = 0, i = 0; i < 5; i++) + { + if (vars[i] > 0) + r2++; + } + if (r2 > 3) + return 13; + if (r2 == 3) + return 11; + for (i = 0; i < 5; i++) + { + if (vars[i] > 50) + return 14; + } + if (r2 == 1 && vars[0] > 0) + return 1; + if (r2 == 1 && vars[1] > 0) + return 2; + if (r2 == 1 && vars[2] > 0) + return 3; + if (r2 == 1 && vars[3] > 0) + return 4; + if (r2 == 1 && vars[4] > 0) + return 5; + if (r2 == 2) + { + s32 var = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] > 0) + gUnknown_03000520[var++] = i; + } + if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]]) + { + if (gUnknown_03000520[0] == 0) + return (gUnknown_03000520[1] << 16) | 6; + if (gUnknown_03000520[0] == 1) + return (gUnknown_03000520[1] << 16) | 7; + if (gUnknown_03000520[0] == 2) + return (gUnknown_03000520[1] << 16) | 8; + if (gUnknown_03000520[0] == 3) + return (gUnknown_03000520[1] << 16) | 9; + if (gUnknown_03000520[0] == 4) + return (gUnknown_03000520[1] << 16) | 10; + } + else + { + if (gUnknown_03000520[1] == 0) + return (gUnknown_03000520[0] << 16) | 6; + if (gUnknown_03000520[1] == 1) + return (gUnknown_03000520[0] << 16) | 7; + if (gUnknown_03000520[1] == 2) + return (gUnknown_03000520[0] << 16) | 8; + if (gUnknown_03000520[1] == 3) + return (gUnknown_03000520[0] << 16) | 9; + if (gUnknown_03000520[1] == 4) + return (gUnknown_03000520[0] << 16) | 10; + } + } + return 0; +} + +static void sub_80504F0(s16 value) +{ + gUnknown_0300052C = value; +} + +s16 unref_sub_80504FC(void) +{ + return gUnknown_0300052C; +} + +static void sub_8050508(s16 value) +{ + gUnknown_0300052E = value; +} + +s16 unref_sub_8050514(void) +{ + return gUnknown_0300052E; +} + +#ifdef NONMATCHING + +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM) +{ + s32 i; + s32 j; + s32 savedEntry; + s32 var3; + s32 var4; + u32 var6; + s32 var11; + u16 rand; + + for (i = 0; i < 6; i++) + gUnknown_03000510[i] = 0; + for (i = 0; i < playersNo; i++) + { + for (j = 0; j < 5; j++) + gUnknown_03000510[j] += berries[i].flavours[j]; + } + + savedEntry = gUnknown_03000510[0]; + gUnknown_03000510[0] -= gUnknown_03000510[1]; + gUnknown_03000510[1] -= gUnknown_03000510[2]; + gUnknown_03000510[2] -= gUnknown_03000510[3]; + gUnknown_03000510[3] -= gUnknown_03000510[4]; + gUnknown_03000510[4] -= savedEntry; + + var6 = 0; + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] < 0) + { + gUnknown_03000510[i] = 0; + var6++; + } + } + for (i = 0; i < 5; i++) + { + if (gUnknown_03000510[i] > 0) + { + if (gUnknown_03000510[i] < var6) + gUnknown_03000510[i] = 0; + else + gUnknown_03000510[i] -= var6; + } + } + for (i = 0; i < 5; i++) + { + gUnknown_03000530[i] = gUnknown_03000510[i]; + } + + var11 = maxRPM / 333 + 100; + gUnknown_0300055C = ((var11)); + + for (i = 0; i < 5; i++) + { + var3 = gUnknown_03000510[i]; + var3 = ((var11) * var3) / 10; + var4 = var3 % 10; + var3 /= 10; + if (var4 > 4) + var3++; + gUnknown_03000510[i] = var3; + } + for (i = 0; i < 5; i++) + { + gUnknown_03000548[i] = gUnknown_03000510[i]; + } + pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6); + gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo; + if (gUnknown_03000510[5] < 0) + gUnknown_03000510[5] = 0; + if (pokeblock->color == 12) + { + rand = Random() % 10; + for (i = 0; i < 6; i++) + { + if ((gUnknown_082165DF[rand] >> i) & 1) + gUnknown_03000510[i] = 2; + else + gUnknown_03000510[i] = 0; + } + } + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] > 255) + gUnknown_03000510[i] = 255; + } + pokeblock->spicy = gUnknown_03000510[0]; + pokeblock->dry = gUnknown_03000510[1]; + pokeblock->sweet = gUnknown_03000510[2]; + pokeblock->bitter = gUnknown_03000510[3]; + pokeblock->sour = gUnknown_03000510[4]; + pokeblock->feel = gUnknown_03000510[5]; + for (i = 0; i < 6; i++) + { + flavours[i] = gUnknown_03000510[i]; + } +} + +#else +__attribute__((naked)) +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x10\n\ + str r0, [sp]\n\ + mov r8, r1\n\ + str r3, [sp, 0x4]\n\ + ldr r0, [sp, 0x30]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + mov r9, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r7, _080505DC @ =gUnknown_03000510\n\ + adds r2, r7, 0\n\ + movs r1, 0\n\ + adds r0, r7, 0\n\ + adds r0, 0xA\n\ +_0805054A:\n\ + strh r1, [r0]\n\ + subs r0, 0x2\n\ + cmp r0, r2\n\ + bge _0805054A\n\ + movs r6, 0\n\ + cmp r6, r9\n\ + bge _08050580\n\ + ldr r0, _080505DC @ =gUnknown_03000510\n\ + mov r12, r0\n\ + ldr r5, [sp]\n\ + adds r5, 0x9\n\ +_08050560:\n\ + movs r3, 0\n\ + adds r4, r5, 0\n\ + mov r2, r12\n\ +_08050566:\n\ + adds r1, r4, r3\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + adds r2, 0x2\n\ + adds r3, 0x1\n\ + cmp r3, 0x5\n\ + ble _08050566\n\ + adds r5, 0x10\n\ + adds r6, 0x1\n\ + cmp r6, r9\n\ + blt _08050560\n\ +_08050580:\n\ + movs r1, 0\n\ + ldrsh r3, [r7, r1]\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + subs r0, r1\n\ + strh r0, [r7]\n\ + ldrh r0, [r7, 0x4]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x2]\n\ + ldrh r1, [r7, 0x6]\n\ + subs r0, r1\n\ + strh r0, [r7, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x6]\n\ + subs r0, r3\n\ + strh r0, [r7, 0x8]\n\ + movs r3, 0\n\ + movs r2, 0\n\ + adds r1, r7, 0\n\ + movs r6, 0x4\n\ +_080505AA:\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + bge _080505B6\n\ + strh r2, [r1]\n\ + adds r3, 0x1\n\ +_080505B6:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505AA\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + movs r4, 0\n\ + ldr r1, _080505DC @ =gUnknown_03000510\n\ + movs r6, 0x4\n\ +_080505CA:\n\ + ldrh r2, [r1]\n\ + movs r5, 0\n\ + ldrsh r0, [r1, r5]\n\ + cmp r0, 0\n\ + ble _080505E4\n\ + cmp r0, r3\n\ + bge _080505E0\n\ + strh r4, [r1]\n\ + b _080505E4\n\ + .align 2, 0\n\ +_080505DC: .4byte gUnknown_03000510\n\ +_080505E0:\n\ + subs r0, r2, r3\n\ + strh r0, [r1]\n\ +_080505E4:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505CA\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506C8 @ =gUnknown_03000530\n\ + movs r6, 0x4\n\ +_080505F2:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505F2\n\ + ldr r1, _080506CC @ =0x0000014d\n\ + ldr r0, [sp, 0x8]\n\ + bl __udivsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r3, r0, 0\n\ + adds r3, 0x64\n\ + ldr r4, _080506D0 @ =gUnknown_0300055C\n\ + str r3, [r4]\n\ + movs r6, 0x4\n\ +_08050616:\n\ + movs r0, 0\n\ + ldrsh r5, [r7, r0]\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + movs r1, 0xA\n\ + str r3, [sp, 0xC]\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + movs r1, 0xA\n\ + bl __modsi3\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + ldr r3, [sp, 0xC]\n\ + cmp r4, 0x4\n\ + ble _08050642\n\ + adds r5, 0x1\n\ +_08050642:\n\ + strh r5, [r7]\n\ + adds r7, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050616\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506D4 @ =gUnknown_03000548\n\ + movs r6, 0x4\n\ +_08050652:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050652\n\ + ldr r4, _080506C4 @ =gUnknown_03000510\n\ + ldr r0, [sp]\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + mov r3, r10\n\ + bl Blender_GetPokeblockColor\n\ + mov r5, r8\n\ + strb r0, [r5]\n\ + movs r1, 0xA\n\ + ldrsh r0, [r4, r1]\n\ + mov r1, r9\n\ + bl __divsi3\n\ + mov r3, r9\n\ + subs r0, r3\n\ + strh r0, [r4, 0xA]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bge _0805068C\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ +_0805068C:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0xC\n\ + bne _080506E6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + movs r6, 0\n\ + ldr r0, _080506D8 @ =gUnknown_082165DF\n\ + adds r0, r3, r0\n\ + ldrb r0, [r0]\n\ + adds r1, r4, 0\n\ + movs r4, 0x1\n\ + movs r3, 0x2\n\ +_080506B4:\n\ + adds r2, r0, 0\n\ + asrs r2, r6\n\ + ands r2, r4\n\ + cmp r2, 0\n\ + beq _080506DC\n\ + strh r3, [r1]\n\ + b _080506DE\n\ + .align 2, 0\n\ +_080506C4: .4byte gUnknown_03000510\n\ +_080506C8: .4byte gUnknown_03000530\n\ +_080506CC: .4byte 0x0000014d\n\ +_080506D0: .4byte gUnknown_0300055C\n\ +_080506D4: .4byte gUnknown_03000548\n\ +_080506D8: .4byte gUnknown_082165DF\n\ +_080506DC:\n\ + strh r2, [r1]\n\ +_080506DE:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x4\n\ + ble _080506B4\n\ +_080506E6:\n\ + ldr r7, _08050740 @ =gUnknown_03000510\n\ + movs r2, 0xFF\n\ + adds r1, r7, 0\n\ + movs r6, 0x5\n\ +_080506EE:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0xFF\n\ + ble _080506F8\n\ + strh r2, [r1]\n\ +_080506F8:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080506EE\n\ + ldrh r0, [r7]\n\ + mov r4, r8\n\ + strb r0, [r4, 0x1]\n\ + ldrh r0, [r7, 0x2]\n\ + strb r0, [r4, 0x2]\n\ + ldrh r0, [r7, 0x4]\n\ + strb r0, [r4, 0x3]\n\ + ldrh r0, [r7, 0x6]\n\ + strb r0, [r4, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + strb r0, [r4, 0x5]\n\ + ldrh r0, [r7, 0xA]\n\ + strb r0, [r4, 0x6]\n\ + movs r6, 0\n\ + adds r2, r7, 0\n\ +_0805071E:\n\ + ldr r5, [sp, 0x4]\n\ + adds r1, r5, r6\n\ + ldrh r0, [r2]\n\ + strb r0, [r1]\n\ + adds r2, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0805071E\n\ + add sp, 0x10\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08050740: .4byte gUnknown_03000510\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) +{ + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); +} + +static void sub_8050760(void) +{ + u32 frames = (u16)(gBerryBlenderData->gameFrameTime); + u16 max_RPM = gBerryBlenderData->max_RPM; + s16 var = 0; + + if (frames < 900) + var = 5; + else if ((u16)(frames - 900) < 600) + var = 4; + else if ((u16)(frames - 1500) < 600) + var = 3; + else if ((u16)(frames - 2100) < 900) + var = 2; + else if ((u16)(frames - 3300) < 300) + var = 1; + sub_8050508(var); + + var = 0; + if (max_RPM <= 64) + { + if (max_RPM >= 50 && max_RPM < 100) + var = -1; + else if (max_RPM >= 100 && max_RPM < 150) + var = -2; + else if (max_RPM >= 150 && max_RPM < 200) + var = -3; + else if (max_RPM >= 200 && max_RPM < 250) + var = -4; + else if (max_RPM >= 250 && max_RPM < 300) + var = -5; + else if (max_RPM >= 350 && max_RPM < 400) + var = -6; + else if (max_RPM >= 400 && max_RPM < 450) + var = -7; + else if (max_RPM >= 500 && max_RPM < 550) + var = -8; + else if (max_RPM >= 550 && max_RPM < 600) + var = -9; + else if (max_RPM >= 600) + var = -10; + } + sub_80504F0(var); +} + +static void sub_80508D4(u8 value) +{ + gBerryBlenderData->field_AA = value; + sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); +} + +static void sub_80508FC(void) +{ + gBerryBlenderData->field_AA = 0; + MenuDrawTextWindow(23, 8, 28, 13); + sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuPrint(gOtherText_YesNoTerminating, 24, 9); + sub_80508D4(gBerryBlenderData->field_AA); +} + +static void sub_8050954(void) +{ + u8 i; + u8 multiplayerID; // unused + + sub_8051474(); + multiplayerID = GetMultiplayerId(); + switch (gBerryBlenderData->field_6F) + { + case 1: + ClearLinkCallback(); + m4aMPlayTempoControl(&gMPlay_BGM, 256); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + DestroyTask(gBerryBlenderData->field_148[i]); + } + gBerryBlenderData->field_6F++; + break; + case 2: + gBerryBlenderData->field_56 -= 32; + if (gBerryBlenderData->field_56 <= 0) + { + gBerryBlenderData->field_56 = 0; + if (gReceivedRemoteLinkPlayers != 0) + gBerryBlenderData->field_6F++; + else + gBerryBlenderData->field_6F = 5; + gBerryBlenderData->field_0 = 0; + m4aMPlayStop(&gMPlay_SE2); + } + Blender_ControlHitPitch(); + break; + case 3: + if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) + gBerryBlenderData->field_6F++; + else if (sub_8007ECC()) + { + gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime; + gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM; + SendBlock(0, &gBerryBlenderData->field_1BC, 40); + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (GetBlockReceivedStatus()) + { + u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0])); + gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; + gBerryBlenderData->gameFrameTime = *ptr; + gBerryBlenderData->field_6F++; + ResetBlockReceivedFlags(); + } + break; + case 5: + if (Blender_PrintBlendingRanking()) + gBerryBlenderData->field_6F++; + break; + case 6: + if (Blender_PrintBlendingResults()) + { + if (gInGameOpponentsNo == 0) + IncrementGameStat(34); + else + IncrementGameStat(33); + gBerryBlenderData->field_6F++; + } + break; + case 7: + gBerryBlenderData->field_6F++; + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); + break; + case 8: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F++; + break; + case 9: + gBerryBlenderData->field_AA = 0; + sub_80508FC(); + gBerryBlenderData->field_6F++; + break; + case 10: + if (gMain.newKeys & DPAD_UP) + { + if (gBerryBlenderData->field_AA != 0) + PlaySE(SE_SELECT); + sub_80508D4(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gBerryBlenderData->field_AA != 1) + PlaySE(SE_SELECT); + sub_80508D4(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_6F++; + sub_80508D4(1); + } + break; + case 11: + gSendCmd[0] = 0x2FFF; + if (gBerryBlenderData->field_AA == 0) + { + if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty + { + gBerryBlenderData->field_7C = 2; + gSendCmd[1] = 0x9999; + } + else if (sub_810CA00() == -1) + { + gBerryBlenderData->field_7C = 3; + gSendCmd[1] = 0xAAAA; + } + else + { + gBerryBlenderData->field_7C = 0; + gSendCmd[1] = 0x7779; + } + gBerryBlenderData->field_6F++; + } + else + { + gBerryBlenderData->field_7C = 1; + gSendCmd[1] = 0x8888; + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gInGameOpponentsNo) + { + SetMainCallback2(sub_80510E8); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + else + { + MenuPrintMessage(gOtherText_LinkStandby3, 1, 15); + gBerryBlenderData->field_6F++; + } + break; + case 13: + if (MenuUpdateWindowText()) + { + SetMainCallback2(sub_8050E30); + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; + } + break; + } + sub_8051B18(); + sub_8051A3C(gBerryBlenderData->field_56); + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +bool8 sub_8050CE8(void) +{ + switch (gBerryBlenderData->field_1C4) + { + case 0: + sub_80084A4(); + gBerryBlenderData->field_1C4 = 1; + gBerryBlenderData->framesToWait = 0; + break; + case 1: + if (sub_8007ECC()) + { + gBerryBlenderData->field_1C4++; + gSoftResetDisabled = TRUE; + } + break; + case 2: + sub_8125E2C(); + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 3: + if (++gBerryBlenderData->framesToWait == 10) + { + sub_80084A4(); + gBerryBlenderData->field_1C4++; + } + break; + case 4: + if (sub_8007ECC()) + { + if (sub_8125E6C()) + gBerryBlenderData->field_1C4 = 5; + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4 = 3; + } + } + break; + case 5: + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; + break; + case 6: + if (++gBerryBlenderData->framesToWait > 5) + { + gSoftResetDisabled = FALSE; + return TRUE; + } + break; + } + return FALSE; +} + +static void sub_8050E30(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_70[0] == 0x2222) + gBerryBlenderData->field_6F = 5; + else if (gBerryBlenderData->field_70[0] == 0x1111) + { + if (gBerryBlenderData->field_78 == 0x9999) + gBerryBlenderData->field_6F = 2; + else if (gBerryBlenderData->field_78 == 0xAAAA) + gBerryBlenderData->field_6F = 1; + else + gBerryBlenderData->field_6F = 5; + } + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); +#else + StringCopy(gStringVar4, gOtherText_OtherCaseIsFull); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); +#else + StringCopy(gStringVar4, gOtherText_NoBerriesForBlend); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + break; + case 4: + if (++gBerryBlenderData->framesToWait > 60) + gBerryBlenderData->field_6F = 5; + break; + case 5: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrint(gMultiText_Saving, 2, 15); + sub_80084A4(); + gBerryBlenderData->field_6F++; + break; + case 6: + if (sub_8007ECC()) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + gBerryBlenderData->field_1C4 = 0; + } + break; + case 7: + if (sub_8050CE8()) + { + PlaySE(SE_SAVE); + gBerryBlenderData->field_6F++; + } + break; + case 8: + gBerryBlenderData->field_6F++; + sub_80084A4(); + break; + case 9: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gBerryBlenderData->field_6F++; + } + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_70[0] == 0x2222) + SetMainCallback2(sub_804E538); + else + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + } + } + break; + case 11: + if (++gBerryBlenderData->framesToWait > 30) + { + sub_800832C(); + gBerryBlenderData->field_6F++; + } + break; + case 12: + if (gReceivedRemoteLinkPlayers == 0) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_80510E8(void) +{ + switch (gBerryBlenderData->field_6F) + { + case 0: + if (gBerryBlenderData->field_7C < 2) + gBerryBlenderData->field_6F = 9; + if (gBerryBlenderData->field_7C == 2) + gBerryBlenderData->field_6F = 2; + if (gBerryBlenderData->field_7C == 3) + gBerryBlenderData->field_6F =1; + break; + case 1: + gBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); + break; + case 2: + gBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + gBerryBlenderData->field_6F = 9; + break; + case 9: + BeginFastPaletteFade(3); + gBerryBlenderData->field_6F++; + break; + case 10: + if (!gPaletteFade.active) + { + if (gBerryBlenderData->field_7C == 0) + SetMainCallback2(sub_804E538); + else + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_805123C(void) +{ + if (gReceivedRemoteLinkPlayers) + { + if (gRecvCmds[0][0] == 0x2FFF) + { + if (gRecvCmds[1][0] == 0x1111) + { + switch (gRecvCmds[2][0]) + { + case 0x8888: + gBerryBlenderData->field_78 = 0x8888; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0x9999: + gBerryBlenderData->field_78 = 0x9999; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0xAAAA: + gBerryBlenderData->field_78 = 0xAAAA; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + } + gBerryBlenderData->field_70[0] = 0x1111; + } + else if (gRecvCmds[1][0] == 0x2222) + gBerryBlenderData->field_70[0] = 0x2222; + } + if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222) + { + u8 i; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gRecvCmds[0][i] == 0x2FFF) + { + switch (gRecvCmds[1][i]) + { + case 0x8888: + gBerryBlenderData->field_70[i] = 0x8888; + break; + case 0x7779: + gBerryBlenderData->field_70[i] = 0x7779; + break; + case 0x9999: + gBerryBlenderData->field_70[i] = 0x9999; + break; + case 0xAAAA: + gBerryBlenderData->field_70[i] = 0xAAAA; + break; + } + } + } + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] == 0) + break; + } + if (i == GetLinkPlayerCount()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gBerryBlenderData->field_70[i] != 0x7779) + break; + } + gSendCmd[0] = 0x2FFF; + if (i == GetLinkPlayerCount()) + gSendCmd[1] = 0x2222; + else + { + gSendCmd[1] = 0x1111; + gSendCmd[2] = gBerryBlenderData->field_70[i]; + gSendCmd[3] = i; + } + } + } + } +} + +static void sub_8051414(struct BgAffineDstData *dest) +{ + struct BgAffineSrcData affineSrc; + affineSrc.texX = 30720; + affineSrc.texY = 20480; + affineSrc.scrX = 120 - gBerryBlenderData->field_144; + affineSrc.scrY = 80 - gBerryBlenderData->field_146; + affineSrc.sx = gBerryBlenderData->field_142; + affineSrc.sy = gBerryBlenderData->field_142; + affineSrc.alpha = gBerryBlenderData->arrowPos; + BgAffineSet(&affineSrc, dest, 1); +} + +static void sub_8051474(void) +{ + gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos; + gBerryBlenderData->arrowPos += gBerryBlenderData->field_56; + sub_8051414(&gBerryBlenderData->field_168); +} + +static void sub_80514A4(void) +{ + REG_BG2PA = gBerryBlenderData->field_168.pa; + REG_BG2PB = gBerryBlenderData->field_168.pb; + REG_BG2PC = gBerryBlenderData->field_168.pc; + REG_BG2PD = gBerryBlenderData->field_168.pd; + REG_BG2X = gBerryBlenderData->field_168.dx; + REG_BG2Y = gBerryBlenderData->field_168.dy; +} + +static void sub_80514F0(void) +{ + REG_BG1HOFS = gBerryBlenderData->field_144; + REG_BG1VOFS = gBerryBlenderData->field_146; + REG_BG0HOFS = gBerryBlenderData->field_144; + REG_BG0VOFS = gBerryBlenderData->field_146; +} + +void sub_8051524(struct Sprite* sprite) +{ + sprite->data2 += sprite->data0; + sprite->data3 += sprite->data1; + sprite->pos2.x = sprite->data2 / 8; + sprite->pos2.y = sprite->data3 / 8; + if (sprite->animEnded) + DestroySprite(sprite); +} + +static void sub_805156C(void) +{ + s32 limit = (Random() % 2) + 1; + s32 i; + + for (i = 0; i < limit; i++) + { + u16 rand; + s32 x, y; + u8 spriteID; + + rand = gBerryBlenderData->arrowPos + (Random() % 20); + + x = gSineTable[(rand & 0xFF) + 64] / 4; + y = gSineTable[(rand & 0xFF)] / 4; + + spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1); + gSprites[spriteID].data0 = 16 - (Random() % 32); + gSprites[spriteID].data1 = 16 - (Random() % 32); + + gSprites[spriteID].callback = sub_8051524; + } +} + +static void sub_8051650(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 / 3); + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_8051684(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 * 2); + if (sprite->pos2.y < -12) + sprite->pos2.y = -12; + if (sprite->animEnded) + DestroySprite(sprite); +} + +void Blender_SetBankBerryData(u8 bank, u16 itemID) +{ + gBerryBlenderData->chosenItemID[bank] = itemID; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID); +} + +void unref_sub_80516F8(u8 taskID) +{ + struct Task* task = &gTasks[taskID]; + if (gReceivedRemoteLinkPlayers) + { + s32 i; + if (GetMultiplayerId() == 0) + { + if (++task->data[0] > 120) + task->data[0] = 0; + if (task->data[0] == 100) + { + ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); + MenuDrawTextWindow(4, 4, 10, 12); + for (i = 0; i < 3; i++) + { + if (gLinkPlayers[i + 1].trainerId != 0) + MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_PressAToStart, 1, 15); + } + } + if (gMain.newKeys & A_BUTTON) + { + sub_8007E4C(); + DestroyTask(taskID); + } + } + else + { + if (task->data[0] == 10) + MenuPrint(gOtherText_PleaseWait, 3, 10); + if (++task->data[0] > 120) + task->data[0] = 0; + if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) + DestroyTask(taskID); + } + } +} + +static void sub_805181C(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 88) + { + sprite->data1 = 88; + sprite->data0++; + PlaySE(SE_KON); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + { + sprite->data0++; + sprite->data2 = 0; + } + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + if (++sprite->data3 == 3) + { + DestroySprite(sprite); + CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2); + } + else + { + sprite->data0 = 0; + sprite->data1 = -16; + StartSpriteAnim(sprite, sprite->data3); + } + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_80518CC(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 92) + { + sprite->data1 = 92; + sprite->data0++; + PlaySE(SE_PIN); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + sprite->data0++; + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + gBerryBlenderData->field_0++; + DestroySprite(sprite); + } + break; + } + sprite->pos2.y = sprite->data1; +} + +static void sub_805194C(u16 a0, u16 a1) +{ + if (gBerryBlenderData->field_140 < a0) + { + gBerryBlenderData->field_140 += 2; + sub_805197C(gBerryBlenderData->field_140, a1); + } +} + +static void sub_805197C(u16 a0, u16 a1) +{ + s32 var1, var2, var3, var4; + u16* vram; + + vram = (u16*)(VRAM + 0x6000); + var1 = (a0 * 64) / a1; + var2 = var1 / 8; + for (var4 = 0; var4 < var2; var4++) + { + vram[11 + var4] = 0x81E9; + vram[43 + var4] = 0x81F9; + } + var3 = var1 % 8; + if (var3 != 0) + { + vram[11 + var4] = var3 - 32287; + vram[43 + var4] = var3 - 32271; + var4++; + } + for (; var4 < 8; var4++) + { + vram[11 + var4] = 33249; + vram[43 + var4] = 33249 + 16; + } +} + +static u32 sub_8051A1C(u16 a0) +{ + return 360000 * a0 / 0x10000; +} + +static void sub_8051A3C(u16 a0) +{ + u8 i; + u8 palAdders[5]; + + u32 var = sub_8051A1C(a0); + if (gBerryBlenderData->max_RPM < var) + gBerryBlenderData->max_RPM = var; + for (i = 0; i < 5; i++) + { + palAdders[i] = var % 10; + var /= 10; + } + *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172; + *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172; + *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172; + *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172; + *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172; +} + +static void sub_8051AC8(s16* a0, u16 a1) +{ + if (*a0 == 0) + *a0 = (Random() % a1) - (a1 / 2); +} + +static void sub_8051AF4(s16* a0) +{ + if (*a0 < 0 ) + (*a0)++; + if (*a0 > 0 ) + (*a0)--; +} + +static void sub_8051B18(void) +{ + sub_8051AF4(&gBerryBlenderData->field_144); + sub_8051AF4(&gBerryBlenderData->field_146); +} + +static void sub_8051B40(s16* a0, u16 a1) +{ + s32 var; + if (a1 < 10) + var = 16; + else + var = 8; + if (*a0 == 0) + *a0 = (Random() % var) - (var / 2); + else + { + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; + } +} + +static bool8 sub_8051B8C(void) +{ + if (gBerryBlenderData->framesToWait == 0) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + } + gBerryBlenderData->framesToWait++; + sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait); + sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait); + if (gBerryBlenderData->framesToWait == 20) + { + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + return TRUE; + } + else + return FALSE; +} + +static void sub_8051C04(struct Sprite* sprite) +{ + sprite->pos2.x = -(gBerryBlenderData->field_144); + sprite->pos2.y = -(gBerryBlenderData->field_146); +} + +static void Blender_TrySettingRecord(void) +{ + if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) + gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; +} + +static bool8 Blender_PrintBlendingResults(void) +{ + u16 i; + + struct Pokeblock pokeblock; + u8 flavours[6]; + u8 text[2][10]; + u16 berryIDs[4]; // unused + + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 17; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + for (i = 0; i < 3; i++) + DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]); + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + { + u8* textPtr; + u16 secondsPassed, minutes, seconds; + + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + textPtr = text[0]; + + StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name); + ConvertInternationalString(textPtr, gLinkPlayers[place].language); +#ifdef ENGLISH + StringAppend(textPtr, gOtherText_Berry); +#else + de_sub_8073174(textPtr, gOtherText_Berry); +#endif + textPtr = gBerryBlenderData->stringVar; + textPtr = ConvertIntToDecimalString(textPtr, i + 1); + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); + sub_8072C74(textPtr, text[0], 157, 0); + MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); + } + ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); + textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); + +#ifdef ENGLISH + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, text[0], 142, 1); +#else + *textPtr++ = CHAR_COMMA; + textPtr = sub_8072C74(textPtr, text[0], 136, 1); +#endif + StringCopy(textPtr, gOtherText_RPM); + MenuPrint(gBerryBlenderData->stringVar, 5, 13); + + secondsPassed = gBerryBlenderData->gameFrameTime / 60; + seconds = secondsPassed % 60; + minutes = secondsPassed / 60; + ConvertIntToDecimalStringN(text[0], minutes, 2, 2); + ConvertIntToDecimalStringN(text[1], seconds, 2, 2); + textPtr = gBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_RequiredTime); + +#ifdef ENGLISH + textPtr = sub_8072C74(textPtr, text[0], 102, 1); +#else + textPtr = sub_8072C74(textPtr, text[0], 99, 1); +#endif + textPtr = StringAppend(textPtr, gOtherText_Min); + + textPtr = sub_8072C74(textPtr, text[1], 136, 1); + StringCopy(textPtr, gOtherText_Sec); + + MenuPrint(gBerryBlenderData->stringVar, 5, 15); + + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 4: + if (gMain.newKeys & A_BUTTON) + gBerryBlenderData->field_0++; + break; + case 5: + MenuZeroFillScreen(); + MenuDrawTextWindow(0, 14, 29, 19); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (gBerryBlenderData->chosenItemID[i] != 0) + berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133; + } + sub_8050760(); + Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); + CreateTask(sub_8052BD0, 6); + MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); + RemoveBagItem(gScriptItemId, 1); + sub_810CA34(&pokeblock); + gBerryBlenderData->field_0++; + break; + case 6: + if (MenuUpdateWindowText()) + { + Blender_TrySettingRecord(); + return TRUE; + } + break; + } + return FALSE; +} + +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +{ + u8 text[12]; + u8 flavourLvl, feel; + + dst[0] = EOS; + StringCopy(dst, gPokeblockNames[pokeblock->color]); +#ifdef ENGLISH + StringAppend(dst, gOtherText_PokeBlockMade); +#else + de_sub_8073174(dst, gOtherText_PokeBlockMade); +#endif + StringAppend(dst, sNewLineString_0); + + flavourLvl = sub_810C9B0(pokeblock); + feel = sub_810C9E8(pokeblock); + + StringAppend(dst, gOtherText_BlockLevelIs); + ConvertIntToDecimalStringN(text, flavourLvl, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_BlockFeelIs); + ConvertIntToDecimalStringN(text, feel, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_Period); + StringAppend(dst, gUnknown_08216249); +} + +static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) +{ + s32 i, j; + for (i = 0; i < playersNum; i++) + { + for (j = 0; j < playersNum; j++) + { + if (scores[places[i]] > scores[places[j]]) + { + u8 temp = places[i]; + places[i] = places[j]; + places[j] = temp; + } + } + } +} + +static void Blender_SortScores(void) +{ + u8 i; + u8 places[4]; + u32 points[4]; + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + places[i] = i; + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + } + Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + gBerryBlenderData->playerPlaces[i] = places[i]; +} + +static bool8 Blender_PrintBlendingRanking(void) +{ + u16 i; + switch (gBerryBlenderData->field_0) + { + case 0: + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 255; + break; + case 1: + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 2: + if (++gBerryBlenderData->framesToWait > 20) + { + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + } + break; + case 3: + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_Ranking, 5, 3, 160); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); + + Blender_SortScores(); + + for (i = 0; i < gBerryBlenderData->playersNo; i++) + { + u8 place = gBerryBlenderData->playerPlaces[i]; + u8* txtPtr = gBerryBlenderData->stringVar; + + txtPtr[0] = EXT_CTRL_CODE_BEGIN; + txtPtr[1] = 0x13; + txtPtr[2] = 4; + txtPtr += 3; + + txtPtr = ConvertIntToDecimalString(txtPtr, i + 1); + + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; + + txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); + + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + + MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); + } + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + break; + case 4: + if (++gBerryBlenderData->framesToWait > 20) + gBerryBlenderData->field_0++; + break; + case 5: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gBerryBlenderData->field_0++; + } + break; + case 6: + gBerryBlenderData->field_0 = 0; + return TRUE; + } + return FALSE; +} + +// debug menu goes here + +void unref_sub_80524BC(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB1_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SeedRng(gMain.vblankCounter1); + REG_DISPCNT = 0x1540; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + sBlenderDebug.BPM = 8000; + sBlenderDebug.field_10++; + SetMainCallback2(sub_8052AF8); +} + +static void BlenderDebug_PrintBerryData(void) +{ + u8 text[128]; + u8 i; + + StringCopy(text, sText_BPM); + MenuPrint(text, 2, 0); + + ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); + MenuPrint(text, 6, 0); + + for (i = 0; i < 4; i++) + { + u8 var; + + if (sBlenderDebug.cursorPos == i) + { + text[0] = 0xEF; + CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]); + } + else + { + CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); + text[6] = CHAR_SPACE; + text[7] = EOS; + } + var = (i * 3) + 3; + MenuPrint(text, 2, var); + + ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, var); + } + if (sBlenderDebug.pokeblock.color != 0) + { + StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); + MenuPrint(text, 2, 15); + + ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, 17); + } +} + +static void sub_80527BC(void) +{ + u8 text[70]; + u8 buffer[10]; + u16 i; + + if (gUnknown_020297DC == 1) + { + u16 j; + for (j = 0; j < 10; j++) + gUnknown_03004840[j] = 0; + gUnknown_03004830 = Random(); + gUnknown_020297E0 = 0; + gUnknown_020297DC = 2; + for (i = 0; i < 200; i++) + ewram[i] = 0; + gUnknown_020297E8 = 0; + } + for (i = 0; i < 100; i++) + { + if (((Random() >> 15) & 1) == gUnknown_020297E8) + gUnknown_020297E0++; + else + { + u16* ewramPtr = ((u16*)(ewram)); + ewramPtr[gUnknown_020297E4] = gUnknown_020297E0; + gUnknown_020297E4++; + gUnknown_020297E0 = 0; + gUnknown_020297E8 ^= 1; + } + } + text[0] = EOS; + + ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sText_Space); + + ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8); + StringAppend(text, buffer); + StringAppend(text, sNewLineString_1); + + if (gUnknown_020297DC == 3) + { + ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16); + StringAppend(text, buffer); + gUnknown_020297DC = 0; + } + + MenuPrint(text, 2, 15); +} + +static void sub_8052918(void) +{ + if (gMain.newKeys & R_BUTTON) + { + sBlenderDebug.BPM += 1000; + if (sBlenderDebug.BPM > 30000) + sBlenderDebug.BPM = 1000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & L_BUTTON) + { + sBlenderDebug.BPM -= 1000; + if (sBlenderDebug.BPM < 0) + sBlenderDebug.BPM = 30000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_UP) + { + sBlenderDebug.cursorPos -= 1; + if (sBlenderDebug.cursorPos < 0) + sBlenderDebug.cursorPos = 3; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_DOWN) + { + sBlenderDebug.cursorPos += 1; + if (sBlenderDebug.cursorPos > 3) + sBlenderDebug.cursorPos = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & A_BUTTON) + { + u16 berryIDs[4]; + struct BlenderBerry berries[4]; + + u16 i, notEnigma = 0; + for (i = 0; i < 4; i++) + { + if (sBlenderDebug.berries[i] != 42) + { + notEnigma++; + berryIDs[i] = sBlenderDebug.berries[i]; + Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133); + } + else + break; + } + if (notEnigma > 1) + { + BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM); + sBlenderDebug.field_10++; + } + else + sBlenderDebug.pokeblock.color = 0xFF; + } + if (sBlenderDebug.field_10) + { + BlenderDebug_PrintBerryData(); + sBlenderDebug.field_10 = 0; + } + if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0) + { + gUnknown_020297DC++; + gUnknown_020297E0 = 0; + SeedRng(gMain.vblankCounter1); + } + if (gUnknown_020297DC != 0) + sub_80527BC(); +} + +static void sub_8052AF8(void) +{ + sub_8052918(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +// debug menu ends +// blender record window begins + +void ShowBerryBlenderRecordWindow(void) +{ + u8 text[30]; + s32 i; + + MenuDrawTextWindow(6, 3, 23, 16); + MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + MenuPrint(gMultiText_2P3P4P, 8, 9); + + for (i = 0; i < 3; i++) + { + u32 record = gSaveBlock1.berryBlenderRecords[i]; + u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + +#ifdef ENGLISH + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; +#else + *txtPtr++ = CHAR_COMMA; +#endif + + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); + StringAppend(txtPtr, gOtherText_RPM); + MenuPrint(text, 15, i * 2 + 9); + } +} + +static void sub_8052BD0(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskID].data[0]++; + } + if (IsFanfareTaskInactive()) + { + PlayBGM(gBerryBlenderData->field_178); + DestroyTask(taskID); + } +} diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c new file mode 100644 index 000000000..5317bc334 --- /dev/null +++ b/src/scene/cute_sketch.c @@ -0,0 +1,164 @@ +#include "global.h" +#include "cute_sketch.h" +#include "contest_painting.h" + +extern u16 (*gUnknown_03005DEC)[][32]; +extern u8 gUnknown_03005E00; +extern u8 gUnknown_03005DFC; +extern u8 gUnknown_03005DF8; +extern u8 gUnknown_03005DF0; +extern u8 gUnknown_03005E04; +extern u8 gUnknown_03005DF4; + +extern u8 gUnknown_03005DE8; + +// this file's functions +void sub_80FCAA4(void); +void sub_80FCB5C(void); +void sub_80FCD54(void); +void sub_80FCEA4(void); +void sub_80FCCBC(void); +void sub_80FD06C(void); +void sub_80FD114(void); +void sub_80FCF3C(void); +void sub_80FCAC4(void); +void sub_80FCC18(u8); +void sub_80FC92C(u8); +void sub_80FC9E4(u8); +void sub_80FD1C8(u16); +u16 sub_80FD39C(u16*); +u16 sub_80FD68C(u16*, u16*, u16*); + +void sub_80FC7A0(struct Unk03005E20* info) +{ + gUnknown_03005DEC = info->var_4; + gUnknown_03005E00 = info->var_1F; + gUnknown_03005DE8 = info->var_19; + gUnknown_03005DFC = info->var_1A; + gUnknown_03005DF8 = info->var_1B; + gUnknown_03005DF0 = info->var_1C; + gUnknown_03005E04 = info->var_1D; + gUnknown_03005DF4 = info->var_1E; + switch (info->var_0) + { + case 2: + sub_80FCAA4(); + break; + case 8: + sub_80FCB5C(); + break; + case 9: + sub_80FCD54(); + sub_80FCC18(gUnknown_03005E00); + break; + case 10: + sub_80FCD54(); + sub_80FCEA4(); + sub_80FCCBC(); + case 31: + sub_80FCEA4(); + break; + case 11: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + break; + case 13: + sub_80FCF3C(); + break; + case 30: + sub_80FCD54(); + break; + case 32: + sub_80FD06C(); + break; + case 33: + sub_80FD114(); + break; + case 6: + sub_80FCAC4(); + sub_80FC92C(3); + break; + case 36: + sub_80FCD54(); + sub_80FD06C(); + sub_80FD114(); + sub_80FCCBC(); + sub_80FCB5C(); + sub_80FCB5C(); + sub_80FC92C(2); + sub_80FC9E4(4); + break; + } +} + +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) + +void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__. +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + val += a0; + if (val > 31) + val = 31; + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FC9E4(u8 a0) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + u8 val = (31 & *pal); + if (val > 31 - a0) + val = 31 - (a0 >> 1); + + *pal = RGB2(val, val, val); + } + } + } +} + +void sub_80FCAA4(void) +{ + u32 i; + for (i = 0; i < 3200; i++) + sub_80FD1C8(i); +} + +void sub_80FCAC4(void) +{ + u8 i, j; + for (i = 0; i < gUnknown_03005DF0; i++) + { + u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04]; + u16* pal = &var2[gUnknown_03005DE8]; + for (j = 0; j < gUnknown_03005DF8; j++, pal++) + { + if (!(0x8000 & *pal)) + { + *pal = sub_80FD39C(pal); + } + } + } +} diff --git a/src/scene/evolution_graphics.c b/src/scene/evolution_graphics.c new file mode 100644 index 000000000..a47e63a59 --- /dev/null +++ b/src/scene/evolution_graphics.c @@ -0,0 +1,613 @@ +#include "global.h" +#include "sprite.h" +#include "trig.h" +#include "rng.h" +#include "decompress.h" +#include "task.h" +#include "sound.h" +#include "songs.h" +#include "palette.h" + +// this file's functions +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite); +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID); +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID); +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID); +static void EvoTask_BeginPreSparklesSet2(u8 taskID); +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID); +static void EvoTask_DestroyPreSet2Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet1(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID); +static void EvoTask_DestroyPostSet1Task(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID); +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID); +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID); + +static void sub_8149FC8(u8 taskID); +static void sub_8149FEC(u8 taskID); +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID); +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID); +static void sub_814A03C(u8 taskID); + +// const data +static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal"); +static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz"); + +static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] = +{ + {sEvoSparkleTiles, 0x20, 1001}, + {NULL, 0, 0} +}; +static const struct SpritePalette sEvoSparkleSpritePals[] = +{ + {sEvoSparklePalette, 1001}, + {NULL, 0} +}; + +static const struct OamData sOamData_EvoSparkle = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_EvoSparkle[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] = +{ + sSpriteAnim_EvoSparkle, +}; + +static const struct SpriteTemplate sEvoSparkleSpriteTemplate = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_EvoSparkle, + .anims = sSpriteAnimTable_EvoSparkle, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = EvoSparkle_DummySpriteCb +}; + +static const s16 sEvoSparkleMatricies[] = +{ + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, + 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, + -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 +}; + +// code + +static void EvoSparkle_DummySpriteCb(struct Sprite* sprite) +{ + +} + +static void SetEvoSparklesMatrices(void) +{ + u16 i; + for (i = 0; i < 12; i++) + { + SetOamMatrix(20 + i, sEvoSparkleMatricies[i], 0, 0, sEvoSparkleMatricies[i]); + } +} + +static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->pos1.y > 8) + { + u8 matrixNum; + + sprite->pos1.y = 88 - (sprite->data7 * sprite->data7) / 80; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data6 += 4; + if (sprite->data7 & 1) + sprite->data5--; + sprite->data7++; + if (sprite->pos2.y > 0) + sprite->subpriority = 1; + else + sprite->subpriority = 20; + matrixNum = sprite->data5 / 4 + 20; + if (matrixNum > 31) + matrixNum = 31; + sprite->oam.matrixNum = matrixNum; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet1(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 48; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1; + } +} + +static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite) +{ + if (sprite->pos1.y < 88) + { + sprite->pos1.y = 8 + (sprite->data7 * sprite->data7) / 5; + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4; + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 = 8 + Sin((u8)(sprite->data7 * 4), 40); + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePreEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data5 = 8; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 25; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2; + } +} + +static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite) +{ + if (sprite->data5 > 8) + { + sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5); + sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5); + sprite->data5 -= sprite->data3; + sprite->data6 += 4; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = arg1; + gSprites[spriteID].data5 = 120; + gSprites[spriteID].data6 = arg0; + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1; + } +} + +static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite) +{ + if (!(sprite->data7 & 3)) + sprite->pos1.y++; + if (sprite->data6 < 128) + { + u8 matrixNum; + + sprite->pos2.y = -Sin((u8)(sprite->data6), sprite->data5); + sprite->pos1.x = 120 + (sprite->data3 * sprite->data7) / 3; + sprite->data6++; + matrixNum = 31 - (sprite->data6 * 12 / 128); + if (sprite->data6 > 64) + sprite->subpriority = 1; + else + { + sprite->invisible = 0; + sprite->subpriority = 20; + if (sprite->data6 > 112 && sprite->data6 & 1) + sprite->invisible = 1; + } + if (matrixNum < 20) + matrixNum = 20; + sprite->oam.matrixNum = matrixNum; + sprite->data7++; + } + else + DestroySprite(sprite); +} + +static void CreatePostEvoSparkleSet2(u8 arg0) +{ + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) + { + gSprites[spriteID].data3 = 3 - (Random() % 7); + gSprites[spriteID].data5 = 48 + (Random() & 0x3F); + gSprites[spriteID].data7 = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 20; + gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2; + } +} + +void LoadEvoSparkleSpriteAndPal(void) +{ + LoadCompressedObjectPic(&sEvoSparkleSpriteSheets[0]); + LoadSpritePalettes(sEvoSparkleSpritePals); +} + +#define tFrameCounter data[15] + +u8 LaunchTask_PreEvoSparklesSet1(u16 arg0) +{ + u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0); + gTasks[taskID].data[1] = arg0; + return taskID; +} + +static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1; + PlaySE(SE_W025); +} + +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 64) + { + if (!(gTasks[taskID].tFrameCounter & 7)) + { + u8 i; + for (i = 0; i < 4; i++) + CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64); + } + gTasks[taskID].tFrameCounter++; + } + else + { + gTasks[taskID].tFrameCounter = 96; + gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp; + } +} + +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter != 0) + gTasks[taskID].tFrameCounter--; + else + DestroyTask(taskID); +} + +u8 LaunchTask_PreEvoSparklesSet2(void) +{ + return CreateTask(EvoTask_BeginPreSparklesSet2, 0); +} + +static void EvoTask_BeginPreSparklesSet2(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2; + PlaySE(SE_W062B); +} + +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 96) + { + if (gTasks[taskID].tFrameCounter < 6) + { + u8 i; + for (i = 0; i < 9; i++) + CreatePreEvoSparkleSet2(i * 16); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPreSet2Task; +} + +static void EvoTask_DestroyPreSet2Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet1(void) +{ + return CreateTask(EvoTask_BeginPostSparklesSet1, 0); +} + +static void EvoTask_BeginPostSparklesSet1(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1; + PlaySE(SE_REAPOKE); +} + +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 48) + { + if (gTasks[taskID].tFrameCounter == 0) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 4); + } + if (gTasks[taskID].tFrameCounter == 32) + { + u8 i; + for (i = 0; i < 16; i++) + CreatePostEvoSparkleSet1(i * 16, 8); + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet1Task; +} + +static void EvoTask_DestroyPostSet1Task(u8 taskID) +{ + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 arg0) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0); + gTasks[taskID].data[2] = arg0; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID) +{ + if (!gPaletteFade.active) + DestroyTask(taskID); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 arg0) +{ + u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0); + gTasks[taskID].data[2] = arg0; + return taskID; +} + +static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID) +{ + SetEvoSparklesMatrices(); + gTasks[taskID].tFrameCounter = 0; + CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); + BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF); + gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade; + PlaySE(SE_W080); +} + +static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID) +{ + if (gTasks[taskID].tFrameCounter < 128) + { + u8 i; + switch (gTasks[taskID].tFrameCounter) + { + default: + if (gTasks[taskID].tFrameCounter < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF); + break; + } + gTasks[taskID].tFrameCounter++; + } + else + gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask; +} + +#undef tFrameCounter + +static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite) +{ + +} + +#define tPreEvoSpriteID data[1] +#define tPostEvoSpriteID data[2] +#define tEvoStopped data[8] + +u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID) +{ + u16 i; + u16 stack[16]; + u8 taskID; + s32 toDiv; + + for (i = 0; i < 16; i++) + stack[i] = 0x7FFF; + + taskID = CreateTask(sub_8149FC8, 0); + gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID; + gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID; + gTasks[taskID].data[3] = 256; + gTasks[taskID].data[4] = 16; + + toDiv = 65536; + SetOamMatrix(30, 256, 0, 0, 256); + SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]); + + gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[preEvoSpriteID].oam.affineMode = 1; + gSprites[preEvoSpriteID].oam.matrixNum = 30; + gSprites[preEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16); + + gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB; + gSprites[postEvoSpriteID].oam.affineMode = 1; + gSprites[postEvoSpriteID].oam.matrixNum = 31; + gSprites[postEvoSpriteID].invisible = 0; + CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16); + + gTasks[taskID].tEvoStopped = FALSE; + return taskID; +} + +static void sub_8149FC8(u8 taskID) +{ + gTasks[taskID].data[5] = 0; + gTasks[taskID].data[6] = 8; + gTasks[taskID].func = sub_8149FEC; +} + +static void sub_8149FEC(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + PreEvoVisible_PostEvoInvisible_KillTask(taskID); + else if (gTasks[taskID].data[6] == 128) + PreEvoInVisible_PostEvoVisible_KillTask(taskID); + else + { + gTasks[taskID].data[6] += 2; + gTasks[taskID].data[5] ^= 1; + gTasks[taskID].func = sub_814A03C; + } +} + +static void sub_814A03C(u8 taskID) +{ + if (gTasks[taskID].tEvoStopped) + gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask; + else + { + u16 oamMatrixArg; + u8 r6 = 0; + if (gTasks[taskID].data[5] == 0) + { + if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[3] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 256; + r6++; + } + if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[4] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 16; + r6++; + } + } + else + { + if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6]) + gTasks[taskID].data[4] += gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[4] = 256; + r6++; + } + if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6]) + gTasks[taskID].data[3] -= gTasks[taskID].data[6]; + else + { + gTasks[taskID].data[3] = 16; + r6++; + } + } + oamMatrixArg = 65536 / gTasks[taskID].data[3]; + SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg); + + oamMatrixArg = 65536 / gTasks[taskID].data[4]; + SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg); + if (r6 == 2) + gTasks[taskID].func = sub_8149FEC; + } +} + +static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0; + + DestroyTask(taskID); +} + +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID) +{ + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0; + + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0; + gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1; + + DestroyTask(taskID); +} diff --git a/sym_bss.txt b/sym_bss.txt index 0e583c4e1..d1358d419 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -28,32 +28,7 @@ gUnknown_03000500: @ 3000500 gUnknown_03000508: @ 3000508 .space 0x8 -@ berry_blender - -gUnknown_03000510: @ 3000510 - .space 0x10 - -gUnknown_03000520: @ 3000520 - .space 0xC - -gUnknown_0300052C: @ 300052C - .space 0x2 - -gUnknown_0300052E: @ 300052E - .space 0x2 - -gUnknown_03000530: @ 3000530 - .space 0x18 - -gUnknown_03000548: @ 3000548 - .space 0x14 - -gUnknown_0300055C: @ 300055C - .space 0x4 - -gUnknown_03000560: @ 3000560 - .space 0x1C - + .include "src/scene/berry_blender.o" .include "src/engine/play_time.o" .include "src/misc/rom4.o" @@ -78,12 +53,7 @@ gUnknown_030006DC: @ 30006DC .include "src/field/field_effect.o" .include "src/field/item_menu.o" - -@ shop - -gUnknown_03000708: @ 3000708 - .space 0x10 - + .include "src/field/shop.o" .include "src/engine/record_mixing.o" .include "src/field/tv.o" @@ -123,13 +93,7 @@ gUnknown_03000748: @ 3000748 .space 0x4 .include "src/field/field_specials.o" - -@ learn_move - - .align 2 -gUnknown_030007B0: @ 30007B0 - .space 0x4 - + .include "src/pokemon/learn_move.o" .include "src/field/player_pc.o" .include "asm/m4a_1.o" .include "src/libs/agb_flash.o" diff --git a/sym_common.txt b/sym_common.txt index 7ce107031..672c084d6 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -117,20 +117,7 @@ gUnknown_03004824: @ 3004824 gUnknown_03004828: @ 3004828 .space 0x8 -@ berry_blender - -gUnknown_03004830: @ 3004830 - .space 0x4 - -gUnknown_03004834: @ 3004834 - .space 0xC - -gUnknown_03004840: @ 3004840 - .space 0x14 - -gUnknown_03004854: @ 3004854 - .space 0x4 - + .include "scene/berry_blender.o" .include "misc/rom4.o" .include "field/fieldmap.o" .include "field/field_camera.o" @@ -287,40 +274,6 @@ gUnknown_03005F10: @ 3005F10 gUnknown_03005F14: @ 3005F14 .space 0xC -@ pokeblock_feed - -gUnknown_03005F20: @ 3005F20 - .space 0x4 - -gUnknown_03005F24: @ 3005F24 - .space 0x4 - -gUnknown_03005F28: @ 3005F28 - .space 0x4 - -gUnknown_03005F2C: @ 3005F2C - .space 0x4 - -gUnknown_03005F30: @ 3005F30 - .space 0x4 - -gUnknown_03005F34: @ 3005F34 - .space 0x8 - -gUnknown_03005F3C: @ 3005F3C - .space 0x4 - -gUnknown_03005F40: @ 3005F40 - .space 0x10 - -gUnknown_03005F50: @ 3005F50 - .space 0x44 - -gUnknown_03005F94: @ 3005F94 - .space 0xC - -gUnknown_03005FA0: @ 3005FA0 - .space 0x30 - + .include "pokemon/pokeblock_feed.o" .include "libs/m4a_2.o" .include "libs/agb_flash.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index d7917845b..0526a5195 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -308,20 +308,7 @@ gUnknown_02029700: @ 2029700 gUnknown_020297D8: @ 20297D8 .space 0x4 -@ berry_blender - -gUnknown_020297DC: @ 20297DC - .space 0x4 - -gUnknown_020297E0: @ 20297E0 - .space 0x4 - -gUnknown_020297E4: @ 20297E4 - .space 0x4 - -gUnknown_020297E8: @ 20297E8 - .space 0x4 - + .include "src/scene/berry_blender.o" .include "src/scene/new_game.o" .include "src/misc/rom4.o" .include "src/field/fieldmap.o" @@ -523,29 +510,7 @@ gScriptContestCategory: @ 203869C gScriptContestRank: @ 203869E .space 0x2 -@ shop - -gUnknown_020386A0: @ 20386A0 - .space 0x4 - -gUnknown_020386A4: @ 20386A4 - .space 0x4 - -gUnknown_020386A8: @ 20386A8 - .space 0x2 - -gUnknown_020386AA: @ 20386AA - .space 0x7A - -gUnknown_02038724: @ 2038724 - .space 0xC - -gUnknown_02038730: @ 2038730 - .space 0x1 - -gUnknown_02038731: @ 2038731 - .space 0x3 - + .include "src/field/shop.o" .include "src/field/money.o" @ record_mixing @@ -668,12 +633,7 @@ gUnknown_0203927D: @ 203927D .include "src/field/berry_tag_screen.o" .include "src/engine/mystery_event_menu.o" .include "src/engine/save_failed_screen.o" - -@ pokeblock_feed - - .align 2 -gUnknown_02039350: @ 2039350 - .space 0x8 + .include "src/pokemon/pokeblock_feed.o" @ intro_credits_graphics |