CLOSES #223, CLOSES #233, CLOSES #236, CLOSES #240, CLOSES #241, CLOSES #249, CLOSES #252, CLOSES #255, CLOSES #257, CLOSES #258, CLOSES #263, CLOSES #265, CLOSES #274, CLOSES #275, CLOSES #276, CLOSES #279, CLOSES #280, CLOSES #282, CLOSES #283, CLOSES #287, CLOSES #291, CLOSES #292, CLOSES #293, CLOSES #301, CLOSES #304, CLOSES #315, CLOSES #316, CLOSES #317, CLOSES #321, CLOSES #322, CLOSES #330

This commit is contained in:
bryanthaboi
2026-07-28 10:29:05 -04:00
parent 3b1032cc63
commit f9f38d161f
103 changed files with 11157 additions and 838 deletions
+16
View File
@@ -20,6 +20,22 @@ EvolutionState.isOpaque = true
-- SGB: SetPal_PokemonWholeScreen for the mon on display
function EvolutionState:sgbPalettes(game)
local P = require("src.render.PaletteFX")
-- engine/movie/evolution.asm EvolveMon runs the back-and-forth flash with
-- the whole screen on PAL_BLACK -- `ld c, 1 ; set PAL_BLACK instead of mon
-- palette` right before .animLoop, then `ld c, 0` again at .done once the
-- loop is over -- so both forms read as silhouettes while they trade places
-- and only the settled form wears a mon palette (#279). PAL_BLACK is not
-- four blacks: data/sgb/sgb_palettes.asm gives it `RGB 31,29,31, 07,07,07,
-- 02,03,03, 03,02,02`, the usual paper white with the three darker shades
-- crushed, which is why a hardware capture shows a dark mon on an unchanged
-- background rather than an all-black screen. Going through P.pal keeps
-- every COLORS mode honest for free: OG RED short-circuits every name to the
-- one global boot-ROM palette (a Game Boy Color ignores the SGB packets, so
-- it never blacks out) and the mono modes replace it in effectiveColors.
if not self.done then
local black = P.pal(game.data, "BLACK")
if black then return { P.whole(black) } end
end
-- a cancelled evolution keeps the old species (never applied), so only
-- colorize with the new form once it has actually evolved
local species = (self.done and not self.canceled) and self.newSpecies