diff options
-rw-r--r-- | asm/wireless_communication_status_screen.s | 240 | ||||
-rw-r--r-- | src/wireless_communication_status_screen.c | 67 |
2 files changed, 63 insertions, 244 deletions
diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s index a4f58abf8..f0bb19614 100644 --- a/asm/wireless_communication_status_screen.s +++ b/asm/wireless_communication_status_screen.s @@ -5,246 +5,6 @@ .text - thumb_func_start sub_814F46C -sub_814F46C: @ 814F46C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0814F498 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x5 - bls _0814F48E - b _0814F648 -_0814F48E: - lsls r0, 2 - ldr r1, _0814F49C @ =_0814F4A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814F498: .4byte gTasks -_0814F49C: .4byte _0814F4A0 - .align 2, 0 -_0814F4A0: - .4byte _0814F4B8 - .4byte _0814F4D4 - .4byte _0814F4F8 - .4byte _0814F514 - .4byte _0814F608 - .4byte _0814F630 -_0814F4B8: - bl sub_814F3A8 - ldr r0, _0814F4D0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0814F648 - .align 2, 0 -_0814F4D0: .4byte gTasks -_0814F4D4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl ShowBg - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl ShowBg - b _0814F618 -_0814F4F8: - ldr r0, _0814F510 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0814F506 - b _0814F648 -_0814F506: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - b _0814F622 - .align 2, 0 -_0814F510: .4byte gPaletteFade -_0814F514: - ldr r0, _0814F570 @ =gUnknown_3002040 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x10 - adds r2, r0, 0 - adds r2, 0x20 - adds r3, r0, 0 - adds r3, 0x61 - ldrb r3, [r3] - bl sub_814F7E4 - lsls r1, r5, 2 - mov r8, r1 - cmp r0, 0 - beq _0814F5A4 - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - movs r4, 0 - ldr r6, _0814F574 @ =gStringVar4 - movs r7, 0xA0 - lsls r7, 20 -_0814F542: - ldr r0, _0814F570 @ =gUnknown_3002040 - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - cmp r4, 0x3 - beq _0814F578 - lsrs r0, r7, 24 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x2 - movs r1, 0x3 - adds r2, r6, 0 - movs r3, 0x4 - bl sub_814F65C - b _0814F58A - .align 2, 0 -_0814F570: .4byte gUnknown_3002040 -_0814F574: .4byte gStringVar4 -_0814F578: - movs r0, 0x64 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r1, 0x3 - adds r2, r6, 0 - movs r3, 0x4 - bl sub_814F65C -_0814F58A: - movs r2, 0xF0 - lsls r2, 21 - adds r7, r2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0814F542 - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram -_0814F5A4: - ldr r0, _0814F5F8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0814F5B8 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0814F5E2 -_0814F5B8: - movs r0, 0x5 - bl PlaySE - ldr r2, _0814F5FC @ =gTasks - ldr r0, _0814F600 @ =gUnknown_3002040 - ldr r0, [r0] - adds r0, 0x61 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0xFF - strh r1, [r0, 0x26] - mov r0, r8 - adds r1, r0, r5 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_0814F5E2: - mov r2, r8 - adds r1, r2, r5 - lsls r1, 3 - ldr r0, _0814F604 @ =gTasks+0x8 - adds r1, r0 - adds r0, r1, 0 - adds r0, 0xE - adds r1, 0x10 - bl sub_814F364 - b _0814F648 - .align 2, 0 -_0814F5F8: .4byte gMain -_0814F5FC: .4byte gTasks -_0814F600: .4byte gUnknown_3002040 -_0814F604: .4byte gTasks+0x8 -_0814F608: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0814F618: - ldr r1, _0814F62C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 -_0814F622: - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _0814F648 - .align 2, 0 -_0814F62C: .4byte gTasks -_0814F630: - ldr r0, _0814F654 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0814F648 - ldr r0, _0814F658 @ =sub_814F32C - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0814F648: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814F654: .4byte gPaletteFade -_0814F658: .4byte sub_814F32C - thumb_func_end sub_814F46C - thumb_func_start sub_814F65C sub_814F65C: @ 814F65C push {r4-r7,lr} diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index eeb04b4eb..f2a802449 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -9,14 +9,15 @@ #include "new_menu_helpers.h" #include "scanline_effect.h" #include "m4a.h" +#include "string_util.h" #include "unk_text_util.h" #include "overworld.h" +#include "sound.h" +#include "constants/songs.h" struct WirelessCommunicationStatusScreenStruct { - u8 filler_00[0x1C]; - u32 field_1C; - u8 filler_20[0x40]; + u32 field_00[6][4]; u8 field_60; u8 field_61; u8 filler_62[0xA]; @@ -38,6 +39,7 @@ void sub_814F1E4(void); void sub_814F46C(u8 taskId); u8 sub_8116DE0(void); void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx); +bool32 sub_814F7E4(u32 * a0, u32 * a1, u32 * a2, u8 a3); const u16 gUnknown_846F4D0[][16] = { INCBIN_U16("graphics/misc/unk_846f4d0.gbapal"), @@ -195,7 +197,7 @@ void sub_814F1E4(void) SetVBlankCallback(sub_814F1C0); gUnknown_3002040->field_60 = CreateTask(sub_814F46C, 0); gUnknown_3002040->field_61 = sub_8116DE0(); - gUnknown_3002040->field_1C = 1; + gUnknown_3002040->field_00[1][3] = 1; ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -263,3 +265,60 @@ void sub_814F3A8(void) PutWindowTilemap(1); CopyWindowToVram(1, 2); } + +void sub_814F46C(u8 taskId) +{ + s32 i; + switch (gTasks[taskId].data[0]) + { + case 0: + sub_814F3A8(); + gTasks[taskId].data[0]++; + break; + case 1: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + ShowBg(1); + CopyBgTilemapBufferToVram(0); + ShowBg(0); + gTasks[taskId].data[0]++; + break; + case 2: + if (!gPaletteFade.active) + gTasks[taskId].data[0]++; + break; + case 3: + if (sub_814F7E4(gUnknown_3002040->field_00[0], gUnknown_3002040->field_00[1], gUnknown_3002040->field_00[2], gUnknown_3002040->field_61)) + { + FillWindowPixelBuffer(2, 0x00); + for (i = 0; i < 4; i++) + { + ConvertIntToDecimalStringN(gStringVar4, gUnknown_3002040->field_00[0][i], STR_CONV_MODE_RIGHT_ALIGN, 2); + if (i != 3) + sub_814F65C(2, 3, gStringVar4, 4, 30 * i + 10, 1); + else + sub_814F65C(2, 3, gStringVar4, 4, 100, 2); + } + PutWindowTilemap(2); + CopyWindowToVram(2, 3); + } + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gTasks[gUnknown_3002040->field_61].data[15] = 0xFF; + gTasks[taskId].data[0]++; + } + sub_814F364(&gTasks[taskId].data[7], &gTasks[taskId].data[8]); + break; + case 4: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].data[0]++; + break; + case 5: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_814F32C); + DestroyTask(taskId); + } + break; + } +} |