diff --git a/asm/pokenav.s b/asm/pokenav.s index 40ce730ea1..01ba420aa2 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -4,1604 +4,6 @@ .syntax unified .text - - - - thumb_func_start sub_81C7078 -sub_81C7078: @ 81C7078 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - bl is_c1_link_related_active - cmp r0, 0 - bne _081C7090 - ldr r0, =sub_81C7170 - b _081C7092 - .pool -_081C7090: - ldr r0, =sub_81C71E4 -_081C7092: - lsls r1, r4, 24 - lsrs r1, 24 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x1 - adds r2, r5, 0 - bl SetWordTaskArg - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, =gUnknown_0203CF3C - ldrb r1, [r2] - strh r1, [r0, 0xE] - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 8 - orrs r0, r4 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C7078 - - thumb_func_start sub_81C70D8 -sub_81C70D8: @ 81C70D8 - push {lr} - ldr r1, =0x0000ffff - ands r1, r0 - lsrs r3, r0, 16 - ldr r2, =gTasks - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _081C711C - ldr r2, [r1] - ldr r0, =sub_81C7170 - cmp r2, r0 - beq _081C70FE - ldr r0, =sub_81C71E4 - cmp r2, r0 - bne _081C711C -_081C70FE: - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, r3 - bne _081C711C - movs r0, 0x1 - b _081C711E - .pool -_081C711C: - movs r0, 0 -_081C711E: - pop {r1} - bx r1 - thumb_func_end sub_81C70D8 - - thumb_func_start sub_81C7124 -sub_81C7124: @ 81C7124 - push {r4-r6,lr} - adds r6, r0, 0 - movs r5, 0 - ldr r4, =gTasks -_081C712C: - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _081C7160 - ldr r1, [r4] - ldr r0, =sub_81C7170 - cmp r1, r0 - beq _081C7140 - ldr r0, =sub_81C71E4 - cmp r1, r0 - bne _081C7160 -_081C7140: - lsls r0, r5, 24 - lsrs r0, 24 - movs r1, 0x1 - bl GetWordTaskArg - cmp r0, r6 - bne _081C7160 - movs r0, 0x1 - b _081C716A - .pool -_081C7160: - adds r4, 0x28 - adds r5, 0x1 - cmp r5, 0xF - ble _081C712C - movs r0, 0 -_081C716A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81C7124 - - thumb_func_start sub_81C7170 -sub_81C7170: @ 81C7170 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl GetWordTaskArg - adds r6, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r7, 0 -_081C718C: - movs r1, 0 - ldrsh r0, [r4, r1] - bl _call_via_r6 - cmp r0, 0x4 - bhi _081C71D6 - lsls r0, 2 - ldr r1, =_081C71AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C71AC: - .4byte _081C71C6 - .4byte _081C71C0 - .4byte _081C71DE - .4byte _081C71DA - .4byte _081C71CE -_081C71C0: - ldrh r0, [r4] - adds r0, 0x1 - b _081C71D8 -_081C71C6: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _081C71DE -_081C71CE: - adds r0, r5, 0 - bl DestroyTask - b _081C71DE -_081C71D6: - subs r0, 0x5 -_081C71D8: - strh r0, [r4] -_081C71DA: - cmp r7, 0 - beq _081C718C -_081C71DE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C7170 - - thumb_func_start sub_81C71E4 -sub_81C71E4: @ 81C71E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8087598 - cmp r0, 0 - bne _081C724A - adds r0, r5, 0 - movs r1, 0x1 - bl GetWordTaskArg - adds r2, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - bl _call_via_r2 - cmp r0, 0x4 - bhi _081C7246 - lsls r0, 2 - ldr r1, =_081C7224 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C7224: - .4byte _081C7238 - .4byte _081C7238 - .4byte _081C724A - .4byte _081C724A - .4byte _081C723E -_081C7238: - ldrh r0, [r4] - adds r0, 0x1 - b _081C7248 -_081C723E: - adds r0, r5, 0 - bl DestroyTask - b _081C724A -_081C7246: - subs r0, 0x5 -_081C7248: - strh r0, [r4] -_081C724A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81C71E4 - - thumb_func_start CB2_PokeNav -CB2_PokeNav: @ 81C7250 - push {r4,lr} - ldr r4, =gUnknown_0203CF40 - movs r0, 0x5C - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _081C7270 - ldr r0, =CB2_ReturnToFieldWithOpenMenu - bl SetMainCallback2 - b _081C7292 - .pool -_081C7270: - bl sub_81C7360 - bl ResetTasks - movs r0, 0 - bl SetVBlankCallback - ldr r0, =sub_81C742C - movs r1, 0 - bl CreateTask - ldr r0, =sub_81C7400 - bl SetMainCallback2 - ldr r0, =sub_81C7418 - bl SetVBlankCallback -_081C7292: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end CB2_PokeNav - - thumb_func_start sub_81C72A4 -sub_81C72A4: @ 81C72A4 - push {lr} - ldr r0, =sub_81C72BC - bl SetMainCallback2 - movs r0, 0x1 - movs r1, 0 - bl FadeScreen - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C72A4 - - thumb_func_start sub_81C72BC -sub_81C72BC: @ 81C72BC - push {r4,lr} - bl UpdatePaletteFade - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081C7320 - ldr r4, =gUnknown_0203CF40 - movs r0, 0x5C - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _081C72F0 - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - b _081C7320 - .pool -_081C72F0: - bl sub_81C7360 - ldr r1, [r4] - movs r0, 0x1 - strh r0, [r1, 0x8] - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r0, =sub_81C742C - movs r1, 0 - bl CreateTask - ldr r0, =sub_81C7400 - bl SetMainCallback2 - ldr r0, =sub_81C7418 - bl SetVBlankCallback -_081C7320: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C72BC - - thumb_func_start sub_81C7334 -sub_81C7334: @ 81C7334 - push {r4,lr} - movs r4, 0 -_081C7338: - adds r0, r4, 0 - bl sub_81C7650 - adds r4, 0x1 - cmp r4, 0x12 - ble _081C7338 - ldr r4, =gUnknown_0203CF40 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - bl InitKeys - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7334 - - thumb_func_start sub_81C7360 -sub_81C7360: @ 81C7360 - push {r4,r5,lr} - adds r5, r0, 0 - movs r2, 0 - movs r1, 0x12 - adds r0, 0x58 -_081C736A: - str r2, [r0] - subs r0, 0x4 - subs r1, 0x1 - cmp r1, 0 - bge _081C736A - movs r4, 0 - strh r4, [r5, 0x8] - str r4, [r5, 0x4] - bl sub_81C7388 - str r0, [r5, 0xC] - str r4, [r5] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81C7360 - - thumb_func_start sub_81C7388 -sub_81C7388: @ 81C7388 - push {r4-r6,lr} - movs r5, 0 -_081C738C: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x5 - bl GetMonData - cmp r0, 0 - beq _081C73BA - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _081C73BA - adds r0, r4, 0 - movs r1, 0x52 - bl GetMonData - cmp r0, 0 - bne _081C73E2 -_081C73BA: - adds r5, 0x1 - cmp r5, 0x5 - ble _081C738C - movs r4, 0 -_081C73C2: - movs r5, 0 - lsls r6, r4, 24 -_081C73C6: - adds r0, r4, 0 - adds r1, r5, 0 - bl CheckBoxMonSanityAt - cmp r0, 0 - beq _081C73EC - lsls r1, r5, 24 - lsrs r1, 24 - lsrs r0, r6, 24 - movs r2, 0x52 - bl GetBoxMonDataAt - cmp r0, 0 - beq _081C73EC -_081C73E2: - movs r0, 0x1 - b _081C73FA - .pool -_081C73EC: - adds r5, 0x1 - cmp r5, 0x1D - ble _081C73C6 - adds r4, 0x1 - cmp r4, 0xD - ble _081C73C2 - movs r0, 0 -_081C73FA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81C7388 - - thumb_func_start sub_81C7400 -sub_81C7400: @ 81C7400 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_81C7400 - - thumb_func_start sub_81C7418 -sub_81C7418: @ 81C7418 - push {lr} - bl TransferPlttBuffer - bl LoadOam - bl ProcessSpriteCopyRequests - pop {r0} - bx r0 - thumb_func_end sub_81C7418 - - thumb_func_start sub_81C742C -sub_81C742C: @ 81C742C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r7, r1, r0 - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0x5 - bls _081C7446 - b _081C7562 -_081C7446: - lsls r0, 2 - ldr r1, =_081C7458 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081C7458: - .4byte _081C7470 - .4byte _081C747A - .4byte _081C7490 - .4byte _081C749C - .4byte _081C751E - .4byte _081C752C -_081C7470: - bl sub_81C76C4 - movs r0, 0x1 - strh r0, [r7] - b _081C7562 -_081C747A: - bl sub_81C76FC - cmp r0, 0 - bne _081C7562 - ldr r0, =0x000186a0 - bl sub_81C756C - b _081C74E8 - .pool -_081C7490: - bl sub_81C786C - cmp r0, 0 - bne _081C7562 - movs r0, 0x3 - strh r0, [r7] -_081C749C: - bl sub_81C75E0 - adds r6, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r6, r0 - beq _081C74FC - ldr r0, =0x0001869f - cmp r6, r0 - bls _081C7506 - ldr r4, =gUnknown_0861F3EC - ldr r5, =gUnknown_0203CF40 - ldr r0, [r5] - ldr r1, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, [r5] - ldr r1, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r4, 0x14 - adds r0, r4 - ldr r0, [r0] - bl _call_via_r0 - adds r0, r6, 0 - bl sub_81C756C - cmp r0, 0 - beq _081C74FC -_081C74E8: - movs r0, 0x4 - strh r0, [r7] - b _081C7562 - .pool -_081C74FC: - bl sub_81C7710 - movs r0, 0x5 - strh r0, [r7] - b _081C7562 -_081C7506: - cmp r6, 0 - beq _081C7562 - adds r0, r6, 0 - bl sub_81C7850 - bl sub_81C786C - cmp r0, 0 - beq _081C7562 - movs r0, 0x2 - strh r0, [r7] - b _081C7562 -_081C751E: - bl sub_81C75D4 - cmp r0, 0 - bne _081C7562 - movs r0, 0x3 - strh r0, [r7] - b _081C7562 -_081C752C: - bl sub_81C7738 - cmp r0, 0 - bne _081C7562 - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - ldrh r0, [r0, 0x8] - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_81C9430 - bl sub_81C7334 - cmp r4, 0 - beq _081C755C - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - b _081C7562 - .pool -_081C755C: - ldr r0, =CB2_ReturnToFieldWithOpenMenu - bl SetMainCallback2 -_081C7562: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C742C - - thumb_func_start sub_81C756C -sub_81C756C: @ 81C756C - push {r4-r6,lr} - ldr r1, =0xfffe7960 - adds r6, r0, r1 - bl sub_81C75F4 - ldr r5, =gUnknown_0861F3EC - lsls r0, r6, 3 - subs r0, r6 - lsls r4, r0, 2 - adds r0, r4, r5 - ldr r0, [r0] - bl _call_via_r0 - cmp r0, 0 - beq _081C75CC - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - bl _call_via_r0 - cmp r0, 0 - beq _081C75CC - adds r0, r5, 0 - adds r0, 0xC - adds r0, r4, r0 - ldr r0, [r0] - adds r1, r5, 0 - adds r1, 0x10 - adds r1, r4, r1 - ldr r1, [r1] - bl sub_81C7834 - ldr r0, =gUnknown_0203CF40 - ldr r1, [r0] - adds r0, r5, 0x4 - adds r0, r4, r0 - ldr r0, [r0] - str r0, [r1] - str r6, [r1, 0x4] - movs r0, 0x1 - b _081C75CE - .pool -_081C75CC: - movs r0, 0 -_081C75CE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81C756C - - thumb_func_start sub_81C75D4 -sub_81C75D4: @ 81C75D4 - push {lr} - bl sub_81C786C - pop {r1} - bx r1 - thumb_func_end sub_81C75D4 - - thumb_func_start sub_81C75E0 -sub_81C75E0: @ 81C75E0 - push {lr} - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - ldr r0, [r0] - bl _call_via_r0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C75E0 - - thumb_func_start sub_81C75F4 -sub_81C75F4: @ 81C75F4 - push {lr} - bl InitKeys - pop {r0} - bx r0 - thumb_func_end sub_81C75F4 - - thumb_func_start c3args_set_0toR1_1to0 -c3args_set_0toR1_1to0: @ 81C7600 - push {lr} - bl SetVBlankCallback - pop {r0} - bx r0 - thumb_func_end c3args_set_0toR1_1to0 - - thumb_func_start sub_81C760C -sub_81C760C: @ 81C760C - push {lr} - ldr r0, =sub_81C7418 - bl SetVBlankCallback - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C760C - - thumb_func_start sub_81C761C -sub_81C761C: @ 81C761C - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl Alloc - ldr r1, =gUnknown_0203CF40 - ldr r1, [r1] - lsls r4, 2 - adds r1, 0x10 - adds r1, r4 - str r0, [r1] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C761C - - thumb_func_start sub_81C763C -sub_81C763C: @ 81C763C - ldr r1, =gUnknown_0203CF40 - ldr r1, [r1] - lsls r0, 2 - adds r1, 0x10 - adds r1, r0 - ldr r0, [r1] - bx lr - .pool - thumb_func_end sub_81C763C - - thumb_func_start sub_81C7650 -sub_81C7650: @ 81C7650 - push {r4,r5,lr} - ldr r5, =gUnknown_0203CF40 - ldr r1, [r5] - lsls r4, r0, 2 - adds r1, 0x10 - adds r1, r4 - ldr r0, [r1] - cmp r0, 0 - beq _081C7670 - bl Free - ldr r0, [r5] - adds r0, 0x10 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_081C7670: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7650 - - thumb_func_start sub_81C767C -sub_81C767C: @ 81C767C - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - ldrh r0, [r0, 0x8] - bx lr - .pool - thumb_func_end sub_81C767C - - thumb_func_start sub_81C7688 -sub_81C7688: @ 81C7688 - ldr r1, =gUnknown_0203CF40 - ldr r1, [r1] - strh r0, [r1, 0x8] - bx lr - .pool - thumb_func_end sub_81C7688 - - thumb_func_start sub_81C7694 -sub_81C7694: @ 81C7694 - push {lr} - adds r1, r0, 0 - cmp r1, 0x4 - bls _081C769E - movs r1, 0 -_081C769E: - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - strh r1, [r0, 0xA] - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7694 - - thumb_func_start sub_81C76AC -sub_81C76AC: @ 81C76AC - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - bx lr - .pool - thumb_func_end sub_81C76AC - - thumb_func_start sub_81C76B8 -sub_81C76B8: @ 81C76B8 - ldr r0, =gUnknown_0203CF40 - ldr r0, [r0] - ldr r0, [r0, 0xC] - bx lr - .pool - thumb_func_end sub_81C76B8 - - thumb_func_start sub_81C76C4 -sub_81C76C4: @ 81C76C4 - push {r4,lr} - ldr r1, =0x0000082c - movs r0, 0 - bl sub_81C761C - adds r4, r0, 0 - cmp r4, 0 - beq _081C76F4 - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, =sub_81C7764 - movs r1, 0x1 - bl sub_81C7078 - str r0, [r4, 0xC] - movs r0, 0x1 - b _081C76F6 - .pool -_081C76F4: - movs r0, 0 -_081C76F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81C76C4 - - thumb_func_start sub_81C76FC -sub_81C76FC: @ 81C76FC - push {lr} - movs r0, 0 - bl sub_81C763C - ldr r0, [r0, 0xC] - bl sub_81C70D8 - pop {r1} - bx r1 - thumb_func_end sub_81C76FC - - thumb_func_start sub_81C7710 -sub_81C7710: @ 81C7710 - push {lr} - sub sp, 0x4 - movs r0, 0x6F - bl PlaySE - bl sub_81CAADC - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_81C7710 - - thumb_func_start sub_81C7738 -sub_81C7738: @ 81C7738 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081C7750 - movs r0, 0x1 - b _081C775E - .pool -_081C7750: - bl sub_81C99D4 - bl sub_81C7C94 - bl FreeAllWindowBuffers - movs r0, 0 -_081C775E: - pop {r1} - bx r1 - thumb_func_end sub_81C7738 - - thumb_func_start sub_81C7764 -sub_81C7764: @ 81C7764 - push {r4,lr} - sub sp, 0x4 - cmp r0, 0x1 - beq _081C77B0 - cmp r0, 0x1 - bgt _081C7776 - cmp r0, 0 - beq _081C7780 - b _081C782A -_081C7776: - cmp r0, 0x2 - beq _081C77FC - cmp r0, 0x3 - beq _081C780E - b _081C782A -_081C7780: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - bl FreeAllWindowBuffers - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_0861FA04 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - bl sub_8199D98 - bl reset_temp_tile_data_buffers - movs r0, 0x1 - b _081C782C - .pool -_081C77B0: - movs r0, 0 - bl sub_81C763C - adds r4, r0, 0 - ldr r1, =gPokenavHeader_Gfx - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - adds r4, 0x2C - movs r0, 0 - adds r1, r4, 0 - bl SetBgTilemapBuffer - ldr r1, =gPokenavHeader_Tilemap - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r0, =gPokenavHeader_Pal - movs r1, 0 - movs r2, 0x20 - bl sub_81C7944 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0 - b _081C782C - .pool -_081C77FC: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - cmp r0, 0 - bne _081C7818 - bl sub_81C7B74 - movs r0, 0 - b _081C782C -_081C780E: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _081C781C -_081C7818: - movs r0, 0x2 - b _081C782C -_081C781C: - bl sub_81C7C28 - bl sub_81C7D28 - movs r0, 0 - bl ShowBg -_081C782A: - movs r0, 0x4 -_081C782C: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81C7764 - - thumb_func_start sub_81C7834 -sub_81C7834: @ 81C7834 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - bl sub_81C763C - str r4, [r0] - str r5, [r0, 0x4] - movs r1, 0 - str r1, [r0, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81C7834 - - thumb_func_start sub_81C7850 -sub_81C7850: @ 81C7850 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl sub_81C763C - movs r1, 0 - str r1, [r0, 0x8] - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C7850 - - thumb_func_start sub_81C786C -sub_81C786C: @ 81C786C - push {lr} - movs r0, 0 - bl sub_81C763C - ldr r0, [r0, 0x4] - bl _call_via_r0 - pop {r1} - bx r1 - thumb_func_end sub_81C786C - - thumb_func_start sub_81C7880 -sub_81C7880: @ 81C7880 - push {r4,lr} - movs r0, 0 - bl sub_81C763C - adds r4, r0, 0 - ldr r0, =atk47_cmd47 - movs r1, 0x4 - bl sub_81C7078 - str r0, [r4, 0xC] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7880 - - thumb_func_start sub_81C78A0 -sub_81C78A0: @ 81C78A0 - push {r4,lr} - movs r0, 0 - bl sub_81C763C - adds r4, r0, 0 - ldr r0, =sub_81C791C - movs r1, 0x4 - bl sub_81C7078 - str r0, [r4, 0xC] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C78A0 - - thumb_func_start sub_81C78C0 -sub_81C78C0: @ 81C78C0 - push {lr} - movs r0, 0 - bl sub_81C763C - ldr r0, [r0, 0xC] - bl sub_81C70D8 - pop {r1} - bx r1 - thumb_func_end sub_81C78C0 - - thumb_func_start atk47_cmd47 -atk47_cmd47: @ 81C78D4 - push {lr} - cmp r0, 0x1 - beq _081C78EA - cmp r0, 0x1 - bgt _081C78E4 - cmp r0, 0 - beq _081C78EA - b _081C7914 -_081C78E4: - cmp r0, 0x2 - beq _081C78EE - b _081C7914 -_081C78EA: - movs r0, 0 - b _081C7916 -_081C78EE: - movs r1, 0xC0 - lsls r1, 1 - movs r0, 0 - movs r2, 0x1 - bl ChangeBgY - ldr r1, =0x00001fff - cmp r0, r1 - bhi _081C7908 - movs r0, 0x2 - b _081C7916 - .pool -_081C7908: - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - movs r2, 0 - bl ChangeBgY -_081C7914: - movs r0, 0x4 -_081C7916: - pop {r1} - bx r1 - thumb_func_end atk47_cmd47 - - thumb_func_start sub_81C791C -sub_81C791C: @ 81C791C - push {lr} - movs r1, 0xC0 - lsls r1, 1 - movs r0, 0 - movs r2, 0x2 - bl ChangeBgY - cmp r0, 0 - ble _081C7932 - movs r0, 0x2 - b _081C793E -_081C7932: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x4 -_081C793E: - pop {r1} - bx r1 - thumb_func_end sub_81C791C - - thumb_func_start sub_81C7944 -sub_81C7944: @ 81C7944 - push {lr} - lsls r1, 1 - ldr r3, =gPlttBufferUnfaded - adds r1, r3 - lsls r2, 10 - lsrs r2, 11 - bl CpuSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7944 - - thumb_func_start sub_81C795C -sub_81C795C: @ 81C795C - push {r4,lr} - adds r4, r0, 0 - b _081C7974 -_081C7962: - lsls r0, r1, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r0, r2 - ldr r0, [r4] - movs r2, 0x20 - bl sub_81C7944 - adds r4, 0x8 -_081C7974: - ldr r0, [r4] - cmp r0, 0 - beq _081C7988 - ldrh r0, [r4, 0x4] - bl AllocSpritePalette - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _081C7962 -_081C7988: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C795C - - thumb_func_start sub_81C7990 -sub_81C7990: @ 81C7990 - push {lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, sp - strh r1, [r0] - lsls r3, 5 - ldr r0, =gPlttBufferFaded + 0x200 - adds r3, r0 - ldr r2, =0x01000010 - mov r0, sp - adds r1, r3, 0 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7990 - - thumb_func_start sub_81C79BC -sub_81C79BC: @ 81C79BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r0, [sp] - str r1, [sp, 0x4] - mov r10, r2 - str r3, [sp, 0x8] - ldr r0, [sp, 0x2C] - cmp r0, 0 - bne _081C79E4 - ldr r2, =0x001fffff - mov r1, r10 - ands r2, r1 - ldr r0, [sp] - b _081C79F4 - .pool -_081C79E4: - ldr r2, [sp, 0x2C] - ldr r0, [sp, 0x8] - cmp r2, r0 - blt _081C7A00 - ldr r2, =0x001fffff - mov r1, r10 - ands r2, r1 - ldr r0, [sp, 0x4] -_081C79F4: - ldr r1, [sp, 0x30] - bl CpuSet - b _081C7AAE - .pool -_081C7A00: - movs r2, 0x1 - negs r2, r2 - add r10, r2 - b _081C7AA6 -_081C7A08: - ldr r1, [sp] - ldrh r0, [r1] - movs r2, 0x1F - mov r9, r2 - mov r1, r9 - ands r1, r0 - mov r9, r1 - lsls r0, 16 - lsrs r2, r0, 21 - movs r1, 0x1F - ands r1, r2 - mov r8, r1 - lsrs r7, r0, 26 - movs r2, 0x1F - ands r7, r2 - ldr r0, [sp, 0x4] - ldrh r4, [r0] - movs r0, 0x1F - ands r0, r4 - mov r1, r9 - subs r0, r1 - lsls r0, 8 - ldr r1, [sp, 0x8] - bl __divsi3 - ldr r2, [sp, 0x2C] - adds r6, r0, 0 - muls r6, r2 - asrs r6, 8 - lsls r4, 16 - lsrs r0, r4, 21 - movs r1, 0x1F - ands r0, r1 - mov r2, r8 - subs r0, r2 - lsls r0, 8 - ldr r1, [sp, 0x8] - bl __divsi3 - ldr r1, [sp, 0x2C] - adds r5, r0, 0 - muls r5, r1 - asrs r5, 8 - lsrs r4, 26 - movs r2, 0x1F - ands r4, r2 - subs r4, r7 - lsls r4, 8 - adds r0, r4, 0 - ldr r1, [sp, 0x8] - bl __divsi3 - ldr r1, [sp, 0x2C] - muls r0, r1 - asrs r0, 8 - add r6, r9 - movs r2, 0x1F - ands r6, r2 - add r5, r8 - ands r5, r2 - adds r0, r7, r0 - ands r0, r2 - lsls r0, 10 - lsls r5, 5 - orrs r0, r5 - orrs r0, r6 - ldr r1, [sp, 0x30] - strh r0, [r1] - ldr r2, [sp] - adds r2, 0x2 - str r2, [sp] - ldr r0, [sp, 0x4] - adds r0, 0x2 - str r0, [sp, 0x4] - adds r1, 0x2 - str r1, [sp, 0x30] - movs r1, 0x1 - negs r1, r1 - add r10, r1 -_081C7AA6: - movs r0, 0x1 - negs r0, r0 - cmp r10, r0 - bne _081C7A08 -_081C7AAE: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81C79BC - - thumb_func_start sub_81C7AC0 -sub_81C7AC0: @ 81C7AC0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r0, 0 - bl sub_81C763C - cmp r4, 0x1 - beq _081C7AF0 - cmp r4, 0x1 - bgt _081C7ADA - cmp r4, 0 - beq _081C7AE4 - b _081C7B2C -_081C7ADA: - cmp r4, 0x2 - beq _081C7B04 - cmp r4, 0x3 - beq _081C7B18 - b _081C7B2C -_081C7AE4: - ldr r0, [r0, 0x14] - movs r1, 0x2 - negs r1, r1 - str r4, [sp] - movs r2, 0 - b _081C7B10 -_081C7AF0: - ldr r0, [r0, 0x14] - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _081C7B2C -_081C7B04: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] -_081C7B10: - movs r3, 0x10 - bl BeginNormalPaletteFade - b _081C7B2C -_081C7B18: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_081C7B2C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C7AC0 - - thumb_func_start sub_81C7B34 -sub_81C7B34: @ 81C7B34 - ldr r0, =gPaletteFade - ldrb r0, [r0, 0x7] - lsrs r0, 7 - bx lr - .pool - thumb_func_end sub_81C7B34 - - thumb_func_start sub_81C7B40 -sub_81C7B40: @ 81C7B40 - push {lr} - ldr r0, =0xfffefffe - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7B40 - - thumb_func_start sub_81C7B54 -sub_81C7B54: @ 81C7B54 - push {r4,r5,lr} - adds r5, r0, 0 - cmp r1, 0 - ble _081C7B6C - adds r4, r1, 0 -_081C7B5E: - adds r0, r5, 0 - adds r5, 0x4 - bl InitBgFromTemplate - subs r4, 0x1 - cmp r4, 0 - bne _081C7B5E -_081C7B6C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81C7B54 - - thumb_func_start sub_81C7B74 -sub_81C7B74: @ 81C7B74 - push {r4,lr} - movs r0, 0 - bl sub_81C763C - adds r4, r0, 0 - ldr r0, =gUnknown_0861FA08 - bl InitWindows - movs r0, 0 - str r0, [r4, 0x10] - bl sub_81C7BF8 - ldrb r0, [r4, 0x10] - bl PutWindowTilemap - ldrb r0, [r4, 0x10] - movs r1, 0x3 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7B74 - - thumb_func_start sub_81C7BA4 -sub_81C7BA4: @ 81C7BA4 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r0, 0 - bl sub_81C763C - adds r5, r0, 0 - ldr r0, [r5, 0x10] - bl sub_81C7BF8 - ldrb r0, [r5, 0x10] - ldr r1, =gUnknown_0861FA48 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - ldr r1, =gUnknown_0861FA18 - lsls r4, 2 - adds r4, r1 - ldr r1, [r4] - str r1, [sp, 0x8] - movs r1, 0x1 - movs r2, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7BA4 - - thumb_func_start sub_81C7BE8 -sub_81C7BE8: @ 81C7BE8 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_81C7BE8 - - thumb_func_start sub_81C7BF8 -sub_81C7BF8: @ 81C7BF8 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x44 - bl FillWindowPixelBuffer - movs r0, 0x80 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0x55 - movs r2, 0 - movs r3, 0 - bl FillWindowPixelRect - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C7BF8 - - thumb_func_start sub_81C7C28 -sub_81C7C28: @ 81C7C28 - push {r4-r6,lr} - movs r0, 0 - bl sub_81C763C - adds r6, r0, 0 - movs r5, 0 - ldr r4, =gUnknown_0861FA4C -_081C7C36: - adds r0, r4, 0 - bl LoadCompressedSpriteSheet - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0 - beq _081C7C36 - ldr r0, =gUnknown_0861FA54 - bl sub_81C795C - movs r0, 0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r0 - movs r0, 0x2 - negs r0, r0 - bics r0, r1 - str r0, [r6, 0x14] - ldr r0, =gUnknown_0861FB04 - movs r1, 0xDC - movs r2, 0xC - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, =gSprites - adds r1, r0 - str r1, [r6, 0x18] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C7C28 - - thumb_func_start sub_81C7C94 -sub_81C7C94: @ 81C7C94 - push {lr} - movs r0, 0 - bl sub_81C763C - ldr r0, [r0, 0x18] - bl DestroySprite - movs r0, 0 - bl FreeSpriteTilesByTag - movs r0, 0 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end sub_81C7C94 - - thumb_func_start sub_81C7CB4 -sub_81C7CB4: @ 81C7CB4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl GetBgY - lsrs r0, 8 - negs r0, r0 - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81C7CB4 - - thumb_func_start sub_81C7CCC -sub_81C7CCC: @ 81C7CCC - push {lr} - movs r0, 0 - bl sub_81C763C - ldr r0, [r0, 0x18] - ldr r1, =SpriteCallbackDummy - str r1, [r0, 0x1C] - pop {r1} - bx r1 - .pool - thumb_func_end sub_81C7CCC thumb_func_start sub_81C7CE4 sub_81C7CE4: @ 81C7CE4 @@ -5452,7 +3854,7 @@ _081C9A5C: ldr r0, =gPokenavMessageBox_Pal movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x1 movs r1, 0 movs r2, 0 @@ -5505,7 +3907,7 @@ _081C9AFA: ldr r0, =gUnknown_0861FD4C movs r1, 0x20 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded b _081C9AD6 .pool _081C9B30: @@ -5532,7 +3934,7 @@ _081C9B3E: ldr r0, =gUnknown_0861FC78 movs r1, 0x30 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded bl sub_81C9894 cmp r0, 0x3 beq _081C9B76 @@ -5602,7 +4004,7 @@ _081C9C06: bl sub_81C7DFC b _081C9AD6 _081C9C0E: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081C9C5C bl sub_81C9894 @@ -6066,7 +4468,7 @@ _081C9F96: movs r0, 0 b _081C9FBE _081C9FB0: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 beq _081C9FBC _081C9FB8: @@ -7203,7 +5605,7 @@ sub_81CA850: @ 81CA850 ldr r0, =gUnknown_0861FC78 + 0xE movs r1, 0x31 movs r2, 0x4 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded pop {r0} bx r0 .pool @@ -7336,7 +5738,7 @@ titlescreen_0: @ 81CA92C ldr r2, [r2, 0x8] bl ScanlineEffect_SetParams ldr r0, =sub_81CA914 - bl c3args_set_0toR1_1to0 + bl IndirectSetVBlankCallback ldr r0, =sub_81CA9EC movs r1, 0x3 bl CreateTask @@ -8687,7 +7089,7 @@ _081CB368: ldr r0, =gUnknown_08622510 movs r1, 0x20 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x2 b _081CB418 .pool @@ -8720,7 +7122,7 @@ _081CB3E0: ldr r0, =gUnknown_086226E0 movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x1 _081CB418: bl CopyBgTilemapBufferToVram @@ -8744,11 +7146,11 @@ _081CB424: ldr r0, =gUnknown_08622700 movs r1, 0x30 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded ldr r0, =gUnknown_08622720 movs r1, 0x50 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0 b _081CB506 .pool @@ -8806,7 +7208,7 @@ _081CB4A6: movs r0, 0 b _081CB506 _081CB4EA: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CB4FA bl sub_81C8010 @@ -9699,7 +8101,7 @@ _081CBB80: movs r0, 0 b _081CBBB4 _081CBB9A: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CBBAA bl sub_81C78C0 @@ -10034,7 +8436,7 @@ sub_81CBE50: @ 81CBE50 movs r0, 0x9 bl GetGameStat adds r1, r0, 0 - ldr r0, =0x0001869f + ldr r0, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET cmp r1, r0 ble _081CBE68 adds r1, r0, 0 @@ -11185,7 +9587,7 @@ _081CC714: .4byte _081CC82A _081CC734: movs r0, 0 - bl c3args_set_0toR1_1to0 + bl IndirectSetVBlankCallback movs r0, 0x1 bl HideBg movs r0, 0x2 @@ -11265,7 +9667,7 @@ _081CC7E2: movs r0, 0x2 bl ShowBg ldr r0, =sub_81CC6A4 - bl c3args_set_0toR1_1to0 + bl IndirectSetVBlankCallback b _081CC77C .pool _081CC804: @@ -11286,7 +9688,7 @@ _081CC812: bl sub_81C7AC0 b _081CC77C _081CC82A: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CC83A bl sub_81C8010 @@ -11472,7 +9874,7 @@ _081CC972: movs r0, 0 b _081CC9BA _081CC982: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CC99E bl sub_81C7FDC @@ -11606,11 +10008,11 @@ sub_81CCA1C: @ 81CCA1C ldr r0, =gUnknown_08622868 movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded ldr r0, =gHoennMapZoomIcons_Pal movs r1, 0x30 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded bl sub_8124658 lsls r0, 24 cmp r0, 0 @@ -14231,11 +12633,11 @@ _081CDFF2: ldr r0, =gPokenavCondition_Pal movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded ldr r0, =gUnknown_08623208 movs r1, 0xF0 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded ldr r0, =0x00001814 adds r1, r5, r0 ldr r0, =0x0000ffb0 @@ -14262,7 +12664,7 @@ _081CE03C: ldr r0, =gUnknown_086231E8 movs r1, 0x30 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x2 bl sub_81D21DC b _081CDFB0 @@ -14440,7 +12842,7 @@ _081CE1FC: bl sub_81C7FA0 b _081CDFB0 _081CE218: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CE2C0 bl sub_81CDD5C @@ -14451,7 +12853,7 @@ _081CE218: bne _081CE2C0 _081CE230: ldr r0, =sub_81CEE44 - bl c3args_set_0toR1_1to0 + bl IndirectSetVBlankCallback b _081CDFB0 .pool _081CE23C: @@ -14569,7 +12971,7 @@ _081CE33A: movs r0, 0 b _081CE376 _081CE33E: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CE34E bl sub_81C78C0 @@ -16710,7 +15112,7 @@ _081CF454: ldr r0, =gUnknown_086233C4 movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x1 bl CopyBgTilemapBufferToVram _081CF498: @@ -16734,7 +15136,7 @@ _081CF4C0: ldr r0, =gUnknown_08623570 movs r1, 0x20 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded bl sub_81CF88C b _081CF498 .pool @@ -16789,7 +15191,7 @@ _081CF552: bl sub_81C7AC0 b _081CF498 _081CF55A: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CF56A bl sub_81C8010 @@ -17096,7 +15498,7 @@ _081CF764: movs r0, 0 b _081CF792 _081CF778: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CF788 bl sub_81C78C0 @@ -17130,7 +15532,7 @@ _081CF7A4: movs r0, 0 b _081CF7C2 _081CF7B4: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 beq _081CF7C0 movs r0, 0x2 @@ -18094,7 +16496,7 @@ _081CFEF4: ldr r0, =gUnknown_086235E4 movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x1 bl CopyBgTilemapBufferToVram _081CFF32: @@ -18128,7 +16530,7 @@ _081CFF76: ldr r0, =gUnknown_08623790 movs r1, 0x20 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded bl sub_81D0304 b _081CFF32 .pool @@ -18163,7 +16565,7 @@ _081CFFA4: bl sub_81C7FA0 b _081CFF32 _081CFFDE: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081CFFEE bl sub_81C8010 @@ -18470,7 +16872,7 @@ _081D01E8: movs r0, 0 b _081D0216 _081D01FC: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 bne _081D020C bl sub_81C78C0 @@ -18504,7 +16906,7 @@ _081D0228: movs r0, 0 b _081D0246 _081D0238: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 beq _081D0244 movs r0, 0x2 @@ -19631,7 +18033,7 @@ _081D0AB8: ldr r0, =gUnknown_08DDE010 movs r1, 0x10 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded b _081D0BBA .pool _081D0B04: @@ -19669,11 +18071,11 @@ _081D0B12: ldr r0, =gUnknown_08623FF8 movs r1, 0x20 movs r2, 0xA0 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded ldr r0, =gUnknown_08624098 movs r1, 0xA0 movs r2, 0x20 - bl sub_81C7944 + bl CopyPaletteIntoBufferUnfaded movs r0, 0x1 b _081D0BBC .pool @@ -19765,7 +18167,7 @@ _081D0BE8: movs r0, 0 b _081D0C4A _081D0C3C: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 beq _081D0C48 _081D0C44: @@ -19796,7 +18198,7 @@ _081D0C60: movs r0, 0 b _081D0C7E _081D0C70: - bl sub_81C7B34 + bl IsPaletteFadeActive cmp r0, 0 beq _081D0C7C movs r0, 0x2 diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index af7fdbf3df..ec5b7e8f51 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -27181,7 +27181,7 @@ sub_8024700: @ 8024700 adds r0, r5, 0 bl sub_8024668 adds r1, r0, r4 - ldr r2, =0x0001869f + ldr r2, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET cmp r1, r2 bhi _08024730 adds r0, r5, 0 diff --git a/data/pokenav.s b/data/pokenav.s index 1a5e2bd99f..cb5030b4ba 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -3,162 +3,6 @@ .section .rodata -gUnknown_0861F3EC:: @ 861F3EC - .4byte sub_81C9298 - .4byte sub_81C941C - .4byte sub_81C9924 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81C9298 - .4byte sub_81C941C - .4byte sub_81C9940 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81C9338 - .4byte sub_81C941C - .4byte sub_81C9940 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81C9368 - .4byte sub_81C941C - .4byte sub_81C9940 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81C92CC - .4byte sub_81C941C - .4byte sub_81C9940 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81C9304 - .4byte sub_81C941C - .4byte sub_81C9940 - .4byte sub_81C9990 - .4byte sub_81C99C0 - .4byte sub_81C9430 - .4byte sub_81C99D4 - .4byte sub_81CC4D4 - .4byte sub_81CC554 - .4byte sub_81CC5F4 - .4byte sub_81CC62C - .4byte sub_81CC65C - .4byte sub_81CC524 - .4byte sub_81CC670 - .4byte sub_81CCFD8 - .4byte sub_81CD070 - .4byte sub_81CDDD4 - .4byte sub_81CDE2C - .4byte sub_81CDE64 - .4byte sub_81CD1C0 - .4byte sub_81CECA0 - .4byte sub_81CEF3C - .4byte sub_81CEFDC - .4byte sub_81CF330 - .4byte sub_81CF3A0 - .4byte sub_81CF3D0 - .4byte sub_81CEFF0 - .4byte sub_81CF3F8 - .4byte sub_81CD024 - .4byte sub_81CD070 - .4byte sub_81CDDD4 - .4byte sub_81CDE2C - .4byte sub_81CDE64 - .4byte sub_81CD1C0 - .4byte sub_81CECA0 - .4byte sub_81CEF98 - .4byte sub_81CEFDC - .4byte sub_81CF368 - .4byte sub_81CF3A0 - .4byte sub_81CF3D0 - .4byte sub_81CEFF0 - .4byte sub_81CF3F8 - .4byte sub_81CAAE8 - .4byte sub_81CAB24 - .4byte sub_81CB260 - .4byte sub_81CB29C - .4byte sub_81CB2CC - .4byte sub_81CAB38 - .4byte sub_81CB2E0 - .4byte sub_81CF9BC - .4byte sub_81CFA34 - .4byte sub_81CFDD0 - .4byte sub_81CFE40 - .4byte sub_81CFE70 - .4byte sub_81CFA48 - .4byte sub_81CFE98 - .4byte sub_81D0450 - .4byte sub_81D04A0 - .4byte sub_81D0978 - .4byte sub_81D09B0 - .4byte sub_81D09E0 - .4byte sub_81D04B8 - .4byte sub_81D09F4 - .4byte sub_81CFA04 - .4byte sub_81CFA34 - .4byte sub_81CFE08 - .4byte sub_81CFE40 - .4byte sub_81CFE70 - .4byte sub_81CFA48 - .4byte sub_81CFE98 - -gUnknown_0861F590:: @ 861F590 - .incbin "graphics/pokenav/icon2.gbapal" - -gUnknown_0861F5B0:: @ 861F5B0 - .incbin "graphics/pokenav/icon2.4bpp.lz" - -gUnknown_0861F994:: @ 861F994 - .incbin "graphics/pokenav/icon2_unused.4bpp.lz" - -gUnknown_0861FA04:: @ 861FA04 - .byte 0x50 - .byte 0x0 - .byte 0x0 - .byte 0x0 - -gUnknown_0861FA08:: @ 861FA08 - window_template 0, 1, 0x16, 0x10, 0x2, 0x0, 0x36 - null_window_template - -gUnknown_0861FA18:: @ 861FA18 - .4byte gUnknown_085EBED5 - .4byte gUnknown_085EBED9 - .4byte gUnknown_085EBEE9 - .4byte gUnknown_085EBEF9 - .4byte gUnknown_085EBF0E - .4byte gUnknown_085EBF22 - .4byte gUnknown_085EBF39 - .4byte gUnknown_085EBF49 - .4byte gUnknown_085EBF57 - .4byte gUnknown_085EBF60 - .4byte gUnknown_085EBF73 - .4byte gUnknown_085EBF84 - -gUnknown_0861FA48:: @ 861FA48 - .byte 0x4 - .byte 0x1 - .byte 0x2 - .byte 0x0 - -gUnknown_0861FA4C:: @ 861FA4C - obj_tiles gUnknown_0861F5B0, 0x1000, 0 - -gUnknown_0861FA54:: @ 861FA54 - obj_pal gUnknown_0861F590, 0 - null_obj_pal - -gUnknown_0861FA64:: @ 861FA64 - obj_tiles gPokenavLeftHeaderHoennMap_Gfx, 0xC00, 2 - gUnknown_0861FA6C:: @ 861FA6C obj_tiles gPokenavLeftHeaderMainMenu_Gfx, 0x20, 3 obj_tiles gPokenavLeftHeaderCondition_Gfx, 0x20, 1 diff --git a/include/graphics.h b/include/graphics.h index 58a9666a62..48c00943b1 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4007,9 +4007,17 @@ extern const u32 gBerryPalette_Enigma[]; //credits extern const u32 gCreditsCopyrightEnd_Gfx[]; -//pokenav condition marker +//pokenav extern const u8 gPokenavConditionMarker_Gfx[]; extern const u16 gPokenavConditionMarker_Pal[]; +extern const u16 gPokenavHeader_Pal[]; +extern const u32 gPokenavHeader_Gfx[]; +extern const u32 gPokenavHeader_Tilemap[]; +extern const u32 gPokenavLeftHeaderHoennMap_Gfx[]; +extern const u32 gPokenavLeftHeaderMainMenu_Gfx[]; +extern const u32 gPokenavLeftHeaderCondition_Gfx[]; +extern const u32 gPokenavLeftHeaderRibbons_Gfx[]; +extern const u32 gPokenavLeftHeaderMatchCall_Gfx[]; extern const u32 gUnknown_08D9862C[]; extern const u32 gUnknown_08D98CC8[]; diff --git a/include/strings.h b/include/strings.h index 9557dcca2a..3acbc1c553 100644 --- a/include/strings.h +++ b/include/strings.h @@ -986,6 +986,19 @@ extern const u8 gText_SomeonesPC[]; extern const u8 gText_PlayersPC[]; extern const u8 gText_WhichPCShouldBeAccessed[]; +extern const u8 gText_Navgear_ClearButtonList[]; +extern const u8 gText_NavgearMap_ZoomedOutButtons[]; +extern const u8 gText_NavgearMap_ZoomedInButtons[]; +extern const u8 gText_NavgearCondition_MonListButtons[]; +extern const u8 gText_NavgearCondition_MonStatusButtons[]; +extern const u8 gText_NavgearCondition_MarkingButtons[]; +extern const u8 gText_NavgearMatchCall_TrainerListButtons[]; +extern const u8 gText_NavgearMatchCall_CallMenuButtons[]; +extern const u8 gText_NavgearMatchCall_CheckTrainerButtons[]; +extern const u8 gText_NavgearRibbons_MonListButtons[]; +extern const u8 gText_NavgearRibbons_RibbonListButtons[]; +extern const u8 gText_NavgearRibbons_RibbonCheckButtons[]; + extern const u8 gUnknown_085EAD37[]; extern const u8 gUnknown_085EAD41[]; extern const u8 gUnknown_085EAD67[]; diff --git a/ld_script.txt b/ld_script.txt index 306a1f4b07..77bc56ecc7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -289,6 +289,7 @@ SECTIONS { src/pokemon_summary_screen.o(.text); src/unk_pokedex_area_screen_helper.o(.text); src/battle_pyramid_bag.o(.text); + src/pokenav.o(.text); asm/pokenav.o(.text); src/pokenav_match_call.o(.text); asm/rom_81D1C44.o(.text); @@ -591,6 +592,7 @@ SECTIONS { src/pokemon_summary_screen.o(.rodata); src/unk_pokedex_area_screen_helper.o(.rodata); src/battle_pyramid_bag.o(.rodata); + src/pokenav.o(.rodata); data/pokenav.o(.rodata); src/pokenav_match_call.o(.rodata); data/rom_81D1C44.o(.rodata); diff --git a/src/pokedex.c b/src/pokedex.c index ac38bdc98c..2ebc336225 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4041,7 +4041,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top) lsls r2, 24\n\ lsrs r2, 24\n\ str r2, [sp, 0x10]\n\ - ldr r5, =0x000186a0\n\ + ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\ muls r0, r5\n\ ldr r1, =0x000011b8\n\ bl __divsi3\n\ @@ -4075,7 +4075,7 @@ _080C04C0:\n\ mov r8, r1\n\ movs r6, 0x1\n\ _080C04C6:\n\ - ldr r1, =0x000186a0\n\ + ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\ adds r0, r7, 0\n\ bl __umodsi3\n\ adds r7, r0, 0\n\ diff --git a/src/pokenav.c b/src/pokenav.c new file mode 100644 index 0000000000..ff687e8dc5 --- /dev/null +++ b/src/pokenav.c @@ -0,0 +1,1211 @@ +#include "global.h" +#include "alloc.h" +#include "task.h" +#include "main.h" +#include "overworld.h" +#include "field_weather.h" +#include "palette.h" +#include "pokemon_storage_system.h" +#include "sound.h" +#include "constants/songs.h" +#include "window.h" +#include "gpu_regs.h" +#include "bg.h" +#include "menu.h" +#include "graphics.h" +#include "gba/macro.h" +#include "decompress.h" +#include "strings.h" +#include "constants/rgb.h" + +#define UNKNOWN_OFFSET 100000 + +struct UnknownStruct_0203CF40 +{ + u32 (*field0)(void); + u32 field4; + u16 field8; + u16 fieldA; + u32 fieldC; + void *field10[19]; +}; + +struct UnknownStruct_sub_81C76C4 +{ + u32 data[523]; +}; + +extern u32 sub_81C9430(void); +extern void sub_81CAADC(void); +extern u32 sub_81C99D4(void); +extern void sub_8199D98(void); +extern void sub_81C7D28(void); +extern u32 sub_81C9298(void); +extern u32 sub_81C941C(void); +extern u32 sub_81C9924(void); +extern u32 sub_81C99C0(void); +extern u32 sub_81C9990(void); +extern u32 sub_81C9940(void); +extern u32 sub_81C9338(void); +extern u32 sub_81C9368(void); +extern u32 sub_81C92CC(void); +extern u32 sub_81C9304(void); +extern u32 sub_81CC4D4(void); +extern u32 sub_81CC554(void); +extern u32 sub_81CC5F4(void); +extern u32 sub_81CC62C(void); +extern u32 sub_81CC65C(void); +extern u32 sub_81CC524(void); +extern u32 sub_81CC670(void); +extern u32 sub_81CCFD8(void); +extern u32 sub_81CD070(void); +extern u32 sub_81CDDD4(void); +extern u32 sub_81CDE2C(void); +extern u32 sub_81CDE64(void); +extern u32 sub_81CD1C0(void); +extern u32 sub_81CECA0(void); +extern u32 sub_81CEF3C(void); +extern u32 sub_81CEFDC(void); +extern u32 sub_81CF330(void); +extern u32 sub_81CF3A0(void); +extern u32 sub_81CF3D0(void); +extern u32 sub_81CEFF0(void); +extern u32 sub_81CF3F8(void); +extern u32 sub_81CD024(void); +extern u32 sub_81CEF98(void); +extern u32 sub_81CF368(void); +extern u32 sub_81CAAE8(void); +extern u32 sub_81CAB24(void); +extern u32 sub_81CB260(void); +extern u32 sub_81CB29C(void); +extern u32 sub_81CB2CC(void); +extern u32 sub_81CAB38(void); +extern u32 sub_81CB2E0(void); +extern u32 sub_81CF9BC(void); +extern u32 sub_81CFA34(void); +extern u32 sub_81CFDD0(void); +extern u32 sub_81CFE40(void); +extern u32 sub_81CFE70(void); +extern u32 sub_81CFA48(void); +extern u32 sub_81CFE98(void); +extern u32 sub_81D0450(void); +extern u32 sub_81D04A0(void); +extern u32 sub_81D0978(void); +extern u32 sub_81D09B0(void); +extern u32 sub_81D09E0(void); +extern u32 sub_81D04B8(void); +extern u32 sub_81D09F4(void); +extern u32 sub_81CFA04(void); +extern u32 sub_81CFE08(void); + +u32 sub_81C791C(s32 a0); +bool32 sub_81C756C(u32 a0); +bool32 sub_81C76C4(void); +u32 AnyMonHasRibbon(void); +u32 sub_81C75E0(void); +u32 sub_81C75D4(void); +u32 sub_81C76FC(void); +u32 sub_81C786C(void); +u32 sub_81C7764(s32 a0); +u32 atk47_cmd47(s32 a0); +bool32 sub_81C7738(void); +void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2); +void sub_81C7834(u32 (*a0)(void), u32(*a1)(void)); +void sub_81C7360(struct UnknownStruct_0203CF40 *a0); +void sub_81C7650(u32 index); +void sub_81C7850(u32 a0); +void sub_81C7BF8(u32 a0); +void sub_81C71E4(u8 a0); +void sub_81C7170(u8 a0); +void sub_81C742C(u8 taskId); +void sub_81C7710(void); +void sub_81C75F4(void); +void sub_81C7334(void); +void sub_81C7418(void); +void sub_81C7400(void); +void sub_81C7C28(void); +void sub_81C72BC(void); +void sub_81C7B74(void); +void sub_81C7C94(void); + + +u32 (*const gUnknown_0861F3EC[15][7])(void) = +{ + { + sub_81C9298, + sub_81C941C, + sub_81C9924, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81C9298, + sub_81C941C, + sub_81C9940, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81C9338, + sub_81C941C, + sub_81C9940, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81C9368, + sub_81C941C, + sub_81C9940, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81C92CC, + sub_81C941C, + sub_81C9940, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81C9304, + sub_81C941C, + sub_81C9940, + sub_81C9990, + sub_81C99C0, + sub_81C9430, + sub_81C99D4, + }, + { + sub_81CC4D4, + sub_81CC554, + sub_81CC5F4, + sub_81CC62C, + sub_81CC65C, + sub_81CC524, + sub_81CC670, + }, + { + sub_81CCFD8, + sub_81CD070, + sub_81CDDD4, + sub_81CDE2C, + sub_81CDE64, + sub_81CD1C0, + sub_81CECA0, + }, + { + sub_81CEF3C, + sub_81CEFDC, + sub_81CF330, + sub_81CF3A0, + sub_81CF3D0, + sub_81CEFF0, + sub_81CF3F8, + }, + { + sub_81CD024, + sub_81CD070, + sub_81CDDD4, + sub_81CDE2C, + sub_81CDE64, + sub_81CD1C0, + sub_81CECA0, + }, + { + sub_81CEF98, + sub_81CEFDC, + sub_81CF368, + sub_81CF3A0, + sub_81CF3D0, + sub_81CEFF0, + sub_81CF3F8, + }, + { + sub_81CAAE8, + sub_81CAB24, + sub_81CB260, + sub_81CB29C, + sub_81CB2CC, + sub_81CAB38, + sub_81CB2E0, + }, + { + sub_81CF9BC, + sub_81CFA34, + sub_81CFDD0, + sub_81CFE40, + sub_81CFE70, + sub_81CFA48, + sub_81CFE98, + }, + { + sub_81D0450, + sub_81D04A0, + sub_81D0978, + sub_81D09B0, + sub_81D09E0, + sub_81D04B8, + sub_81D09F4, + }, + { + sub_81CFA04, + sub_81CFA34, + sub_81CFE08, + sub_81CFE40, + sub_81CFE70, + sub_81CFA48, + sub_81CFE98, + }, +}; + +const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal"); +const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz"); +const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz"); + +const struct BgTemplate gUnknown_0861FA04 = +{ + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 5, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, +}; + +const struct WindowTemplate gUnknown_0861FA08[2] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 22, + .width = 16, + .height = 2, + .paletteNum = 0, + .baseBlock = 0x36, + }, + { + .bg = 0xFF, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 0, + .height = 0, + .paletteNum = 0, + .baseBlock = 0, + }, +}; + +const u8 *const (MenuButtonReminders[12]) = +{ + gText_Navgear_ClearButtonList, + gText_NavgearMap_ZoomedOutButtons, + gText_NavgearMap_ZoomedInButtons, + gText_NavgearCondition_MonListButtons, + gText_NavgearCondition_MonStatusButtons, + gText_NavgearCondition_MarkingButtons, + gText_NavgearMatchCall_TrainerListButtons, + gText_NavgearMatchCall_CallMenuButtons, + gText_NavgearMatchCall_CheckTrainerButtons, + gText_NavgearRibbons_MonListButtons, + gText_NavgearRibbons_RibbonListButtons, + gText_NavgearRibbons_RibbonCheckButtons, +}; + +const u8 gMenuButtonReminderColor[4] = +{ + 4, 1, 2, 0 +}; + +const struct CompressedSpriteSheet gUnknown_0861FA4C[] = +{ + { + .data = gUnknown_0861F5B0, + .size = 0x1000, + .tag = 0, + } +}; + +const struct SpritePalette gUnknown_0861FA54[2] = +{ + { + .data = gUnknown_0861F590, + .tag = 0, + }, + { + .data = NULL, + .tag = 0, + } +}; + +const struct CompressedSpriteSheet gUnknown_0861FA64 = +{ + .data = gPokenavLeftHeaderHoennMap_Gfx, + .size = 0xC00, + .tag = 2 +}; + +extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40; +extern u8 gUnknown_0203CF3C; +extern const struct SpriteTemplate gUnknown_0861FB04; + +u32 sub_81C7078(u32 (*a0)(s32), u32 a1) +{ + u16 taskId; + + if (!is_c1_link_related_active()) + taskId = CreateTask(sub_81C7170, a1); + else + taskId = CreateTask(sub_81C71E4, a1); + + SetWordTaskArg(taskId, 1, (u32)a0); + + gTasks[taskId].data[3] = gUnknown_0203CF3C; + return ((gUnknown_0203CF3C++) << 16) | taskId; +} + +bool32 sub_81C70D8(u32 a0) +{ + u32 v1 = a0 & 0xFFFF; + u32 v2 = a0 >> 16; + if (gTasks[v1].isActive + && (gTasks[v1].func == sub_81C7170 || gTasks[v1].func == sub_81C71E4) + && gTasks[v1].data[3] == v2) + { + + return TRUE; + } + else + { + return FALSE; + } +} + +bool32 sub_81C7124(u32 a0) +{ + s32 i; + for (i = 0; i < 16; i++) + { + if (gTasks[i].isActive + && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4)) + { + u32 arg = GetWordTaskArg((u8)i, 1); + if (arg == a0) + return TRUE; + } + } + return FALSE; +} + +void sub_81C7170(u8 taskId) +{ + s16 *dataPtr; + u32 (*func)(u32); + bool32 exitLoop; + + func = (u32 (*)(u32))GetWordTaskArg(taskId, 1); + dataPtr = gTasks[taskId].data; + exitLoop = FALSE; + while (!exitLoop) + { + u32 v1 =((u32 (*)(u32))func)(dataPtr[0]); + switch (v1) + { + case 1: + dataPtr[0] = dataPtr[0] + 1; + break; + case 0: + dataPtr[0]++; + return; + case 4: + DestroyTask(taskId); + return; + default: + dataPtr[0] = v1 - 5; + break; + case 3: + break; + case 2: + return; + } + } +} + +void sub_81C71E4(u8 taskId) +{ + u32 (*func)(u32); + s16 *data; + u32 v1; + + if (sub_8087598()) + return; + func = (u32 (*)(u32))GetWordTaskArg(taskId, 1); + data = gTasks[taskId].data; + v1 = func(data[0]); + switch (v1) + { + case 0: + case 1: + data[0]++; + break; + case 4: + DestroyTask(taskId); + break; + default: + data[0] = v1 - 5; + break; + case 2: + case 3: + break; + } +} + +void CB2_PokeNav(void) +{ + gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40)); + if (gUnknown_0203CF40 == NULL) + { + SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); + } + else + { + sub_81C7360(gUnknown_0203CF40); + ResetTasks(); + SetVBlankCallback(NULL); + CreateTask(sub_81C742C, 0); + SetMainCallback2(sub_81C7400); + SetVBlankCallback(sub_81C7418); + } +} + +void sub_81C72A4() +{ + SetMainCallback2(sub_81C72BC); + FadeScreen(1, 0); +} + +void sub_81C72BC() +{ + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40)); + if (gUnknown_0203CF40 == NULL) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else + { + sub_81C7360(gUnknown_0203CF40); + gUnknown_0203CF40->field8 = 1; + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + CreateTask(sub_81C742C, 0); + SetMainCallback2(sub_81C7400); + SetVBlankCallback(sub_81C7418); + } + } +} + +void sub_81C7334() +{ + s32 i; + for (i = 0; i < 19; i++) + { + sub_81C7650(i); + } + + Free(gUnknown_0203CF40); + gUnknown_0203CF40 = NULL; + InitKeys(); +} + +// Clears UnknownStruct_0203CF40 +void sub_81C7360(struct UnknownStruct_0203CF40 *a0) +{ + s32 i; + void **arrayPtr; + void *fill; + + fill = NULL; + i = 18; + arrayPtr = &(a0->field10[18]); + for (i; i >= 0; i--) + { + *arrayPtr = fill; + arrayPtr -= 1; + } + a0->field8 = 0; + a0->field4 = 0; + a0->fieldC = AnyMonHasRibbon(); + a0->field0 = NULL; +} + +bool32 AnyMonHasRibbon() +{ + s32 i; + s32 j; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES) + && !GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_RIBBON_COUNT) != 0) + { + return TRUE; + } + } + + for (j = 0; j < TOTAL_BOXES_COUNT; j++) + { + for (i = 0; i < IN_BOX_COUNT; i++) + { + if (CheckBoxMonSanityAt(j, i) + && GetBoxMonDataAt(j, i, MON_DATA_RIBBON_COUNT) != 0) + { + return TRUE; + } + } + } + + return FALSE; +} + +void sub_81C7400() +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_81C7418() +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +void sub_81C742C(u8 taskId) +{ + s16 *dataPtr; + u32 v1; + bool32 v2; + + dataPtr = gTasks[taskId].data; + + switch (dataPtr[0]) + { + case 0: + sub_81C76C4(); + dataPtr[0] = 1; + break; + case 1: + if (sub_81C76FC()) + break; + sub_81C756C(UNKNOWN_OFFSET); + dataPtr[0] = 4; + break; + case 2: + if (sub_81C786C()) + break; + dataPtr[0] = 3; + case 3: + v1 = sub_81C75E0(); + if (v1 == -1) + { + sub_81C7710(); + dataPtr[0] = 5; + } + else if (v1 >= UNKNOWN_OFFSET) + { + gUnknown_0861F3EC[gUnknown_0203CF40->field4][6](); + gUnknown_0861F3EC[gUnknown_0203CF40->field4][5](); + if (sub_81C756C(v1)) + { + dataPtr[0] = 4; + } + else + { + sub_81C7710(); + dataPtr[0] = 5; + } + } + else if (v1 != 0) + { + sub_81C7850(v1); + if (sub_81C786C()) + dataPtr[0] = 2; + } + break; + case 4: + if (!sub_81C75D4()) + dataPtr[0] = 3; + break; + case 5: + if (!sub_81C7738()) + { + v2 = gUnknown_0203CF40->field8 != 0; + sub_81C9430(); + sub_81C7334(); + if (v2) + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + else + SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); + } + break; + } +} + +bool32 sub_81C756C(u32 a0) +{ + u32 index; + + index = a0 - UNKNOWN_OFFSET; + sub_81C75F4(); + if (!gUnknown_0861F3EC[index][0]()) + return FALSE; + if (!gUnknown_0861F3EC[index][2]()) + return FALSE; + sub_81C7834(gUnknown_0861F3EC[index][3], gUnknown_0861F3EC[index][4]); + gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index][1]; + gUnknown_0203CF40->field4 = index; + return TRUE; +} + +u32 sub_81C75D4(void) +{ + return sub_81C786C(); +} + +u32 sub_81C75E0(void) +{ + return gUnknown_0203CF40->field0(); +} + +void sub_81C75F4(void) +{ + InitKeys(); +} + +void IndirectSetVBlankCallback(IntrCallback callback) +{ + SetVBlankCallback(callback); +} + +void sub_81C760C(void) +{ + SetVBlankCallback(sub_81C7418); +} + +void *sub_81C761C(u32 index, u32 size) +{ + return gUnknown_0203CF40->field10[index] = (void*)Alloc(size); +} + +void *sub_81C763C(u32 index) +{ + return gUnknown_0203CF40->field10[index]; +} + +void sub_81C7650(u32 index) +{ + if (gUnknown_0203CF40->field10[index] != NULL) + FREE_AND_SET_NULL(gUnknown_0203CF40->field10[index]); +} + +u16 sub_81C767C(void) +{ + return gUnknown_0203CF40->field8; +} + +void sub_81C7688(u16 a0) +{ + gUnknown_0203CF40->field8 = a0; +} + +void sub_81C7694(u32 a0) +{ + u32 value; + value = a0; + if (a0 > 4) + value = 0; + gUnknown_0203CF40->fieldA = value; +} + +u16 sub_81C76AC(void) +{ + return gUnknown_0203CF40->fieldA; +} + +u32 sub_81C76B8(void) +{ + return gUnknown_0203CF40->fieldC; +} + +bool32 sub_81C76C4(void) +{ + struct UnknownStruct_sub_81C76C4 *v1; + + v1 = (struct UnknownStruct_sub_81C76C4*)sub_81C761C(0, sizeof(struct UnknownStruct_sub_81C76C4)); + if (v1 == NULL) + { + return FALSE; + } + else + { + ResetSpriteData(); + FreeAllSpritePalettes(); + v1->data[3] = sub_81C7078(sub_81C7764, 1); + return TRUE; + } +} + +u32 sub_81C76FC(void) +{ + u32 *v1; + v1 = sub_81C763C(0); + return sub_81C70D8(v1[3]); +} + +void sub_81C7710(void) +{ + PlaySE(SE_PN_OFF); + sub_81CAADC(); + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); +} + +bool32 sub_81C7738(void) +{ + if (!gPaletteFade.active) + { + sub_81C99D4(); + sub_81C7C94(); + FreeAllWindowBuffers(); + return FALSE; + } else + { + return TRUE; + } +} + +u32 sub_81C7764(s32 a0) +{ + u32 *v1; + + switch (a0) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + FreeAllWindowBuffers(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, &gUnknown_0861FA04, 1); + sub_8199D98(); + reset_temp_tile_data_buffers(); + return 1; + case 1: + v1 = sub_81C763C(0); + decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0); + SetBgTilemapBuffer(0, &v1[11]); + CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0); + CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20); + CopyBgTilemapBufferToVram(0); + return 0; + case 2: + if (free_temp_tile_data_buffers_if_possible()) + return 2; + + sub_81C7B74(); + return 0; + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return 2; + + sub_81C7C28(); + sub_81C7D28(); + ShowBg(0); + return 4; + default: + return 4; + } +} + +void sub_81C7834(u32 (*a0)(void), u32(*a1)(void)) +{ + u32 (**v1)(void); + + v1 = sub_81C763C(0); + v1[0] = a0; + v1[1] = a1; + v1[2] = NULL; +} + +void sub_81C7850(u32 a0) +{ + void (**v1)(u32); + + v1 = sub_81C763C(0); + v1[2] = NULL; + v1[0](a0); +} + +u32 sub_81C786C(void) +{ + u32 (**v1)(void); + + v1 = sub_81C763C(0); + return v1[1](); +} + +void sub_81C7880(void) +{ + u32 *v1; + + v1 = sub_81C763C(0); + v1[3] = sub_81C7078(atk47_cmd47, 4); +} + +void sub_81C78A0(void) +{ + u32 *v1; + + v1 = sub_81C763C(0); + v1[3] = sub_81C7078(sub_81C791C, 4); +} + +bool32 sub_81C78C0(void) +{ + u32 *v1; + + v1 = sub_81C763C(0); + return sub_81C70D8(v1[3]); +} + +u32 atk47_cmd47(s32 a0) +{ + switch (a0) + { + default: + return 4; + case 1: + return 0; + case 0: + return 0; + case 2: + if ((u32)ChangeBgY(0, 384, 1) >= 0x2000) + { + ChangeBgY(0, 0x2000, 0); + return 4; + } + + return 2; + } +} + +u32 sub_81C791C(s32 a0) +{ + if (ChangeBgY(0, 384, 2) <= 0) + { + ChangeBgY(0, 0, 0); + return 4; + } + return 2; +} + +void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size) { + CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size); +} + +void sub_81C795C(const struct SpritePalette *palettes) +{ + const struct SpritePalette *current; + u32 index; + + for (current = palettes; current->data != NULL; current++) + { + index = AllocSpritePalette(current->tag); + if (index == 0xFF) + { + break; + } + else + { + index = (index * 16) + 0x100; + CopyPaletteIntoBufferUnfaded(current->data, index, 0x20); + } + } +} + +void sub_81C7990(u32 a0, u16 a1) +{ + CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16)); +} + +__attribute__((naked)) +void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 unused, u32 a5, u32 a6) +{ + 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, 0xC\n\ + str r0, [sp]\n\ + str r1, [sp, 0x4]\n\ + mov r10, r2\n\ + str r3, [sp, 0x8]\n\ + ldr r0, [sp, 0x2C]\n\ + cmp r0, 0\n\ + bne _081C79E4\n\ + ldr r2, =0x001fffff\n\ + mov r1, r10\n\ + ands r2, r1\n\ + ldr r0, [sp]\n\ + b _081C79F4\n\ + .pool\n\ +_081C79E4:\n\ + ldr r2, [sp, 0x2C]\n\ + ldr r0, [sp, 0x8]\n\ + cmp r2, r0\n\ + blt _081C7A00\n\ + ldr r2, =0x001fffff\n\ + mov r1, r10\n\ + ands r2, r1\n\ + ldr r0, [sp, 0x4]\n\ +_081C79F4:\n\ + ldr r1, [sp, 0x30]\n\ + bl CpuSet\n\ + b _081C7AAE\n\ + .pool\n\ +_081C7A00:\n\ + movs r2, 0x1\n\ + negs r2, r2\n\ + add r10, r2\n\ + b _081C7AA6\n\ +_081C7A08:\n\ + ldr r1, [sp]\n\ + ldrh r0, [r1]\n\ + movs r2, 0x1F\n\ + mov r9, r2\n\ + mov r1, r9\n\ + ands r1, r0\n\ + mov r9, r1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 21\n\ + movs r1, 0x1F\n\ + ands r1, r2\n\ + mov r8, r1\n\ + lsrs r7, r0, 26\n\ + movs r2, 0x1F\n\ + ands r7, r2\n\ + ldr r0, [sp, 0x4]\n\ + ldrh r4, [r0]\n\ + movs r0, 0x1F\n\ + ands r0, r4\n\ + mov r1, r9\n\ + subs r0, r1\n\ + lsls r0, 8\n\ + ldr r1, [sp, 0x8]\n\ + bl __divsi3\n\ + ldr r2, [sp, 0x2C]\n\ + adds r6, r0, 0\n\ + muls r6, r2\n\ + asrs r6, 8\n\ + lsls r4, 16\n\ + lsrs r0, r4, 21\n\ + movs r1, 0x1F\n\ + ands r0, r1\n\ + mov r2, r8\n\ + subs r0, r2\n\ + lsls r0, 8\n\ + ldr r1, [sp, 0x8]\n\ + bl __divsi3\n\ + ldr r1, [sp, 0x2C]\n\ + adds r5, r0, 0\n\ + muls r5, r1\n\ + asrs r5, 8\n\ + lsrs r4, 26\n\ + movs r2, 0x1F\n\ + ands r4, r2\n\ + subs r4, r7\n\ + lsls r4, 8\n\ + adds r0, r4, 0\n\ + ldr r1, [sp, 0x8]\n\ + bl __divsi3\n\ + ldr r1, [sp, 0x2C]\n\ + muls r0, r1\n\ + asrs r0, 8\n\ + add r6, r9\n\ + movs r2, 0x1F\n\ + ands r6, r2\n\ + add r5, r8\n\ + ands r5, r2\n\ + adds r0, r7, r0\n\ + ands r0, r2\n\ + lsls r0, 10\n\ + lsls r5, 5\n\ + orrs r0, r5\n\ + orrs r0, r6\n\ + ldr r1, [sp, 0x30]\n\ + strh r0, [r1]\n\ + ldr r2, [sp]\n\ + adds r2, 0x2\n\ + str r2, [sp]\n\ + ldr r0, [sp, 0x4]\n\ + adds r0, 0x2\n\ + str r0, [sp, 0x4]\n\ + adds r1, 0x2\n\ + str r1, [sp, 0x30]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + add r10, r1\n\ +_081C7AA6:\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r10, r0\n\ + bne _081C7A08\n\ +_081C7AAE:\n\ + add sp, 0xC\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\ + .syntax divided"); +} + +void sub_81C7AC0(s32 a0) +{ + u32 *v1; + v1 = sub_81C763C(0); + switch (a0) + { + case 0: + BeginNormalPaletteFade(v1[5], -2, 0, 16, RGB_BLACK); + break; + case 1: + BeginNormalPaletteFade(v1[5], -2, 16, 0, RGB_BLACK); + break; + case 2: + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + break; + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK); + break; + } +} + +bool32 IsPaletteFadeActive(void) +{ + return gPaletteFade.active; +} + +void sub_81C7B40(void) +{ + BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK); +} + +void sub_81C7B54(const struct BgTemplate *a0, s32 a1) +{ + s32 i; + if (a1 <= 0) + return; + for (i = a1; i != 0; i--) + { + InitBgFromTemplate(a0++); + } +} + +void sub_81C7B74(void) +{ + u32 *v1; + + v1 = sub_81C763C(0); + InitWindows(&gUnknown_0861FA08[0]); + v1[4] = 0; + sub_81C7BF8(0); + PutWindowTilemap(v1[4]); + CopyWindowToVram(v1[4], 3); // TODO: Use a defined constant here. +} + +void sub_81C7BA4(u32 a0) +{ + u32 *v1; + + v1 = sub_81C763C(0); + sub_81C7BF8(v1[4]); + AddTextPrinterParameterized3(v1[4], 1, 0, 1, gMenuButtonReminderColor, 0, MenuButtonReminders[a0]); +} + +bool8 sub_81C7BE8(void) +{ + return IsDma3ManagerBusyWithBgCopy(); +} + +void sub_81C7BF8(u32 a0) +{ + FillWindowPixelBuffer(a0, 0x44); + FillWindowPixelRect(a0, 0x55, 0, 0, 0x80, 1); +} + +void sub_81C7C28(void) +{ + u32 *v1; + u32 i; + u8 v2; + u32 v3; + u32 v4; + u8 spriteId; + + v1 = sub_81C763C(0); + for (i = 0; i < ARRAY_COUNT(gUnknown_0861FA4C); i++) + { + LoadCompressedSpriteSheet(&gUnknown_0861FA4C[i]); + } + + sub_81C795C(gUnknown_0861FA54); + v2 = IndexOfSpritePaletteTag(0); + v1[5] = ~1 & ~(0x10000 << v2); + spriteId = CreateSprite(&gUnknown_0861FB04, 220, 12, 0); + v1[6] = (u32)(&gSprites[spriteId]); +} + +void sub_81C7C94(void) +{ + void **v1; + v1 = sub_81C763C(0); + DestroySprite(v1[6]); + FreeSpriteTilesByTag(0); + FreeSpritePaletteByTag(0); +} + +void sub_81C7CB4(u16 *a0) +{ + u32 v1; + v1 = GetBgY(0); + a0[19] = (v1 >> 8) * -1; +} + +struct Sprite *sub_81C7CCC(void) +{ + struct Sprite **v1; + struct Sprite *v2; + v1 = sub_81C763C(0); + v2 = v1[6]; + v2->callback = SpriteCallbackDummy; + return v2; +} diff --git a/src/strings.c b/src/strings.c index b0eb048ba5..f81a19083c 100644 --- a/src/strings.c +++ b/src/strings.c @@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here."); const u8 gUnknown_085EBEA8[] = _("STRATEGY"); const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON"); const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION"); -const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}"); -const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL"); +const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}"); +const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL"); +const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL"); const u8 gText_NatureSlash[] = _("NATURE/"); const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!"); const u8 gText_InParty[] = _("IN PARTY");