diff options
-rw-r--r-- | asm/mevent_8145654.s | 326 | ||||
-rw-r--r-- | src/mevent_8145654.c | 91 |
2 files changed, 89 insertions, 328 deletions
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s index 9641e4e87..31a8de0c3 100644 --- a/asm/mevent_8145654.s +++ b/asm/mevent_8145654.s @@ -5,332 +5,6 @@ .text - thumb_func_start sub_8146318 -sub_8146318: @ 8146318 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r5, =gUnknown_203F3CC - ldr r0, [r5] - cmp r0, 0 - bne _08146338 - movs r0, 0x1 - negs r0, r0 - b _081465EE - .pool -_08146338: - movs r4, 0xE0 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - lsrs r0, 1 - cmp r0, 0x6 - bls _08146348 - b _081465B8 -_08146348: - lsls r0, 2 - ldr r1, =_08146358 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08146358: - .4byte _08146374 - .4byte _08146386 - .4byte _081463EC - .4byte _08146494 - .4byte _08146544 - .4byte _0814654A - .4byte _0814655C -_08146374: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _081465D2 -_08146386: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _08146392 - b _081465EC -_08146392: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, =0x00001a98 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x1B - bl SetGpuReg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - b _081465D2 - .pool -_081463EC: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r5, =gUnknown_203F3CC - ldr r0, [r5] - movs r1, 0xDE - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - ldr r1, [r0, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0x8 - bl decompress_and_copy_tile_data_to_vram - ldr r4, =gUnknown_8468040 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r2, 0xE4 - lsls r2, 1 - adds r1, r2 - strh r0, [r1] - adds r4, 0x8 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r3, 0xE5 - lsls r3, 1 - adds r1, r3 - strh r0, [r1] - b _081465D2 - .pool -_08146494: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - beq _081464A2 - b _081465EC -_081464A2: - ldr r2, =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, =gUnknown_203F3CC - mov r8, r0 - ldr r0, [r0] - movs r4, 0xDE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - ldr r0, [r0, 0xC] - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - mov r2, r8 - ldr r1, [r2] - adds r4, r1, r4 - ldr r0, [r4] - ldr r0, [r0, 0x8] - movs r6, 0xE9 - lsls r6, 2 - adds r1, r6 - bl LZ77UnCompWram - mov r3, r8 - ldr r1, [r3] - adds r1, r6 - movs r4, 0x1E - str r4, [sp] - movs r5, 0x3 - str r5, [sp, 0x4] - str r7, [sp, 0x8] - str r7, [sp, 0xC] - str r4, [sp, 0x10] - str r5, [sp, 0x14] - movs r0, 0x1 - mov r10, r0 - str r0, [sp, 0x18] - movs r2, 0x8 - mov r9, r2 - str r2, [sp, 0x1C] - str r7, [sp, 0x20] - movs r2, 0 - movs r3, 0 - bl CopyRectToBgTilemapBufferRect - mov r3, r8 - ldr r1, [r3] - adds r1, r6 - str r4, [sp] - movs r0, 0x17 - str r0, [sp, 0x4] - str r7, [sp, 0x8] - str r5, [sp, 0xC] - str r4, [sp, 0x10] - str r0, [sp, 0x14] - mov r0, r10 - str r0, [sp, 0x18] - mov r2, r9 - str r2, [sp, 0x1C] - str r7, [sp, 0x20] - movs r0, 0x3 - movs r2, 0 - movs r3, 0x3 - bl CopyRectToBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _081465D2 - .pool -_08146544: - bl sub_8146980 - b _081465D2 -_0814654A: - bl sub_8146A30 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _081465D2 -_0814655C: - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r4, =gUnknown_203F3CC - ldr r1, [r4] - movs r3, 0xE5 - lsls r3, 2 - adds r0, r1, r3 - movs r2, 0xE3 - lsls r2, 1 - adds r1, r2 - bl AddScrollIndicatorArrowPair - ldr r1, [r4] - ldr r3, =0x000001c1 - adds r2, r1, r3 - movs r1, 0 - strb r0, [r2] - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl UpdatePaletteFade - b _081465D2 - .pool -_081465B8: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _081465EC - ldr r0, [r5] - adds r0, r4 - ldrb r2, [r0] - movs r1, 0x1 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _081465EE -_081465D2: - ldr r0, =gUnknown_203F3CC - ldr r2, [r0] - movs r0, 0xE0 - lsls r0, 1 - adds r2, r0 - ldrb r3, [r2] - lsrs r1, r3, 1 - adds r1, 0x1 - lsls r1, 1 - movs r0, 0x1 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_081465EC: - movs r0, 0 -_081465EE: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_8146318 - thumb_func_start sub_8146604 sub_8146604: @ 8146604 push {r4,r5,lr} diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index dc0969630..3d7f6d3ca 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -1,12 +1,14 @@ #include "global.h" #include "constants/species.h" #include "bg.h" +#include "gpu_regs.h" #include "palette.h" #include "decompress.h" #include "malloc.h" #include "menu.h" #include "pokemon_icon.h" #include "mystery_gift_menu.h" +#include "menu_indicators.h" #include "string_util.h" #include "mevent.h" @@ -452,14 +454,24 @@ struct UnkStruct_203F3CC { /*0000*/ struct MEventBuffer_3120_Sub unk_0000; /*01bc*/ const struct UnkStruct_8468720 * unk_01BC; - /*01c0*/ u8 unk_01C0; + /*01c0*/ u8 unk_01C0_0:1; + /*01c0*/ u8 unk_01C0_1:7; /*01c1*/ u8 unk_01C1; - /*01c2*/ u8 filler_01C2[0x11e2]; + /*01c2*/ u8 filler_01C2[4]; + /*01c6*/ u16 unk_01C6; + /*01c8*/ u16 unk_01C8[2]; + /*01cc*/ u8 filler_01CC[0x1C8]; + /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394; + /*03a4*/ u8 buffer_03A4[0x1000]; }; EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; +void sub_8146980(void); +void sub_8146A30(void); + extern const struct TextColor gUnknown_8468038[2]; +extern const struct WindowTemplate gUnknown_8468040[2]; extern const struct UnkStruct_8468720 gUnknown_8468720[8]; extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050; @@ -487,3 +499,78 @@ void sub_81462EC(void) gUnknown_203F3CC = NULL; } } + +s32 sub_8146318(void) +{ + if (gUnknown_203F3CC == NULL) + return -1; + + switch (gUnknown_203F3CC->unk_01C0_1) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + ChangeBgY(0, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgY(3, 0, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_WIN0V, 0x1A98); + SetGpuReg(REG_OFFSET_WININ, 0x1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1B); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->unk4, 0, 8, 0); + gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]); + gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]); + break; + case 3: + if (free_temp_tile_data_buffers_if_possible()) + return 0; + gPaletteFade.bufferTransferDisabled = TRUE; + LoadPalette(gUnknown_203F3CC->unk_01BC->unkC, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->unk8, gUnknown_203F3CC->buffer_03A4); + CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0); + CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(3); + break; + case 4: + sub_8146980(); + break; + case 5: + sub_8146A30(); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(2); + break; + case 6: + ShowBg(1); + ShowBg(2); + ShowBg(3); + gPaletteFade.bufferTransferDisabled = FALSE; + gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + UpdatePaletteFade(); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3CC->unk_01C0_1 = 0; + return 1; + } + + ++gUnknown_203F3CC->unk_01C0_1; + return 0; +} |