diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-03 08:28:05 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-03 08:28:05 -0500 |
commit | 9ff5f62747589e403bc8bf215f8ebe3f5ba82353 (patch) | |
tree | 477fdb279b9e030cb24cab8a0ddef78f600eed3d /src | |
parent | f92002b6da5ca426143864df5b679888cef8a9d8 (diff) |
sub_8146318
Diffstat (limited to 'src')
-rw-r--r-- | src/mevent_8145654.c | 91 |
1 files changed, 89 insertions, 2 deletions
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; +} |