From 646d2f0830f45e774c1b55d3d6956f5797dd873a Mon Sep 17 00:00:00 2001 From: HashtagMarky <143505183+HashtagMarky@users.noreply.github.com> Date: Sun, 23 Nov 2025 13:31:41 +0000 Subject: [PATCH] Reduce Size of Rotom Phone Face and Add Panel Destroy Asset Func --- graphics/rotom_start_menu/rotom_face.png | Bin 2033 -> 1003 bytes src/rotom_start_menu.c | 108 ++++++++++++----------- 2 files changed, 58 insertions(+), 50 deletions(-) diff --git a/graphics/rotom_start_menu/rotom_face.png b/graphics/rotom_start_menu/rotom_face.png index 788f4a7272bab69ec5cec41a2c6fbb8cfd57761a..12f0e5bab45f58a1f2290c84328d287ab5997506 100644 GIT binary patch delta 979 zcmV;^11$XU59VwV00T`)L_t(|ob6iOnyerU^B%$Xf7|mZAfRni$35%JPPlTnB_e;xw4J8b z!qz6USw3OjngtQ6kI`Qt+vY zuim=;b@Z?R=CB;?%RT@I5W~DkleBaW0APQSXL&&Y<{O3)YU@}$k_M2B0kk2cqywa+ z51;^~t(_4{{}n<5SZAp^Spb`x)PG&4>SX||@0V72+BbV~Is@z`a9s0gktT6g57LMr zpI66qF?Cmt4uI~wNgZWyb)U+;dFB6qwv8YB!snNLQyN-*4WVl<%zwDqzuT3*?W2D~ z+}b|ZrvDxEL0)s~!ZCJ5Xxyt0(eMzt_oxrt?5ybnH#;l(z|GE@KJc@%tPgBkByX3q@@6-oh z)Tj?K0`-C19q0ov<^MZ=P(uTH{6K&3=s&O0o*F+md5i#!IJNk}!NUR&^+9w2M3p(N z0LbwJCqUdNQn=RR_>JltQlZF`IoSg!0F^!^fFe(1`~uJv#ED#+Jkj+*Ob{Tik){v4 z0J=Wtd_(~AG*9)m(Ae2JNX<(>uha*h*r*RO0`-C1-I&ui&@kfZ$rVw+48A67TPWPt*s@FEGC_Grz$6!pV#JV0`PwJ+MxZ{p;?Y^H{DO{fHcR;h8({cEF~3mF z8bGLKHNQ~SNew`3i)`f=ssn$BU@*V%Y<|H7V8#zz2@37F?qL`d!LZN!y#$3$1dtq(9eqxwXHoqhVis6W8^z&dU|eSq={SRXj@3y|RL{DSKz9ODP2F@BH{ z7(bA^Qy)+tP#;hqe6c=Y{NNU~z6HSZllVLFgMW%TH0rd4i@5**002ovPDHLkV1m`q B+VB7X literal 2033 zcmeAS@N?(olHy`uVBq!ia0vp^4h#%T4IIosmh^$XLLkMG?&#~tz_78e=6B#^1_ow^ z0G|+7p!m%Yd6#K6Y=xJ1&6g;1>N?r9^M0Y)aZ%CCtgQe4|Es8|eEs@WJO7x^x|^Gx ze*>x?1*0J_Y(ik|qz#K17#JB!g8YIRfXRI%1Fq>`Y=Gs$1Wy;okcv5P=Xe&i7znWJ z?0))xe<=eK%d6gldU(_HiZOhF z_gjV7B?~nQSlE7Q@y~1cDPLxMDC_8uTA?{yg|+>bXzC$ENSwQdwNv<<|P*Z2wQk8+)@sgf^6QXYc8sjc@O9 zH`<*H-&yd!%i+%6>~%TC@0%K)-wS{Inq$SYQW*)QceNWnHBYGC{;7EekYGN$Nc`Bn zll&r+g^eA;?mb`L`djN$^ZJHA3xX8vfmy6!c7;=&z&GLg&HoZ2qZX{U7tlI&IXY+K zu73+w-QdnS78PAzuwnztkv|K#IZIY;woz7CZ_mM1GPzYOCVIQQ`&aufH=V){@3n2z z*>EG@6#ZSjiENiw`o{fC6C`2ZI?|aX` zCk*Z%adNDEc#{7f$4|$l4t1a$Z|+!kf$J{k7kwG77x4?~8~?QiJt+NoF!cJf*e@48 zhKsD@T5@4-{gwlN#XtTk25b3HHgAIbh5ZiyovM%Ry$qz8ejfBZ!JoJN{}cAjOg|YJ z7!Itig!!@IAL}o1sbAtnf`7Sre>PV9$^YT^sX5+~{S&Ab+rj^-dE46Kum7>eE|i=0 zOFXCXu4dO??$aC8CQM7*TCaFty_E5A$>g>FT9+P(WOV$`^q2dKzKy*Fftz(F3|Ksp0$gQqGL%|*dHCW@O%WwGiVA9vR7NEl?eq{$L`q1*{!2SORe%unh z_5Z**{y%^DZGP_;|Dj<2;hTNIXXgC>%=!qXz5RzfyJySa_$}}9iMjZHvqzo4O^~jd z@9&-ow)mFYD<(5eS&C-^~do8|=h3Gy}R sbq9Vmdtdu4$n-tl<(fRh0nIvwgaj9(Ws4N_fvOoiUHx3vIVCg!0BmafL;wH) diff --git a/src/rotom_start_menu.c b/src/rotom_start_menu.c index 2cf08d01ffee..7afff49f8f57 100644 --- a/src/rotom_start_menu.c +++ b/src/rotom_start_menu.c @@ -92,6 +92,8 @@ #define FADE_COLOUR_MID 0x80 #define FADE_COLOUR_MIN 0x00 +#define ROTOM_REALITY_PANEL_BG_TILE 0x16 + static void RotomPhone_OverworldMenu_Init(bool32 firstInit); static void RotomPhone_OverworldMenu_ContinueInit(bool32 firstInit); @@ -138,6 +140,7 @@ static bool32 RotomPhone_RotomRealityMenu_InitBgs(void); static void RotomPhone_RotomRealityMenu_FadeAndBail(void); static bool32 RotomPhone_RotomRealityMenu_LoadGraphics(void); static void RotomPhone_RotomRealityMenu_InitWindows(void); +static void RotomPhone_RotomRealityPanel_DestroyAssets(void); static void RotomPhone_RotomRealityMenu_PrintTime(void); static void RotomPhone_RotomRealityMenu_PrintMenuName(void); @@ -933,8 +936,8 @@ static const struct CompressedSpriteSheet sSpriteSheet_RotomRealityIcons_Two[] = }; static const struct OamData sOam_RotomFace = { - .size = SPRITE_SIZE(64x64), - .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x32), + .shape = SPRITE_SHAPE(64x32), .priority = 0, }; @@ -1035,47 +1038,47 @@ static const union AnimCmd sAnimCmd_RotomFace_Happy[] = { }; static const union AnimCmd sAnimCmd_RotomFace_HappyUp[] = { - ANIMCMD_FRAME(64, 0), + ANIMCMD_FRAME(32, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_HappyWith[] = { - ANIMCMD_FRAME(128, 0), + ANIMCMD_FRAME(64, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_Shocked[] = { - ANIMCMD_FRAME(192, 0), + ANIMCMD_FRAME(96, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_ShockedUp[] = { - ANIMCMD_FRAME(256, 0), + ANIMCMD_FRAME(128, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_ShockedWith[] = { - ANIMCMD_FRAME(320, 0), + ANIMCMD_FRAME(160, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_Dazed[] = { - ANIMCMD_FRAME(384, 0), + ANIMCMD_FRAME(192, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_Awe[] = { - ANIMCMD_FRAME(448, 0), + ANIMCMD_FRAME(224, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_Sheepish[] = { - ANIMCMD_FRAME(512, 0), + ANIMCMD_FRAME(256, 0), ANIMCMD_JUMP(0), }; static const union AnimCmd sAnimCmd_RotomFace_Confused[] = { - ANIMCMD_FRAME(576, 0), + ANIMCMD_FRAME(288, 0), ANIMCMD_JUMP(0), }; @@ -3354,6 +3357,40 @@ static void RotomPhone_RotomRealityMenu_InitWindows(void) CopyWindowToVram(RP_RR_WIN_MENU_NAME, COPYWIN_FULL); } +static void RotomPhone_RotomRealityPanel_DestroyAssets(void) +{ + for (enum RotomPhone_RotomReality_SlidingPanelSprites spritePanel = RP_RR_PANEL_SPRITE_ONE; spritePanel < RP_RR_PANEL_SPRITE_COUNT; spritePanel++) + { + u8 spriteId = sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[spritePanel]; + if (spriteId == SPRITE_NONE) + continue; + + DestroySpriteAndFreeResources(&gSprites[spriteId]); + sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[spritePanel] = SPRITE_NONE; + } + + for (enum RotomPhone_RotomReality_SlidingPanelWindows windowPanel = RP_RR_PANEL_WIN_ONE; windowPanel < RP_RR_PANEL_WIN_COUNT; windowPanel++) + { + u8 windowId = sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[windowPanel]; + if (windowId == WINDOW_NONE) + continue; + + struct Window windowLocal = gWindows[windowId]; + FillBgTilemapBufferRect( + windowLocal.window.bg, + ROTOM_REALITY_PANEL_BG_TILE, + windowLocal.window.tilemapLeft, + windowLocal.window.tilemapTop, + windowLocal.window.width, + windowLocal.window.height, + windowLocal.window.paletteNum); + + CopyWindowToVram(windowId, COPYWIN_FULL); + RemoveWindow(windowId); + sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[windowPanel] = WINDOW_NONE; + } +} + static void RotomPhone_RotomRealityMenu_PrintTime(void) { u8 time[24]; @@ -3652,7 +3689,7 @@ static void RotomPhone_StartMenu_LoadRotomFaceSpritesheet(void) { struct CompressedSpriteSheet rotomFace; rotomFace.data = sRotomPhone_StartMenuRotomFaceGfx; - rotomFace.size = 64 * 640 / 2; + rotomFace.size = 64 * 320 / 2; rotomFace.tag = TAG_ROTOM_FACE_GFX; LoadCompressedSpriteSheet(&rotomFace); sRotomPhone_StartMenu->rotomFaceLastLoaded = RP_FACE_COUNT - 1; @@ -3699,7 +3736,7 @@ static void RotomPhone_StartMenu_CreateRotomFaceSprite(bool32 rotomFade) else { x = 120; - y = 134; + y = 136; } if ((GetFlashLevel() > 0 || InBattlePyramid_()) && !RotomPhone_StartMenu_IsRotomReality()) @@ -4269,47 +4306,18 @@ static void RotomPhone_StartMenu_SelectedFunc_Daycare(void) } else if (RotomPhone_StartMenu_IsRotomReality() && sRotomPhone_StartMenu->menuRotomRealityPanelOpen == TRUE) { - if (GetDaycareState() == DAYCARE_NO_MONS) - { - windowId = sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_ONE]; - FillWindowPixelBuffer(windowId, PIXEL_FILL(TEXT_COLOR_TRANSPARENT)); - CopyWindowToVram(windowId, COPYWIN_FULL); - RemoveWindow(windowId); - sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_ONE] = WINDOW_NONE; - return; - } - FreeMonIconPalettes(); - - if (GetDaycareState() != DAYCARE_NO_MONS) - { - FreeAndDestroyMonIconSprite(&gSprites[sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_ONE]]); - sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_ONE] = SPRITE_NONE; - - windowId = sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_ONE]; - FillWindowPixelBuffer(windowId, PIXEL_FILL(TEXT_COLOR_TRANSPARENT)); - CopyWindowToVram(windowId, COPYWIN_FULL); - RemoveWindow(windowId); - sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_ONE] = WINDOW_NONE; - } - - if (GetDaycareState() != DAYCARE_NO_MONS && GetDaycareState() != DAYCARE_ONE_MON) + for (enum RotomPhone_RotomReality_SlidingPanelSprites spritePanel = RP_RR_PANEL_SPRITE_ONE; spritePanel < RP_RR_PANEL_SPRITE_COUNT; spritePanel++) { - FreeAndDestroyMonIconSprite(&gSprites[sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_TWO]]); - sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_TWO] = SPRITE_NONE; + u8 spriteId = sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[spritePanel]; + if (spriteId == SPRITE_NONE) + continue; - windowId = sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_TWO]; - FillWindowPixelBuffer(windowId, PIXEL_FILL(TEXT_COLOR_TRANSPARENT)); - CopyWindowToVram(windowId, COPYWIN_FULL); - RemoveWindow(windowId); - sRotomPhone_StartMenu->menuRotomRealityPanelWindowId[RP_RR_PANEL_WIN_TWO] = WINDOW_NONE; - } - - if (GetDaycareState() == DAYCARE_TWO_MONS || GetDaycareState() == DAYCARE_EGG_WAITING) - { - FreeAndDestroyMonIconSprite(&gSprites[sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_THREE]]); - sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[RP_RR_PANEL_SPRITE_THREE] = SPRITE_NONE; + FreeAndDestroyMonIconSprite(&gSprites[spriteId]); + sRotomPhone_StartMenu->menuRotomRealityPanelSpriteId[spritePanel] = SPRITE_NONE; } + RotomPhone_RotomRealityPanel_DestroyAssets(); + LoadMonIconPalette(SPECIES_ROTOM); } #undef MON_ONE #undef MON_TWO