diff options
60 files changed, 2417 insertions, 4319 deletions
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 031bf2128..9a8b378ac 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -12802,7 +12802,7 @@ _08104EDC: lsls r0, 16 cmp r2, r0 bgt _08104F1A - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 @@ -12839,7 +12839,7 @@ _08104F1A: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_8104F54 str r0, [r5] add sp, 0xC @@ -12919,7 +12919,7 @@ _08104FCC: ldrsh r0, [r3, r1] cmp r0, 0 blt _08104FF0 - ldr r2, =gUnknown_02038C28 + ldr r2, =gScanlineEffectRegBuffers lsls r0, 1 adds r0, r2 ldrh r1, [r3, 0x14] @@ -12943,7 +12943,7 @@ _08104FF0: ldrsh r1, [r3, r2] cmp r0, r1 blt _0810500E - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] adds r0, r4, 0 @@ -18518,7 +18518,7 @@ _08107D8C: movs r3, 0 movs r2, 0x10 ldrsh r0, [r4, r2] - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers mov r12, r1 cmp r3, r0 bge _08107DCA @@ -18555,7 +18555,7 @@ _08107DCA: ldrsh r0, [r4, r3] cmp r1, r0 bge _08107E04 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -18584,7 +18584,7 @@ _08107E04: asrs r0, r2, 16 cmp r0, 0x9F bgt _08107E3A - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -18652,7 +18652,7 @@ _08107E7A: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -18689,8 +18689,8 @@ _08107ED8: ldrsh r0, [r4, r1] cmp r3, r0 bge _08107F0C - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107EE6: lsls r1, r3, 16 asrs r1, 16 @@ -18719,8 +18719,8 @@ _08107F0C: ldrsh r0, [r4, r3] cmp r1, r0 bge _08107F40 - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107F1E: asrs r3, r2, 16 lsls r2, r3, 1 @@ -18745,8 +18745,8 @@ _08107F40: asrs r0, r1, 16 cmp r0, 0x9F bgt _08108022 - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107F4E: asrs r3, r1, 16 lsls r2, r3, 1 @@ -18771,8 +18771,8 @@ _08107F78: ldrsh r0, [r4, r1] cmp r3, r0 bge _08107FAC - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107F86: lsls r1, r3, 16 asrs r1, 16 @@ -18801,8 +18801,8 @@ _08107FAC: ldrsh r0, [r4, r3] cmp r1, r0 bge _08107FE0 - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107FBE: asrs r3, r2, 16 lsls r2, r3, 1 @@ -18827,8 +18827,8 @@ _08107FE0: asrs r0, r1, 16 cmp r0, 0x9F bgt _0810800C - ldr r6, =gUnknown_02038C28 - ldr r5, =gUnknown_02039B28 + ldr r6, =gScanlineEffectRegBuffers + ldr r5, =gScanlineEffect _08107FEE: asrs r3, r1, 16 lsls r2, r3, 1 @@ -34618,7 +34618,7 @@ _0810FEC0: adds r0, 0x40 cmp r1, r0 bgt _0810FEFA - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -34651,7 +34651,7 @@ _0810FEFA: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_810FF34 str r0, [r4] add sp, 0xC @@ -34700,7 +34700,7 @@ _0810FF66: ldr r0, =gSineTable mov r9, r0 movs r7, 0x3 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers mov r12, r1 movs r2, 0xF0 lsls r2, 3 @@ -34775,7 +34775,7 @@ _0810FFFE: ble _08110026 b _08110014 _0811000E: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _08110014: @@ -38728,7 +38728,7 @@ _08112054: _0811206C: movs r2, 0x2 movs r3, 0x6 - bl sub_80BA384 + bl ScanlineEffect_InitWave lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] @@ -38884,7 +38884,7 @@ _081121A8: beq _081121F0 b _08112258 _081121AE: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 @@ -41152,7 +41152,7 @@ _0811345A: ldrsh r0, [r4, r1] cmp r3, r0 bgt _08113488 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -41175,7 +41175,7 @@ _08113488: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_81134B8 str r0, [r4] add sp, 0xC @@ -41264,7 +41264,7 @@ _0811354E: bl sub_8113574 b _0811356E _08113556: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] ldrh r0, [r2, 0x8] @@ -41292,11 +41292,11 @@ sub_8113574: @ 8113574 ldrsh r0, [r5, r1] cmp r4, r0 bgt _081135CA - ldr r7, =gUnknown_02038C28 + ldr r7, =gScanlineEffectRegBuffers mov r12, r7 ldr r0, =gSineTable mov r8, r0 - ldr r6, =gUnknown_02039B28 + ldr r6, =gScanlineEffect _08113592: lsls r2, r4, 1 ldrb r1, [r6, 0x14] @@ -42169,7 +42169,7 @@ _08113CB0: movs r0, 0x3 bl sub_8114374 movs r3, 0 - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 @@ -42189,7 +42189,7 @@ _08113CDC: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams movs r0, 0x3F eors r7, r0 movs r1, 0xFC @@ -42344,7 +42344,7 @@ _08113E3E: b _08113E5E .pool _08113E58: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _08113E5E: @@ -42534,7 +42534,7 @@ _08114002: str r0, [sp, 0x10] movs r3, 0 add r4, sp, 0x10 - ldr r6, =gUnknown_02038C28 + ldr r6, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r7, r6, r0 @@ -42563,7 +42563,7 @@ _08114010: strb r2, [r4, 0x9] ldr r0, [sp, 0x10] ldr r2, [r4, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams _08114044: ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -42772,7 +42772,7 @@ _081141DA: bne _08114232 b _08114204 _081141FE: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _08114204: @@ -42827,9 +42827,9 @@ sub_8114244: @ 8114244 movs r4, 0 cmp r0, 0 ble _081142A4 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, =gUnknown_02039B28 + ldr r7, =gScanlineEffect _08114278: lsls r2, r4, 16 asrs r2, 16 @@ -42861,9 +42861,9 @@ _081142A4: ldrsh r0, [r6, r2] cmp r1, r0 bgt _081142EE - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, =gUnknown_02039B28 + ldr r7, =gScanlineEffect _081142B8: asrs r4, r3, 16 cmp r4, 0 @@ -42904,8 +42904,8 @@ _081142EE: ldrsh r0, [r6, r3] cmp r1, r0 bge _08114366 - ldr r7, =gUnknown_02038C28 - ldr r4, =gUnknown_02039B28 + ldr r7, =gScanlineEffectRegBuffers + ldr r4, =gScanlineEffect _08114306: asrs r3, r2, 16 cmp r3, 0 @@ -42935,7 +42935,7 @@ _08114338: adds r5, r0, 0 adds r5, 0x9F movs r4, 0 - ldr r3, =gUnknown_02038C28 + ldr r3, =gScanlineEffectRegBuffers movs r2, 0xF0 lsls r2, 3 adds r6, r3, r2 @@ -44235,7 +44235,7 @@ _08114E4E: b _08114E7E .pool _08114E78: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _08114E7E: @@ -44510,7 +44510,7 @@ _08115094: ldrsh r0, [r0, r1] cmp r0, 0 bne _081150DA - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _081150C2: @@ -44561,7 +44561,7 @@ _08115114: asrs r4, r0, 16 cmp r2, r0 bge _08115140 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -44584,7 +44584,7 @@ _08115140: asrs r0, r1, 16 cmp r0, 0x9F bgt _0811516E - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers lsls r0, r3, 16 asrs r0, 16 adds r3, r0, 0 @@ -44616,7 +44616,7 @@ _0811516E: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams add sp, 0xC pop {r4-r6} pop {r0} @@ -50740,9 +50740,9 @@ _08118442: strh r0, [r1, 0xC] _0811845A: movs r3, 0 - ldr r5, =gUnknown_02039B28 + ldr r5, =gScanlineEffect mov r9, r5 - ldr r7, =gUnknown_02038C28 + ldr r7, =gScanlineEffectRegBuffers mov r6, r9 adds r5, r1, 0 _08118466: @@ -50760,8 +50760,8 @@ _08118466: ble _08118466 cmp r3, 0x9F bgt _081184AA - ldr r7, =gUnknown_02038C28 - ldr r6, =gUnknown_02039B28 + ldr r7, =gScanlineEffectRegBuffers + ldr r6, =gScanlineEffect ldr r1, =gTasks mov r2, r12 adds r0, r2, r4 @@ -51089,9 +51089,9 @@ _0811873C: strh r0, [r1, 0xC] _08118752: movs r3, 0 - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect mov r8, r0 - ldr r2, =gUnknown_02038C28 + ldr r2, =gScanlineEffectRegBuffers mov r12, r2 mov r7, r8 adds r4, r1, 0 @@ -51110,9 +51110,9 @@ _08118760: ble _08118760 cmp r3, 0x9F bgt _081187A4 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, =gUnknown_02039B28 + ldr r7, =gScanlineEffect ldr r1, =gTasks adds r0, r6, r5 lsls r0, 3 @@ -51378,9 +51378,9 @@ _081189BA: strh r0, [r1, 0xC] _081189D0: movs r3, 0 - ldr r6, =gUnknown_02039B28 + ldr r6, =gScanlineEffect mov r8, r6 - ldr r7, =gUnknown_02038C28 + ldr r7, =gScanlineEffectRegBuffers adds r4, r1, 0 _081189DA: lsls r2, r3, 1 @@ -51397,8 +51397,8 @@ _081189DA: ble _081189DA cmp r3, 0x9F bgt _08118A1E - ldr r7, =gUnknown_02038C28 - ldr r6, =gUnknown_02039B28 + ldr r7, =gScanlineEffectRegBuffers + ldr r6, =gScanlineEffect ldr r1, =gTasks mov r2, r12 adds r0, r2, r5 @@ -51707,9 +51707,9 @@ _08118C90: strh r0, [r1, 0xC] _08118CA6: movs r3, 0 - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect mov r12, r0 - ldr r2, =gUnknown_02038C28 + ldr r2, =gScanlineEffectRegBuffers mov r8, r2 mov r7, r12 adds r4, r1, 0 @@ -51728,9 +51728,9 @@ _08118CB4: ble _08118CB4 cmp r3, 0x9F bgt _08118CF8 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r8, r0 - ldr r7, =gUnknown_02039B28 + ldr r7, =gScanlineEffect ldr r1, =gTasks adds r0, r5, r6 lsls r0, 3 @@ -52025,7 +52025,7 @@ _08118F28: lsls r1, 7 movs r0, 0xC bl SetGpuReg - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] ldr r1, =gTasks diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index d583f1e85..f3b72792d 100644 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1689,7 +1689,7 @@ _0815AE58: ldrsh r0, [r5, r6] cmp r1, r0 bgt _0815AE8E - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r4 @@ -1729,7 +1729,7 @@ _0815AEA2: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_815AED8 str r0, [r5] add sp, 0xC @@ -1820,7 +1820,7 @@ _0815AF5C: ldrsh r0, [r4, r2] cmp r1, r0 bge _0815AF90 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1848,7 +1848,7 @@ _0815AF90: ldrsh r0, [r4, r2] cmp r1, r0 bgt _0815AFC4 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1877,7 +1877,7 @@ _0815AFC4: ldrsh r0, [r4, r1] cmp r0, 0 beq _0815AFDA - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0815AFDA: @@ -6151,7 +6151,7 @@ _0815D316: ldrh r3, [r0] movs r7, 0 movs r2, 0 - ldr r6, =gUnknown_02038C28 + ldr r6, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r6 @@ -6192,7 +6192,7 @@ _0815D326: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_815D398 str r0, [r4] add sp, 0xC @@ -6304,7 +6304,7 @@ _0815D40E: ldrsh r0, [r6, r3] cmp r1, r0 ble _0815D52E - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect mov r10, r0 ldr r1, [sp, 0x4] lsls r0, r1, 16 @@ -6325,7 +6325,7 @@ _0815D47E: subs r0, r1 lsls r0, 7 adds r2, r0 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers adds r2, r0 lsls r4, 16 asrs r4, 16 @@ -6343,7 +6343,7 @@ _0815D47E: subs r0, r1 lsls r0, 7 adds r3, r0 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers adds r3, r1 lsls r1, r7, 16 asrs r1, 16 @@ -6407,7 +6407,7 @@ _0815D52E: lsls r1, r2, 17 cmp r1, 0 blt _0815D55A - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers ldr r7, [sp, 0x4] lsls r0, r7, 16 asrs r0, 16 @@ -6487,7 +6487,7 @@ _0815D5CC: asrs r0, 16 cmp r0, 0xC ble _0815D63C - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0 diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 91c8215e5..31d5d3fbe 100644 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -11000,8 +11000,8 @@ _0819486C: movs r1, 0 strh r1, [r0, 0x8] _08194878: - bl dp12_8087EA4 - ldr r0, =gUnknown_02038C28 + bl ScanlineEffect_Clear + ldr r0, =gScanlineEffectRegBuffers ldr r2, =0x00001f0a movs r4, 0xF0 lsls r4, 3 @@ -11017,7 +11017,7 @@ _08194888: bge _08194888 movs r5, 0x5B ldr r3, =gUnknown_0860CF44 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers ldr r2, =0x00001f09 ldr r4, =0x00000836 adds r1, r0, r4 @@ -11033,7 +11033,7 @@ _081948A4: ldr r0, [r3] ldr r1, [r3, 0x4] ldr r2, [r3, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams mov r0, r8 bl DestroyTask _081948C2: @@ -11513,7 +11513,7 @@ sub_8194CE4: @ 8194CE4 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .pool diff --git a/asm/cable_club.s b/asm/cable_club.s index 76eba625c..1d2f5d1ff 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1808,7 +1808,7 @@ _080B32E0: _080B32F8: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r1, =gLinkType ldr r2, =0x00002211 adds r0, r2, 0 @@ -1921,7 +1921,7 @@ _080B33E8: _080B3408: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =gLinkType ldr r2, =0x00002211 adds r1, r2, 0 @@ -2399,7 +2399,7 @@ _080B382E: bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen bl sub_8009FAC b _080B3864 _080B3840: @@ -2470,7 +2470,7 @@ _080B38C6: bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen bl Rfu_set_zero b _080B38FC _080B38D8: diff --git a/asm/contest.s b/asm/contest.s index 3c34965ad..e81ce8d5c 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -563,7 +563,7 @@ _080D7B4E: bl sub_80D779C bl sub_80D77E4 bl sub_80D7678 - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl ResetPaletteFade ldr r2, =gPaletteFade ldrb r0, [r2, 0x8] @@ -1367,7 +1367,7 @@ vblank_cb_battle: @ 80D827C bl TransferPlttBuffer bl LoadOam bl ProcessSpriteCopyRequests - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .pool diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 55503fde1..e73c657a9 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -344,7 +344,7 @@ sub_80F5B00: @ 80F5B00 bl SetVBlankCallback bl sub_80F7DF4 bl sub_80F57C4 - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl ResetPaletteFade bl ResetSpriteData bl ResetTasks @@ -492,7 +492,7 @@ sub_80F5C24: @ 80F5C24 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .pool diff --git a/asm/coord_event_weather.s b/asm/coord_event_weather.s deleted file mode 100644 index 7c1188ad6..000000000 --- a/asm/coord_event_weather.s +++ /dev/null @@ -1,156 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_809D7BC -sub_809D7BC: @ 809D7BC - push {lr} - movs r0, 0x1 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7BC - - thumb_func_start sub_809D7C8 -sub_809D7C8: @ 809D7C8 - push {lr} - movs r0, 0x2 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7C8 - - thumb_func_start sub_809D7D4 -sub_809D7D4: @ 809D7D4 - push {lr} - movs r0, 0x3 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7D4 - - thumb_func_start sub_809D7E0 -sub_809D7E0: @ 809D7E0 - push {lr} - movs r0, 0x4 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7E0 - - thumb_func_start sub_809D7EC -sub_809D7EC: @ 809D7EC - push {lr} - movs r0, 0x5 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7EC - - thumb_func_start sub_809D7F8 -sub_809D7F8: @ 809D7F8 - push {lr} - movs r0, 0x6 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D7F8 - - thumb_func_start sub_809D804 -sub_809D804: @ 809D804 - push {lr} - movs r0, 0x9 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D804 - - thumb_func_start sub_809D810 -sub_809D810: @ 809D810 - push {lr} - movs r0, 0x7 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D810 - - thumb_func_start sub_809D81C -sub_809D81C: @ 809D81C - push {lr} - movs r0, 0x8 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D81C - - thumb_func_start sub_809D828 -sub_809D828: @ 809D828 - push {lr} - movs r0, 0xB - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D828 - - thumb_func_start sub_809D834 -sub_809D834: @ 809D834 - push {lr} - movs r0, 0xC - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D834 - - thumb_func_start sub_809D840 -sub_809D840: @ 809D840 - push {lr} - movs r0, 0x14 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D840 - - thumb_func_start sub_809D84C -sub_809D84C: @ 809D84C - push {lr} - movs r0, 0x15 - bl sub_80AEDF0 - pop {r0} - bx r0 - thumb_func_end sub_809D84C - - thumb_func_start trigger_activate_weather -trigger_activate_weather: @ 809D858 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r2, 0 - ldr r3, =gUnknown_085102E0 -_0809D862: - lsls r1, r2, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _0809D87C - adds r0, r3, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - bl _call_via_r0 - b _0809D886 - .pool -_0809D87C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xC - bls _0809D862 -_0809D886: - pop {r4} - pop {r0} - bx r0 - thumb_func_end trigger_activate_weather - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 86c78d2cf..db2ffac14 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -652,7 +652,7 @@ sub_811A7E4: @ 811A7E4 _0811A804: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen b _0811A840 _0811A80E: ldr r0, =gPaletteFade diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index e0e7b5efb..89e6efa6a 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -2155,7 +2155,7 @@ trigger_activate: @ 809D04C cmp r1, 0 bne _0809D062 ldrb r0, [r4, 0x6] - bl trigger_activate_weather + bl DoCoordEventWeather b _0809D082 _0809D062: ldrh r0, [r4, 0x6] diff --git a/asm/field_screen.s b/asm/field_screen.s index 6b49b9c7c..d05028cc6 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -1625,8 +1625,8 @@ _080ABCBC: .pool thumb_func_end sub_80ABC7C - thumb_func_start fade_screen -fade_screen: @ 80ABCD0 + thumb_func_start FadeScreen +FadeScreen: @ 80ABCD0 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 @@ -1762,7 +1762,7 @@ _080ABDE4: pop {r0} bx r0 .pool - thumb_func_end fade_screen + thumb_func_end FadeScreen thumb_func_start sub_80ABDFC sub_80ABDFC: @ 80ABDFC @@ -2339,43 +2339,43 @@ _080AC290: .4byte _080AC300 _080AC2B8: movs r0, 0x1 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2C0: movs r0, 0x2 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2C8: movs r0, 0x3 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2D0: movs r0, 0x4 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2D8: movs r0, 0x5 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2E0: movs r0, 0x6 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2E8: movs r0, 0x9 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2F0: movs r0, 0x7 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC2F8: movs r0, 0x8 - bl sub_80AEDF0 + bl SetWeather b _080AC306 _080AC300: movs r0, 0xB - bl sub_80AEDF0 + bl SetWeather _080AC306: pop {r0} bx r0 @@ -2472,15 +2472,15 @@ _080AC3B6: bx r0 thumb_func_end play_some_sound - thumb_func_start sub_80AC3BC -sub_80AC3BC: @ 80AC3BC + thumb_func_start IsWeatherChangeComplete +IsWeatherChangeComplete: @ 80AC3BC ldr r0, =gUnknown_02038454 ldr r1, =0x000006d3 adds r0, r1 ldrb r0, [r0] bx lr .pool - thumb_func_end sub_80AC3BC + thumb_func_end IsWeatherChangeComplete thumb_func_start sub_80AC3D0 sub_80AC3D0: @ 80AC3D0 @@ -7537,8 +7537,8 @@ GetSav1Weather: @ 80AEDAC .pool thumb_func_end GetSav1Weather - thumb_func_start sub_80AEDBC -sub_80AEDBC: @ 80AEDBC + thumb_func_start SetSav1WeatherFromCurrMapHeader +SetSav1WeatherFromCurrMapHeader: @ 80AEDBC push {r4,r5,lr} ldr r4, =gSaveBlock1Ptr ldr r0, [r4] @@ -7559,10 +7559,10 @@ sub_80AEDBC: @ 80AEDBC pop {r0} bx r0 .pool - thumb_func_end sub_80AEDBC + thumb_func_end SetSav1WeatherFromCurrMapHeader - thumb_func_start sub_80AEDF0 -sub_80AEDF0: @ 80AEDF0 + thumb_func_start SetWeather +SetWeather: @ 80AEDF0 push {lr} bl SetSav1Weather bl GetSav1Weather @@ -7571,7 +7571,7 @@ sub_80AEDF0: @ 80AEDF0 bl weather_set pop {r0} bx r0 - thumb_func_end sub_80AEDF0 + thumb_func_end SetWeather thumb_func_start sub_80AEE08 sub_80AEE08: @ 80AEE08 @@ -7872,13 +7872,13 @@ _080AF06A: bl palette_bg_faded_fill_black movs r0, 0 movs r1, 0 - bl fade_screen + bl FadeScreen b _080AF084 _080AF078: bl palette_bg_faded_fill_white movs r0, 0x2 movs r1, 0 - bl fade_screen + bl FadeScreen _080AF084: pop {r4} pop {r0} @@ -7891,7 +7891,7 @@ sub_80AF08C: @ 80AF08C bl palette_bg_faded_fill_white movs r0, 0x2 movs r1, 0x8 - bl fade_screen + bl FadeScreen pop {r0} bx r0 thumb_func_end sub_80AF08C @@ -7902,7 +7902,7 @@ pal_fill_black: @ 80AF0A0 bl palette_bg_faded_fill_black movs r0, 0 movs r1, 0 - bl fade_screen + bl FadeScreen pop {r0} bx r0 thumb_func_end pal_fill_black @@ -7928,12 +7928,12 @@ sub_80AF0B4: @ 80AF0B4 _080AF0DA: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen b _080AF0EC _080AF0E4: movs r0, 0x3 movs r1, 0 - bl fade_screen + bl FadeScreen _080AF0EC: pop {r4} pop {r0} @@ -8761,7 +8761,7 @@ sub_80AF79C: @ 80AF79C bl music_something movs r0, 0x3 movs r1, 0x8 - bl fade_screen + bl FadeScreen bl play_some_sound ldr r0, =gFieldCallback ldr r1, =sub_80AF3B0 @@ -8990,7 +8990,7 @@ _080AF99A: bl sub_8009FAC movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen bl music_something movs r0, 0x9 bl PlaySE @@ -9572,12 +9572,12 @@ _080AFE30: beq _080AFEBC b _080AFEC6 _080AFE36: - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers adds r0, r1 movs r2, 0x2 ldrsh r1, [r4, r2] @@ -9591,12 +9591,12 @@ _080AFE36: b _080AFEC6 .pool _080AFE64: - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers adds r0, r1 movs r6, 0x2 ldrsh r1, [r4, r6] @@ -9631,7 +9631,7 @@ _080AFEB4: bl DestroyTask b _080AFEC6 _080AFEBC: - bl dp12_8087EA4 + bl ScanlineEffect_Clear adds r0, r5, 0 bl DestroyTask _080AFEC6: @@ -9665,12 +9665,12 @@ _080AFEF4: beq _080AFF80 b _080AFF8A _080AFEFA: - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers adds r0, r1 movs r2, 0x2 ldrsh r1, [r4, r2] @@ -9684,12 +9684,12 @@ _080AFEFA: b _080AFF8A .pool _080AFF28: - ldr r0, =gUnknown_02039B28 + ldr r0, =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers adds r0, r1 movs r6, 0x2 ldrsh r1, [r4, r6] @@ -9724,7 +9724,7 @@ _080AFF78: bl DestroyTask b _080AFF8A _080AFF80: - bl dp12_8087EA4 + bl ScanlineEffect_Clear adds r0, r5, 0 bl DestroyTask _080AFF8A: @@ -9914,7 +9914,7 @@ sub_80B00E8: @ 80B00E8 lsrs r0, 24 cmp r0, 0 beq _080B0116 - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers ldr r1, =gUnknown_0854FE64 lsls r0, 1 adds r0, r1 @@ -9940,7 +9940,7 @@ _080B0116: thumb_func_start door_upload_tiles door_upload_tiles: @ 80B0124 push {r4,lr} - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers ldr r0, =gSaveBlock2Ptr ldr r0, [r0] ldr r1, =0x00000e68 @@ -10261,7 +10261,7 @@ _080B0368: bl sub_8199C30 movs r0, 0 bl schedule_bg_copy_tilemap_to_vram - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers movs r2, 0x4 ldrsh r1, [r5, r2] movs r0, 0x6 @@ -10280,7 +10280,7 @@ _080B0368: ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams movs r0, 0x1 strh r0, [r5] b _080B052C diff --git a/asm/intro.s b/asm/intro.s index efc36e7d9..3e95c6ec7 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -11,7 +11,7 @@ sub_816CBE8: @ 816CBE8 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_816CBE8 @@ -2124,7 +2124,7 @@ task_intro_17: @ 816DEEC movs r1, 0xA0 movs r2, 0x4 movs r3, 0x4 - bl sub_80BA384 + bl ScanlineEffect_InitWave add sp, 0xC pop {r0} bx r0 @@ -2411,7 +2411,7 @@ _0816E156: adds r0, r1 ldr r1, =task_intro_19 str r1, [r0] - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0816E176: @@ -2623,7 +2623,7 @@ task_intro_19: @ 816E2A0 movs r1, 0xA0 movs r2, 0x4 movs r3, 0x4 - bl sub_80BA384 + bl ScanlineEffect_InitWave add sp, 0xC pop {r4} pop {r0} @@ -3038,7 +3038,7 @@ _0816E69C: adds r0, r1 ldr r1, =task_intro_21 str r1, [r0] - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0816E6BC: diff --git a/asm/item_use.s b/asm/item_use.s deleted file mode 100644 index 0d9f30ec3..000000000 --- a/asm/item_use.s +++ /dev/null @@ -1,2863 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SetUpItemUseCallback -@ void SetUpItemUseCallback(u8 taskId) -SetUpItemUseCallback: @ 80FD060 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gSpecialVar_ItemId - ldrh r0, [r1] - cmp r0, 0xAF - bne _080FD084 - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x10] - b _080FD08A - .pool -_080FD084: - ldrh r0, [r1] - bl ItemId_GetType -_080FD08A: - subs r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FD0B8 - ldr r0, =gUnknown_0203CE54 - ldr r2, [r0] - ldr r1, =gUnknown_085920D8 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - adds r0, r5, 0 - bl unknown_ItemMenu_Confirm - b _080FD0CC - .pool -_080FD0B8: - ldr r0, =gUnknown_0203CF2C - ldr r2, [r0] - ldr r1, =gUnknown_085920D8 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - adds r0, r5, 0 - bl sub_81C5B14 -_080FD0CC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end SetUpItemUseCallback - - thumb_func_start SetUpItemUseOnFieldCallback -@ void SetUpItemUseOnFieldCallback() -SetUpItemUseOnFieldCallback: @ 80FD0DC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080FD110 - ldr r1, =gFieldCallback - ldr r0, =MapPostLoadHook_UseItem - str r0, [r1] - adds r0, r2, 0 - bl SetUpItemUseCallback - b _080FD11A - .pool -_080FD110: - ldr r0, =gUnknown_0203A0F4 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 -_080FD11A: - pop {r0} - bx r0 - .pool - thumb_func_end SetUpItemUseOnFieldCallback - - thumb_func_start MapPostLoadHook_UseItem -@ void MapPostLoadHook_UseItem() -MapPostLoadHook_UseItem: @ 80FD124 - push {lr} - bl pal_fill_black - ldr r0, =Task_CallItemUseOnFieldCallback - movs r1, 0x8 - bl CreateTask - pop {r0} - bx r0 - .pool - thumb_func_end MapPostLoadHook_UseItem - - thumb_func_start Task_CallItemUseOnFieldCallback -@ void Task_CallItemUseOnFieldCallback(u8 taskId) -Task_CallItemUseOnFieldCallback: @ 80FD13C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FD158 - ldr r0, =gUnknown_0203A0F4 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_080FD158: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end Task_CallItemUseOnFieldCallback - - thumb_func_start DisplayCannotUseItemMessage -@ void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, u8 *str) -DisplayCannotUseItemMessage: @ 80FD164 - push {r4-r6,lr} - adds r4, r1, 0 - adds r1, r2, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r6, =gStringVar4 - adds r0, r6, 0 - bl StringExpandPlaceholders - cmp r4, 0 - bne _080FD1B4 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FD1A0 - ldr r3, =bag_menu_inits_lists_menu - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r6, 0 - bl DisplayItemMessage - b _080FD1BE - .pool -_080FD1A0: - ldr r1, =gText_DadsAdvice - ldr r2, =sub_81C6714 - adds r0, r5, 0 - bl DisplayItemMessageInBattlePyramid - b _080FD1BE - .pool -_080FD1B4: - ldr r2, =CleanUpAfterFailingToUseRegisteredKeyItemOnField - adds r0, r5, 0 - adds r1, r6, 0 - bl DisplayItemMessageOnField -_080FD1BE: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end DisplayCannotUseItemMessage - - thumb_func_start DisplayDadsAdviceCannotUseItemMessage -@ void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) -DisplayDadsAdviceCannotUseItemMessage: @ 80FD1C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gText_DadsAdvice - bl DisplayCannotUseItemMessage - pop {r0} - bx r0 - .pool - thumb_func_end DisplayDadsAdviceCannotUseItemMessage - - thumb_func_start DisplayCannotDismountBikeMessage -@ void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) -DisplayCannotDismountBikeMessage: @ 80FD1E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gText_CantDismountBike - bl DisplayCannotUseItemMessage - pop {r0} - bx r0 - .pool - thumb_func_end DisplayCannotDismountBikeMessage - - thumb_func_start CleanUpAfterFailingToUseRegisteredKeyItemOnField -@ void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId) -CleanUpAfterFailingToUseRegisteredKeyItemOnField: @ 80FD1F8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - bl sub_8197434 - adds r0, r4, 0 - bl DestroyTask - bl sub_80984F4 - bl ScriptContext2_Disable - pop {r4} - pop {r0} - bx r0 - thumb_func_end CleanUpAfterFailingToUseRegisteredKeyItemOnField - - thumb_func_start CheckIfItemIsTMHMOrEvolutionStone -@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) -CheckIfItemIsTMHMOrEvolutionStone: @ 80FD21C - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl ItemId_GetFieldFunc - ldr r1, =ItemUseOutOfBattle_TMHM - cmp r0, r1 - bne _080FD238 - movs r0, 0x1 - b _080FD24E - .pool -_080FD238: - adds r0, r4, 0 - bl ItemId_GetFieldFunc - ldr r1, =ItemUseOutOfBattle_EvolutionStone - cmp r0, r1 - beq _080FD24C - movs r0, 0 - b _080FD24E - .pool -_080FD24C: - movs r0, 0x2 -_080FD24E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end CheckIfItemIsTMHMOrEvolutionStone - - thumb_func_start sub_80FD254 -sub_80FD254: @ 80FD254 - push {lr} - sub sp, 0x24 - mov r1, sp - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - strh r0, [r1, 0x20] - ldr r1, =bag_menu_mail_related - mov r0, sp - movs r2, 0 - bl ReadMail - add sp, 0x24 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FD254 - - thumb_func_start ItemUseOutOfBattle_Mail -@ void ItemUseOutOfBattle_Mail(int taskId) -ItemUseOutOfBattle_Mail: @ 80FD278 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203CE54 - ldr r2, [r1] - ldr r1, =sub_80FD254 - str r1, [r2] - bl unknown_ItemMenu_Confirm - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_Mail - - thumb_func_start ItemUseOutOfBattle_Bike -@ void ItemUseOutOfBattle_Bike(int taskId) -ItemUseOutOfBattle_Bike: @ 80FD298 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r6, r0, r1 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =0x0000088b - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FD30E - adds r0, r4, 0 - bl MetatileBehavior_IsVerticalRail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FD30E - adds r0, r4, 0 - bl MetatileBehavior_IsHorizontalRail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FD30E - adds r0, r4, 0 - bl MetatileBehavior_IsIsolatedVerticalRail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FD30E - adds r0, r4, 0 - bl MetatileBehavior_IsIsolatedHorizontalRail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FD320 -_080FD30E: - ldrb r1, [r6, 0x6] - adds r0, r5, 0 - bl DisplayCannotDismountBikeMessage - b _080FD350 - .pool -_080FD320: - bl sav1_map_is_biking_allowed - cmp r0, 0x1 - bne _080FD348 - bl IsBikingDisallowedByPlayer - lsls r0, 24 - cmp r0, 0 - bne _080FD348 - ldr r1, =gUnknown_0203A0F4 - ldr r0, =ItemUseOnFieldCB_Bike - str r0, [r1] - adds r0, r5, 0 - bl SetUpItemUseOnFieldCallback - b _080FD350 - .pool -_080FD348: - ldrb r1, [r6, 0x6] - adds r0, r5, 0 - bl DisplayDadsAdviceCannotUseItemMessage -_080FD350: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end ItemUseOutOfBattle_Bike - - thumb_func_start ItemUseOnFieldCB_Bike -ItemUseOnFieldCB_Bike: @ 80FD358 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetSecondaryId - lsls r0, 24 - cmp r0, 0 - bne _080FD378 - movs r0, 0x2 - bl GetOnOffBike - b _080FD37E - .pool -_080FD378: - movs r0, 0x4 - bl GetOnOffBike -_080FD37E: - bl sub_80984F4 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end ItemUseOnFieldCB_Bike - - thumb_func_start CanFish -@ bool8 CanFish() -CanFish: @ 80FD394 - push {r4-r6,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - cmp r0, 0 - bne _080FD41C - movs r0, 0x10 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - bne _080FD41C - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - bne _080FD3EC - bl IsPlayerFacingSurfableFishableWater - lsls r0, 24 - cmp r0, 0 - beq _080FD41C -_080FD3E8: - movs r0, 0x1 - b _080FD41E -_080FD3EC: - adds r0, r5, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - beq _080FD40C - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - beq _080FD3E8 -_080FD40C: - lsls r0, r6, 24 - lsrs r0, 24 - bl MetatileBehavior_8089510 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FD3E8 -_080FD41C: - movs r0, 0 -_080FD41E: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CanFish - - thumb_func_start ItemUseOutOfBattle_Rod -ItemUseOutOfBattle_Rod: @ 80FD428 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl CanFish - cmp r0, 0x1 - bne _080FD44C - ldr r1, =gUnknown_0203A0F4 - ldr r0, =ItemUseOnFieldCB_Rod - str r0, [r1] - adds r0, r4, 0 - bl SetUpItemUseOnFieldCallback - b _080FD45E - .pool -_080FD44C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r4, 0 - bl DisplayDadsAdviceCannotUseItemMessage -_080FD45E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_Rod - - thumb_func_start ItemUseOnFieldCB_Rod -ItemUseOnFieldCB_Rod: @ 80FD468 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetSecondaryId - lsls r0, 24 - lsrs r0, 24 - bl StartFishing - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOnFieldCB_Rod - - thumb_func_start ItemUseOutOfBattle_Itemfinder -ItemUseOutOfBattle_Itemfinder: @ 80FD490 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x27 - bl IncrementGameStat - ldr r1, =gUnknown_0203A0F4 - ldr r0, =ItemUseOnFieldCB_Itemfinder - str r0, [r1] - adds r0, r4, 0 - bl SetUpItemUseOnFieldCallback - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_Itemfinder - - thumb_func_start ItemUseOnFieldCB_Itemfinder -ItemUseOnFieldCB_Itemfinder: @ 80FD4B8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gMapHeader - ldr r0, [r0, 0x4] - adds r1, r4, 0 - bl ItemfinderCheckForHiddenItems - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FD4EC - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80FD504 - str r0, [r1] - b _080FD4F6 - .pool -_080FD4EC: - ldr r1, =gText_ItemFinderNothing - ldr r2, =sub_80FD5CC - adds r0, r4, 0 - bl DisplayItemMessageOnField -_080FD4F6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOnFieldCB_Itemfinder - - thumb_func_start sub_80FD504 -sub_80FD504: @ 80FD504 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r6, r5, 2 - adds r0, r6, r5 - lsls r7, r0, 3 - ldr r0, =gTasks + 0x8 - mov r8, r0 - adds r4, r7, r0 - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FD5B8 - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0x4 - bne _080FD5AC - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0x2 - ldrsh r1, [r4, r2] - bl sub_80FD9B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080FD564 - ldr r1, =gUnknown_085920E4 - subs r0, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl sub_80FDA24 - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, =sub_80FDA94 - str r1, [r0] - b _080FD5C2 - .pool -_080FD564: - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - adds r3, r6, 0 - ldr r7, =gUnknown_085920E4 - movs r6, 0x3 -_080FD574: - adds r0, r1, r7 - adds r1, 0x1 - ldrb r0, [r0] - cmp r2, r0 - bne _080FD584 - adds r0, r1, 0 - ands r0, r6 - strh r0, [r4, 0xA] -_080FD584: - lsls r0, r1, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _080FD574 - ldr r1, =gTasks - adds r0, r3, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80FDADC - str r1, [r0] - movs r0, 0 - strh r0, [r4, 0x6] - strh r0, [r4, 0x4] - b _080FD5C2 - .pool -_080FD5AC: - movs r0, 0x48 - bl PlaySE - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080FD5B8: - ldrh r0, [r4, 0x6] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r4, 0x6] -_080FD5C2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FD504 - - thumb_func_start sub_80FD5CC -sub_80FD5CC: @ 80FD5CC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - bl sub_8197434 - bl sub_80984F4 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FD5CC - - thumb_func_start ItemfinderCheckForHiddenItems -@ bool8 ItemfinderCheckForHiddenItems(struct map_events *events, u8 taskId) -ItemfinderCheckForHiddenItems: @ 80FD5F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r5, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - movs r3, 0 - mov r9, r4 - ldrb r0, [r5, 0x3] - cmp r3, r0 - bge _080FD6A4 - subs r1, 0x5 - mov r8, r1 -_080FD628: - lsls r3, 16 - asrs r1, r3, 16 - ldr r2, [r5, 0x10] - lsls r0, r1, 1 - adds r0, r1 - lsls r4, r0, 2 - adds r1, r4, r2 - ldrb r0, [r1, 0x5] - adds r7, r3, 0 - cmp r0, 0x7 - bne _080FD694 - movs r2, 0xFA - lsls r2, 1 - adds r0, r2, 0 - ldrh r1, [r1, 0xA] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080FD694 - ldr r1, [r5, 0x10] - adds r1, r4, r1 - ldrh r2, [r1] - adds r2, 0x7 - mov r0, sp - ldrh r0, [r0] - subs r2, r0 - ldrh r0, [r1, 0x2] - adds r0, 0x7 - mov r3, r9 - ldrh r1, [r3] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - asrs r1, r2, 16 - movs r3, 0xE0 - lsls r3, 11 - adds r2, r3 - lsrs r2, 16 - cmp r2, 0xE - bhi _080FD694 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, r8 - blt _080FD694 - cmp r2, 0x5 - bgt _080FD694 - adds r0, r6, 0 - bl sub_80FD8E0 -_080FD694: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r3, r0, 16 - asrs r0, 16 - ldrb r2, [r5, 0x3] - cmp r0, r2 - blt _080FD628 -_080FD6A4: - adds r0, r6, 0 - bl sub_80FD7C8 - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x1 - beq _080FD6C4 - movs r0, 0 - b _080FD6C6 - .pool -_080FD6C4: - movs r0, 0x1 -_080FD6C6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ItemfinderCheckForHiddenItems - - thumb_func_start sub_80FD6D4 -sub_80FD6D4: @ 80FD6D4 - push {r4-r6,lr} - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - ldrb r2, [r0, 0x3] - ldr r5, [r0, 0x10] - movs r1, 0 - cmp r1, r2 - bge _080FD728 - lsls r0, r3, 16 - asrs r6, r0, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - adds r3, r5, 0 -_080FD6F2: - ldrb r0, [r3, 0x5] - cmp r0, 0x7 - bne _080FD720 - ldrh r0, [r3] - cmp r6, r0 - bne _080FD720 - ldrh r0, [r3, 0x2] - cmp r4, r0 - bne _080FD720 - movs r1, 0xFA - lsls r1, 1 - adds r0, r1, 0 - ldrh r3, [r3, 0xA] - adds r0, r3 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080FD728 - movs r0, 0x1 - b _080FD72A -_080FD720: - adds r3, 0xC - adds r1, 0x1 - cmp r1, r2 - blt _080FD6F2 -_080FD728: - movs r0, 0 -_080FD72A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FD6D4 - - thumb_func_start sub_80FD730 -sub_80FD730: @ 80FD730 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl mapconnection_get_mapheader - adds r3, r0, 0 - ldrb r0, [r4] - cmp r0, 0x2 - beq _080FD758 - cmp r0, 0x2 - bgt _080FD74E - cmp r0, 0x1 - beq _080FD76C - b _080FD7AC -_080FD74E: - cmp r0, 0x3 - beq _080FD784 - cmp r0, 0x4 - beq _080FD78E - b _080FD7AC -_080FD758: - ldr r0, [r4, 0x4] - adds r0, 0x7 - subs r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, [r3] - ldr r0, [r0, 0x4] - subs r0, 0x7 - adds r0, r6 - b _080FD7A2 -_080FD76C: - ldr r0, [r4, 0x4] - adds r0, 0x7 - subs r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x4] - b _080FD79E - .pool -_080FD784: - ldr r0, [r3] - ldr r0, [r0] - subs r0, 0x7 - adds r0, r5 - b _080FD798 -_080FD78E: - ldr r0, =gMapHeader - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x7 - subs r0, r5, r0 -_080FD798: - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, [r4, 0x4] -_080FD79E: - adds r0, 0x7 - subs r0, r6, r0 -_080FD7A2: - lsls r0, 16 - lsrs r2, r0, 16 - b _080FD7B0 - .pool -_080FD7AC: - movs r0, 0 - b _080FD7C2 -_080FD7B0: - ldr r0, [r3, 0x4] - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - bl sub_80FD6D4 - lsls r0, 24 - lsrs r0, 24 -_080FD7C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FD730 - - thumb_func_start sub_80FD7C8 -sub_80FD7C8: @ 80FD7C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, =gMapHeader - ldr r1, [r0] - ldr r0, [r1] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r0, [r1, 0x4] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - adds r1, 0x7 - cmp r0, r1 - bgt _080FD8CC -_080FD816: - mov r5, sp - ldrh r0, [r5, 0x2] - subs r0, 0x5 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r2, r4, 16 - asrs r1, r2, 16 - movs r6, 0x2 - ldrsh r0, [r5, r6] - adds r0, 0x5 - lsls r3, 16 - mov r8, r3 - cmp r1, r0 - bgt _080FD8B6 - movs r0, 0x7 - str r0, [sp, 0x10] - mov r1, r8 - asrs r1, 16 - mov r9, r1 - mov r10, r0 -_080FD83E: - ldr r3, [sp, 0x10] - cmp r3, r9 - bgt _080FD860 - ldr r5, [sp, 0x8] - lsls r0, r5, 16 - asrs r0, 16 - cmp r9, r0 - bge _080FD860 - asrs r1, r2, 16 - cmp r10, r1 - bgt _080FD860 - ldr r6, [sp, 0xC] - lsls r0, r6, 16 - asrs r0, 16 - lsls r7, r4, 16 - cmp r1, r0 - blt _080FD89E -_080FD860: - mov r0, r8 - asrs r5, r0, 16 - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8088A8C - adds r7, r4, 0 - cmp r0, 0 - beq _080FD89E - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_80FD730 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FD89E - mov r0, sp - ldrh r1, [r0] - subs r1, r5, r1 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r0, 0x2] - subs r2, r6, r2 - lsls r2, 16 - asrs r2, 16 - ldr r0, [sp, 0x4] - bl sub_80FD8E0 -_080FD89E: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r4, r0, 16 - lsls r2, r4, 16 - asrs r1, r2, 16 - mov r3, sp - movs r5, 0x2 - ldrsh r0, [r3, r5] - adds r0, 0x5 - cmp r1, r0 - ble _080FD83E -_080FD8B6: - movs r1, 0x80 - lsls r1, 9 - add r1, r8 - lsrs r3, r1, 16 - asrs r1, 16 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - adds r0, 0x7 - cmp r1, r0 - ble _080FD816 -_080FD8CC: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FD7C8 - - thumb_func_start sub_80FD8E0 -sub_80FD8E0: @ 80FD8E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r12, r2 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r3, r1, r0 - movs r1, 0x4 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080FD918 - strh r7, [r3] - mov r0, r12 - strh r0, [r3, 0x2] - movs r0, 0x1 - strh r0, [r3, 0x4] - b _080FD9A2 - .pool -_080FD918: - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bge _080FD928 - negs r0, r0 - lsls r0, 16 - lsrs r4, r0, 16 - b _080FD92A -_080FD928: - ldrh r4, [r3] -_080FD92A: - movs r1, 0x2 - ldrsh r0, [r3, r1] - ldrh r1, [r3, 0x2] - mov r9, r1 - cmp r0, 0 - bge _080FD93E - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 - b _080FD940 -_080FD93E: - ldrh r2, [r3, 0x2] -_080FD940: - lsls r1, r7, 16 - asrs r0, r1, 16 - cmp r0, 0 - bge _080FD950 - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - b _080FD952 -_080FD950: - lsrs r6, r1, 16 -_080FD952: - mov r1, r12 - lsls r0, r1, 16 - asrs r1, r0, 16 - mov r8, r0 - cmp r1, 0 - bge _080FD964 - negs r0, r1 - lsls r0, 16 - b _080FD966 -_080FD964: - mov r0, r8 -_080FD966: - lsrs r5, r0, 16 - lsls r0, r4, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r2, r1, 16 - adds r4, r0, r2 - lsls r0, r6, 16 - asrs r0, 16 - lsls r1, r5, 16 - asrs r1, 16 - adds r0, r1 - cmp r4, r0 - ble _080FD988 - strh r7, [r3] - mov r1, r12 - strh r1, [r3, 0x2] - b _080FD9A2 -_080FD988: - cmp r4, r0 - bne _080FD9A2 - cmp r2, r1 - bgt _080FD99C - cmp r2, r1 - bne _080FD9A2 - mov r1, r9 - lsls r0, r1, 16 - cmp r0, r8 - bge _080FD9A2 -_080FD99C: - strh r7, [r3] - mov r0, r12 - strh r0, [r3, 0x2] -_080FD9A2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FD8E0 - - thumb_func_start sub_80FD9B0 -sub_80FD9B0: @ 80FD9B0 - push {r4,r5,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bne _080FD9C2 - cmp r1, 0 - beq _080FDA1C -_080FD9C2: - lsls r0, r2, 16 - asrs r2, r0, 16 - adds r5, r0, 0 - cmp r2, 0 - bge _080FD9D4 - negs r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - b _080FD9D6 -_080FD9D4: - lsrs r4, r5, 16 -_080FD9D6: - lsls r0, r1, 16 - asrs r2, r0, 16 - adds r1, r0, 0 - cmp r2, 0 - bge _080FD9E8 - negs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - b _080FD9EA -_080FD9E8: - lsrs r3, r1, 16 -_080FD9EA: - lsls r0, r4, 16 - asrs r2, r0, 16 - lsls r0, r3, 16 - asrs r0, 16 - cmp r2, r0 - ble _080FDA02 - cmp r5, 0 - bge _080FD9FE - movs r0, 0x4 - b _080FDA1E -_080FD9FE: - movs r0, 0x2 - b _080FDA1E -_080FDA02: - cmp r2, r0 - bge _080FDA0C - cmp r1, 0 - blt _080FDA14 - b _080FDA18 -_080FDA0C: - cmp r2, r0 - bne _080FDA1C - cmp r1, 0 - bge _080FDA18 -_080FDA14: - movs r0, 0x1 - b _080FDA1E -_080FDA18: - movs r0, 0x3 - b _080FDA1E -_080FDA1C: - movs r0, 0 -_080FDA1E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FD9B0 - - thumb_func_start sub_80FDA24 -sub_80FDA24: @ 80FDA24 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r4, =gMapObjects - adds r0, r4 - bl FieldObjectClearAnimIfSpecialAnimFinished - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FieldObjectClearAnim - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl npc_sync_anim_pause_bits - adds r0, r5, 0 - bl PlayerTurnInPlace - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDA24 - - thumb_func_start sub_80FDA94 -sub_80FDA94: @ 80FDA94 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FDACA - ldr r1, =gText_ItemFinderNearby - ldr r2, =sub_80FD5CC - adds r0, r4, 0 - bl DisplayItemMessageOnField -_080FDACA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDA94 - - thumb_func_start sub_80FDADC -sub_80FDADC: @ 80FDADC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FDB1C - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FDB50 -_080FDB1C: - ldr r1, =gUnknown_085920E4 - movs r2, 0xA - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - bl sub_80FDA24 - movs r0, 0x1 - strh r0, [r4, 0x4] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x6] - adds r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080FDB50 - ldr r1, =gText_ItemFinderOnTop - ldr r2, =sub_80FD5CC - adds r0, r5, 0 - bl DisplayItemMessageOnField -_080FDB50: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDADC - - thumb_func_start ItemUseOutOfBattle_PokeblockCase -ItemUseOutOfBattle_PokeblockCase: @ 80FDB6C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81221AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FDB98 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r4, 0 - bl DisplayDadsAdviceCannotUseItemMessage - b _080FDBDA - .pool -_080FDB98: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r5, r1, r0 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080FDBC8 - ldr r0, =gUnknown_0203CE54 - ldr r1, [r0] - ldr r0, =sub_80FDBEC - str r0, [r1] - adds r0, r4, 0 - bl unknown_ItemMenu_Confirm - b _080FDBDA - .pool -_080FDBC8: - ldr r0, =gFieldCallback - ldr r1, =sub_80AF6D4 - str r1, [r0] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, =sub_80FDC00 - str r0, [r5] -_080FDBDA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_PokeblockCase - - thumb_func_start sub_80FDBEC -sub_80FDBEC: @ 80FDBEC - push {lr} - ldr r1, =bag_menu_mail_related - movs r0, 0 - bl OpenPokeblockCase - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDBEC - - thumb_func_start sub_80FDC00 -sub_80FDC00: @ 80FDC00 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FDC24 - bl overworld_free_bg_tilemaps - ldr r1, =c2_exit_to_overworld_2_switch - movs r0, 0 - bl OpenPokeblockCase - adds r0, r4, 0 - bl DestroyTask -_080FDC24: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDC00 - - thumb_func_start ItemUseOutOfBattle_CoinCase -ItemUseOutOfBattle_CoinCase: @ 80FDC34 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gStringVar1 - bl GetCoins - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_CoinCase - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080FDC90 - ldr r3, =bag_menu_inits_lists_menu - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl DisplayItemMessage - b _080FDC9A - .pool -_080FDC90: - ldr r2, =CleanUpAfterFailingToUseRegisteredKeyItemOnField - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_080FDC9A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_CoinCase - - thumb_func_start ItemUseOutOfBattle_PowderJar -ItemUseOutOfBattle_PowderJar: @ 80FDCA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gStringVar1 - bl sub_80247BC - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_PowderQty - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080FDCFC - ldr r3, =bag_menu_inits_lists_menu - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl DisplayItemMessage - b _080FDD06 - .pool -_080FDCFC: - ldr r2, =CleanUpAfterFailingToUseRegisteredKeyItemOnField - adds r0, r5, 0 - adds r1, r4, 0 - bl DisplayItemMessageOnField -_080FDD06: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_PowderJar - - thumb_func_start sub_80FDD10 -sub_80FDD10: @ 80FDD10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPlayerFacingPlantedBerryTree - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FDD58 - ldr r1, =gUnknown_0203A0F4 - ldr r0, =sub_80FDD74 - str r0, [r1] - ldr r1, =gFieldCallback - ldr r0, =MapPostLoadHook_UseItem - str r0, [r1] - ldr r0, =gUnknown_0203CE54 - ldr r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch - str r0, [r1] - adds r0, r4, 0 - bl unknown_ItemMenu_Confirm - b _080FDD68 - .pool -_080FDD58: - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetFieldFunc - adds r1, r0, 0 - adds r0, r4, 0 - bl _call_via_r1 -_080FDD68: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDD10 - - thumb_func_start sub_80FDD74 -sub_80FDD74: @ 80FDD74 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - bl ScriptContext2_Enable - ldr r0, =Route102_EventScript_274482 - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDD74 - - thumb_func_start ItemUseOutOfBattle_WailmerPail -ItemUseOutOfBattle_WailmerPail: @ 80FDDA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_80FDE2C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FDDC8 - ldr r1, =gUnknown_0203A0F4 - ldr r0, =sub_80FDE7C - b _080FDDD8 - .pool -_080FDDC8: - bl TryToWaterBerryTree - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FDDEC - ldr r1, =gUnknown_0203A0F4 - ldr r0, =sub_80FDE08 -_080FDDD8: - str r0, [r1] - adds r0, r4, 0 - bl SetUpItemUseOnFieldCallback - b _080FDDFE - .pool -_080FDDEC: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r5, 0 - bl DisplayDadsAdviceCannotUseItemMessage -_080FDDFE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_WailmerPail - - thumb_func_start sub_80FDE08 -sub_80FDE08: @ 80FDE08 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - ldr r0, =Route102_EventScript_2744C0 - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDE08 - - thumb_func_start sub_80FDE2C -sub_80FDE2C: @ 80FDE2C - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - bl PlayerGetZCoord - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r0, sp - ldrh r0, [r0] - ldrh r1, [r4] - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _080FDE68 - ldr r0, =gMapObjects - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x5] - cmp r0, 0xE4 - beq _080FDE70 -_080FDE68: - movs r0, 0 - b _080FDE72 - .pool -_080FDE70: - movs r0, 0x1 -_080FDE72: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FDE2C - - thumb_func_start sub_80FDE7C -sub_80FDE7C: @ 80FDE7C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - ldr r0, =BattleFrontier_OutsideEast_EventScript_242CFC - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDE7C - - thumb_func_start ItemUseOutOfBattle_Medicine -ItemUseOutOfBattle_Medicine: @ 80FDEA0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =ItemUseCB_Medicine - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_Medicine - - thumb_func_start ItemUseOutOfBattle_ReduceEV -ItemUseOutOfBattle_ReduceEV: @ 80FDEBC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =sub_81B67C8 - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_ReduceEV - - thumb_func_start ItemUseOutOfBattle_SacredAsh -ItemUseOutOfBattle_SacredAsh: @ 80FDED8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =sub_81B79E8 - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_SacredAsh - - thumb_func_start ItemUseOutOfBattle_PPRecovery -ItemUseOutOfBattle_PPRecovery: @ 80FDEF4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =dp05_ether - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_PPRecovery - - thumb_func_start ItemUseOutOfBattle_PPUp -ItemUseOutOfBattle_PPUp: @ 80FDF10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =dp05_pp_up - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_PPUp - - thumb_func_start ItemUseOutOfBattle_RareCandy -ItemUseOutOfBattle_RareCandy: @ 80FDF2C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =dp05_rare_candy - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_RareCandy - - thumb_func_start ItemUseOutOfBattle_TMHM -ItemUseOutOfBattle_TMHM: @ 80FDF48 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0xA9 - lsls r0, 1 - cmp r1, r0 - bls _080FDF74 - ldr r2, =gText_BootedUpHM - ldr r3, =sub_80FDF90 - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FDF80 - .pool -_080FDF74: - ldr r2, =gText_BootedUpTM - ldr r3, =sub_80FDF90 - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage -_080FDF80: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_TMHM - - thumb_func_start sub_80FDF90 -sub_80FDF90: @ 80FDF90 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - bl PlaySE - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =task08_0809AD8C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FDF90 - - thumb_func_start task08_0809AD8C -task08_0809AD8C: @ 80FDFBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _080FE000 - ldr r4, =gStringVar1 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r4, =gStringVar4 - ldr r1, =gText_TMHMContainedVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, =sub_80FE024 - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl DisplayItemMessage -_080FE000: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end task08_0809AD8C - - thumb_func_start sub_80FE024 -sub_80FE024: @ 80FE024 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_085920E8 - movs r1, 0x6 - bl bag_menu_yes_no - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE024 - - thumb_func_start sub_80FE03C -sub_80FE03C: @ 80FE03C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =sub_81B6DC4 - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE03C - - thumb_func_start sub_80FE058 -sub_80FE058: @ 80FE058 - push {r4,lr} - ldr r4, =gSpecialVar_ItemId - ldrh r0, [r4] - movs r1, 0x1 - bl RemoveBagItem - ldrh r0, [r4] - ldr r1, =gStringVar2 - bl CopyItemName - ldr r0, =gStringVar4 - ldr r1, =gText_PlayerUsedVar2 - bl StringExpandPlaceholders - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE0AC - ldrh r0, [r4] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - bl sub_81AB9A8 - ldrh r0, [r4] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - bl sub_81ABA88 - b _080FE0B4 - .pool -_080FE0AC: - bl sub_81C5924 - bl sub_81C59BC -_080FE0B4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FE058 - - thumb_func_start ItemUseOutOfBattle_Repel -ItemUseOutOfBattle_Repel: @ 80FE0BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, =0x00004021 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _080FE0EC - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80FE124 - str r0, [r1] - b _080FE116 - .pool -_080FE0EC: - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE10C - ldr r2, =gText_RepelEffectsLingered - ldr r3, =bag_menu_inits_lists_menu - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE116 - .pool -_080FE10C: - ldr r1, =gText_RepelEffectsLingered - ldr r2, =sub_81C6714 - adds r0, r5, 0 - bl DisplayItemMessageInBattlePyramid -_080FE116: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_Repel - - thumb_func_start sub_80FE124 -sub_80FE124: @ 80FE124 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r4, r1, 3 - ldr r5, =gTasks + 0x8 - adds r1, r4, r5 - ldrh r0, [r1, 0x10] - adds r0, 0x1 - strh r0, [r1, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080FE156 - movs r0, 0 - strh r0, [r1, 0x10] - movs r0, 0x2F - bl PlaySE - adds r0, r5, 0 - subs r0, 0x8 - adds r0, r4, r0 - ldr r1, =sub_80FE164 - str r1, [r0] -_080FE156: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE124 - - thumb_func_start sub_80FE164 -sub_80FE164: @ 80FE164 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080FE1C2 - ldr r4, =0x00004021 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetHoldEffectParam - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl VarSet - bl sub_80FE058 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE1B8 - ldr r2, =gStringVar4 - ldr r3, =bag_menu_inits_lists_menu - adds r0, r5, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE1C2 - .pool -_080FE1B8: - ldr r1, =gStringVar4 - ldr r2, =sub_81C6714 - adds r0, r6, 0 - bl DisplayItemMessageInBattlePyramid -_080FE1C2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE164 - - thumb_func_start sub_80FE1D0 -sub_80FE1D0: @ 80FE1D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080FE226 - movs r0, 0x75 - bl PlaySE - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE21C - ldr r2, =gStringVar4 - ldr r3, =bag_menu_inits_lists_menu - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE226 - .pool -_080FE21C: - ldr r1, =gStringVar4 - ldr r2, =sub_81C6714 - adds r0, r5, 0 - bl DisplayItemMessageInBattlePyramid -_080FE226: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE1D0 - - thumb_func_start ItemUseOutOfBattle_BlackWhiteFlute -ItemUseOutOfBattle_BlackWhiteFlute: @ 80FE234 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, =gSpecialVar_ItemId - ldrh r0, [r4] - ldr r1, =gStringVar2 - bl CopyItemName - ldrh r0, [r4] - cmp r0, 0x2B - bne _080FE278 - ldr r0, =0x000008ad - bl FlagSet - ldr r0, =0x000008ae - bl FlagClear - ldr r0, =gStringVar4 - ldr r1, =gText_UsedVar2WildLured - bl StringExpandPlaceholders - b _080FE28C - .pool -_080FE278: - ldr r0, =0x000008ae - bl FlagSet - ldr r0, =0x000008ad - bl FlagClear - ldr r0, =gStringVar4 - ldr r1, =gText_UsedVar2WildRepelled - bl StringExpandPlaceholders -_080FE28C: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x18] - ldr r1, =sub_80FE1D0 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_BlackWhiteFlute - - thumb_func_start task08_080A1C44 -task08_080A1C44: @ 80FE2BC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl player_avatar_init_params_reset - bl sub_80B7CC8 - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end task08_080A1C44 - - thumb_func_start re_escape_rope -re_escape_rope: @ 80FE2D8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl flagmods_08054D70 - bl sub_80FE058 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, =gStringVar4 - ldr r2, =task08_080A1C44 - adds r0, r4, 0 - bl DisplayItemMessageOnField - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end re_escape_rope - - thumb_func_start sub_80FE314 -sub_80FE314: @ 80FE314 - push {lr} - ldr r0, =gMapHeader - ldrb r1, [r0, 0x1A] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080FE32C - movs r0, 0 - b _080FE32E - .pool -_080FE32C: - movs r0, 0x1 -_080FE32E: - pop {r1} - bx r1 - thumb_func_end sub_80FE314 - - thumb_func_start ItemUseOutOfBattle_EscapeRope -ItemUseOutOfBattle_EscapeRope: @ 80FE334 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80FE314 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FE35C - ldr r1, =gUnknown_0203A0F4 - ldr r0, =re_escape_rope - str r0, [r1] - adds r0, r4, 0 - bl SetUpItemUseOnFieldCallback - b _080FE36E - .pool -_080FE35C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r4, 0 - bl DisplayDadsAdviceCannotUseItemMessage -_080FE36E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_EscapeRope - - thumb_func_start ItemUseOutOfBattle_EvolutionStone -ItemUseOutOfBattle_EvolutionStone: @ 80FE378 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =sub_81B7C74 - str r1, [r2] - bl SetUpItemUseCallback - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_EvolutionStone - - thumb_func_start ItemUseInBattle_PokeBall -ItemUseInBattle_PokeBall: @ 80FE394 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsPlayerPartyAndPokemonStorageFull - lsls r0, 24 - cmp r0, 0 - bne _080FE3D0 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE3C8 - adds r0, r4, 0 - bl unknown_ItemMenu_Confirm - b _080FE3FA - .pool -_080FE3C8: - adds r0, r4, 0 - bl sub_81C5B14 - b _080FE3FA -_080FE3D0: - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE3F0 - ldr r2, =gText_BoxFull - ldr r3, =bag_menu_inits_lists_menu - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE3FA - .pool -_080FE3F0: - ldr r1, =gText_BoxFull - ldr r2, =sub_81C6714 - adds r0, r5, 0 - bl DisplayItemMessageInBattlePyramid -_080FE3FA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseInBattle_PokeBall - - thumb_func_start sub_80FE408 -sub_80FE408: @ 80FE408 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _080FE43A - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE434 - adds r0, r4, 0 - bl unknown_ItemMenu_Confirm - b _080FE43A - .pool -_080FE434: - adds r0, r5, 0 - bl sub_81C5B14 -_080FE43A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FE408 - - thumb_func_start sub_80FE440 -sub_80FE440: @ 80FE440 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080FE4AC - movs r0, 0x1 - bl PlaySE - ldr r4, =gSpecialVar_ItemId - ldrh r0, [r4] - movs r1, 0x1 - bl RemoveBagItem - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE49C - ldrh r0, [r4] - bl sub_806CF78 - adds r2, r0, 0 - ldr r3, =sub_80FE408 - adds r0, r5, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE4AC - .pool -_080FE49C: - ldrh r0, [r4] - bl sub_806CF78 - adds r1, r0, 0 - ldr r2, =sub_80FE408 - adds r0, r6, 0 - bl DisplayItemMessageInBattlePyramid -_080FE4AC: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE440 - - thumb_func_start ItemUseInBattle_StatIncrease -ItemUseInBattle_StatIncrease: @ 80FE4B8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gBattlePartyID - ldr r0, =gBankInMenu - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r1, =gSpecialVar_ItemId - ldrh r1, [r1] - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080FE52C - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE518 - ldr r2, =gText_WontHaveEffect - ldr r3, =bag_menu_inits_lists_menu - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE53C - .pool -_080FE518: - ldr r1, =gText_WontHaveEffect - ldr r2, =sub_81C6714 - adds r0, r4, 0 - bl DisplayItemMessageInBattlePyramid - b _080FE53C - .pool -_080FE52C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80FE440 - str r0, [r1] - strh r2, [r1, 0x18] -_080FE53C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseInBattle_StatIncrease - - thumb_func_start sub_80FE54C -sub_80FE54C: @ 80FE54C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE574 - ldr r0, =gUnknown_0203CE54 - ldr r1, [r0] - ldr r0, =sub_81B89F0 - str r0, [r1] - adds r0, r4, 0 - bl unknown_ItemMenu_Confirm - b _080FE582 - .pool -_080FE574: - ldr r0, =gUnknown_0203CF2C - ldr r1, [r0] - ldr r0, =sub_81B89F0 - str r0, [r1] - adds r0, r4, 0 - bl sub_81C5B14 -_080FE582: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE54C - - thumb_func_start ItemUseInBattle_Medicine -ItemUseInBattle_Medicine: @ 80FE590 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =ItemUseCB_Medicine - str r1, [r2] - bl sub_80FE54C - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseInBattle_Medicine - - thumb_func_start sub_80FE5AC -sub_80FE5AC: @ 80FE5AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =sub_81B79E8 - str r1, [r2] - bl sub_80FE54C - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE5AC - - thumb_func_start ItemUseInBattle_PPRecovery -ItemUseInBattle_PPRecovery: @ 80FE5C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gUnknown_03006328 - ldr r1, =dp05_ether - str r1, [r2] - bl sub_80FE54C - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseInBattle_PPRecovery - - thumb_func_start ItemUseInBattle_Escape -ItemUseInBattle_Escape: @ 80FE5E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080FE634 - bl sub_80FE058 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080FE620 - ldr r2, =gStringVar4 - ldr r3, =unknown_ItemMenu_Confirm - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayItemMessage - b _080FE646 - .pool -_080FE620: - ldr r1, =gStringVar4 - ldr r2, =sub_81C5B14 - adds r0, r4, 0 - bl DisplayItemMessageInBattlePyramid - b _080FE646 - .pool -_080FE634: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r4, 0 - bl DisplayDadsAdviceCannotUseItemMessage -_080FE646: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseInBattle_Escape - - thumb_func_start ItemUseOutOfBattle_EnigmaBerry -ItemUseOutOfBattle_EnigmaBerry: @ 80FE650 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x14 - bls _080FE66A - b _080FE75C -_080FE66A: - lsls r0, 2 - ldr r1, =_080FE67C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080FE67C: - .4byte _080FE708 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE75C - .4byte _080FE75C - .4byte _080FE6EC - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE6D0 - .4byte _080FE75C - .4byte _080FE724 - .4byte _080FE724 - .4byte _080FE740 -_080FE6D0: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_Medicine - b _080FE770 - .pool -_080FE6EC: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_SacredAsh - b _080FE770 - .pool -_080FE708: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_RareCandy - b _080FE770 - .pool -_080FE724: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_PPUp - b _080FE770 - .pool -_080FE740: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_PPRecovery - b _080FE770 - .pool -_080FE75C: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x4 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl ItemUseOutOfBattle_CannotUse -_080FE770: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_EnigmaBerry - - thumb_func_start ItemUseInBattle_EnigmaBerry -ItemUseInBattle_EnigmaBerry: @ 80FE77C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x15 - bhi _080FE814 - lsls r0, 2 - ldr r1, =_080FE7A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080FE7A4: - .4byte _080FE7FC - .4byte _080FE814 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE804 - .4byte _080FE814 - .4byte _080FE804 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE814 - .4byte _080FE80C -_080FE7FC: - adds r0, r4, 0 - bl ItemUseInBattle_StatIncrease - b _080FE81A -_080FE804: - adds r0, r4, 0 - bl ItemUseInBattle_Medicine - b _080FE81A -_080FE80C: - adds r0, r4, 0 - bl ItemUseInBattle_PPRecovery - b _080FE81A -_080FE814: - adds r0, r4, 0 - bl ItemUseOutOfBattle_CannotUse -_080FE81A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ItemUseInBattle_EnigmaBerry - - thumb_func_start ItemUseOutOfBattle_CannotUse -ItemUseOutOfBattle_CannotUse: @ 80FE820 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r1, [r1, 0xE] - bl DisplayDadsAdviceCannotUseItemMessage - pop {r0} - bx r0 - .pool - thumb_func_end ItemUseOutOfBattle_CannotUse - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/link.s b/asm/link.s index c6df00f1b..fa780fa1c 100644 --- a/asm/link.s +++ b/asm/link.s @@ -21684,7 +21684,7 @@ _080148CC: bne _080149B2 movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen movs r0, 0x2 strh r0, [r7] b _080149B2 @@ -39837,7 +39837,7 @@ sub_801DF20: @ 801DF20 bl TransferPlttBuffer bl LoadOam bl ProcessSpriteCopyRequests - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_801DF20 @@ -42568,7 +42568,7 @@ sub_801F544: @ 801F544 str r0, [r4] _0801F55A: bl FreeAllWindowBuffers - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] pop {r4} @@ -44875,13 +44875,13 @@ sub_8020770: @ 8020770 strh r1, [r0, 0x20] str r1, [sp, 0xC] add r0, sp, 0xC - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers ldr r2, =0x010003c0 bl CpuFastSet ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams add sp, 0x10 pop {r0} bx r0 @@ -44896,12 +44896,12 @@ sub_80207C0: @ 80207C0 lsrs r0, 16 mov r1, sp strh r0, [r1] - ldr r5, =gUnknown_02039B28 + ldr r5, =gScanlineEffect ldrb r0, [r5, 0x14] lsls r1, r0, 4 subs r1, r0 lsls r1, 7 - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers adds r1, r4 ldr r2, =0x01000090 mov r0, sp @@ -44939,7 +44939,7 @@ sub_8020818: @ 8020818 lsrs r4, 16 mov r0, sp strh r4, [r0] - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers ldr r0, =0x01000090 mov r9, r0 mov r0, sp diff --git a/asm/option_menu.s b/asm/option_menu.s deleted file mode 100644 index c3fc4d140..000000000 --- a/asm/option_menu.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 7dccbb0d1..492fcd2cb 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1383,7 +1383,7 @@ _080850C8: adds r1, r5, 0 bl TryUpdateRandomTrainerRematches bl DoTimeBasedEvents - bl sub_80AEDBC + bl SetSav1WeatherFromCurrMapHeader bl sub_8085B2C bl update_sav1_flash_used_on_map bl Overworld_ClearSavedMusic @@ -1483,7 +1483,7 @@ _080851A2: beq _080851EE bl DoTimeBasedEvents _080851EE: - bl sub_80AEDBC + bl SetSav1WeatherFromCurrMapHeader bl sub_8085B2C cmp r5, 0 beq _08085200 @@ -3637,7 +3637,7 @@ VBlankCB_Field: @ 8086390 push {lr} bl LoadOam bl ProcessSpriteCopyRequests - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer bl FieldUpdateBgTilemapScroll bl TransferPlttBuffer bl TransferTilesetAnimsBuffer @@ -3657,7 +3657,7 @@ sub_80863B0: @ 80863B0 ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams b _080863F0 .pool _080863D4: @@ -3671,7 +3671,7 @@ _080863D4: ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams _080863F0: pop {r0} bx r0 @@ -4294,7 +4294,7 @@ sub_8086988: @ 8086988 bl ResetTasks bl ResetSpriteData bl ResetPaletteFade - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl dp13_810BB8C bl ResetCameraUpdateInfo bl InstallCameraPanAheadCallback diff --git a/asm/party_menu.s b/asm/party_menu.s index 429b629ea..0dc03a1e2 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -17171,7 +17171,7 @@ sub_81B9404: @ 81B9404 bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =sub_81B9424 movs r1, 0xA bl CreateTask @@ -17247,7 +17247,7 @@ sub_81B94B0: @ 81B94B0 bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =sub_81B94D0 movs r1, 0xA bl CreateTask @@ -17297,7 +17297,7 @@ sub_81B951C: @ 81B951C bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =sub_81B953C movs r1, 0xA bl CreateTask @@ -17418,7 +17418,7 @@ sub_81B9620: @ 81B9620 bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =sub_81B9640 movs r1, 0xA bl CreateTask diff --git a/asm/player_pc.s b/asm/player_pc.s index 3f08d3f5c..5d9314f80 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -552,7 +552,7 @@ sub_816B2C8: @ 816B2C8 str r0, [r1] movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen pop {r0} bx r0 .pool @@ -1221,7 +1221,7 @@ sub_816B878: @ 816B878 lsrs r4, 24 movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 @@ -1494,7 +1494,7 @@ sub_816BABC: @ 816BABC _0816BAD4: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index c105c7781..8fc10ba29 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -406,7 +406,7 @@ _080C7428: _080C745C: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen movs r0, 0x4 strh r0, [r5, 0x8] b _080C756A diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 2817b55b1..a04939c12 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -2049,7 +2049,7 @@ sub_81C4F24: @ 81C4F24 bl ScriptContext2_Enable movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen ldr r0, =sub_81C4F44 movs r1, 0xA bl CreateTask diff --git a/asm/pokenav.s b/asm/pokenav.s index f74028687..66ecf71d0 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -44,7 +44,7 @@ sub_81C72A4: @ 81C72A4 bl SetMainCallback2 movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen pop {r0} bx r0 .pool @@ -7068,7 +7068,7 @@ sub_81CA914: @ 81CA914 bl TransferPlttBuffer bl LoadOam bl ProcessSpriteCopyRequests - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_81CA914 @@ -7101,7 +7101,7 @@ titlescreen_0: @ 81CA92C ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldr r0, =sub_81CA914 bl c3args_set_0toR1_1to0 ldr r0, =sub_81CA9EC @@ -7220,7 +7220,7 @@ sub_81CAA3C: @ 81CAA3C mov r0, sp movs r6, 0 strh r6, [r0] - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers ldr r0, =0x010000a0 mov r8, r0 mov r0, sp @@ -15647,7 +15647,7 @@ sub_81CEE44: @ 81CEE44 bl TransferPlttBuffer adds r0, r4, 0 bl sub_81D2108 - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r4} pop {r0} bx r0 @@ -22318,7 +22318,7 @@ sub_81D20BC: @ 81D20BC b _081D20FA .pool _081D20D4: - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] @@ -22332,7 +22332,7 @@ _081D20E2: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] @@ -22366,7 +22366,7 @@ sub_81D2108: @ 81D2108 adds r0, r6, 0 bl sub_81D2634 movs r7, 0 - ldr r5, =gUnknown_02038C28 + ldr r5, =gScanlineEffectRegBuffers mov r12, r5 movs r0, 0xF0 lsls r0, 3 diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s index f60b2a252..8832d3942 100644 --- a/asm/rayquaza_scene.s +++ b/asm/rayquaza_scene.s @@ -1058,7 +1058,7 @@ _081D6FC8: sub_81D6FD0: @ 81D6FD0 push {lr} bl sub_81D67EC - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_81D6FD0 @@ -1183,12 +1183,12 @@ sub_81D7134: @ 81D7134 lsls r6, r1, 3 ldr r7, =gTasks + 0x8 adds r5, r6, r7 - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl sub_81D6FE0 bl sub_81D706C movs r4, 0 str r4, [sp, 0x4] - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers ldr r2, =0x010003c0 add r0, sp, 0x4 bl CpuFastSet @@ -1196,7 +1196,7 @@ sub_81D7134: @ 81D7134 ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_80BA038 + bl ScanlineEffect_SetParams strh r4, [r5] ldr r0, =sub_81D7228 movs r1, 0 @@ -1278,7 +1278,7 @@ sub_81D7228: @ 81D7228 adds r3, r1, r0 movs r1, 0x18 ldr r7, =gUnknown_0203CF60 - ldr r4, =gUnknown_02038C28 + ldr r4, =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r5, r4, r0 diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s index ab5e0840c..b314afbf5 100644 --- a/asm/reset_rtc_screen.s +++ b/asm/reset_rtc_screen.s @@ -888,7 +888,7 @@ _0809EFCA: bl ResetOamRange bl LoadOam bl ScanlineEffect_Stop - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl ResetSpriteData bl ResetTasks bl ResetPaletteFade diff --git a/asm/shop.s b/asm/shop.s index eacef5837..70429c7cf 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -188,7 +188,7 @@ HandleShopMenuBuy: @ 80DFBD0 str r0, [r1] movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen pop {r4} pop {r0} bx r0 @@ -216,7 +216,7 @@ HandleShopMenuSell: @ 80DFC0C str r0, [r1] movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen pop {r4} pop {r0} bx r0 diff --git a/asm/start_menu.s b/asm/start_menu.s index 518b46f76..b99ed84ce 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -449,7 +449,7 @@ _0809FB34: beq _0809FBA0 movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen b _0809FBA0 .pool _0809FB98: @@ -1561,7 +1561,7 @@ _080A0490: bl ResetSpriteData bl ResetTasks bl ResetPaletteFade - bl dp12_8087EA4 + bl ScanlineEffect_Clear b _080A04FC _080A04A2: movs r0, 0 diff --git a/asm/time_events.s b/asm/time_events.s deleted file mode 100644 index de2d2d165..000000000 --- a/asm/time_events.s +++ /dev/null @@ -1,225 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start GetMirageRnd -GetMirageRnd: @ 8137890 - push {r4,lr} - ldr r0, =0x00004024 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, =0x00004025 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - orrs r4, r0 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end GetMirageRnd - - thumb_func_start SetMirageRnd -SetMirageRnd: @ 81378BC - push {r4,lr} - adds r4, r0, 0 - ldr r0, =0x00004024 - lsrs r1, r4, 16 - bl VarSet - ldr r0, =0x00004025 - lsls r4, 16 - lsrs r4, 16 - adds r1, r4, 0 - bl VarSet - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SetMirageRnd - - thumb_func_start InitMirageRnd -InitMirageRnd: @ 81378E4 - push {r4,lr} - bl Random - adds r4, r0, 0 - bl Random - lsls r4, 16 - lsls r0, 16 - lsrs r0, 16 - orrs r4, r0 - adds r0, r4, 0 - bl SetMirageRnd - pop {r4} - pop {r0} - bx r0 - thumb_func_end InitMirageRnd - - thumb_func_start UpdateMirageRnd -UpdateMirageRnd: @ 8137904 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl GetMirageRnd - adds r1, r0, 0 - cmp r4, 0 - beq _08137928 - ldr r3, =0x41c64e6d - ldr r2, =0x00003039 -_08137918: - adds r0, r1, 0 - muls r0, r3 - adds r1, r0, r2 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _08137918 -_08137928: - adds r0, r1, 0 - bl SetMirageRnd - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateMirageRnd - - thumb_func_start IsMirageIslandPresent -IsMirageIslandPresent: @ 813793C - push {r4-r6,lr} - bl GetMirageRnd - lsrs r6, r0, 16 - movs r5, 0 -_08137946: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08137978 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldr r1, =0x0000ffff - ands r1, r0 - cmp r1, r6 - bne _08137978 - movs r0, 0x1 - b _08137980 - .pool -_08137978: - adds r5, 0x1 - cmp r5, 0x5 - ble _08137946 - movs r0, 0 -_08137980: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsMirageIslandPresent - - thumb_func_start UpdateShoalTideFlag -UpdateShoalTideFlag: @ 8137988 - push {lr} - bl get_map_light_from_warp0 - lsls r0, 24 - lsrs r0, 24 - bl is_light_level_1_2_3_5_or_6 - lsls r0, 24 - cmp r0, 0 - beq _081379CE - bl RtcCalcLocalTime - ldr r1, =gUnknown_085B2B44 - ldr r0, =gLocalTime - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _081379C8 - ldr r0, =0x0000089a - bl FlagSet - b _081379CE - .pool -_081379C8: - ldr r0, =0x0000089a - bl FlagClear -_081379CE: - pop {r0} - bx r0 - .pool - thumb_func_end UpdateShoalTideFlag - - thumb_func_start Task_WaitWeather -Task_WaitWeather: @ 81379D8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80AC3BC - lsls r0, 24 - cmp r0, 0 - beq _081379F2 - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_081379F2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_WaitWeather - - thumb_func_start WaitWeather -WaitWeather: @ 81379F8 - push {lr} - ldr r0, =Task_WaitWeather - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .pool - thumb_func_end WaitWeather - - thumb_func_start InitBirchState -InitBirchState: @ 8137A0C - push {lr} - ldr r0, =0x00004049 - bl GetVarPointer - movs r1, 0 - strh r1, [r0] - pop {r0} - bx r0 - .pool - thumb_func_end InitBirchState - - thumb_func_start UpdateBirchState -UpdateBirchState: @ 8137A20 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, =0x00004049 - bl GetVarPointer - adds r5, r0, 0 - ldrh r0, [r5] - adds r4, r0 - strh r4, [r5] - ldrh r0, [r5] - movs r1, 0x7 - bl __umodsi3 - strh r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateBirchState diff --git a/asm/title_screen.s b/asm/title_screen.s index 54c1b5353..32594424a 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -464,7 +464,7 @@ _080AA766: @ void title_screen_vblank_callback() title_screen_vblank_callback: @ 80AA780 push {lr} - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer @@ -779,7 +779,7 @@ _080AAAF0: movs r1, 0xA0 movs r2, 0x4 movs r3, 0x4 - bl sub_80BA384 + bl ScanlineEffect_InitWave ldr r0, =c2_title_screen_2 bl SetMainCallback2 _080AAB1E: diff --git a/asm/trainer_card.s b/asm/trainer_card.s index f1679d04e..fe6133618 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -18,7 +18,7 @@ sub_80C2690: @ 80C2690 cmp r0, 0 beq _080C26C0 ldr r1, =0x040000d4 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -40,7 +40,7 @@ sub_80C26D4: @ 80C26D4 ldrh r3, [r4] movs r0, 0 strh r0, [r4] - ldr r1, =gUnknown_02038C28 + ldr r1, =gScanlineEffectRegBuffers ldr r0, =0x04000006 ldrh r2, [r0] movs r0, 0xFF @@ -3977,9 +3977,9 @@ sub_80C4998: @ 80C4998 movs r0, 0x3 bl HideBg bl ScanlineEffect_Stop - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r1, 0 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers movs r2, 0 movs r3, 0xF0 lsls r3, 3 @@ -4066,7 +4066,7 @@ _080C4A0E: movs r2, 0 cmp r2, r7 bcs _080C4A78 - ldr r3, =gUnknown_02038C28 + ldr r3, =gScanlineEffectRegBuffers _080C4A60: lsls r0, r2, 16 asrs r0, 16 @@ -4091,7 +4091,7 @@ _080C4A78: lsrs r7, r4, 16 cmp r1, r0 bge _080C4AB0 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r12, r0 adds r4, r3, 0 _080C4A92: @@ -4116,7 +4116,7 @@ _080C4AB0: asrs r0, r1, 16 cmp r0, 0x9F bgt _080C4ACE - ldr r2, =gUnknown_02038C28 + ldr r2, =gScanlineEffectRegBuffers _080C4ABC: asrs r0, r1, 16 lsls r1, r0, 1 @@ -4392,7 +4392,7 @@ _080C4CB6: movs r2, 0 cmp r2, r7 bcs _080C4D20 - ldr r3, =gUnknown_02038C28 + ldr r3, =gScanlineEffectRegBuffers _080C4D08: lsls r0, r2, 16 asrs r0, 16 @@ -4417,7 +4417,7 @@ _080C4D20: lsrs r7, r4, 16 cmp r1, r0 bge _080C4D56 - ldr r0, =gUnknown_02038C28 + ldr r0, =gScanlineEffectRegBuffers mov r12, r0 adds r4, r3, 0 _080C4D3A: @@ -4441,7 +4441,7 @@ _080C4D56: asrs r0, r1, 16 cmp r0, 0x9F bgt _080C4D74 - ldr r2, =gUnknown_02038C28 + ldr r2, =gScanlineEffectRegBuffers _080C4D62: asrs r0, r1, 16 lsls r1, r0, 1 diff --git a/asm/unknown_task.s b/asm/unknown_task.s deleted file mode 100644 index a8672ac8f..000000000 --- a/asm/unknown_task.s +++ /dev/null @@ -1,593 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ScanlineEffect_Stop -ScanlineEffect_Stop: @ 80B9FB8 - push {r4,lr} - ldr r4, =gUnknown_02039B28 - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x18] - cmp r0, 0xFF - beq _080B9FE2 - bl DestroyTask - movs r0, 0xFF - strb r0, [r4, 0x18] -_080B9FE2: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ScanlineEffect_Stop - - thumb_func_start dp12_8087EA4 -dp12_8087EA4: @ 80B9FF8 - push {r4,lr} - sub sp, 0x4 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r1, =gUnknown_02038C28 - ldr r2, =0x01000780 - bl CpuSet - ldr r0, =gUnknown_02039B28 - movs r1, 0 - str r1, [r0] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - str r1, [r0, 0xC] - strb r4, [r0, 0x14] - strb r4, [r0, 0x15] - strb r4, [r0, 0x16] - strb r4, [r0, 0x17] - movs r1, 0xFF - strb r1, [r0, 0x18] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end dp12_8087EA4 - - thumb_func_start sub_80BA038 -sub_80BA038: @ 80BA038 - push {lr} - sub sp, 0xC - str r0, [sp] - str r1, [sp, 0x4] - str r2, [sp, 0x8] - ldr r0, =0xa2600001 - cmp r1, r0 - bne _080BA06C - ldr r0, =gUnknown_02039B28 - ldr r1, =gUnknown_02038C2A - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, =sub_80BA134 - b _080BA07C - .pool -_080BA06C: - ldr r0, =gUnknown_02039B28 - ldr r1, =gUnknown_02038C2C - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, =sub_80BA154 -_080BA07C: - str r1, [r0, 0x10] - adds r1, r0, 0 - ldr r0, [sp, 0x4] - str r0, [r1, 0xC] - ldr r0, [sp] - str r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x8] - strb r0, [r1, 0x15] - mov r0, sp - ldrb r0, [r0, 0x9] - strb r0, [r1, 0x16] - strb r0, [r1, 0x17] - add sp, 0xC - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BA038 - - thumb_func_start sub_80BA0A8 -sub_80BA0A8: @ 80BA0A8 - push {r4,lr} - ldr r4, =gUnknown_02039B28 - ldrb r0, [r4, 0x15] - cmp r0, 0 - beq _080BA122 - cmp r0, 0x3 - bne _080BA0EC - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r1, =gUnknown_02039B44 - movs r0, 0x1 - strb r0, [r1] - b _080BA122 - .pool -_080BA0EC: - ldr r1, =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x14] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - ldr r0, [r4, 0x8] - str r0, [r1, 0x4] - ldr r0, [r4, 0xC] - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, [r4, 0x10] - bl _call_via_r0 - ldrb r0, [r4, 0x14] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4, 0x14] -_080BA122: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BA0A8 - - thumb_func_start sub_80BA134 -sub_80BA134: @ 80BA134 - ldr r0, =gUnknown_02039B28 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, =gUnknown_02038C28 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .pool - thumb_func_end sub_80BA134 - - thumb_func_start sub_80BA154 -sub_80BA154: @ 80BA154 - ldr r0, =gUnknown_02039B28 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, =gUnknown_02038C28 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - bx lr - .pool - thumb_func_end sub_80BA154 - - thumb_func_start task00_for_dp12 -task00_for_dp12: @ 80BA174 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r6, 0 - ldr r0, =gUnknown_02039B44 - ldrb r0, [r0] - cmp r0, 0 - beq _080BA1A4 - mov r0, r12 - bl DestroyTask - ldr r1, =gUnknown_02039B28 - movs r0, 0xFF - strb r0, [r1, 0x18] - b _080BA324 - .pool -_080BA1A4: - ldr r1, =gTasks - mov r0, r12 - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - movs r4, 0x16 - ldrsh r0, [r3, r4] - mov r10, r1 - mov r9, r2 - cmp r0, 0 - beq _080BA250 - movs r1, 0x14 - ldrsh r0, [r3, r1] - cmp r0, 0xE - bhi _080BA250 - lsls r0, 2 - ldr r1, =_080BA1D8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BA1D8: - .4byte _080BA214 - .4byte _080BA250 - .4byte _080BA21C - .4byte _080BA250 - .4byte _080BA224 - .4byte _080BA250 - .4byte _080BA22C - .4byte _080BA250 - .4byte _080BA234 - .4byte _080BA250 - .4byte _080BA23C - .4byte _080BA250 - .4byte _080BA244 - .4byte _080BA250 - .4byte _080BA24C -_080BA214: - ldr r0, =gBattle_BG0_X - b _080BA24E - .pool -_080BA21C: - ldr r0, =gBattle_BG0_Y - b _080BA24E - .pool -_080BA224: - ldr r0, =gBattle_BG1_X - b _080BA24E - .pool -_080BA22C: - ldr r0, =gBattle_BG1_Y - b _080BA24E - .pool -_080BA234: - ldr r0, =gBattle_BG2_X - b _080BA24E - .pool -_080BA23C: - ldr r0, =gBattle_BG2_Y - b _080BA24E - .pool -_080BA244: - ldr r0, =gBattle_BG3_X - b _080BA24E - .pool -_080BA24C: - ldr r0, =gBattle_BG3_Y -_080BA24E: - ldrh r6, [r0] -_080BA250: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r2, r10 - adds r1, r0, r2 - ldrh r2, [r1, 0x10] - movs r3, 0x10 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BA2BC - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - movs r4, 0xE - ldrsh r0, [r1, r4] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080BA324 - ldr r5, =gUnknown_02038C28 - ldr r0, =gUnknown_02039B28 - mov r8, r0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 -_080BA28A: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _080BA28A - b _080BA324 - .pool -_080BA2BC: - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x10] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080BA304 - ldr r5, =gUnknown_02038C28 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 - ldr r0, =gUnknown_02039B28 - mov r8, r0 -_080BA2E2: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _080BA2E2 -_080BA304: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r3, r10 - adds r2, r0, r3 - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xC - ldrsh r1, [r2, r4] - cmp r0, r1 - bne _080BA324 - movs r0, 0 - strh r0, [r2, 0xE] -_080BA324: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end task00_for_dp12 - - thumb_func_start sub_80BA33C -sub_80BA33C: @ 80BA33C - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0 - movs r2, 0 - ldr r0, =gSineTable - mov r12, r0 -_080BA350: - lsls r0, r1, 1 - adds r3, r0, r6 - lsls r0, r2, 1 - add r0, r12 - movs r7, 0 - ldrsh r0, [r0, r7] - muls r0, r4 - cmp r0, 0 - bge _080BA364 - adds r0, 0xFF -_080BA364: - asrs r0, 8 - strh r0, [r3] - adds r0, r2, r5 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xFF - bls _080BA350 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BA33C - - thumb_func_start sub_80BA384 -sub_80BA384: @ 80BA384 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - adds r5, r0, 0 - str r1, [sp, 0x10] - ldr r0, [sp, 0x40] - mov r8, r0 - ldr r1, [sp, 0x44] - mov r9, r1 - ldr r0, [sp, 0x48] - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, [sp, 0x10] - lsls r1, 24 - str r1, [sp, 0x14] - lsrs r0, r1, 24 - str r0, [sp, 0xC] - lsls r1, r2, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r2, r3, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r3, r9 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl dp12_8087EA4 - ldr r0, =0x04000010 - add r0, r9 - str r0, [sp] - ldr r0, =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - movs r1, 0 - strb r1, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80BA038 - ldr r0, =task00_for_dp12 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - strh r5, [r4, 0x8] - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ldr r1, [sp, 0x18] - bl __divsi3 - strh r0, [r4, 0xC] - movs r0, 0 - strh r0, [r4, 0xE] - mov r1, r8 - strh r1, [r4, 0x10] - strh r1, [r4, 0x12] - mov r3, r9 - strh r3, [r4, 0x14] - mov r0, r10 - strh r0, [r4, 0x16] - ldr r0, =gUnknown_02039B28 - strb r7, [r0, 0x18] - ldr r0, =gUnknown_02039B44 - movs r1, 0 - strb r1, [r0] - ldr r4, =gUnknown_02038EA8 - ldr r3, [sp, 0xC] - subs r6, r3, r5 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r4, 0 - ldr r1, [sp, 0x18] - ldr r2, [sp, 0x1C] - bl sub_80BA33C - ldr r0, [sp, 0xC] - cmp r5, r0 - bge _080BA47E - ldr r1, =0xfffffd80 - adds r2, r4, r1 - lsls r1, r5, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r0, r1, r3 - adds r3, r0, r2 - adds r1, r2 - adds r2, r4, 0 - adds r5, r6, 0 -_080BA46A: - ldrh r0, [r2] - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _080BA46A -_080BA47E: - adds r0, r7, 0 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BA384 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 60c11524a..5047ec65e 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -732,10 +732,10 @@ _08166C28: b _08166D18 .pool _08166C40: - ldr r1, =gUnknown_02039B28 + ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] - bl sub_80BA0A8 + bl ScanlineEffect_InitHBlankDmaTransfer _08166C4A: ldr r1, [r4] adds r1, 0x50 diff --git a/data/coord_event_weather.s b/data/coord_event_weather.s deleted file mode 100644 index c7b995912..000000000 --- a/data/coord_event_weather.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_085102E0:: @ 85102E0 - .4byte 0x00000001, sub_809D7BC - .4byte 0x00000002, sub_809D7C8 - .4byte 0x00000003, sub_809D7D4 - .4byte 0x00000004, sub_809D7E0 - .4byte 0x00000005, sub_809D7EC - .4byte 0x00000006, sub_809D7F8 - .4byte 0x00000007, sub_809D804 - .4byte 0x00000008, sub_809D810 - .4byte 0x00000009, sub_809D81C - .4byte 0x0000000a, sub_809D828 - .4byte 0x0000000b, sub_809D834 - .4byte 0x00000014, sub_809D840 - .4byte 0x00000015, sub_809D84C - diff --git a/data/time_events.s b/data/time_events.s deleted file mode 100644 index 7a543fff5..000000000 --- a/data/time_events.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_085B2B44:: @ 85B2B44 - .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01 diff --git a/include/constants/weather.h b/include/constants/weather.h new file mode 100644 index 000000000..953cc2753 --- /dev/null +++ b/include/constants/weather.h @@ -0,0 +1,39 @@ +#ifndef GUARD_CONSTANTS_WEATHER_H +#define GUARD_CONSTANTS_WEATHER_H + +#define WEATHER_NONE 0 +#define WEATHER_CLOUDS 1 +#define WEATHER_SUNNY 2 +#define WEATHER_RAIN_LIGHT 3 +#define WEATHER_SNOW 4 +#define WEATHER_RAIN_MED 5 +#define WEATHER_FOG_1 6 +#define WEATHER_ASH 7 +#define WEATHER_SANDSTORM 8 +#define WEATHER_FOG_2 9 +#define WEATHER_FOG_3 10 +#define WEATHER_SHADE 11 +#define WEATHER_DROUGHT 12 +#define WEATHER_RAIN_HEAVY 13 +#define WEATHER_BUBBLES 14 +#define WEATHER_ROUTE119_CYCLE 20 +#define WEATHER_ROUTE123_CYCLE 21 + +// These are used in maps' coord_weather_event entries. +// They are not a one-to-one mapping with the engine's +// internal weather constants above. +#define COORD_EVENT_WEATHER_CLOUDS 1 +#define COORD_EVENT_WEATHER_SUNNY 2 +#define COORD_EVENT_WEATHER_RAIN_LIGHT 3 +#define COORD_EVENT_WEATHER_SNOW 4 +#define COORD_EVENT_WEATHER_RAIN_MED 5 +#define COORD_EVENT_WEATHER_FOG_1 6 +#define COORD_EVENT_WEATHER_FOG_2 7 +#define COORD_EVENT_WEATHER_ASH 8 +#define COORD_EVENT_WEATHER_SANDSTORM 9 +#define COORD_EVENT_WEATHER_SHADE 10 +#define COORD_EVENT_WEATHER_DROUGHT 11 +#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20 +#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21 + +#endif // GUARD_CONSTANTS_WEATHER_H diff --git a/include/coord_event_weather.h b/include/coord_event_weather.h new file mode 100644 index 000000000..86fb48793 --- /dev/null +++ b/include/coord_event_weather.h @@ -0,0 +1,6 @@ +#ifndef GUARD_COORD_EVENT_WEATHER_H +#define GUARD_COORD_EVENT_WEATHER_H + +void DoCoordEventWeather(u8); + +#endif // GUARD_COORD_EVENT_WEATHER_H diff --git a/include/field_weather.h b/include/field_weather.h index e12107e70..7ad8d21e7 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -1,12 +1,177 @@ #ifndef GUARD_WEATHER_H #define GUARD_WEATHER_H -void fade_screen(u8, s8); +#include "sprite.h" +// Controls how the weather should be changing the screen palettes. +enum { + WEATHER_PAL_STATE_CHANGING_WEATHER, + WEATHER_PAL_STATE_SCREEN_FADING_IN, + WEATHER_PAL_STATE_SCREEN_FADING_OUT, + WEATHER_PAL_STATE_IDLE, +}; + +struct Weather +{ + union + { + struct + { + struct Sprite *rainSprites[24]; + struct Sprite *snowflakeSprites[101]; + struct Sprite *cloudSprites[3]; + } s1; + struct + { + u8 filler0[0xA0]; + struct Sprite *fog1Sprites[20]; + struct Sprite *ashSprites[20]; + struct Sprite *fog2Sprites[20]; + struct Sprite *sandstormSprites1[20]; + struct Sprite *sandstormSprites2[5]; + } s2; + } sprites; + u8 gammaShifts[19][32]; + u8 altGammaShifts[19][32]; + s8 gammaIndex; + s8 gammaTargetIndex; + u8 gammaStepDelay; + u8 gammaStepFrameCounter; + u16 fadeDestColor; + u8 palProcessingState; + u8 fadeScreenCounter; + bool8 readyForInit; + u8 taskId; + u8 unknown_6CA; + u8 unknown_6CB; + u16 initStep; + u16 finishStep; + u8 currWeather; + u8 nextWeather; + u8 weatherGfxLoaded; + bool8 weatherChangeComplete; + u8 weatherPicSpritePalIndex; + u8 altGammaSpritePalIndex; + u16 unknown_6D6; + u8 unknown_6D8; + u8 unknown_6D9; + u8 rainSpriteCount; + u8 unknown_6DB; + u8 unknown_6DC; + u8 rainStrength; + /*0x6DE*/ u8 cloudSpritesCreated; + u8 filler_6DF[1]; + u16 unknown_6E0; + u16 unknown_6E2; + u8 snowflakeSpriteCount; + u8 unknown_6E5; + u16 unknown_6E6; + u16 thunderCounter; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 unknown_6ED; + u16 fog1ScrollPosX; + u16 unknown_6F0; + u16 unknown_6F2; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; + u8 fog1SpritesCreated; + u16 unknown_6FC; + u16 unknown_6FE; + u8 ashSpritesCreated; + u8 filler_701[3]; + u32 unknown_704; + u32 unknown_708; + u8 filler_70C[2]; + u16 unknown_70E; + u16 unknown_710; + u16 unknown_712; + u16 unknown_714; + u8 sandstormSprites1Created; + u8 sandstormSprites2Created; + u16 unknown_718; + u16 unknown_71A; + u16 unknown_71C; + u16 unknown_71E; + u16 unknown_720; + u16 unknown_722; + u8 fog2SpritesCreated; + u8 filler_725[1]; + u16 unknown_726; + u16 unknown_728; + u16 unknown_72A; + u16 unknown_72C; + u8 unknown_72E; + u8 filler_72F; + u16 currBlendEVA; + u16 currBlendEVB; + u16 targetBlendEVA; + u16 targetBlendEVB; + u8 blendUpdateCounter; + u8 blendFrameCounter; + u8 blendDelay; + u8 filler_73B[0x3C-0x3B]; + s16 unknown_73C; + s16 unknown_73E; + s16 unknown_740; + s16 unknown_742; + u8 filler_744[0xD-4]; + s8 loadDroughtPalsIndex; + u8 loadDroughtPalsOffset; +}; + +void StartWeather(void); +void ChangeWeather(u8 weather); +void sub_807C988(u8 effect); +void sub_807C9B4(u8 effect); +void Task_WeatherInit(u8); +void Task_WeatherMain(u8); +void sub_807CAE8(void); +void nullsub_38(void); +void SetWeatherScreenFadeOut(void); + +enum +{ + FADE_FROM_BLACK, + FADE_TO_BLACK, + FADE_FROM_WHITE, + FADE_TO_WHITE, +}; + +void FadeScreen(u8, s8); +// ... +void UpdateSpritePaletteWithWeather(u8 tag); +void ApplyWeatherGammaShiftToPal(u8); +// ... +void Weather_SetBlendCoeffs(u8, u8); +// ... +void PlayRainSoundEffect(void); +// ... void SetSav1Weather(u32); u8 GetSav1Weather(void); void sub_80AEDBC(void); +void SetSav1WeatherFromCurrMapHeader(void); +// ... void DoCurrentWeather(void); +void sub_8080750(); + +bool8 IsWeatherNotFadingIn(void); +bool8 IsWeatherChangeComplete(void); +void SetWeather(u32); +void UpdateWeatherPerDay(u16); +void PreservePaletteInWeather(u8 index); +void ResetPreservedPalettesInWeather(void); +extern void ResetDroughtWeatherPaletteLoading(void); +void ResetDroughtWeatherPaletteLoading(void); +bool8 LoadDroughtWeatherPalettes(void); +u8 GetCurrentWeather(void); +void LoadCustomWeatherSpritePalette(const u16 *palette); + + +extern struct Weather gWeather; + +extern struct Weather *const gWeatherPtr; #endif // GUARD_WEATHER_H diff --git a/include/overworld.h b/include/overworld.h index 597a160ed..974f8f091 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -70,6 +70,8 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum); void c2_load_new_map(void); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void mapldr_default(void); +u8 get_map_light_from_warp0(void); +bool8 is_light_level_1_2_3_5_or_6(u8 a1); void IncrementGameStat(u8); u32 GetGameStat(u8); diff --git a/include/scanline_effect.h b/include/scanline_effect.h new file mode 100644 index 000000000..54dfe17bd --- /dev/null +++ b/include/scanline_effect.h @@ -0,0 +1,47 @@ +#ifndef GUARD_SCANLINE_EFFECT_H +#define GUARD_SCANLINE_EFFECT_H + +// DMA control value to ransfer a single 16-bit value at HBlank +#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) + +#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS) + +struct ScanlineEffectParams +{ + volatile void *dmaDest; + u32 dmaControl; + u8 initState; + u8 unused9; +}; + +struct ScanlineEffect +{ + void *dmaSrcBuffers[2]; + volatile void *dmaDest; + u32 dmaControl; + void (*setFirstScanlineReg)(void); + u8 srcBuffer; + u8 state; + u8 unused16; + u8 unused17; + u8 waveTaskId; +}; + +extern struct ScanlineEffect gScanlineEffect; + +extern u16 gScanlineEffectRegBuffers[][0x3C0]; + +void ScanlineEffect_Stop(void); +void ScanlineEffect_Clear(void); +void ScanlineEffect_SetParams(struct ScanlineEffectParams); +void ScanlineEffect_InitHBlankDmaTransfer(void); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); + +#endif // GUARD_SCANLINE_EFFECT_H diff --git a/include/time_events.h b/include/time_events.h new file mode 100644 index 000000000..fd6d29f39 --- /dev/null +++ b/include/time_events.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TIME_EVENTS_H +#define GUARD_TIME_EVENTS_H + +void UpdateMirageRnd(u16); +u8 IsMirageIslandPresent(void); +void UpdateBirchState(u16); + +#endif // GUARD_TIME_EVENTS_H diff --git a/include/unknown_task.h b/include/unknown_task.h deleted file mode 100644 index 906fed3e0..000000000 --- a/include/unknown_task.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GUARD_unknown_task_H -#define GUARD_unknown_task_H - -// Exported type declarations -struct UnknownTaskStruct -{ - volatile void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - -extern struct UnknownTaskStruct gUnknown_0831AC70; - -// Exported RAM declarations - -// Exported ROM declarations -void ScanlineEffect_Stop(void); -void sub_80BA038(struct UnknownTaskStruct arg0); -void sub_80BA0A8(void); - -#endif // GUARD_unknown_task_H diff --git a/ld_script.txt b/ld_script.txt index 5d4cf0554..e88c74b6e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -105,7 +105,7 @@ SECTIONS { src/scrcmd.o(.text); asm/field_control_avatar.o(.text); src/event_data.o(.text); - asm/coord_event_weather.o(.text); + src/coord_event_weather.o(.text); asm/field_tasks.o(.text); src/clock.o(.text); asm/reset_rtc_screen.o(.text); @@ -126,7 +126,7 @@ SECTIONS { src/trainer_see.o(.text); src/wild_encounter.o(.text); asm/field_effect.o(.text); - asm/unknown_task.o(.text); + src/scanline_effect.o(.text); src/option_menu.o(.text); src/pokedex.o(.text); asm/pokedex.o(.text); @@ -162,7 +162,7 @@ SECTIONS { asm/rotating_gate.o(.text); src/safari_zone.o(.text); asm/contest_link_80FC4F4.o(.text); - asm/item_use.o(.text); + src/item_use.o(.text); asm/battle_anim_80FE840.o(.text); src/bike.o(.text); asm/easy_chat.o(.text); @@ -185,7 +185,7 @@ SECTIONS { src/pokeblock.o(.text); asm/fldeff_flash.o(.text); asm/post_battle_event_funcs.o(.text); - asm/time_events.o(.text); + src/time_events.o(.text); asm/birch_pc.o(.text); src/hof_pc.o(.text); asm/field_specials.o(.text); @@ -407,7 +407,7 @@ SECTIONS { data/map_obj_8097404.o(.rodata); src/text_window.o(.rodata); src/scrcmd.o(.rodata); - data/coord_event_weather.o(.rodata); + src/coord_event_weather.o(.rodata); data/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); src/start_menu.o(.rodata); @@ -472,7 +472,7 @@ SECTIONS { src/wallclock.o(.rodata); src/pokeblock.o(.rodata); data/fldeff_flash.o(.rodata); - data/time_events.o(.rodata); + src/time_events.o(.rodata); data/field_specials.o(.rodata); data/battle_records.o(.rodata); data/pokedex_area_screen.o(.rodata); diff --git a/src/battle_2.c b/src/battle_2.c index 61e39b39f..4ff2bd19a 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -4,7 +4,7 @@ #include "main.h" #include "load_save.h" #include "gpu_regs.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "battle_setup.h" #include "battle_scripts.h" #include "pokemon.h" @@ -46,13 +46,6 @@ #include "battle_string_ids.h" #include "data2.h" -struct UnknownStruct6 -{ - u16 unk0[0xA0]; - u8 fillerA0[0x640]; - u16 unk780[0xA0]; -}; - struct UnknownPokemonStruct2 { /*0x00*/ u16 species; @@ -90,8 +83,6 @@ extern void (*gBattleMainFunc)(void); extern void (*gCB2_AfterEvolution)(void); extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for? extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for? -extern u8 gUnknown_02039B28[]; // possibly a struct? -extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document extern struct MusicPlayerInfo gMPlayInfo_SE1; extern struct MusicPlayerInfo gMPlayInfo_SE2; extern u8 gDecompressionBuffer[]; @@ -162,6 +153,7 @@ extern const u8 * const gBattlescriptsForBallThrow[]; extern const u8 * const gBattlescriptsForRunningByItem[]; extern const u8 * const gBattlescriptsForUsingItem[]; extern const u8 * const gBattlescriptsForSafariActions[]; +extern const struct ScanlineEffectParams gUnknown_0831AC70; // strings extern const u8 gText_LinkStandby3[]; @@ -180,7 +172,7 @@ extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; // functions -extern void dp12_8087EA4(void); +extern void ScanlineEffect_Clear(void); extern void sub_80356D0(void); extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower extern void sub_8166188(void); // battle tower, sets link battle mons level but why? @@ -383,24 +375,21 @@ static void CB2_InitBattleInternal(void) else { gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { - gUnknown_02038C28.unk0[i] = 0xF0; - gUnknown_02038C28.unk780[i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { - #ifndef NONMATCHING - asm(""::"r"(i)); // needed to match - #endif // NONMATCHING - - gUnknown_02038C28.unk0[i] = 0xFF10; - gUnknown_02038C28.unk780[i] = 0xFF10; + asm(""::"r"(i)); + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } - sub_80BA038(gUnknown_0831AC70); + ScanlineEffect_SetParams(gUnknown_0831AC70); } ResetPaletteFade(); @@ -1596,7 +1585,7 @@ void BattleMainCB2(void) static void FreeRestoreBattleData(void) { gMain.callback1 = gPreBattleCallback1; - gUnknown_02039B28[0x15] = 3; + gScanlineEffect.state = 3; gMain.inBattle = 0; ZeroEnemyPartyMons(); m4aSongNumStop(0x5A); @@ -1814,7 +1803,7 @@ void VBlankCB_Battle(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_80BA0A8(); + ScanlineEffect_InitHBlankDmaTransfer(); } void nullsub_17(void) @@ -1952,18 +1941,18 @@ void sub_8038D64(void) SetGpuReg(REG_OFFSET_WINOUT, 0); gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { - gUnknown_02038C28.unk0[i] = 0xF0; - gUnknown_02038C28.unk780[i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_02038C28.unk0[i] = 0xFF10; - gUnknown_02038C28.unk780[i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } ResetPaletteFade(); diff --git a/src/battle_transition.c b/src/battle_transition.c index e003e0fce..0ff8cd903 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -14,7 +14,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "field_camera.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "malloc.h" #include "gpu_regs.h" #include "decompress.h" @@ -56,8 +56,6 @@ struct StructRectangularSpiral typedef bool8 (*TransitionStateFunc)(struct Task *task); typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite); -extern u16 gUnknown_020393A8[]; -extern u16 gUnknown_02038C28[][0x3C0]; extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_Y; @@ -65,7 +63,7 @@ extern const struct OamData gFieldObjectBaseOam_32x32; extern void c2_exit_to_overworld_2_switch(void); extern void sub_80AC3D0(void); -extern void dp12_8087EA4(void); +extern void ScanlineEffect_Clear(void); // this file's functions static void LaunchBattleTransitionTask(u8 transitionId); @@ -1110,9 +1108,9 @@ static void Phase2Task_Swirl(u8 taskId) static bool8 Phase2_Swirl_Func1(struct Task *task) { sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - sub_8149F98(gUnknown_020393A8, sTransitionStructPtr->field_14, 0, 2, 0, 160); + sub_8149F98(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_14, 0, 2, 0, 160); SetVBlankCallback(VBlankCB_Phase2_Swirl); SetHBlankCallback(HBlankCB_Phase2_Swirl); @@ -1129,7 +1127,7 @@ static bool8 Phase2_Swirl_Func2(struct Task *task) task->tData1 += 4; task->tData2 += 8; - sub_8149F98(gUnknown_02038C28[0], sTransitionStructPtr->field_14, task->tData1, 2, task->tData2, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], sTransitionStructPtr->field_14, task->tData1, 2, task->tData2, 160); if (!gPaletteFade.active) { @@ -1145,12 +1143,12 @@ static void VBlankCB_Phase2_Swirl(void) { VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Swirl(void) { - u16 var = gUnknown_02038C28[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -1164,10 +1162,10 @@ static void Phase2Task_Shuffle(u8 taskId) static bool8 Phase2_Shuffle_Func1(struct Task *task) { sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - memset(gUnknown_020393A8, sTransitionStructPtr->field_16, 0x140); + memset(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_16, 0x140); SetVBlankCallback(VBlankCB_Phase2_Shuffle); SetHBlankCallback(HBlankCB_Phase2_Shuffle); @@ -1192,7 +1190,7 @@ static bool8 Phase2_Shuffle_Func2(struct Task *task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_02038C28[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); } if (!gPaletteFade.active) @@ -1206,12 +1204,12 @@ static void VBlankCB_Phase2_Shuffle(void) { VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Shuffle(void) { - u16 var = gUnknown_02038C28[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -1257,7 +1255,7 @@ static void sub_814669C(struct Task *task) s32 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->tData1 = 16; task->tData2 = 0; @@ -1272,7 +1270,7 @@ static void sub_814669C(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = 240; + gScanlineEffectRegBuffers[1][i] = 240; } SetVBlankCallback(VBlankCB0_Phase2_BigPokeball); @@ -1351,7 +1349,7 @@ static bool8 Phase2_BigPokeball_Func2(struct Task *task) dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return TRUE; @@ -1363,7 +1361,7 @@ static bool8 Phase2_Aqua_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LZ77UnCompVram(sTeamAqua_Tilemap, dst1); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return FALSE; @@ -1375,7 +1373,7 @@ static bool8 Phase2_Magma_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LZ77UnCompVram(sTeamMagma_Tilemap, dst1); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return FALSE; @@ -1388,7 +1386,7 @@ static bool8 Phase2_Regice_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LoadPalette(gUnknown_085BC2B4, 0xF0, 0x20); CpuCopy16(gUnknown_085BC314, dst1, 0x500); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return FALSE; @@ -1401,7 +1399,7 @@ static bool8 Phase2_Registeel_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LoadPalette(gUnknown_085BC2D4, 0xF0, 0x20); CpuCopy16(gUnknown_085BCB14, dst1, 0x500); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return FALSE; @@ -1414,7 +1412,7 @@ static bool8 Phase2_Regirock_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LoadPalette(gUnknown_085BC2F4, 0xF0, 0x20); CpuCopy16(gUnknown_085BD314, dst1, 0x500); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; return FALSE; @@ -1499,7 +1497,7 @@ static bool8 Phase2_BigPokeball_Func3(struct Task *task) task->tData4 += 8; task->tData5 -= 256; - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5 >> 8, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5 >> 8, 160); sTransitionStructPtr->VBlank_DMA++; return FALSE; @@ -1519,7 +1517,7 @@ static bool8 Phase2_BigPokeball_Func4(struct Task *task) task->tData4 += 8; task->tData5 -= 256; - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5 >> 8, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5 >> 8, 160); sTransitionStructPtr->VBlank_DMA++; return FALSE; @@ -1531,7 +1529,7 @@ static bool8 Phase2_BigPokeball_Func5(struct Task *task) task->tData4 += 8; task->tData5 -= 256; - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 132, task->tData5 >> 8, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5 >> 8, 160); if (task->tData5 <= 0) { @@ -1577,7 +1575,7 @@ static bool8 Phase2_BigPokeball_Func6(struct Task *task) if (task->tData1 < 0) task->tData1 = 0; } - sub_814A014(gUnknown_02038C28[0], 120, 80, task->tData1); + sub_814A014(gScanlineEffectRegBuffers[0], 120, 80, task->tData1); if (task->tData1 == 0) { SetVBlankCallback(NULL); @@ -1604,7 +1602,7 @@ static void Transition_BigPokeball_Vblank(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = sTransitionStructPtr->WININ; REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; @@ -1615,13 +1613,13 @@ static void Transition_BigPokeball_Vblank(void) static void VBlankCB0_Phase2_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_020393A8, ®_BG0HOFS, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, 0xA2400001); } static void VBlankCB1_Phase2_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_020393A8, ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_PokeballsTrail(u8 taskId) @@ -1741,7 +1739,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0; sTransitionStructPtr->WINOUT = 63; @@ -1750,7 +1748,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_020393A8[i] = 0xF3F4; + gScanlineEffectRegBuffers[1][i] = 0xF3F4; } SetVBlankCallback(VBlankCB_Phase2_Clockwise_BlackFade); @@ -1767,7 +1765,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func2(struct Task *task) sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], -1, 1, 1); do { - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] + 1) | 0x7800; + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] + 1) | 0x7800; } while (!sub_814A228(sTransitionStructPtr->data, 1, 1)); sTransitionStructPtr->data[4] += 16; @@ -1795,7 +1793,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task) r1 = 120, r3 = sTransitionStructPtr->data[2] + 1; if (sTransitionStructPtr->data[5] >= 80) r1 = sTransitionStructPtr->data[2], r3 = 240; - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = (r3) | (r1 << 8); if (var != 0) break; var = sub_814A228(sTransitionStructPtr->data, 1, 1); @@ -1811,7 +1809,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task) { while (sTransitionStructPtr->data[3] < sTransitionStructPtr->data[5]) { - gUnknown_02038C28[0][++sTransitionStructPtr->data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][++sTransitionStructPtr->data[3]] = (r3) | (r1 << 8); } } @@ -1826,7 +1824,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func4(struct Task *task) sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], 160, 1, 1); do { - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] << 8) | 0xF0; + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] << 8) | 0xF0; } while (!sub_814A228(sTransitionStructPtr->data, 1, 1)); sTransitionStructPtr->data[4] -= 16; @@ -1851,12 +1849,12 @@ static bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task) while (1) { - r1 = (gUnknown_02038C28[0][sTransitionStructPtr->data[3]]) & 0xFF; + r1 = (gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]]) & 0xFF; r2 = sTransitionStructPtr->data[2]; if (sTransitionStructPtr->data[5] <= 80) r2 = 120, r1 = sTransitionStructPtr->data[2]; var4 = (r1) | (r2 << 8); - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = var4; + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = var4; if (var != 0) break; var = sub_814A228(sTransitionStructPtr->data, 1, 1); @@ -1872,7 +1870,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task) { while (sTransitionStructPtr->data[3] > sTransitionStructPtr->data[5]) { - gUnknown_02038C28[0][--sTransitionStructPtr->data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][--sTransitionStructPtr->data[3]] = (r1) | (r2 << 8); } } @@ -1892,7 +1890,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func6(struct Task *task) r2 = 120, r3 = sTransitionStructPtr->data[2]; if (sTransitionStructPtr->data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (r3) | (r2 << 8); + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = (r3) | (r2 << 8); } while (!sub_814A228(sTransitionStructPtr->data, 1, 1)); @@ -1917,12 +1915,12 @@ static void VBlankCB_Phase2_Clockwise_BlackFade(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA != 0) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = sTransitionStructPtr->WININ; REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; - REG_WIN0H = gUnknown_02038C28[1][0]; - DmaSet(0, gUnknown_02038C28[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Ripple(u8 taskId) @@ -1935,11 +1933,11 @@ static bool8 Phase2_Ripple_Func1(struct Task *task) u8 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 160; i++) { - gUnknown_020393A8[i] = sTransitionStructPtr->field_16; + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->field_16; } SetVBlankCallback(VBlankCB_Phase2_Ripple); @@ -1971,7 +1969,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task) // todo: fix the asm s16 var = r4 >> 8; asm(""); - gUnknown_02038C28[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); } if (++task->tData3 == 81) @@ -1991,12 +1989,12 @@ static void VBlankCB_Phase2_Ripple(void) { VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Ripple(void) { - u16 var = gUnknown_02038C28[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -2012,7 +2010,7 @@ static bool8 Phase2_Wave_Func1(struct Task *task) u8 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 63; sTransitionStructPtr->WINOUT = 0; @@ -2021,7 +2019,7 @@ static bool8 Phase2_Wave_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = 242; + gScanlineEffectRegBuffers[1][i] = 242; } SetVBlankCallback(VBlankCB_Phase2_Wave); @@ -2037,7 +2035,7 @@ static bool8 Phase2_Wave_Func2(struct Task *task) bool8 nextFunc; sTransitionStructPtr->VBlank_DMA = FALSE; - toStore = gUnknown_02038C28[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->tData2; task->tData2 += 16; task->tData1 += 8; @@ -2073,11 +2071,11 @@ static void VBlankCB_Phase2_Wave(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA != 0) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = sTransitionStructPtr->WININ; REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; - DmaSet(0, gUnknown_02038C28[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Sydney(u8 taskId) @@ -2120,7 +2118,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task *task) u8 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); Mugshots_CreateOpponentPlayerSprites(task); task->tData1 = 0; @@ -2132,7 +2130,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = 0xF0F1; + gScanlineEffectRegBuffers[1][i] = 0xF0F1; } SetVBlankCallback(VBlankCB0_Phase2_Mugshots); @@ -2177,7 +2175,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task *task) sTransitionStructPtr->VBlank_DMA = FALSE; - toStore = gUnknown_02038C28[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->tData1; task->tData1 += 0x10; @@ -2223,7 +2221,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task *task) sTransitionStructPtr->VBlank_DMA = FALSE; - for (i = 0, toStore = gUnknown_02038C28[0]; i < 160; i++, toStore++) + for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++) { *toStore = 0xF0; } @@ -2266,8 +2264,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task *task) sTransitionStructPtr->VBlank_DMA = FALSE; SetVBlankCallback(NULL); DmaStop(0); - memset(gUnknown_02038C28[0], 0, 0x140); - memset(gUnknown_02038C28[1], 0, 0x140); + memset(gScanlineEffectRegBuffers[0], 0, 0x140); + memset(gScanlineEffectRegBuffers[1], 0, 0x140); SetGpuReg(REG_OFFSET_WIN0H, 0xF0); SetGpuReg(REG_OFFSET_BLDY, 0); task->tState++; @@ -2300,15 +2298,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task *task) { s16 index1 = 0x50 - i; s16 index2 = 0x50 + i; - if (gUnknown_02038C28[0][index1] <= 15) + if (gScanlineEffectRegBuffers[0][index1] <= 15) { r6 = TRUE; - gUnknown_02038C28[0][index1]++; + gScanlineEffectRegBuffers[0][index1]++; } - if (gUnknown_02038C28[0][index2] <= 15) + if (gScanlineEffectRegBuffers[0][index2] <= 15) { r6 = TRUE; - gUnknown_02038C28[0][index2]++; + gScanlineEffectRegBuffers[0][index2]++; } } } @@ -2336,7 +2334,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task *task) sTransitionStructPtr->VBlank_DMA = FALSE; task->tData3++; - memset(gUnknown_02038C28[0], task->tData3, 0x140); + memset(gScanlineEffectRegBuffers[0], task->tData3, 0x140); if (task->tData3 > 15) task->tState++; @@ -2357,12 +2355,12 @@ static void VBlankCB0_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA != 0) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BG0VOFS = sTransitionStructPtr->BG0VOFS; REG_WININ = sTransitionStructPtr->WININ; REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; - DmaSet(0, gUnknown_02038C28[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Mugshots(void) @@ -2370,9 +2368,9 @@ static void VBlankCB1_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA != 0) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BLDCNT = sTransitionStructPtr->BLDCNT; - DmaSet(0, gUnknown_02038C28[1], ®_BLDY, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, 0xA2400001); } static void HBlankCB_Phase2_Mugshots(void) @@ -2500,7 +2498,7 @@ static bool8 Phase2_Slice_Func1(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->tData2 = 256; task->tData3 = 1; @@ -2511,8 +2509,8 @@ static bool8 Phase2_Slice_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = sTransitionStructPtr->field_14; - gUnknown_02038C28[1][160 + i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->field_14; + gScanlineEffectRegBuffers[1][160 + i] = 0xF0; } EnableInterrupts(INTR_FLAG_HBLANK); @@ -2541,8 +2539,8 @@ static bool8 Phase2_Slice_Func2(struct Task *task) for (i = 0; i < 160; i++) { - u16 *storeLoc1 = &gUnknown_02038C28[0][i]; - u16 *storeLoc2 = &gUnknown_02038C28[0][i + 160]; + u16 *storeLoc1 = &gScanlineEffectRegBuffers[0][i]; + u16 *storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160]; if (i & 1) { *storeLoc1 = sTransitionStructPtr->field_14 + task->tData1; @@ -2578,15 +2576,15 @@ static void VBlankCB_Phase2_Slice(void) REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 640); - DmaSet(0, &gUnknown_02038C28[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void HBlankCB_Phase2_Slice(void) { if (REG_VCOUNT < 160) { - u16 var = gUnknown_02038C28[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -2603,7 +2601,7 @@ static bool8 Phase2_ShredSplit_Func1(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 63; sTransitionStructPtr->WINOUT = 0; @@ -2611,13 +2609,13 @@ static bool8 Phase2_ShredSplit_Func1(struct Task *task) for (i = 0; i < 0xA0; i++) { - gUnknown_02038C28[1][i] = sTransitionStructPtr->field_14; - gUnknown_02038C28[1][0xA0 + i] = 0xF0; - gUnknown_02038C28[0][i] = sTransitionStructPtr->field_14; - gUnknown_02038C28[0][0xA0 + i] = 0xF0; - gUnknown_02038C28[0][0x140 + i] = 0; - gUnknown_02038C28[0][0x1E0 + i] = 0x100; - gUnknown_02038C28[0][0x280 + i] = 1; + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->field_14; + gScanlineEffectRegBuffers[1][0xA0 + i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_14; + gScanlineEffectRegBuffers[0][0xA0 + i] = 0xF0; + gScanlineEffectRegBuffers[0][0x140 + i] = 0; + gScanlineEffectRegBuffers[0][0x1E0 + i] = 0x100; + gScanlineEffectRegBuffers[0][0x280 + i] = 1; } task->tData4 = 0; @@ -2657,9 +2655,9 @@ static bool8 Phase2_ShredSplit_Func2(struct Task *task) unkVar = (arr1[j]) + (arr2[k] * -(i) * 2); if (unkVar >= 0 && (unkVar != 79 || j != 1)) { - ptr4 = &gUnknown_02038C28[0][unkVar + 320]; - ptr3 = &gUnknown_02038C28[0][unkVar + 480]; - ptr1 = &gUnknown_02038C28[0][unkVar + 640]; + ptr4 = &gScanlineEffectRegBuffers[0][unkVar + 320]; + ptr3 = &gScanlineEffectRegBuffers[0][unkVar + 480]; + ptr1 = &gScanlineEffectRegBuffers[0][unkVar + 640]; if (*ptr4 > 0xEF) { *ptr4 = 0xF0; @@ -2673,8 +2671,8 @@ static bool8 Phase2_ShredSplit_Func2(struct Task *task) if (*ptr3 <= 0xFFF) *ptr3 += *ptr1; } - ptr2 = &gUnknown_02038C28[0][unkVar]; - ptr3 = &gUnknown_02038C28[0][unkVar + 160]; + ptr2 = &gScanlineEffectRegBuffers[0][unkVar]; + ptr3 = &gScanlineEffectRegBuffers[0][unkVar + 160]; *ptr2 = sTransitionStructPtr->field_14 + *ptr4; *ptr3 = 0xF0 - *ptr4; @@ -2691,9 +2689,9 @@ static bool8 Phase2_ShredSplit_Func2(struct Task *task) unkVar = (arr1[j] + 1) + (arr2[k] * -(i) * 2); if (unkVar <= 160 && (unkVar != 80 || j != 1)) { - ptr4 = &gUnknown_02038C28[0][unkVar + 320]; - ptr3 = &gUnknown_02038C28[0][unkVar + 480]; - ptr1 = &gUnknown_02038C28[0][unkVar + 640]; + ptr4 = &gScanlineEffectRegBuffers[0][unkVar + 320]; + ptr3 = &gScanlineEffectRegBuffers[0][unkVar + 480]; + ptr1 = &gScanlineEffectRegBuffers[0][unkVar + 640]; if (*ptr4 > 0xEF) { *ptr4 = 0xF0; @@ -2707,8 +2705,8 @@ static bool8 Phase2_ShredSplit_Func2(struct Task *task) if (*ptr3 <= 0xFFF) *ptr3 += *ptr1; } - ptr2 = &gUnknown_02038C28[0][unkVar]; - ptr3 = &gUnknown_02038C28[0][unkVar + 160]; + ptr2 = &gScanlineEffectRegBuffers[0][unkVar]; + ptr3 = &gScanlineEffectRegBuffers[0][unkVar + 160]; *ptr2 = sTransitionStructPtr->field_14 - *ptr4; *ptr3 = (*ptr4 << 8) | (0xF1); @@ -2732,7 +2730,7 @@ static bool8 Phase2_ShredSplit_Func2(struct Task *task) // This function never increments the state counter, because the loop condition // is always false, resulting in the game being stuck in an infinite loop. -// It's possible this transition is only partially +// It's possible this transition is only partially // done and the second part was left out. static bool8 Phase2_ShredSplit_Func3(struct Task *task) { @@ -2742,7 +2740,7 @@ static bool8 Phase2_ShredSplit_Func3(struct Task *task) for (i = 0; i < 0xA0; i++) { - if (gUnknown_02038C28[1][i] != 0xF0 && gUnknown_02038C28[1][i] != checkVar2) + if (gScanlineEffectRegBuffers[1][i] != 0xF0 && gScanlineEffectRegBuffers[1][i] != checkVar2) done = FALSE; // a break statement should be put here } @@ -2775,7 +2773,7 @@ static bool8 Phase2_Blackhole_Func1(struct Task *task) s32 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0; sTransitionStructPtr->WINOUT = 63; @@ -2784,7 +2782,7 @@ static bool8 Phase2_Blackhole_Func1(struct Task *task) for (i = 0; i < 0xA0; i++) { - gUnknown_02038C28[1][i] = 0; + gScanlineEffectRegBuffers[1][i] = 0; } SetVBlankCallback(VBlankCB1_Phase2_BigPokeball); @@ -2814,7 +2812,7 @@ static bool8 Phase2_Blackhole1_Func3(struct Task *task) task->tData1 += (task->tData2 >> 8); if (task->tData1 > 0xA0) task->tData1 = 0xA0; - sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->tData1); + sub_814A014(gScanlineEffectRegBuffers[0], 0x78, 0x50, task->tData1); if (task->tData1 == 0xA0) { task->tFuncState = 1; @@ -2840,7 +2838,7 @@ static bool8 Phase2_Blackhole1_Func2(struct Task *task) } task->tData1 += gUnknown_085C8C80[task->tData6]; task->tData6 = (task->tData6 + 1) % 2; - sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->tData1); + sub_814A014(gScanlineEffectRegBuffers[0], 0x78, 0x50, task->tData1); if (task->tData1 < 9) { task->tState++; @@ -2866,7 +2864,7 @@ static bool8 Phase2_Blackhole2_Func2(struct Task *task) if (task->tData1 > 0xA0) task->tData1 = 0xA0; - sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->tData1); + sub_814A014(gScanlineEffectRegBuffers[0], 0x78, 0x50, task->tData1); if (task->tData1 == 0xA0) { DmaStop(0); @@ -3113,7 +3111,7 @@ static bool8 Phase2_Rayquaza_Func3(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); SetGpuReg(REG_OFFSET_BG0CNT, 0x9A08); sub_8149F58(&dst1, &dst2); @@ -3126,8 +3124,8 @@ static bool8 Phase2_Rayquaza_Func3(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[0][i] = 0; - gUnknown_02038C28[1][i] = 0x100; + gScanlineEffectRegBuffers[0][i] = 0; + gScanlineEffectRegBuffers[1][i] = 0x100; } SetVBlankCallback(VBlankCB_Phase2_Rayquaza); @@ -3212,7 +3210,7 @@ static bool8 Phase2_Rayquaza_Func9(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = 0; + gScanlineEffectRegBuffers[1][i] = 0; } SetVBlankCallback(VBlankCB1_Phase2_BigPokeball); @@ -3233,11 +3231,11 @@ static void VBlankCB_Phase2_Rayquaza(void) VBlankCB_BattleTransition(); if (sTransitionStructPtr->field_20 == 0) - dmaSrc = gUnknown_02038C28[0]; + dmaSrc = gScanlineEffectRegBuffers[0]; else if (sTransitionStructPtr->field_20 == 1) - dmaSrc = gUnknown_02038C28[1]; + dmaSrc = gScanlineEffectRegBuffers[1]; else - dmaSrc = gUnknown_02038C28[0]; + dmaSrc = gScanlineEffectRegBuffers[0]; DmaSet(0, dmaSrc, ®_BG0VOFS, 0xA2400001); } @@ -3252,7 +3250,7 @@ static bool8 Phase2_WhiteFade_Func1(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->BLDCNT = 0xBF; sTransitionStructPtr->BLDY = 0; @@ -3262,8 +3260,8 @@ static bool8 Phase2_WhiteFade_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = 0; - gUnknown_02038C28[1][i + 160] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0; + gScanlineEffectRegBuffers[1][i + 160] = 0xF0; } EnableInterrupts(INTR_FLAG_HBLANK); @@ -3343,8 +3341,8 @@ static void VBlankCB0_Phase2_WhiteFade(void) REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 640); - DmaSet(0, &gUnknown_02038C28[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_WhiteFade(void) @@ -3360,7 +3358,7 @@ static void VBlankCB1_Phase2_WhiteFade(void) static void HBlankCB_Phase2_WhiteFade(void) { - REG_BLDY = gUnknown_02038C28[1][REG_VCOUNT]; + REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT]; } static void sub_8149864(struct Sprite *sprite) @@ -3374,8 +3372,8 @@ static void sub_8149864(struct Sprite *sprite) else { u16 i; - u16* ptr1 = &gUnknown_02038C28[0][sprite->pos1.y]; - u16* ptr2 = &gUnknown_02038C28[0][sprite->pos1.y + 160]; + u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; for (i = 0; i < 20; i++) { ptr1[i] = sprite->data[0] >> 8; @@ -3465,7 +3463,7 @@ static bool8 Phase2_Shards_Func1(struct Task *task) u16 i; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0x3F; sTransitionStructPtr->WINOUT = 0; @@ -3473,10 +3471,10 @@ static bool8 Phase2_Shards_Func1(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[0][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; } - CpuSet(gUnknown_02038C28[0], gUnknown_02038C28[1], 0xA0); + CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0); SetVBlankCallback(VBlankCB_Phase2_Shards); task->tState++; @@ -3505,8 +3503,8 @@ static bool8 Phase2_Shards_Func3(struct Task *task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_02038C28[0][sTransitionStructPtr->data[3]] >> 8; - s16 r4 = gUnknown_02038C28[0][sTransitionStructPtr->data[3]] & 0xFF; + s16 r3 = gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] >> 8; + s16 r4 = gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] & 0xFF; if (task->tData2 == 0) { if (r3 < sTransitionStructPtr->data[2]) @@ -3521,7 +3519,7 @@ static bool8 Phase2_Shards_Func3(struct Task *task) if (r4 <= r3) r4 = r3; } - gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (r4) | (r3 << 8); + gScanlineEffectRegBuffers[0][sTransitionStructPtr->data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; @@ -3568,12 +3566,12 @@ static void VBlankCB_Phase2_Shards(void) DmaStop(0); VBlankCB_BattleTransition(); if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = sTransitionStructPtr->WININ; REG_WINOUT = sTransitionStructPtr->WINOUT; REG_WIN0V = sTransitionStructPtr->WIN0V; - REG_WIN0H = gUnknown_02038C28[1][0]; - DmaSet(0, gUnknown_02038C28[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } // sub-task for phase2 @@ -3875,7 +3873,7 @@ static bool8 Phase2_29_Func2(struct Task *task) sub_8149F58(&dst1, &dst2); LZ77UnCompVram(gUnknown_085C828C, dst1); - sub_8149F98(gUnknown_02038C28[0], 0, task->tData4, 0x84, task->tData5, 160); + sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 0x84, task->tData5, 160); task->tState++; return TRUE; @@ -3896,7 +3894,7 @@ static bool8 Phase2_30_Func1(struct Task *task) u16 *dst1, *dst2; sub_8149F08(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); task->tData2 = 0x2000; task->tData1 = 0x7FFF; @@ -3934,7 +3932,7 @@ static bool8 Phase2_30_Func3(struct Task *task) for (i = 0; i < 160; i++) { - gUnknown_02038C28[1][i] = sTransitionStructPtr->field_16; + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->field_16; } SetVBlankCallback(VBlankCB_Phase2_30); @@ -3980,7 +3978,7 @@ static bool8 Phase2_30_Func4(struct Task *task) { s16 index = var6 / 256; asm(""); - gUnknown_02038C28[0][i] = sTransitionStructPtr->field_16 + Sin(index, amplitude); + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(index, amplitude); } if (++task->tData3 == 101) @@ -4004,12 +4002,12 @@ static void VBlankCB_Phase2_30(void) REG_BLDALPHA = sTransitionStructPtr->BLDALPHA; if (sTransitionStructPtr->VBlank_DMA) - DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_30(void) { - u16 var = gUnknown_02038C28[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG0VOFS = var; } diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c index f487489d4..7b968a221 100644 --- a/src/berry_fix_program.c +++ b/src/berry_fix_program.c @@ -6,7 +6,7 @@ #include "main.h" #include "sprite.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "window.h" #include "text.h" #include "menu.h" diff --git a/src/coord_event_weather.c b/src/coord_event_weather.c new file mode 100644 index 000000000..60b87fa30 --- /dev/null +++ b/src/coord_event_weather.c @@ -0,0 +1,119 @@ +#include "global.h" +#include "constants/weather.h" +#include "coord_event_weather.h" +#include "field_weather.h" + +struct CoordEventWeather +{ + u8 coordEventWeather; + void (*func)(void); +}; + +static void CoordEventWeather_Clouds(void); +static void CoordEventWeather_Sunny(void); +static void CoordEventWeather_LightRain(void); +static void CoordEventWeather_Snow(void); +static void CoordEventWeather_Thunderstorm(void); +static void CoordEventWeather_Fog(void); +static void CoordEventWeather_DiagonalFog(void); +static void CoordEventWeather_Ash(void); +static void CoordEventWeather_Sandstorm(void); +static void CoordEventWeather_Dark(void); +static void CoordEventWeather_Drought(void); +static void CoordEventWeather_Route119Cycle(void); +static void CoordEventWeather_Route123Cycle(void); + +static const struct CoordEventWeather sCoordEventWeatherFuncs[] = +{ + { COORD_EVENT_WEATHER_CLOUDS, CoordEventWeather_Clouds }, + { COORD_EVENT_WEATHER_SUNNY, CoordEventWeather_Sunny }, + { COORD_EVENT_WEATHER_RAIN_LIGHT, CoordEventWeather_LightRain }, + { COORD_EVENT_WEATHER_SNOW, CoordEventWeather_Snow }, + { COORD_EVENT_WEATHER_RAIN_MED, CoordEventWeather_Thunderstorm }, + { COORD_EVENT_WEATHER_FOG_1, CoordEventWeather_Fog }, + { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog }, + { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash }, + { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm }, + { COORD_EVENT_WEATHER_SHADE, CoordEventWeather_Dark }, + { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought }, + { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle }, + { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle }, +}; + +static void CoordEventWeather_Clouds(void) +{ + SetWeather(WEATHER_CLOUDS); +} + +static void CoordEventWeather_Sunny(void) +{ + SetWeather(WEATHER_SUNNY); +} + +static void CoordEventWeather_LightRain(void) +{ + SetWeather(WEATHER_RAIN_LIGHT); +} + +static void CoordEventWeather_Snow(void) +{ + SetWeather(WEATHER_SNOW); +} + +static void CoordEventWeather_Thunderstorm(void) +{ + SetWeather(WEATHER_RAIN_MED); +} + +static void CoordEventWeather_Fog(void) +{ + SetWeather(WEATHER_FOG_1); +} + +static void CoordEventWeather_DiagonalFog(void) +{ + SetWeather(WEATHER_FOG_2); +} + +static void CoordEventWeather_Ash(void) +{ + SetWeather(WEATHER_ASH); +} + +static void CoordEventWeather_Sandstorm(void) +{ + SetWeather(WEATHER_SANDSTORM); +} + +static void CoordEventWeather_Dark(void) +{ + SetWeather(WEATHER_SHADE); +} + +static void CoordEventWeather_Drought(void) +{ + SetWeather(WEATHER_DROUGHT); +} + +static void CoordEventWeather_Route119Cycle(void) +{ + SetWeather(WEATHER_ROUTE119_CYCLE); +} + +static void CoordEventWeather_Route123Cycle(void) +{ + SetWeather(WEATHER_ROUTE123_CYCLE); +} + +void DoCoordEventWeather(u8 coordEventWeather) +{ + u8 i; + for (i = 0; i < ARRAY_COUNT(sCoordEventWeatherFuncs); i++) + { + if (sCoordEventWeatherFuncs[i].coordEventWeather == coordEventWeather) + { + sCoordEventWeatherFuncs[i].func(); + return; + } + } +} diff --git a/src/decoration.c b/src/decoration.c index a9777c86f..68a455285 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -529,7 +529,7 @@ void SecretBasePC_PutAway(u8 taskId) { sub_8126A58(0); sub_8197434(0, 0); - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8129ABC; } @@ -1247,7 +1247,7 @@ void sub_8127F68(u8 taskId) { if (sub_8127F38() == TRUE) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8128060; } @@ -1661,7 +1661,7 @@ void sub_8128BA0(u8 taskId) void sub_8128BBC(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = c1_overworld_prev_quest; } @@ -2635,7 +2635,7 @@ void sub_812A1A0(u8 taskId) void sub_812A1C0(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_81298EC; } @@ -2654,7 +2654,7 @@ void sub_812A210(u8 taskId) void sub_812A22C(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_812A25C; } diff --git a/src/diploma.c b/src/diploma.c index 24e5e9727..89447c5ba 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -3,7 +3,7 @@ #include "palette.h" #include "main.h" #include "gpu_regs.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "task.h" #include "malloc.h" #include "decompress.h" diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 435886638..e8f22e903 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -61,7 +61,7 @@ extern u8 sav1_map_get_name(void); extern s8 ProcessMenuInputNoWrap_(void); extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8); extern void sub_806A068(u16, u8); -extern void fade_screen(u8, u8); +extern void FadeScreen(u8, u8); extern void overworld_free_bg_tilemaps(void); extern void sub_80AF168(void); extern void AllocateMonSpritesGfx(void); @@ -465,7 +465,7 @@ void EggHatch(void) { ScriptContext2_Enable(); CreateTask(Task_EggHatch, 10); - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_EggHatch(u8 taskID) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 5dfc36cb2..cbd37be52 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -11,7 +11,7 @@ #include "pokemon.h" #include "string_util.h" #include "battle.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "decompress.h" #include "m4a.h" #include "menu.h" @@ -1367,7 +1367,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_80BA0A8(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void VBlankCB_TradeEvolutionScene(void) @@ -1384,7 +1384,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_80BA0A8(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_813FDEC(u8 taskId) diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index d002f210f..e7caf9316 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -20,7 +20,7 @@ #include "string_util.h" #include "m4a.h" #include "international_string_util.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "trig.h" #include "random.h" #include "event_data.h" diff --git a/src/item_use.c b/src/item_use.c new file mode 100755 index 000000000..4c7276bb8 --- /dev/null +++ b/src/item_use.c @@ -0,0 +1,1271 @@ +#include "global.h" +#include "battle.h" +#include "berry.h" +#include "bike.h" +#include "coins.h" +#include "constants/flags.h" +#include "constants/items.h" +#include "constants/songs.h" +#include "constants/vars.h" +#include "data2.h" +#include "event_data.h" +#include "fieldmap.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "field_screen.h" +#include "field_weather.h" +#include "item.h" +#include "map_obj_8097404.h" +#include "mail.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "palette.h" +#include "pokemon.h" +#include "rom_818CFC8.h" +#include "script.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" + +extern u16 gSpecialVar_ItemId; +extern void(**gUnknown_0203CE54)(void); +extern void(**gUnknown_0203CF2C)(void); +extern void(*gUnknown_0203A0F4)(u8 taskId); +extern void(*gUnknown_085920D8[])(void); +extern void (*gUnknown_03006328)(u8, u16, TaskFunc); +extern void unknown_ItemMenu_Confirm(u8 taskId); +extern void sub_81C5B14(u8 taskId); +extern u8 gText_DadsAdvice[]; +extern u8 gText_CantDismountBike[]; +extern void sub_8197434(u8 a, u8 b); +extern void sub_80984F4(void); +extern void ItemUseOutOfBattle_TMHM(u8 a); +extern void ItemUseOutOfBattle_EvolutionStone(u8 b); +extern void bag_menu_mail_related(void); +extern void OpenPokeblockCase(u8 a, void(*b)(void)); +extern void overworld_free_bg_tilemaps(void); +extern bool32 sav1_map_is_biking_allowed(void); +extern bool8 IsPlayerFacingSurfableFishableWater(void); +extern bool8 sub_81221AC(void); +extern u8 gText_ItemFinderNothing[]; +extern u8 gText_ItemFinderNearby[]; +extern u8 gText_ItemFinderOnTop[]; +extern u8 gText_CoinCase[]; +extern u8 gText_PowderQty[]; +extern u8 gUnknown_085920E4[]; +extern u8 Route102_EventScript_274482[]; +extern u8 Route102_EventScript_2744C0[]; +extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[]; +extern u8 gText_BootedUpHM[]; +extern u8 gText_BootedUpTM[]; +extern u8 gText_TMHMContainedVar1[]; +extern u8 gText_PlayerUsedVar2[]; +extern u8 gText_RepelEffectsLingered[]; +extern u8 gText_UsedVar2WildLured[]; +extern u8 gText_UsedVar2WildRepelled[]; +extern u8 gText_BoxFull[]; +extern u8 gText_WontHaveEffect[]; +extern int sub_80247BC(void); +extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection); +extern void SetUpItemUseCallback(u8 taskId); +extern void ItemUseCB_Medicine(u8, u16, TaskFunc); +extern void sub_81B67C8(u8, u16, TaskFunc); +extern void sub_81B79E8(u8, u16, TaskFunc); +extern void dp05_ether(u8, u16, TaskFunc); +extern void dp05_pp_up(u8, u16, TaskFunc); +extern void dp05_rare_candy(u8, u16, TaskFunc); +extern void sub_81B6DC4(u8, u16, TaskFunc); +extern void sub_81B7C74(u8, u16, TaskFunc); +extern u16 ItemIdToBattleMoveId(u16); +extern void bag_menu_yes_no(u8, u8, void(**)(u8 taskId)); +extern void (*gUnknown_085920E8[])(u8 taskId); +extern void sub_81C5924(void); +extern void sub_81C59BC(void); +extern void sub_81AB9A8(u8); +extern void sub_81ABA88(u8); +extern void sub_80B7CC8(void); +extern void flagmods_08054D70(void); +extern u8* sub_806CF78(u16); +extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon*, u16, u8, u8); +extern u8 gBankInMenu; +extern u16 gBattlePartyID[]; +extern void sub_81B89F0(void); +extern u8 GetItemEffectType(u16); + +void MapPostLoadHook_UseItem(void); +extern void sub_80AF6D4(void); +void Task_CallItemUseOnFieldCallback(u8 taskId); +void bag_menu_inits_lists_menu(u8 taskId); +void ItemUseOnFieldCB_Bike(u8 taskId); +void ItemUseOnFieldCB_Rod(u8 taskId); +void ItemUseOnFieldCB_Itemfinder(u8 taskId); +void sub_80FD504(u8 taskId); +void sub_80FD5CC(u8 taskId); +void sub_80FDA94(u8 taskId); +void sub_80FDADC(u8 taskId); +void sub_80FD7C8(u8 taskId); +void sub_80FDC00(u8 taskId); +void sub_80FDD74(u8 taskId); +void sub_80FDE08(u8 taskId); +void sub_80FDE7C(u8 taskId); +void sub_80FDF90(u8 taskId); +void task08_0809AD8C(u8 taskId); +void sub_80FE024(u8 taskId); +void sub_80FE124(u8 taskId); +void sub_80FE164(u8 taskId); + +void DisplayItemMessage(u8 taskId, u8 a, u8* str, void(*callback)(u8 taskId)); +void DisplayItemMessageInBattlePyramid(u8 taskId, u8* str, void(*callback)(u8 taskId)); +void DisplayItemMessageOnField(u8 taskId, u8* str, void(*callback)(u8 taskId)); +void sub_81C6714(u8 taskId); +void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId); +void StartFishing(u8 a); +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8); +u8 sub_80FD9B0(s16 a, s16 b); +void sub_80FDA24(u8 a); +void sub_80FD8E0(u8 taskId, s16 x, s16 y); +void sub_80FDBEC(void); +bool8 sub_80FDE2C(void); +void ItemUseOutOfBattle_CannotUse(u8 taskId); + +void SetUpItemUseCallback(u8 taskId) +{ + u8 type; + if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY) + type = gTasks[taskId].data[4] - 1; + else + type = ItemId_GetType(gSpecialVar_ItemId) - 1; + if (!InBattlePyramid()) + { + *gUnknown_0203CE54 = gUnknown_085920D8[type]; + unknown_ItemMenu_Confirm(taskId); + } + else + { + *gUnknown_0203CF2C = gUnknown_085920D8[type]; + sub_81C5B14(taskId); + } +} + +void SetUpItemUseOnFieldCallback(u8 taskId) +{ + if (gTasks[taskId].data[3] != 1) + { + gFieldCallback = MapPostLoadHook_UseItem; + SetUpItemUseCallback(taskId); + } + else + gUnknown_0203A0F4(taskId); +} + +void MapPostLoadHook_UseItem(void) +{ + pal_fill_black(); + CreateTask(Task_CallItemUseOnFieldCallback, 8); +} + +void Task_CallItemUseOnFieldCallback(u8 taskId) +{ + if (sub_80ABDFC() == 1) + gUnknown_0203A0F4(taskId); +} + +void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + if (!isUsingRegisteredKeyItemOnField) + { + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu); + else + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + } + else + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); +} + +void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +{ + DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_DadsAdvice); +} + +void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +{ + DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_CantDismountBike); +} + +void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId) +{ + sub_8197434(0, 1); + DestroyTask(taskId); + sub_80984F4(); + ScriptContext2_Disable(); +} + +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) +{ + if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM) + return 1; + else if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone) + return 2; + else + return 0; +} + +void sub_80FD254() +{ + struct MailStruct mail; + mail.itemId = gSpecialVar_ItemId; + ReadMail(&mail, bag_menu_mail_related, 0); +} + +void ItemUseOutOfBattle_Mail(u8 taskId) +{ + *gUnknown_0203CE54 = sub_80FD254; + unknown_ItemMenu_Confirm(taskId); +} + +void ItemUseOutOfBattle_Bike(u8 taskId) +{ + s16* data = gTasks[taskId].data; + s16 coordsY; + s16 coordsX; + u8 behavior; + PlayerGetDestCoords(&coordsX, &coordsY); + behavior = MapGridGetMetatileBehaviorAt(coordsX, coordsY); + if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE || MetatileBehavior_IsVerticalRail(behavior) == TRUE || MetatileBehavior_IsHorizontalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) + DisplayCannotDismountBikeMessage(taskId, data[3]); + else + { + if (sav1_map_is_biking_allowed() == TRUE && IsBikingDisallowedByPlayer() == 0) + { + gUnknown_0203A0F4 = ItemUseOnFieldCB_Bike; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, data[3]); + } +} + +void ItemUseOnFieldCB_Bike(u8 taskId) +{ + if (!ItemId_GetSecondaryId(gSpecialVar_ItemId)) + GetOnOffBike(2); + else + GetOnOffBike(4); + sub_80984F4(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +bool32 CanFish() +{ + s16 x, y; + u16 tileBehavior; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + + if (MetatileBehavior_IsWaterfall(tileBehavior)) + return FALSE; + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4)) + return FALSE; + + if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + if (IsPlayerFacingSurfableFishableWater()) + return TRUE; + } + else + { + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior) && !MapGridIsImpassableAt(x, y)) + return TRUE; + if (MetatileBehavior_8089510(tileBehavior) == TRUE) + return TRUE; + } + + return FALSE; +} + +void ItemUseOutOfBattle_Rod(u8 taskId) +{ + if (CanFish() == TRUE) + { + gUnknown_0203A0F4 = ItemUseOnFieldCB_Rod; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); +} + +void ItemUseOnFieldCB_Rod(u8 taskId) +{ + StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId)); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_Itemfinder(u8 var) +{ + IncrementGameStat(0x27); + gUnknown_0203A0F4 = ItemUseOnFieldCB_Itemfinder; + SetUpItemUseOnFieldCallback(var); +} + +void ItemUseOnFieldCB_Itemfinder(u8 taskId) +{ + if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) + gTasks[taskId].func = sub_80FD504; + else + DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, sub_80FD5CC); +} + +void sub_80FD504(u8 taskId) +{ + u8 playerDir; + u8 playerDirToItem; + u8 i; + s16* data = gTasks[taskId].data; + if (!data[3]) + { + if (data[4] == 4) + { + playerDirToItem = sub_80FD9B0(data[0], data[1]); + if (playerDirToItem) + { + sub_80FDA24(gUnknown_085920E4[playerDirToItem - 1]); + gTasks[taskId].func = sub_80FDA94; + } + else + { + playerDir = player_get_direction_lower_nybble(); + for (i = 0; i < 4; i++) + { + if (playerDir == gUnknown_085920E4[i]) + data[5] = (i + 1) & 3; + } + gTasks[taskId].func = sub_80FDADC; + data[3] = 0; + data[2] = 0; + } + return; + } + PlaySE(SE_DAUGI); + data[4]++; + } + data[3] = (data[3] + 1) & 0x1F; +} + +void sub_80FD5CC(u8 taskId) +{ + sub_8197434(0, 1); + sub_80984F4(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) +{ + int distanceX, distanceY; + s16 x, y, i, newDistanceX, newDistanceY; + PlayerGetDestCoords(&x, &y); + gTasks[taskId].data[2] = FALSE; + for (i = 0; i < events->bgEventCount; i++) + { + if (events->bgEvents[i].kind == 7 && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 0x1F4)) + { + distanceX = (u16)events->bgEvents[i].x + 7; + newDistanceX = distanceX - x; + distanceY = (u16)events->bgEvents[i].y + 7; + newDistanceY = distanceY - y; + + if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6)) + sub_80FD8E0(taskId, newDistanceX, newDistanceY); + } + } + + sub_80FD7C8(taskId); + if (gTasks[taskId].data[2] == TRUE) + return TRUE; + else + return FALSE; +} + +bool8 sub_80FD6D4(struct MapEvents *events, s16 x, s16 y) +{ + u8 bgEventCount = events->bgEventCount; + struct BgEvent *bgEvent = events->bgEvents; + int i; + + for (i = 0; i < bgEventCount; i++) + { + if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? + { + if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 0x1F4)) + return TRUE; + else + return FALSE; + } + } + return FALSE; +} + +bool8 sub_80FD730(struct MapConnection *connection, int x, int y) +{ + struct MapHeader *mapHeader; + u16 localX, localY; + u32 localOffset; + s32 localLength; + + mapHeader = mapconnection_get_mapheader(connection); + + switch (connection->direction) + { + // same weird temp variable behavior seen in sub_80FD6D4 + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; + } + return sub_80FD6D4(mapHeader->events, localX, localY); +} + +// weird math +#ifdef NONMATCHING +void sub_80FD7C8(u8 taskId) +{ + s16 x, y; + s16 curX, curY; + s16 width = gMapHeader.mapData->width + 7; + s16 height = gMapHeader.mapData->height + 7; + + PlayerGetDestCoords(&x, &y); + + for (curX = x - 7; curX <= x + 7; curX++) + { + for (curY = y - 5; curY <= y + 5; curY++) + { + if (7 > curX + || curX >= width + || 7 > curY + || curY >= height) + { + struct MapConnection *conn = sub_8088A8C(curX, curY); + if (conn && sub_80FD730(conn, curX, curY) == TRUE) + sub_80FD8E0(taskId, curX - x, curY - y); + } + } + } +} +#else +__attribute__((naked)) +void sub_80FD7C8(u8 taskId) +{ + 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, 0x14\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + ldr r0, =gMapHeader\n\ + ldr r1, [r0]\n\ + ldr r0, [r1]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r0, [r1, 0x4]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0xC]\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl PlayerGetDestCoords\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + subs r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + mov r1, sp\n\ + movs r2, 0\n\ + ldrsh r1, [r1, r2]\n\ + adds r1, 0x7\n\ + cmp r0, r1\n\ + bgt _080FD8CC\n\ +_080FD816:\n\ + mov r5, sp\n\ + ldrh r0, [r5, 0x2]\n\ + subs r0, 0x5\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r2, r4, 16\n\ + asrs r1, r2, 16\n\ + movs r6, 0x2\n\ + ldrsh r0, [r5, r6]\n\ + adds r0, 0x5\n\ + lsls r3, 16\n\ + mov r8, r3\n\ + cmp r1, r0\n\ + bgt _080FD8B6\n\ + movs r0, 0x7\n\ + str r0, [sp, 0x10]\n\ + mov r1, r8\n\ + asrs r1, 16\n\ + mov r9, r1\n\ + mov r10, r0\n\ +_080FD83E:\n\ + ldr r3, [sp, 0x10]\n\ + cmp r3, r9\n\ + bgt _080FD860\n\ + ldr r5, [sp, 0x8]\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + cmp r9, r0\n\ + bge _080FD860\n\ + asrs r1, r2, 16\n\ + cmp r10, r1\n\ + bgt _080FD860\n\ + ldr r6, [sp, 0xC]\n\ + lsls r0, r6, 16\n\ + asrs r0, 16\n\ + lsls r7, r4, 16\n\ + cmp r1, r0\n\ + blt _080FD89E\n\ +_080FD860:\n\ + mov r0, r8\n\ + asrs r5, r0, 16\n\ + lsls r4, 16\n\ + asrs r6, r4, 16\n\ + adds r0, r5, 0\n\ + adds r1, r6, 0\n\ + bl sub_8088A8C\n\ + adds r7, r4, 0\n\ + cmp r0, 0\n\ + beq _080FD89E\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + bl sub_80FD730\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080FD89E\n\ + mov r0, sp\n\ + ldrh r1, [r0]\n\ + subs r1, r5, r1\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + ldrh r2, [r0, 0x2]\n\ + subs r2, r6, r2\n\ + lsls r2, 16\n\ + asrs r2, 16\n\ + ldr r0, [sp, 0x4]\n\ + bl sub_80FD8E0\n\ +_080FD89E:\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r0, r7, r1\n\ + lsrs r4, r0, 16\n\ + lsls r2, r4, 16\n\ + asrs r1, r2, 16\n\ + mov r3, sp\n\ + movs r5, 0x2\n\ + ldrsh r0, [r3, r5]\n\ + adds r0, 0x5\n\ + cmp r1, r0\n\ + ble _080FD83E\n\ +_080FD8B6:\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + add r1, r8\n\ + lsrs r3, r1, 16\n\ + asrs r1, 16\n\ + mov r0, sp\n\ + movs r6, 0\n\ + ldrsh r0, [r0, r6]\n\ + adds r0, 0x7\n\ + cmp r1, r0\n\ + ble _080FD816\n\ +_080FD8CC:\n\ + add sp, 0x14\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\ + .pool\n\ + .syntax divided\n"); +} +#endif + +void sub_80FD8E0(u8 taskId, s16 x, s16 y) +{ + s16 *data = gTasks[taskId].data; + s16 var1, var2, var3, var4; + + if (data[2] == FALSE) + { + data[0] = x; + data[1] = y; + data[2] = TRUE; + } + else + { + // data[0] and data[1] contain the player's coordinates. + // x and y contain the item's coordinates. + if (data[0] < 0) + var1 = data[0] * -1; // item is to the left + else + var1 = data[0]; // item is to the right + + if (data[1] < 0) + var2 = data[1] * -1; // item is to the north + else + var2 = data[1]; // item is to the south + + if (x < 0) + var3 = x * -1; + else + var3 = x; + + if (y < 0) + var4 = y * -1; + else + var4 = y; + + if (var1 + var2 > var3 + var4) + { + data[0] = x; + data[1] = y; + } + else + { + if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + { + data[0] = x; + data[1] = y; + } + } + } +} + +u8 sub_80FD9B0(s16 itemX, s16 itemY) +{ + s16 abX, abY; + + if (itemX == 0 && itemY == 0) + return DIR_NONE; // player is standing on the item. + + // get absolute X distance. + if (itemX < 0) + abX = itemX * -1; + else + abX = itemX; + + // get absolute Y distance. + if (itemY < 0) + abY = itemY * -1; + else + abY = itemY; + + if (abX > abY) + { + if (itemX < 0) + return DIR_EAST; + else + return DIR_NORTH; + } + else + { + if (abX < abY) + { + if (itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + if (abX == abY) + { + if (itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + return DIR_NONE; // should never get here. return something so it doesnt crash. + } +} + +void sub_80FDA24(u8 direction) +{ + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + FieldObjectClearAnim(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + npc_sync_anim_pause_bits(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + PlayerTurnInPlace(direction); +} + +void sub_80FDA94(u8 taskId) +{ + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) + DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC); +} + +void sub_80FDADC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE + || data[2] == FALSE) + { + sub_80FDA24(gUnknown_085920E4[data[5]]); + data[2] = 1; + data[5] = (data[5] + 1) & 3; + data[3]++; + + if (data[3] == 4) + DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, sub_80FD5CC); + } +} + +void ItemUseOutOfBattle_PokeblockCase(u8 taskId) +{ + if (sub_81221AC() == TRUE) + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + } + else if (gTasks[taskId].data[3] != TRUE) + { + *gUnknown_0203CE54 = sub_80FDBEC; + unknown_ItemMenu_Confirm(taskId); + } + else + { + gFieldCallback = sub_80AF6D4; + FadeScreen(1, 0); + gTasks[taskId].func = sub_80FDC00; + } +} + +void sub_80FDBEC(void) +{ + OpenPokeblockCase(0, bag_menu_mail_related); +} + +void sub_80FDC00(u8 taskId) +{ + if (!gPaletteFade.active) + { + overworld_free_bg_tilemaps(); + OpenPokeblockCase(0, c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + } +} + +void ItemUseOutOfBattle_CoinCase(u8 taskId) +{ + ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4); + StringExpandPlaceholders(gStringVar4, gText_CoinCase); + + if (!gTasks[taskId].data[3]) + { + DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu); + } + else + { + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + } +} + +void ItemUseOutOfBattle_PowderJar(u8 taskId) +{ + ConvertIntToDecimalStringN(gStringVar1, sub_80247BC(), 0, 5); + StringExpandPlaceholders(gStringVar4, gText_PowderQty); + + if (!gTasks[taskId].data[3]) + { + DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu); + } + else + { + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + } +} + +void sub_80FDD10(u8 taskId) +{ + if (IsPlayerFacingPlantedBerryTree() == TRUE) + { + gUnknown_0203A0F4 = sub_80FDD74; + gFieldCallback = MapPostLoadHook_UseItem; + *gUnknown_0203CE54 = c2_exit_to_overworld_2_switch; + unknown_ItemMenu_Confirm(taskId); + } + else + { + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); + } +} + +void sub_80FDD74(u8 taskId) +{ + RemoveBagItem(gSpecialVar_ItemId, 1); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Route102_EventScript_274482); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_WailmerPail(u8 taskId) +{ + if (sub_80FDE2C() == TRUE) + { + gUnknown_0203A0F4 = sub_80FDE7C; + SetUpItemUseOnFieldCallback(taskId); + } + else if (TryToWaterBerryTree() == TRUE) + { + gUnknown_0203A0F4 = sub_80FDE08; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + } +} + +void sub_80FDE08(u8 taskId) +{ + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Route102_EventScript_2744C0); + DestroyTask(taskId); +} + +bool8 sub_80FDE2C(void) +{ + u16 x, y; + u8 z; + u8 objId; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + z = PlayerGetZCoord(); + objId = GetFieldObjectIdByXYZ(x, y, z); + if (objId == 16 || gMapObjects[objId].graphicsId != 0xE4) + return FALSE; + else + return TRUE; +} + +void sub_80FDE7C(u8 taskId) +{ + ScriptContext2_Enable(); + ScriptContext1_SetupScript(BattleFrontier_OutsideEast_EventScript_242CFC); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_Medicine(u8 taskId) +{ + gUnknown_03006328 = ItemUseCB_Medicine; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_ReduceEV(u8 taskId) +{ + gUnknown_03006328 = sub_81B67C8; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_SacredAsh(u8 taskId) +{ + gUnknown_03006328 = sub_81B79E8; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_PPRecovery(u8 taskId) +{ + gUnknown_03006328 = dp05_ether; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_PPUp(u8 taskId) +{ + gUnknown_03006328 = dp05_pp_up; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_RareCandy(u8 taskId) +{ + gUnknown_03006328 = dp05_rare_candy; + SetUpItemUseCallback(taskId); +} + +void ItemUseOutOfBattle_TMHM(u8 taskId) +{ + if (gSpecialVar_ItemId >= ITEM_HM01) + DisplayItemMessage(taskId, 1, gText_BootedUpHM, sub_80FDF90); // HM + else + DisplayItemMessage(taskId, 1, gText_BootedUpTM, sub_80FDF90); // TM +} + +void sub_80FDF90(u8 taskId) +{ + PlaySE(SE_PC_LOGIN); + gTasks[taskId].func = task08_0809AD8C; +} + +void task08_0809AD8C(u8 taskId) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]); + StringExpandPlaceholders(gStringVar4, gText_TMHMContainedVar1); + DisplayItemMessage(taskId, 1, gStringVar4, sub_80FE024); + } +} + +void sub_80FE024(u8 taskId) +{ + bag_menu_yes_no(taskId, 6, gUnknown_085920E8); +} + +void sub_80FE03C(u8 taskId) +{ + gUnknown_03006328 = sub_81B6DC4; + SetUpItemUseCallback(taskId); +} + +void sub_80FE058(void) +{ + RemoveBagItem(gSpecialVar_ItemId, 1); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2); + if (!InBattlePyramid()) + { + sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId)); + sub_81ABA88(ItemId_GetPocket(gSpecialVar_ItemId)); + } + else + { + sub_81C5924(); + sub_81C59BC(); + } +} + +void ItemUseOutOfBattle_Repel(u8 taskId) +{ + if (VarGet(VAR_REPEL_STEP_COUNT) == 0) + gTasks[taskId].func = sub_80FE124; + else if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, bag_menu_inits_lists_menu); + else + DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, sub_81C6714); +} + +void sub_80FE124(u8 taskId) +{ + s16* data = gTasks[taskId].data; + + if (++data[8] > 7) + { + data[8] = 0; + PlaySE(SE_TU_SAA); + gTasks[taskId].func = sub_80FE164; + } +} + +void sub_80FE164(u8 taskId) +{ + if (!IsSEPlaying()) + { + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); + sub_80FE058(); + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu); + else + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + } +} + +void sub_80FE1D0(u8 taskId) +{ + if(++gTasks[taskId].data[8] > 7) + { + PlaySE(SE_BIDORO); + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu); + else + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + } +} + +void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) +{ + CopyItemName(gSpecialVar_ItemId, gStringVar2); + if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE) + { + FlagSet(FLAG_SYS_ENC_UP_ITEM); + FlagClear(FLAG_SYS_ENC_DOWN_ITEM); + StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildLured); + } + else + { + FlagSet(FLAG_SYS_ENC_DOWN_ITEM); + FlagClear(FLAG_SYS_ENC_UP_ITEM); + StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildRepelled); + } + gTasks[taskId].data[8] = 0; + gTasks[taskId].func = sub_80FE1D0; +} + +void task08_080A1C44(u8 taskId) +{ + player_avatar_init_params_reset(); + sub_80B7CC8(); + DestroyTask(taskId); +} + +void re_escape_rope(u8 taskId) +{ + flagmods_08054D70(); + sub_80FE058(); + gTasks[taskId].data[0] = 0; + DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44); +} + +bool8 sub_80FE314(void) +{ + if (gMapHeader.flags & 2) + return TRUE; + else + return FALSE; +} + +void ItemUseOutOfBattle_EscapeRope(u8 taskId) +{ + if (sub_80FE314() == TRUE) + { + gUnknown_0203A0F4 = re_escape_rope; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + } +} + +void ItemUseOutOfBattle_EvolutionStone(u8 taskId) +{ + gUnknown_03006328 = sub_81B7C74; + SetUpItemUseCallback(taskId); +} + +void ItemUseInBattle_PokeBall(u8 taskId) +{ + if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + { + RemoveBagItem(gSpecialVar_ItemId, 1); + if (!InBattlePyramid()) + unknown_ItemMenu_Confirm(taskId); + else + sub_81C5B14(taskId); + } + else if (!InBattlePyramid()) + { + DisplayItemMessage(taskId, 1, gText_BoxFull, bag_menu_inits_lists_menu); + } + else + DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, sub_81C6714); +} + +void sub_80FE408(u8 taskId) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + if (!InBattlePyramid()) + unknown_ItemMenu_Confirm(taskId); + else + sub_81C5B14(taskId); + } +} + +void sub_80FE440(u8 taskId) +{ + if(++gTasks[taskId].data[8] > 7) + { + PlaySE(SE_KAIFUKU); + RemoveBagItem(gSpecialVar_ItemId, 1); + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + else + DisplayItemMessageInBattlePyramid(taskId, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + } +} + +void ItemUseInBattle_StatIncrease(u8 taskId) +{ + u16 partyId = gBattlePartyID[gBankInMenu]; + + if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) + { + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gText_WontHaveEffect, bag_menu_inits_lists_menu); + else + DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, sub_81C6714); + } + else + { + gTasks[taskId].func = sub_80FE440; + gTasks[taskId].data[8] = 0; + } +} + +void sub_80FE54C(u8 taskId) +{ + if (!InBattlePyramid()) + { + *gUnknown_0203CE54 = sub_81B89F0; + unknown_ItemMenu_Confirm(taskId); + } + else + { + *gUnknown_0203CF2C = sub_81B89F0; + sub_81C5B14(taskId); + } +} + +void ItemUseInBattle_Medicine(u8 taskId) +{ + gUnknown_03006328 = ItemUseCB_Medicine; + sub_80FE54C(taskId); +} + +void sub_80FE5AC(u8 taskId) +{ + gUnknown_03006328 = sub_81B79E8; + sub_80FE54C(taskId); +} + +void ItemUseInBattle_PPRecovery(u8 taskId) +{ + gUnknown_03006328 = dp05_ether; + sub_80FE54C(taskId); +} + +void ItemUseInBattle_Escape(u8 taskId) +{ + + if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) + { + sub_80FE058(); + if (!InBattlePyramid()) + DisplayItemMessage(taskId, 1, gStringVar4, unknown_ItemMenu_Confirm); + else + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C5B14); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + } +} + +void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId) - 1) + { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[4] = 1; + ItemUseOutOfBattle_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[4] = 1; + ItemUseOutOfBattle_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[4] = 1; + ItemUseOutOfBattle_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[4] = 1; + ItemUseOutOfBattle_PPUp(taskId); + break; + case 20: + gTasks[taskId].data[4] = 1; + ItemUseOutOfBattle_PPRecovery(taskId); + break; + default: + gTasks[taskId].data[4] = 4; + ItemUseOutOfBattle_CannotUse(taskId); + } +} + +void ItemUseInBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId)) + { + case 0: + ItemUseInBattle_StatIncrease(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + ItemUseInBattle_Medicine(taskId); + break; + case 21: + ItemUseInBattle_PPRecovery(taskId); + break; + default: + ItemUseOutOfBattle_CannotUse(taskId); + } +} + +void ItemUseOutOfBattle_CannotUse(u8 taskId) +{ + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); +} diff --git a/src/mail.c b/src/mail.c index c3cbe4a3c..ac263ac67 100644 --- a/src/mail.c +++ b/src/mail.c @@ -4,7 +4,7 @@ #include "main.h" #include "overworld.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "palette.h" #include "text.h" #include "menu.h" diff --git a/src/option_menu.c b/src/option_menu.c index 7f92756ab..cbbe14b77 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -2,7 +2,7 @@ #include "option_menu.h" #include "main.h" #include "menu.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "palette.h" #include "sprite.h" #include "task.h" diff --git a/src/pokeblock.c b/src/pokeblock.c index 1a4ce3155..472b030e0 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -14,7 +14,7 @@ #include "battle.h" #include "battle_controllers.h" #include "palette.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "list_menu.h" #include "gpu_regs.h" #include "decompress.h" diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 3df2ff151..a4bb4a728 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -3,7 +3,7 @@ #include "battle.h" #include "palette.h" #include "main.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "gpu_regs.h" #include "bg.h" @@ -34,7 +34,7 @@ extern struct SpriteTemplate gUnknown_0202499C; extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[]; -extern void dp12_8087EA4(void); +extern void ScanlineEffect_Clear(void); extern void sub_8035658(void); extern bool8 IsDoubleBattle(void); extern u8 GetSubstituteSpriteDefault_Y(u8 bank); @@ -72,7 +72,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) switch (gBattleScripting.reshowMainState) { case 0: - dp12_8087EA4(); + ScanlineEffect_Clear(); sub_8035658(); SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); diff --git a/src/scanline_effect.c b/src/scanline_effect.c new file mode 100644 index 000000000..148e053fc --- /dev/null +++ b/src/scanline_effect.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" +#include "scanline_effect.h" + +static void CopyValue16Bit(void); +static void CopyValue32Bit(void); + +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; + +// EWRAM vars + +// Per-scanline register values. +// This is double buffered so that it can be safely written to at any time +// without overwriting the buffer that the DMA is currently reading +EWRAM_DATA u16 gScanlineEffectRegBuffers[2][0x3C0] = {0}; + +EWRAM_DATA struct ScanlineEffect gScanlineEffect = {0}; +EWRAM_DATA static bool8 sShouldStopWaveTask = FALSE; + +void ScanlineEffect_Stop(void) +{ + gScanlineEffect.state = 0; + DmaStop(0); + if (gScanlineEffect.waveTaskId != 0xFF) + { + DestroyTask(gScanlineEffect.waveTaskId); + gScanlineEffect.waveTaskId = 0xFF; + } +} + +void ScanlineEffect_Clear(void) +{ + CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + gScanlineEffect.dmaSrcBuffers[0] = NULL; + gScanlineEffect.dmaSrcBuffers[1] = NULL; + gScanlineEffect.dmaDest = NULL; + gScanlineEffect.dmaControl = 0; + gScanlineEffect.srcBuffer = 0; + gScanlineEffect.state = 0; + gScanlineEffect.unused16 = 0; + gScanlineEffect.unused17 = 0; + gScanlineEffect.waveTaskId = 0xFF; +} + +void ScanlineEffect_SetParams(struct ScanlineEffectParams params) +{ + if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit + { + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; + } + else // assume 32-bit + { + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; + } + + gScanlineEffect.dmaControl = params.dmaControl; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.state = params.initState; + gScanlineEffect.unused16 = params.unused9; + gScanlineEffect.unused17 = params.unused9; +} + +void ScanlineEffect_InitHBlankDmaTransfer(void) +{ + if (gScanlineEffect.state == 0) + { + return; + } + else if (gScanlineEffect.state == 3) + { + gScanlineEffect.state = 0; + DmaStop(0); + sShouldStopWaveTask = TRUE; + } + else + { + DmaStop(0); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer + gScanlineEffect.srcBuffer ^= 1; + } +} + +// These two functions are used to copy the register for the first scanline, +// depending whether it is a 16-bit register or a 32-bit register. + +static void CopyValue16Bit(void) +{ + u16 *dest = (u16 *)gScanlineEffect.dmaDest; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; + + *dest = *src; +} + +static void CopyValue32Bit(void) +{ + u32 *dest = (u32 *)gScanlineEffect.dmaDest; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; + + *dest = *src; +} + +#define tStartLine data[0] +#define tEndLine data[1] +#define tWaveLength data[2] +#define tSrcBufferOffset data[3] +#define tFramesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] +#define tApplyBattleBgOffsets data[7] + +static void TaskFunc_UpdateWavePerFrame(u8 taskId) +{ + int value = 0; + int i; + int offset; + + if (sShouldStopWaveTask) + { + DestroyTask(taskId); + gScanlineEffect.waveTaskId = 0xFF; + } + else + { + if (gTasks[taskId].tApplyBattleBgOffsets) + { + switch (gTasks[taskId].tRegOffset) + { + case SCANLINE_EFFECT_REG_BG0HOFS: + value = gBattle_BG0_X; + break; + case SCANLINE_EFFECT_REG_BG0VOFS: + value = gBattle_BG0_Y; + break; + case SCANLINE_EFFECT_REG_BG1HOFS: + value = gBattle_BG1_X; + break; + case SCANLINE_EFFECT_REG_BG1VOFS: + value = gBattle_BG1_Y; + break; + case SCANLINE_EFFECT_REG_BG2HOFS: + value = gBattle_BG2_X; + break; + case SCANLINE_EFFECT_REG_BG2VOFS: + value = gBattle_BG2_Y; + break; + case SCANLINE_EFFECT_REG_BG3HOFS: + value = gBattle_BG3_X; + break; + case SCANLINE_EFFECT_REG_BG3VOFS: + value = gBattle_BG3_Y; + break; + } + } + if (gTasks[taskId].tFramesUntilMove != 0) + { + gTasks[taskId].tFramesUntilMove--; + offset = gTasks[taskId].tSrcBufferOffset + 320; + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; + offset++; + } + } + else + { + gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval; + offset = gTasks[taskId].tSrcBufferOffset + 320; + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; + offset++; + } + + // increment src buffer offset + gTasks[taskId].tSrcBufferOffset++; + if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength) + gTasks[taskId].tSrcBufferOffset = 0; + } + } +} + +static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) +{ + u16 i = 0; + u8 theta = 0; + + while (i < 256) + { + buffer[i] = (gSineTable[theta] * amplitude) / 256; + theta += frequency; + i++; + } +} + +// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive). +// 'frequency' and 'amplitude' control the frequency and amplitude of the wave. +// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. +// 'regOffset' is the offset of the video register to modify. +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets) +{ + int i; + int offset; + struct ScanlineEffectParams params; + u8 taskId; + + ScanlineEffect_Clear(); + + params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.initState = 1; + params.unused9 = 0; + ScanlineEffect_SetParams(params); + + taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); + + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].tWaveLength = 256 / frequency; + gTasks[taskId].tSrcBufferOffset = 0; + gTasks[taskId].tFramesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets; + + gScanlineEffect.waveTaskId = taskId; + sShouldStopWaveTask = FALSE; + + GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); + + offset = 320; + for (i = startLine; i < endLine; i++) + { + gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; + gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset]; + offset++; + } + + return taskId; +} diff --git a/src/scrcmd.c b/src/scrcmd.c index 0557cd95e..1768f0d4c 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -638,7 +638,7 @@ static bool8 IsPaletteNotActive(void) bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { - fade_screen(ScriptReadByte(ctx), 0); + FadeScreen(ScriptReadByte(ctx), 0); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -648,7 +648,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) u8 mode = ScriptReadByte(ctx); u8 speed = ScriptReadByte(ctx); - fade_screen(mode, speed); + FadeScreen(mode, speed); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -662,12 +662,12 @@ bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) case 1: default: CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE); - fade_screen(mode, 0); + FadeScreen(mode, 0); break; case 0: case 2: CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE); - fade_screen(mode, 0); + FadeScreen(mode, 0); break; } @@ -726,7 +726,7 @@ bool8 ScrCmd_setweather(struct ScriptContext *ctx) bool8 ScrCmd_resetweather(struct ScriptContext *ctx) { - sub_80AEDBC(); + SetSav1WeatherFromCurrMapHeader(); return FALSE; } diff --git a/src/secret_base.c b/src/secret_base.c index bf6bec1f8..61c2511b7 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -394,7 +394,7 @@ void sub_80E8FD0(u8 taskId) void sub_80E9068(void) { CreateTask(sub_80E8FD0, 0); - fade_screen(1, 0); + FadeScreen(1, 0); saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); } @@ -451,7 +451,7 @@ void sub_80E916C(u8 taskId) void sub_80E91F8(void) { CreateTask(sub_80E916C, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } bool8 CurrentMapIsSecretBase(void) @@ -651,7 +651,7 @@ void sub_80E96A4(u8 taskId) void sub_80E9728(void) { CreateTask(sub_80E96A4, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } void sub_80E9744(void) diff --git a/src/time_events.c b/src/time_events.c new file mode 100644 index 000000000..1f169a5c6 --- /dev/null +++ b/src/time_events.c @@ -0,0 +1,118 @@ +#include "global.h" +#include "time_events.h" +#include "event_data.h" +#include "field_weather.h" +#include "pokemon.h" +#include "random.h" +#include "overworld.h" +#include "rtc.h" +#include "script.h" +#include "task.h" + +static u32 GetMirageRnd(void) +{ + u32 hi = VarGet(VAR_MIRAGE_RND_H); + u32 lo = VarGet(VAR_MIRAGE_RND_L); + return (hi << 16) | lo; +} + +static void SetMirageRnd(u32 rnd) +{ + VarSet(VAR_MIRAGE_RND_H, rnd >> 16); + VarSet(VAR_MIRAGE_RND_L, rnd); +} + +// unused +void InitMirageRnd(void) +{ + SetMirageRnd((Random() << 16) | Random()); +} + +void UpdateMirageRnd(u16 days) +{ + s32 rnd = GetMirageRnd(); + while (days) + { + rnd = 1103515245 * rnd + 12345; + days--; + } + SetMirageRnd(rnd); +} + +bool8 IsMirageIslandPresent(void) +{ + u16 rnd = GetMirageRnd() >> 16; + int i; + + for (i = 0; i < PARTY_SIZE; i++) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && (GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY) & 0xFFFF) == rnd) + return TRUE; + + return FALSE; +} + +void UpdateShoalTideFlag(void) +{ + static const u8 tide[] = + { + 1, // 00 + 1, // 01 + 1, // 02 + 0, // 03 + 0, // 04 + 0, // 05 + 0, // 06 + 0, // 07 + 0, // 08 + 1, // 09 + 1, // 10 + 1, // 11 + 1, // 12 + 1, // 13 + 1, // 14 + 0, // 15 + 0, // 16 + 0, // 17 + 0, // 18 + 0, // 19 + 0, // 20 + 1, // 21 + 1, // 22 + 1, // 23 + }; + + if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0())) + { + RtcCalcLocalTime(); + if (tide[gLocalTime.hours]) + FlagSet(FLAG_SYS_SHOAL_TIDE); + else + FlagClear(FLAG_SYS_SHOAL_TIDE); + } +} + +static void Task_WaitWeather(u8 taskId) +{ + if (IsWeatherChangeComplete()) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +void WaitWeather(void) +{ + CreateTask(Task_WaitWeather, 80); +} + +void InitBirchState(void) +{ + *GetVarPointer(VAR_BIRCH_STATE) = 0; +} + +void UpdateBirchState(u16 days) +{ + u16 *state = GetVarPointer(VAR_BIRCH_STATE); + *state += days; + *state %= 7; +} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 12f475c93..c8898d08f 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -4,7 +4,7 @@ #include "malloc.h" #include "palette.h" #include "pokenav.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "bg.h" #include "window.h" @@ -131,7 +131,7 @@ void sub_8166340(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_81D2108(gUnknown_0203BCAC->field_7C58); - sub_80BA0A8(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_816636C(void (*func)(void)) diff --git a/src/wallclock.c b/src/wallclock.c index dbea24b4c..f15bbbc27 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -12,7 +12,7 @@ #include "window.h" #include "text_window.h" #include "menu.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "task.h" #include "strings.h" #include "sound.h" diff --git a/sym_ewram.txt b/sym_ewram.txt index ac8b8762f..7c22709de 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -713,36 +713,7 @@ gUnknown_02038BC6: @ 2038BC6 gFieldEffectArguments: @ 2038C08 .space 0x20 -gUnknown_02038C28: @ 2038C28 - .space 0x2 - -gUnknown_02038C2A: @ 2038C2A - .space 0x2 - -gUnknown_02038C2C: @ 2038C2C - .space 0x13C - -gUnknown_02038D68: @ 2038D68 - .space 0x140 - -gUnknown_02038EA8: @ 2038EA8 - .space 0x280 - -gUnknown_02039128: @ 2039128 - .space 0x280 - -gUnknown_020393A8: @ 20393A8 - .space 0x140 - -gUnknown_020394E8: @ 20394E8 - .space 0x640 - -gUnknown_02039B28: @ 2039B28 - .space 0x1C - -gUnknown_02039B44: @ 2039B44 - .space 0x4 - + .include "src/scanline_effect.o" .include "src/option_menu.o" .align 2 |