diff --git a/include/code_803E46C.h b/include/code_803E46C.h deleted file mode 100644 index dce842980..000000000 --- a/include/code_803E46C.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef GUARD_CODE_803E46C_H -#define GUARD_CODE_803E46C_H - -extern u8 gUnknown_203B40D; - -void DungeonRunFrameActions(u32); - -#endif // GUARD_CODE_803E46C_H diff --git a/include/dungeon_vram.h b/include/dungeon_vram.h new file mode 100644 index 000000000..93b9e8fea --- /dev/null +++ b/include/dungeon_vram.h @@ -0,0 +1,10 @@ +#ifndef GUARD_DUNGEON_VRAM_H +#define GUARD_DUNGEON_VRAM_H + +// TODO: copy stuff from dungeon_vram.c to this header + +extern u8 gUnknown_203B40D; + +void DungeonRunFrameActions(u32); + +#endif // GUARD_DUNGEON_VRAM_H diff --git a/ld_script.txt b/ld_script.txt index 78436faf8..fb3792c07 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -198,7 +198,7 @@ SECTIONS { src/code_803D0D8.o(.text); src/code_803D110.o(.text); src/code_803DA7C.o(.text); - src/code_803E46C.o(.text); + src/dungeon_vram.o(.text); src/code_803E724.o(.text); src/code_8040094.o(.text); src/dungeon_map.o(.text); @@ -557,7 +557,7 @@ SECTIONS { src/dungeon_config.o(.rodata); data/data_80F59C8_1.o(.rodata); src/code_803DA7C.o(.rodata); - src/code_803E46C.o(.rodata); + src/dungeon_vram.o(.rodata); src/code_803E724.o(.rodata); data/data_80F59C8_0.o(.rodata); src/dungeon_map.o(.rodata); diff --git a/src/blow_away.c b/src/blow_away.c index 0ddb16246..4b8ee372c 100644 --- a/src/blow_away.c +++ b/src/blow_away.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/code_803D110.c b/src/code_803D110.c index 08c6a6321..86142e3ad 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -7,7 +7,7 @@ #include "code_8009804.h" #include "code_800D090.h" #include "code_803D110.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "cpu.h" #include "def_filearchives.h" #include "dungeon.h" diff --git a/src/code_803DA7C.c b/src/code_803DA7C.c index eb1ee89fd..643698d8c 100644 --- a/src/code_803DA7C.c +++ b/src/code_803DA7C.c @@ -6,7 +6,7 @@ #include "code_8009804.h" #include "code_800D090.h" #include "code_803D110.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "cpu.h" #include "def_filearchives.h" #include "dungeon.h" diff --git a/src/code_803E46C.c b/src/code_803E46C.c deleted file mode 100644 index 79cf0b59f..000000000 --- a/src/code_803E46C.c +++ /dev/null @@ -1,332 +0,0 @@ -#include "global.h" -#include "globaldata.h" -#include "structs/str_dungeon.h" -#include "bg_control.h" -#include "bg_palette_buffer.h" -#include "code_8004AA0.h" -#include "code_800558C.h" -#include "code_8009804.h" -#include "code_800C9CC.h" -#include "code_80118A4.h" -#include "code_803E46C.h" -#include "code_803E668.h" -#include "code_803E724.h" -#include "dungeon_map.h" -#include "dungeon_music.h" -#include "game_options.h" -#include "input.h" -#include "play_time.h" -#include "sprite.h" -#include "text_2.h" -#include "structs/str_202ED28.h" -#include "structs/str_202EDE8.h" - -extern s32 gDungeonBrightness; -extern s32 gDungeonFramesCounter; -extern u32 gUnknown_202EDD0; -extern s32 gUnknown_202EDD4; - -static void sub_803E490(u32); -void xxx_draw_string_80524F0(void); -void sub_8085F78(void); -void sub_803F580(s32); -void sub_806CC10(); -void sub_804522C(); -void sub_803F9CC(); -void sub_803ECE0(); -void sub_803EDF0(); -void sub_800E90C(); -void sub_8042E5C(); -void sub_800F7D0(DungeonPos *); -void sub_803E874(s32, s32); - -EWRAM_DATA struct unkStruct_202ED28 gUnknown_202ED28[2][6] = {0}; -EWRAM_DATA SpriteOAM gUnknown_202EDB8 = {0}; -EWRAM_DATA SpriteOAM gUnknown_202EDC0 = {0}; - -EWRAM_INIT u8 gUnknown_203B40C = 0; -EWRAM_INIT u8 gUnknown_203B40D = 0; - -static const DungeonPos gUnknown_80F61EC[2][6] = { - [0] = {{-4, -4}, {-8, -4}, {-16, -4}, {-16, -4}, {-16, -4}, {-16, -4}}, - [1] = {{-4, -4}, {-8, -4}, {-16, -8}, {-16, -8}, {-16, -8}, {-16, -8}}, -}; - -struct SpriteInfo -{ - s32 shape; - s32 size; - s32 tileNum; -}; - -static const struct SpriteInfo gUnknown_80F621C[2][6] = { - [0] = {{0, 0, 0x200}, {1, 0, 0x201}, {1, 1, 0x203}, {1, 1, 0x223}, {1, 1, 0x223}, {1, 1, 0x223}}, - [1] = {{0, 0, 0x207}, {1, 0, 0x208}, {1, 2, 0x20A}, {1, 2, 0x22A}, {1, 2, 0x22A}, {1, 2, 0x22A}}, -}; - -void sub_803E250(void) -{ - s32 i, j; - - gUnknown_202EDD0 = 999; - gUnknown_202EDD4 = 0; - gUnknown_203B40D = 0; - gUnknown_202EDE8.unk0 = 0; - - SpriteSetY(&gUnknown_202EDC0, 0); - SpriteSetAffine1(&gUnknown_202EDC0, 0); - SpriteSetAffine2(&gUnknown_202EDC0, 0); - SpriteSetObjMode(&gUnknown_202EDC0, 0); - SpriteSetMosaic(&gUnknown_202EDC0, 0); - SpriteSetBpp(&gUnknown_202EDC0, 0); - SpriteSetShape(&gUnknown_202EDC0, 0); - SpriteSetMatrixNum(&gUnknown_202EDC0, 0); - SpriteSetSize(&gUnknown_202EDC0, 1); - SpriteSetX(&gUnknown_202EDC0, 0); - SpriteSetTileNum(&gUnknown_202EDC0, 0); - SpriteSetPriority(&gUnknown_202EDC0, 0); - SpriteSetPalNum(&gUnknown_202EDC0, 0); - SpriteSetUnk6_0(&gUnknown_202EDC0, 0); - SpriteSetUnk6_1(&gUnknown_202EDC0, 0); - SpriteSetUnk6_2(&gUnknown_202EDC0, 0); - - SpriteSetY(&gUnknown_202EDB8, 0); - SpriteSetAffine1(&gUnknown_202EDB8, 0); - SpriteSetAffine2(&gUnknown_202EDB8, 0); - SpriteSetObjMode(&gUnknown_202EDB8, 0); - SpriteSetMosaic(&gUnknown_202EDB8, 0); - SpriteSetBpp(&gUnknown_202EDB8, 0); - SpriteSetShape(&gUnknown_202EDB8, 0); - SpriteSetMatrixNum(&gUnknown_202EDB8, 0); - SpriteSetSize(&gUnknown_202EDB8, 0); - SpriteSetX(&gUnknown_202EDB8, 0); - SpriteSetTileNum(&gUnknown_202EDB8, 0); - SpriteSetPriority(&gUnknown_202EDB8, 3); - SpriteSetPalNum(&gUnknown_202EDB8, 5); - SpriteSetUnk6_0(&gUnknown_202EDB8, 0); - SpriteSetUnk6_1(&gUnknown_202EDB8, 0); - SpriteSetUnk6_2(&gUnknown_202EDB8, 0); - - for (i = 0; i < 2; i++) { - for (j = 0; j < 6; j++) { - SpriteSetAffine1(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetAffine2(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetObjMode(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetMosaic(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetBpp(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetShape(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].shape); - SpriteSetMatrixNum(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetSize(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].size); - SpriteSetTileNum(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].tileNum); - SpriteSetPriority(&gUnknown_202ED28[i][j].sprite, 3); - SpriteSetPalNum(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetUnk6_0(&gUnknown_202ED28[i][j].sprite, 0); - SpriteSetUnk6_1(&gUnknown_202ED28[i][j].sprite, 0); - - gUnknown_202ED28[i][j].pos = gUnknown_80F61EC[i][j]; - } - } - - gDungeon->unk181e8.unk18217 = 1; - gDungeon->unk181e8.unk18218 = 1; - gDungeonBrightness = 0; - SetBGPaletteBufferColorRGB(0xf8, &gFontPalette[8],0,NULL); -} - -void DungeonRunFrameActions(u32 a0) -{ - if (gUnknown_203B40C != 0) - sub_803E490(a0); - else - sub_803E668(a0); -} - -static void sub_803E490(u32 unused) -{ - gUnknown_202EDD4++; - xxx_draw_string_80524F0(); - sub_8085F78(); - sub_803F580(1); - - if(gDungeon->unk181e8.unk1821A) - { - gDungeon->unk181e8.priority = 2; - SetBG2RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y); - } - else - { - gDungeon->unk181e8.priority = 3; - SetBG2RegOffsets(0, 0); - } - SetBG3RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y - gDungeon->unk181e8.unk181FC); - sub_806CC10(); - sub_804522C(); - sub_803F9CC(); - - sub_800F7D0(&gDungeon->unk181e8.cameraPixelPos); - - if(gDungeon->unk12 <= 0x63) - gDungeon->unk12++; - - sub_800E90C(&gDungeon->unk181e8.cameraPixelPos); - sub_8042E5C(); - - if(gUnknown_202EDD0 == 0 || gUnknown_202EDD0 == 3 || gGameOptionsRef->mapOption == TOP_MAP_AND_TEAM_NO_BOTTOM) - ShowPlayerDotOnMap(); - sub_803ECE0(); - sub_803EDF0(); - - - if(gDungeon->unk181e8.unk18215 != 0 && gDungeon->unk1BDD4.unk1C06C != 3) - sub_8004AF0(gUnknown_203B40D, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); - - nullsub_8(gGameOptionsRef->unkA); - sub_8005180(); - nullsub_12(); - sub_80060EC(); - - gDungeonFramesCounter++; - - IncrementPlayTime(gPlayTimeRef); - WaitForNextFrameAndAdvanceRNG(); - LoadBufferedInputs(); - CopySpritesToOam(); - nullsub_13(); - sub_8005304(); - nullsub_14(); - - TransferBGPaletteBuffer(); - sub_8009908(); - xxx_call_update_bg_vram(); - CopyDungeonMapToVram(); - xxx_call_update_bg_sound_input(); - - gDungeon->unk181e8.unk18213 = 0; - UpdateDungeonMusic(); - sub_8011860(); - TryResetDungeonMapTilesScheduledForCopy(); - ResetSprites(FALSE); - nullsub_10(FALSE); - gUnknown_202EDD4--; -} - -void sub_803E668(u32 unused) -{ - gUnknown_202EDD4++; - nullsub_8(gGameOptionsRef->unkA); - sub_8005180(); - nullsub_12(); - sub_8005838(NULL, 0); - sub_80060EC(); - gDungeonFramesCounter++; - IncrementPlayTime(gPlayTimeRef); - WaitForNextFrameAndAdvanceRNG(); - LoadBufferedInputs(); - CopySpritesToOam(); - nullsub_13(); - sub_8005304(); - nullsub_14(); - TransferBGPaletteBuffer(); - sub_8009908(); - xxx_call_update_bg_vram(); - xxx_call_update_bg_sound_input(); - gDungeon->unk181e8.unk18213 = 0; - sub_8011860(); - ResetSprites(FALSE); - nullsub_10(FALSE); - gUnknown_202EDD4--; -} - -void sub_803E708(s32 numFrames, u32 a1) -{ - while (numFrames != 0) { - DungeonRunFrameActions(a1); - numFrames--; - } -} - -void sub_803E724(s32 r0) -{ - do - { - DungeonRunFrameActions(r0); - } while (gRealInputs.held & 0xF0); -} - -void sub_803E748(void) -{ - s32 index1; - s32 index2; - - index2 = 0x1F; - gUnknown_203B40D = 1; - gDungeonBrightness = 0; - - sub_803E874(1, 0x1F); - - for(index1 = 0; index1 < 0x2C; index1++) - { - if(index1 < 0x20) - { - index2 -= 2; - if(index2 <= 0) - { - index2 = 0; - sub_803EAF0(1, NULL); - gDungeon->unk181e8.unk18217 = index2; - } - } - if(index1 > 0xB) - if(gDungeonBrightness <= 0x1E) - gDungeonBrightness++; - sub_803E874(1, index2); - DungeonRunFrameActions(5); - } - gUnknown_203B40D = 0; - gDungeonBrightness = 0x1F; -} - -void sub_803E7C8(void) -{ - s32 index1; - s32 index2; - - index2 = 0x1F; - gUnknown_203B40D = 1; - gDungeonBrightness = 0; - - DungeonRunFrameActions(5); - - for(index1 = 0; index1 < 0x2C; index1++) - { - sub_803E874(1, index2); - if(index1 < 0x20) - { - index2 -= 2; - if(index2 <= 0) - { - index2 = 0; - sub_803EAF0(1, NULL); - gDungeon->unk181e8.unk18217 = index2; - } - } - DungeonRunFrameActions(5); - } - gUnknown_203B40D = 0; -} - -void sub_803E830(void) -{ - s32 index; - - gUnknown_203B40D = 1; - for(index = 0; index < 0x20; index++) - { - sub_803E874(0, 0); - DungeonRunFrameActions(5); - if(gDungeonBrightness > 0) - gDungeonBrightness--; - } - gDungeonBrightness = 0; - gUnknown_203B40D = 0; -} diff --git a/src/code_803E724.c b/src/code_803E724.c index b9cb6efdf..81b5757e0 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -9,7 +9,7 @@ #include "code_8009804.h" #include "code_800E9E4.h" #include "code_801602C.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_806CD90.h" #include "dungeon.h" @@ -27,25 +27,8 @@ #include "sprite.h" #include "text_1.h" -extern s32 gDungeonBrightness; -extern u32 gUnknown_202EDD0; -extern s32 gUnknown_202EDD8; extern u32 gUnknown_202EDFC; -struct DungeonPalFile -{ - void *unk0; - const void *unk4; -}; - -extern struct DungeonPalFile *gDungeonPaletteFile; -extern struct DungeonPalFile *gDungeonNameBannerPalette; -extern struct DungeonPalFile *gUnknown_202EC94; -extern RGB gUnknown_202ECA4[]; -extern u8 gUnknown_203B40C; -extern MenuInputStruct gDungeonMenu; -extern SpriteOAM gUnknown_202EDDC; - extern const u32 gUnknown_80F6490[]; extern const s32 gUnknown_80F64B4[]; extern const s32 gUnknown_80F64FC[]; @@ -68,600 +51,6 @@ void sub_803FB74(void); void sub_803FE30(s32 a0, u16 *a1, bool8 a2, bool8 a3); void sub_803FF18(s32 a0, u16 *a1, bool8 a2); -static const RGB sBlackRgb = {0, 0, 0}; - -void sub_803E874(bool8 r10, s32 r9) -{ - s32 i, index, count; - const RGB *color; - - color = gDungeonPaletteFile->unk4; - SetBGPaletteBufferColorRGB(0, &sBlackRgb, gDungeonBrightness, gDungeon->colorRamp); - color++; - index = 1; - count = 159; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); - color++; - index++; - } - - if (gDungeon->unk181e8.unk18215 == 0 || gDungeon->unk1BDD4.unk1C06C == 3) { - sub_8004AF0(TRUE, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); - } - - index += 32; - color = gUnknown_202ECA4; - count = 32; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); - color++; - index++; - } - - if (r10) { - index = 224; - color = gDungeonNameBannerPalette->unk4; - count = 16; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, r9, NULL); - color++; - index++; - } - } - - SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); - - color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; - index = 256; - count = 208; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); - nullsub_4(index, color, gDungeonBrightness, NULL); - color++; - index++; - } -} - -void BgColorCallNullsub4(void) -{ - s32 i, index, count; - const RGB *color; - - color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; - index = 256; - count = 208; - for (i = 0; i < count; i++) { - nullsub_4(index, color, gDungeonBrightness, NULL); - color++; - index++; - } -} - -void sub_803EA10(void) -{ - s32 i, index, count; - const RGB *color; - - color= gDungeonPaletteFile->unk4; - SetBGPaletteBufferColorRGB(0, &sBlackRgb, gDungeonBrightness, gDungeon->colorRamp); - color++; - index = 1; - count = 159; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); - color++; - index++; - } - - if (gDungeon->unk181e8.unk18215 == 0 || gDungeon->unk1BDD4.unk1C06C == 3) { - sub_8004AF0(TRUE, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); - } - - index += 32; - color = gUnknown_202ECA4; - count = 32; - for (i = 0; i < count; i++) { - SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); - color++; - index++; - } - - SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); -} - -static const WindowTemplates gUnknown_80F62B0 = -{ - .id = { - [0] = { - .type = WINDOW_TYPE_0, - .pos = {2, 15}, - .width = 26, - .height = 5, - .unk10 = 7, - .unk12 = 0, - .header = NULL, - }, - [1] = WIN_TEMPLATE_DUMMY, - [2] = WIN_TEMPLATE_DUMMY, - [3] = WIN_TEMPLATE_DUMMY, - } -}; - -static const WindowTemplates gUnknown_80F6310 = -{ - .id = { - [0] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {2, 3}, - .width = 6, - .height = 7, - .unk10 = 7, - .unk12 = 0, - .header = NULL, - }, - [1] = WIN_TEMPLATE_DUMMY, - [2] = WIN_TEMPLATE_DUMMY, - [3] = WIN_TEMPLATE_DUMMY, - } -}; - -static const WindowTemplates gUnknown_80F6370 = -{ - .id = { - [0] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {2, 3}, - .width = 6, - .height = 7, - .unk10 = 7, - .unk12 = 0, - .header = NULL, - }, - [1] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {10, 4}, - .width = 17, - .height = 2, - .unk10 = 2, - .unk12 = 0, - .header = NULL, - }, - [2] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {2, 13}, - .width = 26, - .height = 6, - .unk10 = 6, - .unk12 = 0, - .header = NULL, - }, - [3] = WIN_TEMPLATE_DUMMY, - } -}; - -static const WindowTemplates gUnknown_80F63D0 = -{ - .id = { - [0] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {2, 3}, - .width = 26, - .height = 14, - .unk10 = 18, - .unk12 = 2, - .header = NULL, - }, - [1] = WIN_TEMPLATE_DUMMY, - [2] = WIN_TEMPLATE_DUMMY, - [3] = WIN_TEMPLATE_DUMMY, - } -}; - -// kind==8 uses the `name` param. -void sub_803EAF0(u32 kind, u8 *name) -{ - if (kind == gUnknown_202EDD0) - return; - - switch (kind) { - case 1: { - if (gUnknown_203B40C != 0) - sub_8052210(0); - - ResetUnusedInputStruct(); - sub_803EC94(); - ShowWindows(NULL, TRUE, TRUE); - break; - } - case 0: { - sub_803EC94(); - ShowWindows(NULL, TRUE, TRUE); - if (gUnknown_203B40C != 0) { - ShowWholeRevealedDungeonMap(); - UpdateBgTilemapForDungeonMap(FALSE); - } - break; - } - case 3: { - ShowWindows(&gUnknown_80F62B0, TRUE, TRUE); - if (gUnknown_203B40C != 0) - UpdateBgTilemapForDungeonMap(TRUE); - break; - } - case 6: { - if (gUnknown_203B40C != 0) - sub_8052210(0); - - ResetUnusedInputStruct(); - ShowWindows(&gUnknown_80F6310, TRUE, TRUE); - break; - } - case 7: { - if (gUnknown_203B40C != 0) - sub_8052210(0); - - ResetUnusedInputStruct(); - ShowWindows(&gUnknown_80F6370, TRUE, TRUE); - break; - } - case 2: - case 4: { - if (gUnknown_203B40C != 0) - sub_8052210(0); - - ResetUnusedInputStruct(); - sub_803EC94(); - ShowWindows(NULL, TRUE, TRUE); - break; - } - case 5: { - if (gUnknown_203B40C != 0) - sub_8052210(0); - - ShowWindows(NULL, TRUE, TRUE); - break; - } - case 8: { - if (gUnknown_203B40C != 0) { - PlayDungeonStartButtonSE(); - sub_8052210(0); - } - - CreateConfirmNameMenu(2, name); - break; - } - case 9: { - if (gUnknown_203B40C != 0) { - sub_8052210(0); - PlayDungeonStartButtonSE(); - } - - ResetUnusedInputStruct(); - ShowWindows(&gUnknown_80F63D0, FALSE, TRUE); - break; - } - case 10: { - PlayDungeonStartButtonSE(); - break; - } - case 150: { // Dummy case put here to match, any value >= 150 works - break; - } - } - - gUnknown_202EDD0 = kind; -} - -void sub_803EC94(void) -{ - gDungeonMenu.unk1E = 0; - gDungeonMenu.unk20 = 0; - gDungeonMenu.unkC = 0; - gDungeonMenu.unkE = 0; - gDungeonMenu.unk14.x = 0; - sub_801317C(&gDungeonMenu.unk28); -} - -void DungeonShowWindows(WindowTemplates *a0, bool8 a1) -{ - gUnknown_202EDD0 = 10; - sub_8052210(0); - ResetUnusedInputStruct(); - ShowWindows(a0, TRUE, a1); -} - -void sub_803ECE0(void) -{ - gUnknown_202EDD8++; - if (gUnknown_202EDD8 < 0) - gUnknown_202EDD8 = 0; - if (gUnknown_202EDD8 > 11) - gUnknown_202EDD8 = 0; - - sub_80098BC((void *)VRAM + 0x14400, gUnknown_202EC94->unk4 + ((gUnknown_202EDD8 / 4) * 0x240), 0x240); -} - -void sub_803ED30(s32 a0, Entity *mon, u8 a2, s32 a3) -{ - s32 i, var; - - if (a0 == 0 || gDungeon->unk181e8.blinded) - return; - - for (i = 0; i < 20; i++) { - if (gUnknown_202EDE8.unk0 == 0) - break; - DungeonRunFrameActions(0x29); - } - - var = sub_803EF90(a0, a2); - gUnknown_202EDE8.unk0 = 60; - gUnknown_202EDE8.unk4 = mon; - gUnknown_202EDE8.unk8 = mon->spawnGenID; - gUnknown_202EDE8.unkC = -(var * 768); - gUnknown_202EDE8.unk10 = 0; - - if (a3 < 0) { - if (a0 < -999) { - gUnknown_202EDE8.unk2 = 6; - } - else if (a0 >= 0) { - gUnknown_202EDE8.unk2 = 10; - } - else { - gUnknown_202EDE8.unk2 = 3; - } - } - else { - gUnknown_202EDE8.unk2 = a3; - } - - sub_80098BC((void *) VRAM + 0x142C0, gDungeon->unk18, 0x80); -} - -void sub_803EDF0(void) -{ - EntityInfo *entInfo; - s32 x, y, y1, y2; - - if (gUnknown_202EDE8.unk0 == 0) - return; - if (!EntityIsValid(gUnknown_202EDE8.unk4)) { - gUnknown_202EDE8.unk0 = 0; - return; - } - if (gUnknown_202EDE8.unk8 != gUnknown_202EDE8.unk4->spawnGenID) { - gUnknown_202EDE8.unk0 = 0; - return; - } - - gUnknown_202EDE8.unk0--; - gUnknown_202EDE8.unk10 -= 46; - entInfo = GetEntInfo(gUnknown_202EDE8.unk4); - x = (entInfo->pixelPos.x + (gUnknown_202EDE8.unkC / 256)) - gDungeon->unk181e8.cameraPixelPos.x; - y1 = (entInfo->pixelPos.y + (gUnknown_202EDE8.unk10 / 256)); - y2 = (gDungeon->unk181e8.cameraPixelPos.y + 24); - y = y1 - y2; - - // sprite oam memes strike again - if (x >= -32 && y >= -8 && x < 240 && y < 160) { - SpriteSetY(&gUnknown_202EDDC, y); - SpriteSetAffine1(&gUnknown_202EDDC, 0); - SpriteSetAffine2(&gUnknown_202EDDC, 0); - SpriteSetObjMode(&gUnknown_202EDDC, 0); - SpriteSetMosaic(&gUnknown_202EDDC, 0); - SpriteSetBpp(&gUnknown_202EDDC, 0); - SpriteSetShape(&gUnknown_202EDDC, 1); - SpriteSetX(&gUnknown_202EDDC, x); - SpriteSetMatrixNum(&gUnknown_202EDDC, 0); - SpriteSetSize(&gUnknown_202EDDC, 1); - SpriteSetTileNum(&gUnknown_202EDDC, 0x216); - SpriteSetPriority(&gUnknown_202EDDC, gDungeon->unk181e8.priority); - SpriteSetPalNum(&gUnknown_202EDDC, gUnknown_202EDE8.unk2); - - SpriteSetUnk6_0(&gUnknown_202EDDC, 0); - SpriteSetUnk6_1(&gUnknown_202EDDC, 0); - SpriteSetUnk6_2(&gUnknown_202EDDC, 0); - - AddSprite(&gUnknown_202EDDC, 0x100, NULL, NULL); - } -} - -extern OpenedFile *gUnknown_202EC9C; - -static const s32 gUnknown_80F6430[][9] = -{ - [0] = {900, 800, 700, 600, 500, 400, 300, 200, 100}, - [1] = {90, 80, 70, 60, 50, 40, 30, 20, 10}, -}; - -s32 sub_803EF90(s32 a0, u8 a1) -{ - s32 i, id; - const u32 *r2; - s32 bitsNo; - s32 ret; - bool8 unkBool; - u32 *mainDst = gDungeon->unk18; - u32 *sp[] = {(u32 *)(gUnknown_202EC9C->data + 0x124), - (u32 *)(gUnknown_202EC9C->data + 0x104), - (u32 *)(gUnknown_202EC9C->data + 0xE4), - (u32 *)(gUnknown_202EC9C->data + 0xC4), - (u32 *)(gUnknown_202EC9C->data + 0xA4), - (u32 *)(gUnknown_202EC9C->data + 0x84), - (u32 *)(gUnknown_202EC9C->data + 0x64), - (u32 *)(gUnknown_202EC9C->data + 0x44), - (u32 *)(gUnknown_202EC9C->data + 0x24)}; - s32 dstId = 0; - u32 *clearDst = mainDst; - for (i = 0; i < 4; i++) { - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - clearDst[dstId++] = 0; - } - - if (a0 == 9999) { - u32 r12[] = {13, 14, 15, 15}; - - bitsNo = 0; - for (id = 0; id < 4; id++) { - u32 *dst = mainDst; - const u32 *src = (u32 *)((&((u8 *)gUnknown_202EC9C->data)[4] + r12[id] * 32)); - - for (i = 0; i < 8; i++) { - u32 toOr1, toOr2; - if (bitsNo == 0) { - toOr1 = 0; - toOr2 = *src; - } - else { - toOr1 = *src >> (32 - bitsNo); - toOr2 = *src << bitsNo; - } - - src++; - dst[0] |= toOr2; - dst[8] |= toOr1; - dst++; - } - - bitsNo += 24; - if (bitsNo >= 32) { - bitsNo -= 32; - mainDst += 8; - } - } - - return 4; - } - - if (a0 > 999) a0 = 999; - if (a0 < -999) a0 = -999; - - r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x184); - if (a1) { - if (a0 > 0) { - r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x144); - } - else if (a0 < 0) { - r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x164); - a0 = -a0; - } - } - - mainDst[0] = *r2++; - mainDst[1] = *r2++; - mainDst[2] = *r2++; - mainDst[3] = *r2++; - mainDst[4] = *r2++; - mainDst[5] = *r2++; - mainDst[6] = *r2++; - mainDst[7] = *r2++; - - bitsNo = 24; - ret = 1; - unkBool = FALSE; - for (id = 0; id < 2; id++) { - s32 arrId; - - for (arrId = 0; arrId < 9; arrId++) { - if (gUnknown_80F6430[id][arrId] <= a0) { - const u32 *src = sp[arrId]; - u32 *dst = mainDst; - - for (i = 0; i < 8; i++) { - u32 toOr1, toOr2; - if (bitsNo == 0) { - toOr1 = 0; - toOr2 = *src; - } - else { - toOr1 = *src >> (32 - bitsNo); - toOr2 = *src << bitsNo; - } - - src++; - dst[0] |= toOr2; - dst[8] |= toOr1; - dst++; - unkBool = TRUE; - } - - bitsNo += 24; - if (bitsNo >= 32) { - bitsNo -= 32; - mainDst += 8; - } - - a0 -= gUnknown_80F6430[id][arrId]; - ret++; - break; - } - } - - if (arrId == 9 && unkBool) { - const u32 *src = (u32 *)(&((u8 *)gUnknown_202EC9C->data)[4]); - u32 *dst = mainDst; - for (i = 0; i < 8; i++) { - u32 toOr1, toOr2; - if (bitsNo == 0) { - toOr1 = 0; - toOr2 = *src; - } - else { - toOr1 = *src >> (32 - bitsNo); - toOr2 = *src << bitsNo; - } - - src++; - dst[0] |= toOr2; - dst[8] |= toOr1; - dst++; - } - - bitsNo += 24; - if (bitsNo >= 32) { - bitsNo -= 32; - mainDst += 8; - } - - ret++; - } - } - - { - const u32 *src = (u32 *)(&((u8 *)gUnknown_202EC9C->data)[4] + (a0 * 32)); - u32 *dst = mainDst; - for (i = 0; i < 8; i++) { - u32 toOr1, toOr2; - if (bitsNo == 0) { - toOr1 = 0; - toOr2 = *src; - } - else { - toOr1 = *src >> (32 - bitsNo); - toOr2 = *src << bitsNo; - } - - src++; - dst[0] |= toOr2; - dst[8] |= toOr1; - dst++; - } - } - - ret++; - return ret; -} - -// file SPLIT - void sub_803F27C(bool8 a0) { UnkDungeonGlobal_unk181E8_sub *strPtr = &gDungeon->unk181e8; diff --git a/src/code_8040094_1.c b/src/code_8040094_1.c index ee8017efd..07efa330b 100644 --- a/src/code_8040094_1.c +++ b/src/code_8040094_1.c @@ -9,7 +9,7 @@ #include "code_8009804.h" #include "code_800E9E4.h" #include "code_800ED38.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_804267C.h" #include "dungeon.h" #include "dungeon_message.h" diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 5dd3e44da..cb89cd754 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -10,7 +10,7 @@ #include "code_800DAC0.h" #include "code_800E9A8.h" #include "code_800ED38.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 2464670f0..c3cf50ab5 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -3,7 +3,7 @@ #include "constants/dungeon.h" #include "constants/item.h" #include "constants/move_id.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_8041AD0.h" #include "dungeon_action.h" diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 89e9395fa..cd2d8c685 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -10,7 +10,7 @@ #include "structs/str_806B7F8.h" #include "structs/str_dungeon.h" #include "code_800F958.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_805D8C8.h" #include "code_806CD90.h" diff --git a/src/code_806CD90.c b/src/code_806CD90.c index 4db335dab..5d0bf7f19 100644 --- a/src/code_806CD90.c +++ b/src/code_806CD90.c @@ -7,7 +7,7 @@ #include "constants/dungeon.h" #include "constants/iq_skill.h" #include "structs/str_dungeon.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index 9acd21354..925c1ab8f 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -10,7 +10,7 @@ #include "position_util.h" #include "dungeon_music.h" #include "dungeon_map_access.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_806CD90.h" #include "game_options.h" #include "dungeon_items.h" diff --git a/src/code_8075708.c b/src/code_8075708.c index 1fe0db762..edc24b360 100644 --- a/src/code_8075708.c +++ b/src/code_8075708.c @@ -23,7 +23,7 @@ #include "position_util.h" #include "dungeon_music.h" #include "dungeon_map_access.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_806CD90.h" #include "game_options.h" #include "dungeon_items.h" diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index dd757f7da..c30b073b9 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_map_access.h" #include "dungeon_message.h" #include "code_805D8C8.h" diff --git a/src/code_80848F0.c b/src/code_80848F0.c index b0c04304c..404f3fa8e 100644 --- a/src/code_80848F0.c +++ b/src/code_80848F0.c @@ -17,7 +17,7 @@ #include "dungeon_util.h" #include "dungeon_map_access.h" #include "dungeon_misc.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_806CD90.h" #include "code_80861A8.h" diff --git a/src/drought_orb.c b/src/drought_orb.c index 767a48470..73cde902a 100644 --- a/src/drought_orb.c +++ b/src/drought_orb.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/dungeon_8067A80.c b/src/dungeon_8067A80.c index 817d814a3..f0cb074c6 100644 --- a/src/dungeon_8067A80.c +++ b/src/dungeon_8067A80.c @@ -3,7 +3,7 @@ #include "constants/dungeon.h" #include "constants/item.h" #include "constants/move_id.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_8041AD0.h" #include "dungeon_action.h" diff --git a/src/dungeon_8072CF4.c b/src/dungeon_8072CF4.c index 18abf9b85..5ac5db05f 100644 --- a/src/dungeon_8072CF4.c +++ b/src/dungeon_8072CF4.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "dungeon_ai_leader.h" #include "dungeon_move_util.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_8041AD0.h" #include "code_804267C.h" #include "code_8066D04.h" diff --git a/src/dungeon_cutscene_articuno.c b/src/dungeon_cutscene_articuno.c index 1eb6e448d..d1fdebd8c 100644 --- a/src/dungeon_cutscene_articuno.c +++ b/src/dungeon_cutscene_articuno.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_celebi.c b/src/dungeon_cutscene_celebi.c index a2af85d90..bd4c57fd4 100644 --- a/src/dungeon_cutscene_celebi.c +++ b/src/dungeon_cutscene_celebi.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_deoxys.c b/src/dungeon_cutscene_deoxys.c index 2cf857982..3809a24d1 100644 --- a/src/dungeon_cutscene_deoxys.c +++ b/src/dungeon_cutscene_deoxys.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_empty_summit.c b/src/dungeon_cutscene_empty_summit.c index 1fac44d23..1f530f63c 100644 --- a/src/dungeon_cutscene_empty_summit.c +++ b/src/dungeon_cutscene_empty_summit.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_entei.c b/src/dungeon_cutscene_entei.c index de9ca4909..ae35ce2fb 100644 --- a/src/dungeon_cutscene_entei.c +++ b/src/dungeon_cutscene_entei.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_groudon.c b/src/dungeon_cutscene_groudon.c index 591a3fd83..3f8fd7e2d 100644 --- a/src/dungeon_cutscene_groudon.c +++ b/src/dungeon_cutscene_groudon.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_hooh.c b/src/dungeon_cutscene_hooh.c index 9f7e1e663..647069299 100644 --- a/src/dungeon_cutscene_hooh.c +++ b/src/dungeon_cutscene_hooh.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_jirachi.c b/src/dungeon_cutscene_jirachi.c index 5c2b6abfa..3fb5af261 100644 --- a/src/dungeon_cutscene_jirachi.c +++ b/src/dungeon_cutscene_jirachi.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_kyogre.c b/src/dungeon_cutscene_kyogre.c index 13523eb14..64060fa06 100644 --- a/src/dungeon_cutscene_kyogre.c +++ b/src/dungeon_cutscene_kyogre.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_latios.c b/src/dungeon_cutscene_latios.c index 47d9b9305..61dd707d6 100644 --- a/src/dungeon_cutscene_latios.c +++ b/src/dungeon_cutscene_latios.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_lugia.c b/src/dungeon_cutscene_lugia.c index c92a26c73..25d9aa423 100644 --- a/src/dungeon_cutscene_lugia.c +++ b/src/dungeon_cutscene_lugia.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_magma_cavern.c b/src/dungeon_cutscene_magma_cavern.c index 525bd4207..9b25933bc 100644 --- a/src/dungeon_cutscene_magma_cavern.c +++ b/src/dungeon_cutscene_magma_cavern.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_mankey.c b/src/dungeon_cutscene_mankey.c index 7b3392f0a..3490b3135 100644 --- a/src/dungeon_cutscene_mankey.c +++ b/src/dungeon_cutscene_mankey.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_meanies.c b/src/dungeon_cutscene_meanies.c index e9b2a9a65..79ec4e7ed 100644 --- a/src/dungeon_cutscene_meanies.c +++ b/src/dungeon_cutscene_meanies.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_medicham.c b/src/dungeon_cutscene_medicham.c index d3e1067f1..5a1e25ddc 100644 --- a/src/dungeon_cutscene_medicham.c +++ b/src/dungeon_cutscene_medicham.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_mewtwo.c b/src/dungeon_cutscene_mewtwo.c index eda53d643..251483394 100644 --- a/src/dungeon_cutscene_mewtwo.c +++ b/src/dungeon_cutscene_mewtwo.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_moltres.c b/src/dungeon_cutscene_moltres.c index 0a97051b2..6e2f072f7 100644 --- a/src/dungeon_cutscene_moltres.c +++ b/src/dungeon_cutscene_moltres.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_raikou.c b/src/dungeon_cutscene_raikou.c index 87fd1fd76..c81fdfe6d 100644 --- a/src/dungeon_cutscene_raikou.c +++ b/src/dungeon_cutscene_raikou.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_rayquaza.c b/src/dungeon_cutscene_rayquaza.c index 4f4b916c3..c03bd7f23 100644 --- a/src/dungeon_cutscene_rayquaza.c +++ b/src/dungeon_cutscene_rayquaza.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_regis.c b/src/dungeon_cutscene_regis.c index fd6d4b068..900d84b9d 100644 --- a/src/dungeon_cutscene_regis.c +++ b/src/dungeon_cutscene_regis.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_skarmory.c b/src/dungeon_cutscene_skarmory.c index 8dd071b92..a72fb1818 100644 --- a/src/dungeon_cutscene_skarmory.c +++ b/src/dungeon_cutscene_skarmory.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_smeargle.c b/src/dungeon_cutscene_smeargle.c index 014ec5a25..c00c5d213 100644 --- a/src/dungeon_cutscene_smeargle.c +++ b/src/dungeon_cutscene_smeargle.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_suicune.c b/src/dungeon_cutscene_suicune.c index 140864a4b..da768e6cd 100644 --- a/src/dungeon_cutscene_suicune.c +++ b/src/dungeon_cutscene_suicune.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_cutscene_zapdos.c b/src/dungeon_cutscene_zapdos.c index 3b0ea56ea..92e9a1f4c 100644 --- a/src/dungeon_cutscene_zapdos.c +++ b/src/dungeon_cutscene_zapdos.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "code_800DAC0.h" #include "code_800E9A8.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_damage.c b/src/dungeon_damage.c index ec29ea568..2f2432951 100644 --- a/src/dungeon_damage.c +++ b/src/dungeon_damage.c @@ -27,7 +27,7 @@ #include "code_806CD90.h" #include "constants/direction.h" #include "constants/dungeon.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c index 2836cf8bb..8ecc3b56f 100644 --- a/src/dungeon_engine.c +++ b/src/dungeon_engine.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "run_dungeon.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "constants/dungeon.h" #include "dungeon_ai_leader.h" #include "dungeon_ai.h" diff --git a/src/dungeon_items.c b/src/dungeon_items.c index 15420c01d..934084f38 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -23,7 +23,7 @@ #include "trap.h" #include "math.h" #include "structs/str_item_text.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "sprite.h" extern SpriteOAM gUnknown_202EDC0; diff --git a/src/dungeon_kecleon_shop.c b/src/dungeon_kecleon_shop.c index b4d1e5927..355f8c9d2 100644 --- a/src/dungeon_kecleon_shop.c +++ b/src/dungeon_kecleon_shop.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "weather.h" #include "code_804267C.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon.h" #include "dungeon_config.h" #include "dungeon_leader.h" diff --git a/src/dungeon_main.c b/src/dungeon_main.c index 47295fe3d..d6451ee20 100644 --- a/src/dungeon_main.c +++ b/src/dungeon_main.c @@ -14,7 +14,7 @@ #include "code_800D090.h" #include "code_801602C.h" #include "code_801B3C0.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "code_8066D04.h" diff --git a/src/dungeon_menu_items.c b/src/dungeon_menu_items.c index d1b47401f..26b0faf54 100644 --- a/src/dungeon_menu_items.c +++ b/src/dungeon_menu_items.c @@ -16,7 +16,7 @@ #include "dungeon_music.h" #include "dungeon_ai_movement.h" #include "string_format.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "trap.h" #include "dungeon_map_access.h" diff --git a/src/dungeon_menu_moves.c b/src/dungeon_menu_moves.c index adbc70452..35e18bdc5 100644 --- a/src/dungeon_menu_moves.c +++ b/src/dungeon_menu_moves.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "structs/map.h" #include "structs/str_dungeon.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "dungeon_action.h" diff --git a/src/dungeon_menu_others.c b/src/dungeon_menu_others.c index 47fdf6023..9d4ba3376 100644 --- a/src/dungeon_menu_others.c +++ b/src/dungeon_menu_others.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "code_803D110.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "code_8097DD0.h" diff --git a/src/dungeon_menu_recruitment.c b/src/dungeon_menu_recruitment.c index 39ee7cbcc..11a589ed6 100644 --- a/src/dungeon_menu_recruitment.c +++ b/src/dungeon_menu_recruitment.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "code_800D090.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon.h" #include "dungeon_menu_recruitment.h" diff --git a/src/dungeon_menu_stairs.c b/src/dungeon_menu_stairs.c index 957368dce..659356a68 100644 --- a/src/dungeon_menu_stairs.c +++ b/src/dungeon_menu_stairs.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "code_8097DD0.h" diff --git a/src/dungeon_menu_team.c b/src/dungeon_menu_team.c index 4661924b5..a9c2d4ea3 100644 --- a/src/dungeon_menu_team.c +++ b/src/dungeon_menu_team.c @@ -8,7 +8,7 @@ #include "code_800D090.h" #include "code_801602C.h" #include "code_801B3C0.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "code_806CD90.h" diff --git a/src/dungeon_menu_tile.c b/src/dungeon_menu_tile.c index 9b2d578fa..32a8b417b 100644 --- a/src/dungeon_menu_tile.c +++ b/src/dungeon_menu_tile.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "dungeon_action.h" #include "code_8097DD0.h" diff --git a/src/dungeon_message.c b/src/dungeon_message.c index 2eee0a9a9..5037cfde9 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -7,7 +7,7 @@ #include "code_8009804.h" #include "code_800D090.h" #include "code_800E9E4.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_803E724.h" #include "dungeon.h" diff --git a/src/dungeon_message_log.c b/src/dungeon_message_log.c index e9e5729ec..20dce465e 100644 --- a/src/dungeon_message_log.c +++ b/src/dungeon_message_log.c @@ -8,7 +8,7 @@ #include "text_3.h" #include "input.h" #include "menu_input.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_music.h" #include "sprite.h" #include "code_803E724.h" diff --git a/src/dungeon_misc.c b/src/dungeon_misc.c index a21b744cb..a003d9496 100644 --- a/src/dungeon_misc.c +++ b/src/dungeon_misc.c @@ -38,7 +38,7 @@ #include "dungeon_random.h" #include "position_util.h" #include "dungeon_ai_movement.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "def_filearchives.h" #include "code_803D110.h" #include "dungeon_strings.h" diff --git a/src/dungeon_move.c b/src/dungeon_move.c index 35179aafe..ed7fb698b 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -11,7 +11,7 @@ #include "code_800DAC0.h" #include "code_800E9E4.h" #include "code_800ED38.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_803E724.h" #include "code_8041AD0.h" diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index 3404c91d1..9bc5b5fe7 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -10,7 +10,7 @@ #include "code_800DAC0.h" #include "code_800E9E4.h" #include "code_800ED38.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_803E724.h" #include "code_8041AD0.h" diff --git a/src/dungeon_vram.c b/src/dungeon_vram.c new file mode 100644 index 000000000..6f1ad0f43 --- /dev/null +++ b/src/dungeon_vram.c @@ -0,0 +1,950 @@ +#include "global.h" +#include "globaldata.h" +#include "dungeon_vram.h" +#include "structs/str_dungeon.h" +#include "bg_control.h" +#include "bg_palette_buffer.h" +#include "code_8004AA0.h" +#include "code_800558C.h" +#include "code_8009804.h" +#include "code_800C9CC.h" +#include "code_80118A4.h" +#include "code_803E668.h" +#include "code_803E724.h" +#include "dungeon_map.h" +#include "dungeon_music.h" +#include "game_options.h" +#include "input.h" +#include "play_time.h" +#include "sprite.h" +#include "text_1.h" +#include "text_2.h" +#include "structs/str_202ED28.h" +#include "structs/str_202EDE8.h" +#include "dungeon_map.h" +#include "dungeon_map_access.h" +#include "dungeon_message.h" +#include "dungeon_music.h" +#include "dungeon_logic.h" +#include "dungeon_range.h" +#include "dungeon_util.h" +#include "menu_input.h" +#include "code_801602C.h" + +// File split is correct. This technical file deals with windows, advancing frames(v-blanks) and vram / pal set-up. + +struct DungeonPalFile +{ + void *unk0; + const void *unk4; +}; + +extern struct DungeonPalFile *gDungeonPaletteFile; +extern struct DungeonPalFile *gDungeonNameBannerPalette; +extern struct DungeonPalFile *gUnknown_202EC94; +extern RGB gUnknown_202ECA4[]; +extern MenuInputStruct gDungeonMenu; +extern SpriteOAM gUnknown_202EDDC; +extern OpenedFile *gUnknown_202EC9C; + +void xxx_draw_string_80524F0(void); +void sub_8085F78(void); +void sub_803F580(s32); +void sub_806CC10(); +void sub_804522C(); +void sub_803F9CC(); +void sub_803ECE0(); +void sub_803EDF0(); +void sub_800E90C(); +void sub_8042E5C(); +void sub_800F7D0(DungeonPos *); + +static void sub_803E490(u32); +static s32 sub_803EF90(s32 a0, u8 a1); +static void sub_803EC94(void); +void sub_803E874(bool8 r10, s32 r9); + +EWRAM_DATA struct unkStruct_202ED28 gUnknown_202ED28[2][6] = {0}; +EWRAM_DATA SpriteOAM gUnknown_202EDB8 = {0}; +EWRAM_DATA SpriteOAM gUnknown_202EDC0 = {0}; +EWRAM_DATA s32 gDungeonBrightness = 0; +EWRAM_DATA s32 gDungeonFramesCounter = 0; +EWRAM_DATA s32 gUnknown_202EDD0 = 0; +EWRAM_DATA s32 gUnknown_202EDD4 = 0; +EWRAM_DATA s32 gUnknown_202EDD8 = 0; + +EWRAM_INIT u8 gUnknown_203B40C = 0; +EWRAM_INIT u8 gUnknown_203B40D = 0; + +static const DungeonPos gUnknown_80F61EC[2][6] = { + [0] = {{-4, -4}, {-8, -4}, {-16, -4}, {-16, -4}, {-16, -4}, {-16, -4}}, + [1] = {{-4, -4}, {-8, -4}, {-16, -8}, {-16, -8}, {-16, -8}, {-16, -8}}, +}; + +struct SpriteInfo +{ + s32 shape; + s32 size; + s32 tileNum; +}; + +static const struct SpriteInfo gUnknown_80F621C[2][6] = { + [0] = {{0, 0, 0x200}, {1, 0, 0x201}, {1, 1, 0x203}, {1, 1, 0x223}, {1, 1, 0x223}, {1, 1, 0x223}}, + [1] = {{0, 0, 0x207}, {1, 0, 0x208}, {1, 2, 0x20A}, {1, 2, 0x22A}, {1, 2, 0x22A}, {1, 2, 0x22A}}, +}; + +void sub_803E250(void) +{ + s32 i, j; + + gUnknown_202EDD0 = 999; + gUnknown_202EDD4 = 0; + gUnknown_203B40D = 0; + gUnknown_202EDE8.unk0 = 0; + + SpriteSetY(&gUnknown_202EDC0, 0); + SpriteSetAffine1(&gUnknown_202EDC0, 0); + SpriteSetAffine2(&gUnknown_202EDC0, 0); + SpriteSetObjMode(&gUnknown_202EDC0, 0); + SpriteSetMosaic(&gUnknown_202EDC0, 0); + SpriteSetBpp(&gUnknown_202EDC0, 0); + SpriteSetShape(&gUnknown_202EDC0, 0); + SpriteSetMatrixNum(&gUnknown_202EDC0, 0); + SpriteSetSize(&gUnknown_202EDC0, 1); + SpriteSetX(&gUnknown_202EDC0, 0); + SpriteSetTileNum(&gUnknown_202EDC0, 0); + SpriteSetPriority(&gUnknown_202EDC0, 0); + SpriteSetPalNum(&gUnknown_202EDC0, 0); + SpriteSetUnk6_0(&gUnknown_202EDC0, 0); + SpriteSetUnk6_1(&gUnknown_202EDC0, 0); + SpriteSetUnk6_2(&gUnknown_202EDC0, 0); + + SpriteSetY(&gUnknown_202EDB8, 0); + SpriteSetAffine1(&gUnknown_202EDB8, 0); + SpriteSetAffine2(&gUnknown_202EDB8, 0); + SpriteSetObjMode(&gUnknown_202EDB8, 0); + SpriteSetMosaic(&gUnknown_202EDB8, 0); + SpriteSetBpp(&gUnknown_202EDB8, 0); + SpriteSetShape(&gUnknown_202EDB8, 0); + SpriteSetMatrixNum(&gUnknown_202EDB8, 0); + SpriteSetSize(&gUnknown_202EDB8, 0); + SpriteSetX(&gUnknown_202EDB8, 0); + SpriteSetTileNum(&gUnknown_202EDB8, 0); + SpriteSetPriority(&gUnknown_202EDB8, 3); + SpriteSetPalNum(&gUnknown_202EDB8, 5); + SpriteSetUnk6_0(&gUnknown_202EDB8, 0); + SpriteSetUnk6_1(&gUnknown_202EDB8, 0); + SpriteSetUnk6_2(&gUnknown_202EDB8, 0); + + for (i = 0; i < 2; i++) { + for (j = 0; j < 6; j++) { + SpriteSetAffine1(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetAffine2(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetObjMode(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetMosaic(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetBpp(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetShape(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].shape); + SpriteSetMatrixNum(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetSize(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].size); + SpriteSetTileNum(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].tileNum); + SpriteSetPriority(&gUnknown_202ED28[i][j].sprite, 3); + SpriteSetPalNum(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetUnk6_0(&gUnknown_202ED28[i][j].sprite, 0); + SpriteSetUnk6_1(&gUnknown_202ED28[i][j].sprite, 0); + + gUnknown_202ED28[i][j].pos = gUnknown_80F61EC[i][j]; + } + } + + gDungeon->unk181e8.unk18217 = 1; + gDungeon->unk181e8.unk18218 = 1; + gDungeonBrightness = 0; + SetBGPaletteBufferColorRGB(0xf8, &gFontPalette[8],0,NULL); +} + +void DungeonRunFrameActions(u32 a0) +{ + if (gUnknown_203B40C != 0) + sub_803E490(a0); + else + sub_803E668(a0); +} + +static void sub_803E490(u32 unused) +{ + gUnknown_202EDD4++; + xxx_draw_string_80524F0(); + sub_8085F78(); + sub_803F580(1); + + if(gDungeon->unk181e8.unk1821A) + { + gDungeon->unk181e8.priority = 2; + SetBG2RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y); + } + else + { + gDungeon->unk181e8.priority = 3; + SetBG2RegOffsets(0, 0); + } + SetBG3RegOffsets(gDungeon->unk181e8.cameraPixelPos.x, gDungeon->unk181e8.cameraPixelPos.y - gDungeon->unk181e8.unk181FC); + sub_806CC10(); + sub_804522C(); + sub_803F9CC(); + + sub_800F7D0(&gDungeon->unk181e8.cameraPixelPos); + + if(gDungeon->unk12 <= 0x63) + gDungeon->unk12++; + + sub_800E90C(&gDungeon->unk181e8.cameraPixelPos); + sub_8042E5C(); + + if(gUnknown_202EDD0 == 0 || gUnknown_202EDD0 == 3 || gGameOptionsRef->mapOption == TOP_MAP_AND_TEAM_NO_BOTTOM) + ShowPlayerDotOnMap(); + sub_803ECE0(); + sub_803EDF0(); + + + if(gDungeon->unk181e8.unk18215 != 0 && gDungeon->unk1BDD4.unk1C06C != 3) + sub_8004AF0(gUnknown_203B40D, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); + + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + nullsub_12(); + sub_80060EC(); + + gDungeonFramesCounter++; + + IncrementPlayTime(gPlayTimeRef); + WaitForNextFrameAndAdvanceRNG(); + LoadBufferedInputs(); + CopySpritesToOam(); + nullsub_13(); + sub_8005304(); + nullsub_14(); + + TransferBGPaletteBuffer(); + sub_8009908(); + xxx_call_update_bg_vram(); + CopyDungeonMapToVram(); + xxx_call_update_bg_sound_input(); + + gDungeon->unk181e8.unk18213 = 0; + UpdateDungeonMusic(); + sub_8011860(); + TryResetDungeonMapTilesScheduledForCopy(); + ResetSprites(FALSE); + nullsub_10(FALSE); + gUnknown_202EDD4--; +} + +void sub_803E668(u32 unused) +{ + gUnknown_202EDD4++; + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + nullsub_12(); + sub_8005838(NULL, 0); + sub_80060EC(); + gDungeonFramesCounter++; + IncrementPlayTime(gPlayTimeRef); + WaitForNextFrameAndAdvanceRNG(); + LoadBufferedInputs(); + CopySpritesToOam(); + nullsub_13(); + sub_8005304(); + nullsub_14(); + TransferBGPaletteBuffer(); + sub_8009908(); + xxx_call_update_bg_vram(); + xxx_call_update_bg_sound_input(); + gDungeon->unk181e8.unk18213 = 0; + sub_8011860(); + ResetSprites(FALSE); + nullsub_10(FALSE); + gUnknown_202EDD4--; +} + +void sub_803E708(s32 numFrames, u32 a1) +{ + while (numFrames != 0) { + DungeonRunFrameActions(a1); + numFrames--; + } +} + +void sub_803E724(s32 r0) +{ + do + { + DungeonRunFrameActions(r0); + } while (gRealInputs.held & 0xF0); +} + +void sub_803E748(void) +{ + s32 index1; + s32 index2; + + index2 = 0x1F; + gUnknown_203B40D = 1; + gDungeonBrightness = 0; + + sub_803E874(1, 0x1F); + + for(index1 = 0; index1 < 0x2C; index1++) + { + if(index1 < 0x20) + { + index2 -= 2; + if(index2 <= 0) + { + index2 = 0; + sub_803EAF0(1, NULL); + gDungeon->unk181e8.unk18217 = index2; + } + } + if(index1 > 0xB) + if(gDungeonBrightness <= 0x1E) + gDungeonBrightness++; + sub_803E874(1, index2); + DungeonRunFrameActions(5); + } + gUnknown_203B40D = 0; + gDungeonBrightness = 0x1F; +} + +void sub_803E7C8(void) +{ + s32 index1; + s32 index2; + + index2 = 0x1F; + gUnknown_203B40D = 1; + gDungeonBrightness = 0; + + DungeonRunFrameActions(5); + + for(index1 = 0; index1 < 0x2C; index1++) + { + sub_803E874(1, index2); + if(index1 < 0x20) + { + index2 -= 2; + if(index2 <= 0) + { + index2 = 0; + sub_803EAF0(1, NULL); + gDungeon->unk181e8.unk18217 = index2; + } + } + DungeonRunFrameActions(5); + } + gUnknown_203B40D = 0; +} + +void sub_803E830(void) +{ + s32 index; + + gUnknown_203B40D = 1; + for(index = 0; index < 0x20; index++) + { + sub_803E874(0, 0); + DungeonRunFrameActions(5); + if(gDungeonBrightness > 0) + gDungeonBrightness--; + } + gDungeonBrightness = 0; + gUnknown_203B40D = 0; +} + +static const RGB sBlackRgb = {0, 0, 0}; + +void sub_803E874(bool8 r10, s32 r9) +{ + s32 i, index, count; + const RGB *color; + + color = gDungeonPaletteFile->unk4; + SetBGPaletteBufferColorRGB(0, &sBlackRgb, gDungeonBrightness, gDungeon->colorRamp); + color++; + index = 1; + count = 159; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); + color++; + index++; + } + + if (gDungeon->unk181e8.unk18215 == 0 || gDungeon->unk1BDD4.unk1C06C == 3) { + sub_8004AF0(TRUE, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); + } + + index += 32; + color = gUnknown_202ECA4; + count = 32; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); + color++; + index++; + } + + if (r10) { + index = 224; + color = gDungeonNameBannerPalette->unk4; + count = 16; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, r9, NULL); + color++; + index++; + } + } + + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); + + color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; + index = 256; + count = 208; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); + nullsub_4(index, color, gDungeonBrightness, NULL); + color++; + index++; + } +} + +void BgColorCallNullsub4(void) +{ + s32 i, index, count; + const RGB *color; + + color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; + index = 256; + count = 208; + for (i = 0; i < count; i++) { + nullsub_4(index, color, gDungeonBrightness, NULL); + color++; + index++; + } +} + +void sub_803EA10(void) +{ + s32 i, index, count; + const RGB *color; + + color= gDungeonPaletteFile->unk4; + SetBGPaletteBufferColorRGB(0, &sBlackRgb, gDungeonBrightness, gDungeon->colorRamp); + color++; + index = 1; + count = 159; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); + color++; + index++; + } + + if (gDungeon->unk181e8.unk18215 == 0 || gDungeon->unk1BDD4.unk1C06C == 3) { + sub_8004AF0(TRUE, gUnknown_202EE8C, 0xA0, 0x20, gDungeonBrightness, gDungeon->colorRamp); + } + + index += 32; + color = gUnknown_202ECA4; + count = 32; + for (i = 0; i < count; i++) { + SetBGPaletteBufferColorRGB(index, color, gDungeonBrightness, gDungeon->colorRamp); + color++; + index++; + } + + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); +} + +static const WindowTemplates gUnknown_80F62B0 = +{ + .id = { + [0] = { + .type = WINDOW_TYPE_0, + .pos = {2, 15}, + .width = 26, + .height = 5, + .unk10 = 7, + .unk12 = 0, + .header = NULL, + }, + [1] = WIN_TEMPLATE_DUMMY, + [2] = WIN_TEMPLATE_DUMMY, + [3] = WIN_TEMPLATE_DUMMY, + } +}; + +static const WindowTemplates gUnknown_80F6310 = +{ + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 3}, + .width = 6, + .height = 7, + .unk10 = 7, + .unk12 = 0, + .header = NULL, + }, + [1] = WIN_TEMPLATE_DUMMY, + [2] = WIN_TEMPLATE_DUMMY, + [3] = WIN_TEMPLATE_DUMMY, + } +}; + +static const WindowTemplates gUnknown_80F6370 = +{ + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 3}, + .width = 6, + .height = 7, + .unk10 = 7, + .unk12 = 0, + .header = NULL, + }, + [1] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {10, 4}, + .width = 17, + .height = 2, + .unk10 = 2, + .unk12 = 0, + .header = NULL, + }, + [2] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 13}, + .width = 26, + .height = 6, + .unk10 = 6, + .unk12 = 0, + .header = NULL, + }, + [3] = WIN_TEMPLATE_DUMMY, + } +}; + +static const WindowTemplates gUnknown_80F63D0 = +{ + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 3}, + .width = 26, + .height = 14, + .unk10 = 18, + .unk12 = 2, + .header = NULL, + }, + [1] = WIN_TEMPLATE_DUMMY, + [2] = WIN_TEMPLATE_DUMMY, + [3] = WIN_TEMPLATE_DUMMY, + } +}; + +// kind==8 uses the `name` param. +void sub_803EAF0(u32 kind, u8 *name) +{ + if (kind == gUnknown_202EDD0) + return; + + switch (kind) { + case 1: { + if (gUnknown_203B40C != 0) + sub_8052210(0); + + ResetUnusedInputStruct(); + sub_803EC94(); + ShowWindows(NULL, TRUE, TRUE); + break; + } + case 0: { + sub_803EC94(); + ShowWindows(NULL, TRUE, TRUE); + if (gUnknown_203B40C != 0) { + ShowWholeRevealedDungeonMap(); + UpdateBgTilemapForDungeonMap(FALSE); + } + break; + } + case 3: { + ShowWindows(&gUnknown_80F62B0, TRUE, TRUE); + if (gUnknown_203B40C != 0) + UpdateBgTilemapForDungeonMap(TRUE); + break; + } + case 6: { + if (gUnknown_203B40C != 0) + sub_8052210(0); + + ResetUnusedInputStruct(); + ShowWindows(&gUnknown_80F6310, TRUE, TRUE); + break; + } + case 7: { + if (gUnknown_203B40C != 0) + sub_8052210(0); + + ResetUnusedInputStruct(); + ShowWindows(&gUnknown_80F6370, TRUE, TRUE); + break; + } + case 2: + case 4: { + if (gUnknown_203B40C != 0) + sub_8052210(0); + + ResetUnusedInputStruct(); + sub_803EC94(); + ShowWindows(NULL, TRUE, TRUE); + break; + } + case 5: { + if (gUnknown_203B40C != 0) + sub_8052210(0); + + ShowWindows(NULL, TRUE, TRUE); + break; + } + case 8: { + if (gUnknown_203B40C != 0) { + PlayDungeonStartButtonSE(); + sub_8052210(0); + } + + CreateConfirmNameMenu(2, name); + break; + } + case 9: { + if (gUnknown_203B40C != 0) { + sub_8052210(0); + PlayDungeonStartButtonSE(); + } + + ResetUnusedInputStruct(); + ShowWindows(&gUnknown_80F63D0, FALSE, TRUE); + break; + } + case 10: { + PlayDungeonStartButtonSE(); + break; + } + case 150: { // Dummy case put here to match, any value >= 150 works + break; + } + } + + gUnknown_202EDD0 = kind; +} + +static void sub_803EC94(void) +{ + gDungeonMenu.unk1E = 0; + gDungeonMenu.unk20 = 0; + gDungeonMenu.unkC = 0; + gDungeonMenu.unkE = 0; + gDungeonMenu.unk14.x = 0; + sub_801317C(&gDungeonMenu.unk28); +} + +void DungeonShowWindows(WindowTemplates *a0, bool8 a1) +{ + gUnknown_202EDD0 = 10; + sub_8052210(0); + ResetUnusedInputStruct(); + ShowWindows(a0, TRUE, a1); +} + +void sub_803ECE0(void) +{ + gUnknown_202EDD8++; + if (gUnknown_202EDD8 < 0) + gUnknown_202EDD8 = 0; + if (gUnknown_202EDD8 > 11) + gUnknown_202EDD8 = 0; + + sub_80098BC((void *)VRAM + 0x14400, gUnknown_202EC94->unk4 + ((gUnknown_202EDD8 / 4) * 0x240), 0x240); +} + +void sub_803ED30(s32 a0, Entity *mon, u8 a2, s32 a3) +{ + s32 i, var; + + if (a0 == 0 || gDungeon->unk181e8.blinded) + return; + + for (i = 0; i < 20; i++) { + if (gUnknown_202EDE8.unk0 == 0) + break; + DungeonRunFrameActions(0x29); + } + + var = sub_803EF90(a0, a2); + gUnknown_202EDE8.unk0 = 60; + gUnknown_202EDE8.unk4 = mon; + gUnknown_202EDE8.unk8 = mon->spawnGenID; + gUnknown_202EDE8.unkC = -(var * 768); + gUnknown_202EDE8.unk10 = 0; + + if (a3 < 0) { + if (a0 < -999) { + gUnknown_202EDE8.unk2 = 6; + } + else if (a0 >= 0) { + gUnknown_202EDE8.unk2 = 10; + } + else { + gUnknown_202EDE8.unk2 = 3; + } + } + else { + gUnknown_202EDE8.unk2 = a3; + } + + sub_80098BC((void *) VRAM + 0x142C0, gDungeon->unk18, 0x80); +} + +void sub_803EDF0(void) +{ + EntityInfo *entInfo; + s32 x, y, y1, y2; + + if (gUnknown_202EDE8.unk0 == 0) + return; + if (!EntityIsValid(gUnknown_202EDE8.unk4)) { + gUnknown_202EDE8.unk0 = 0; + return; + } + if (gUnknown_202EDE8.unk8 != gUnknown_202EDE8.unk4->spawnGenID) { + gUnknown_202EDE8.unk0 = 0; + return; + } + + gUnknown_202EDE8.unk0--; + gUnknown_202EDE8.unk10 -= 46; + entInfo = GetEntInfo(gUnknown_202EDE8.unk4); + x = (entInfo->pixelPos.x + (gUnknown_202EDE8.unkC / 256)) - gDungeon->unk181e8.cameraPixelPos.x; + y1 = (entInfo->pixelPos.y + (gUnknown_202EDE8.unk10 / 256)); + y2 = (gDungeon->unk181e8.cameraPixelPos.y + 24); + y = y1 - y2; + + if (x >= -32 && y >= -8 && x < 240 && y < 160) { + SpriteSetY(&gUnknown_202EDDC, y); + SpriteSetAffine1(&gUnknown_202EDDC, 0); + SpriteSetAffine2(&gUnknown_202EDDC, 0); + SpriteSetObjMode(&gUnknown_202EDDC, 0); + SpriteSetMosaic(&gUnknown_202EDDC, 0); + SpriteSetBpp(&gUnknown_202EDDC, 0); + SpriteSetShape(&gUnknown_202EDDC, 1); + SpriteSetX(&gUnknown_202EDDC, x); + SpriteSetMatrixNum(&gUnknown_202EDDC, 0); + SpriteSetSize(&gUnknown_202EDDC, 1); + SpriteSetTileNum(&gUnknown_202EDDC, 0x216); + SpriteSetPriority(&gUnknown_202EDDC, gDungeon->unk181e8.priority); + SpriteSetPalNum(&gUnknown_202EDDC, gUnknown_202EDE8.unk2); + + SpriteSetUnk6_0(&gUnknown_202EDDC, 0); + SpriteSetUnk6_1(&gUnknown_202EDDC, 0); + SpriteSetUnk6_2(&gUnknown_202EDDC, 0); + + AddSprite(&gUnknown_202EDDC, 0x100, NULL, NULL); + } +} + +static const s32 gUnknown_80F6430[][9] = +{ + [0] = {900, 800, 700, 600, 500, 400, 300, 200, 100}, + [1] = {90, 80, 70, 60, 50, 40, 30, 20, 10}, +}; + +static s32 sub_803EF90(s32 a0, u8 a1) +{ + s32 i, id; + const u32 *r2; + s32 bitsNo; + s32 ret; + bool8 unkBool; + u32 *mainDst = gDungeon->unk18; + u32 *sp[] = {(u32 *)(gUnknown_202EC9C->data + 0x124), + (u32 *)(gUnknown_202EC9C->data + 0x104), + (u32 *)(gUnknown_202EC9C->data + 0xE4), + (u32 *)(gUnknown_202EC9C->data + 0xC4), + (u32 *)(gUnknown_202EC9C->data + 0xA4), + (u32 *)(gUnknown_202EC9C->data + 0x84), + (u32 *)(gUnknown_202EC9C->data + 0x64), + (u32 *)(gUnknown_202EC9C->data + 0x44), + (u32 *)(gUnknown_202EC9C->data + 0x24)}; + s32 dstId = 0; + u32 *clearDst = mainDst; + for (i = 0; i < 4; i++) { + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + clearDst[dstId++] = 0; + } + + if (a0 == 9999) { + u32 r12[] = {13, 14, 15, 15}; + + bitsNo = 0; + for (id = 0; id < 4; id++) { + u32 *dst = mainDst; + const u32 *src = (u32 *)((&((u8 *)gUnknown_202EC9C->data)[4] + r12[id] * 32)); + + for (i = 0; i < 8; i++) { + u32 toOr1, toOr2; + if (bitsNo == 0) { + toOr1 = 0; + toOr2 = *src; + } + else { + toOr1 = *src >> (32 - bitsNo); + toOr2 = *src << bitsNo; + } + + src++; + dst[0] |= toOr2; + dst[8] |= toOr1; + dst++; + } + + bitsNo += 24; + if (bitsNo >= 32) { + bitsNo -= 32; + mainDst += 8; + } + } + + return 4; + } + + if (a0 > 999) a0 = 999; + if (a0 < -999) a0 = -999; + + r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x184); + if (a1) { + if (a0 > 0) { + r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x144); + } + else if (a0 < 0) { + r2 = (u32 *)((u8 *)gUnknown_202EC9C->data + 0x164); + a0 = -a0; + } + } + + mainDst[0] = *r2++; + mainDst[1] = *r2++; + mainDst[2] = *r2++; + mainDst[3] = *r2++; + mainDst[4] = *r2++; + mainDst[5] = *r2++; + mainDst[6] = *r2++; + mainDst[7] = *r2++; + + bitsNo = 24; + ret = 1; + unkBool = FALSE; + for (id = 0; id < 2; id++) { + s32 arrId; + + for (arrId = 0; arrId < 9; arrId++) { + if (gUnknown_80F6430[id][arrId] <= a0) { + const u32 *src = sp[arrId]; + u32 *dst = mainDst; + + for (i = 0; i < 8; i++) { + u32 toOr1, toOr2; + if (bitsNo == 0) { + toOr1 = 0; + toOr2 = *src; + } + else { + toOr1 = *src >> (32 - bitsNo); + toOr2 = *src << bitsNo; + } + + src++; + dst[0] |= toOr2; + dst[8] |= toOr1; + dst++; + unkBool = TRUE; + } + + bitsNo += 24; + if (bitsNo >= 32) { + bitsNo -= 32; + mainDst += 8; + } + + a0 -= gUnknown_80F6430[id][arrId]; + ret++; + break; + } + } + + if (arrId == 9 && unkBool) { + const u32 *src = (u32 *)(&((u8 *)gUnknown_202EC9C->data)[4]); + u32 *dst = mainDst; + for (i = 0; i < 8; i++) { + u32 toOr1, toOr2; + if (bitsNo == 0) { + toOr1 = 0; + toOr2 = *src; + } + else { + toOr1 = *src >> (32 - bitsNo); + toOr2 = *src << bitsNo; + } + + src++; + dst[0] |= toOr2; + dst[8] |= toOr1; + dst++; + } + + bitsNo += 24; + if (bitsNo >= 32) { + bitsNo -= 32; + mainDst += 8; + } + + ret++; + } + } + + { + const u32 *src = (u32 *)(&((u8 *)gUnknown_202EC9C->data)[4] + (a0 * 32)); + u32 *dst = mainDst; + for (i = 0; i < 8; i++) { + u32 toOr1, toOr2; + if (bitsNo == 0) { + toOr1 = 0; + toOr2 = *src; + } + else { + toOr1 = *src >> (32 - bitsNo); + toOr2 = *src << bitsNo; + } + + src++; + dst[0] |= toOr2; + dst[8] |= toOr1; + dst++; + } + } + + ret++; + return ret; +} diff --git a/src/explosion.c b/src/explosion.c index 837cf0a19..ed8afcedd 100644 --- a/src/explosion.c +++ b/src/explosion.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/expose_trap.c b/src/expose_trap.c index 929c7c824..bf67d7225 100644 --- a/src/expose_trap.c +++ b/src/expose_trap.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/hurl_orb.c b/src/hurl_orb.c index 9a2703772..90a3d46ae 100644 --- a/src/hurl_orb.c +++ b/src/hurl_orb.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_8041AD0.h" #include "code_804267C.h" diff --git a/src/move_orb_actions_1.c b/src/move_orb_actions_1.c index 73ca864d6..018b9f162 100644 --- a/src/move_orb_actions_1.c +++ b/src/move_orb_actions_1.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "dungeon_move_util.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_806CD90.h" #include "code_8077274_1.h" diff --git a/src/move_orb_actions_2.c b/src/move_orb_actions_2.c index cf1c4e789..22c280086 100644 --- a/src/move_orb_actions_2.c +++ b/src/move_orb_actions_2.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "dungeon_move_util.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_806CD90.h" #include "code_8077274_1.h" diff --git a/src/move_orb_actions_3.c b/src/move_orb_actions_3.c index 858cea5eb..077c54e98 100644 --- a/src/move_orb_actions_3.c +++ b/src/move_orb_actions_3.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E724.h" #include "code_806CD90.h" #include "code_8077274_1.h" diff --git a/src/move_orb_effects_1.c b/src/move_orb_effects_1.c index e0499a1da..a99ef4b75 100644 --- a/src/move_orb_effects_1.c +++ b/src/move_orb_effects_1.c @@ -32,7 +32,7 @@ #include "dungeon_config.h" #include "dungeon_strings.h" #include "status.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" extern void sub_80420A0(Entity *); extern void sub_8041C58(Entity *r0); diff --git a/src/move_orb_effects_2.c b/src/move_orb_effects_2.c index e2f17a989..07c114419 100644 --- a/src/move_orb_effects_2.c +++ b/src/move_orb_effects_2.c @@ -1,7 +1,7 @@ #include "global.h" #include "globaldata.h" #include "status.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_806CD90.h" #include "code_8077274_1.h" #include "dungeon_random.h" diff --git a/src/move_orb_effects_3.c b/src/move_orb_effects_3.c index 1ffc50975..da749b519 100644 --- a/src/move_orb_effects_3.c +++ b/src/move_orb_effects_3.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_map_access.h" #include "dungeon_message.h" #include "code_805D8C8.h" diff --git a/src/move_orb_effects_4.c b/src/move_orb_effects_4.c index 09b49bd03..a76ae9e3f 100644 --- a/src/move_orb_effects_4.c +++ b/src/move_orb_effects_4.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_map_access.h" #include "dungeon_message.h" #include "code_805D8C8.h" diff --git a/src/move_orb_effects_5.c b/src/move_orb_effects_5.c index 223f4d47d..9ff148a16 100644 --- a/src/move_orb_effects_5.c +++ b/src/move_orb_effects_5.c @@ -1,6 +1,6 @@ #include "global.h" #include "globaldata.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_map_access.h" #include "dungeon_message.h" #include "code_805D8C8.h" diff --git a/src/one_room_orb.c b/src/one_room_orb.c index 264d95f33..baa0179d2 100644 --- a/src/one_room_orb.c +++ b/src/one_room_orb.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/pounce_orb.c b/src/pounce_orb.c index c3ee387d8..05fd3bb4c 100644 --- a/src/pounce_orb.c +++ b/src/pounce_orb.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/run_dungeon.c b/src/run_dungeon.c index 11d773fa7..1189c2f4d 100644 --- a/src/run_dungeon.c +++ b/src/run_dungeon.c @@ -15,7 +15,7 @@ #include "code_800E9E4.h" #include "code_800ED38.h" #include "code_803D110.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "code_803E668.h" #include "code_803E724.h" #include "code_805D8C8.h" diff --git a/src/switcher_orb.c b/src/switcher_orb.c index fa799511e..d0a40ab9f 100644 --- a/src/switcher_orb.c +++ b/src/switcher_orb.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/trawl_orb.c b/src/trawl_orb.c index 29faad793..2898547a3 100644 --- a/src/trawl_orb.c +++ b/src/trawl_orb.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/warp_target.c b/src/warp_target.c index 6f5e08d0b..1648999a2 100644 --- a/src/warp_target.c +++ b/src/warp_target.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/ability.h" #include "constants/weather.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon_message.h" #include "code_806CD90.h" #include "code_807CD9C.h" diff --git a/src/weather.c b/src/weather.c index 1e666aedd..c06790b02 100644 --- a/src/weather.c +++ b/src/weather.c @@ -6,7 +6,7 @@ #include "constants/weather.h" #include "structs/str_dungeon.h" #include "code_804267C.h" -#include "code_803E46C.h" +#include "dungeon_vram.h" #include "dungeon.h" #include "dungeon_config.h" #include "dungeon_leader.h" diff --git a/sym_ewram.txt b/sym_ewram.txt index 2bc2f7cd3..5c692c7e7 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -62,18 +62,8 @@ gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ .include "src/other_menus2.o" .include "src/rescue_password_menu.o" .include "src/code_803DA7C.o" - .include "src/code_803E46C.o" + .include "src/dungeon_vram.o" -gDungeonBrightness: /* 202EDC8 (sub_803E250 - sub_8086794) */ - .space 0x4 -gDungeonFramesCounter: /* 202EDCC (sub_803E490 - sub_807D148) */ - .space 0x4 -gUnknown_202EDD0: /* 202EDD0 (sub_803E250 - sub_8052210) */ - .space 0x4 -gUnknown_202EDD4: /* 202EDD4 (sub_803E250 - sub_803E668) */ - .space 0x4 -gUnknown_202EDD8: /* 202EDD8 (sub_803ECE0) */ - .space 0x4 gUnknown_202EDDC: /* 202EDDC (sub_803EDF0) */ .space 0xC gUnknown_202EDE8: /* 202EDE8 (sub_803E250 - sub_803EDF0) */ diff --git a/sym_ewram_init.txt b/sym_ewram_init.txt index 96618d1ad..0ee7af698 100644 --- a/sym_ewram_init.txt +++ b/sym_ewram_init.txt @@ -109,7 +109,7 @@ .include "src/personality_test1.o" .include "src/personality_test2.o" .include "src/code_803D0D8.o" -.include "src/code_803E46C.o" +.include "src/dungeon_vram.o" .include "src/dungeon_map.o" .include "src/run_dungeon.o" .include "src/dungeon_items.o"