diff --git a/projects/mazegame/emul/rom/mazegame.rom b/projects/mazegame/emul/rom/mazegame.rom index 1d0fedf..d0ab6d8 100644 Binary files a/projects/mazegame/emul/rom/mazegame.rom and b/projects/mazegame/emul/rom/mazegame.rom differ diff --git a/projects/mazegame/mazegame.c b/projects/mazegame/mazegame.c index 848d2b8..92d6bb0 100644 --- a/projects/mazegame/mazegame.c +++ b/projects/mazegame/mazegame.c @@ -745,8 +745,9 @@ static void LogoFadeSet(const u8* idx, u8 n, u8 delay_halts) // the two crossing points get their OWN palette entries (6, 7) that are lit // during BOTH the bar's turn and the spine's turn — so neither the horizontals // nor the verticals ever show a gap. Strokes are partitioned (no shared pixels): -// pal2 = top bar (overhangs) pal3 = spine (excl. crossings) pal6 = top crossing -// pal4 = mid bar (overhangs) pal5 = lower-right stroke pal7 = mid crossing +// pal2 = top bar (overhangs) pal3 = spine (excl. crossings) pal6 = top/spine crossing +// pal4 = mid bar (overhangs) pal5 = lower-right stroke pal7 = mid/spine crossing +// pal8 = mid-bar/leg crossing (lit during both the mid bar's and the leg's turn) // The spine is a touch thicker than the (evened) bars/leg, keeping the original // glyph's weight. Origin X and all widths are even so the byte-aligned HMMV // fills land on pixel boundaries. @@ -780,32 +781,37 @@ static void ShowLogoAnimation(void) VDP_CommandHMMV(LOGO_OX + 8, LOGO_OY + 2, 4, LOGO_BT, 0x22); VDP_CommandWait(); // top bar: left overhang VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 2, LOGO_SW, LOGO_BT, 0x66); VDP_CommandWait(); // top crossing VDP_CommandHMMV(LOGO_OX + 20, LOGO_OY + 2, 14, LOGO_BT, 0x22); VDP_CommandWait(); // top bar: right arm - // Middle bar (height LOGO_BT): left overhang + spine crossing + right arm (to leg). + // Middle bar (height LOGO_BT): left overhang + spine crossing + two right-arm + // pieces straddling the leg, with the leg/bar crossing (pal8) between them. VDP_CommandHMMV(LOGO_OX + 8, LOGO_OY + 16, 4, LOGO_BT, 0x44); VDP_CommandWait(); // mid bar: left overhang - VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 16, LOGO_SW, LOGO_BT, 0x77); VDP_CommandWait(); // mid crossing - VDP_CommandHMMV(LOGO_OX + 20, LOGO_OY + 16, 8, LOGO_BT, 0x44); VDP_CommandWait(); // mid bar: right arm - // Lower-right stroke (vertical, width LOGO_BT), butts against the middle bar. - VDP_CommandHMMV(LOGO_OX + 28, LOGO_OY + 15, LOGO_BT, 19, 0x55); VDP_CommandWait(); // leg + VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 16, LOGO_SW, LOGO_BT, 0x77); VDP_CommandWait(); // mid/spine crossing + VDP_CommandHMMV(LOGO_OX + 20, LOGO_OY + 16, 4, LOGO_BT, 0x44); VDP_CommandWait(); // mid bar: arm before leg + VDP_CommandHMMV(LOGO_OX + 24, LOGO_OY + 16, LOGO_BT, LOGO_BT, 0x88); VDP_CommandWait(); // mid/leg crossing + VDP_CommandHMMV(LOGO_OX + 30, LOGO_OY + 16, 4, LOGO_BT, 0x44); VDP_CommandWait(); // mid bar: arm past leg + // Lower-right stroke (vertical, width LOGO_BT), inset from the right and crossing + // the middle bar. Drawn as the parts above and below that crossing. + VDP_CommandHMMV(LOGO_OX + 24, LOGO_OY + 14, LOGO_BT, 2, 0x55); VDP_CommandWait(); // leg: above mid bar + VDP_CommandHMMV(LOGO_OX + 24, LOGO_OY + 22, LOGO_BT, 12, 0x55); VDP_CommandWait(); // leg: below mid bar VDP_EnableDisplay(TRUE); // Reveal order: each horizontal shimmers, then each vertical, then the total. // Each crossbar lights its arms + its crossing; the stem lights its body + // both crossings — so every stroke appears as a complete shape. - static const u8 fadeTop[2] = {2, 6}; // top crossbar - static const u8 fadeMid[2] = {4, 7}; // middle crossbar - static const u8 fadeStem[3] = {3, 6, 7}; // left stem - static const u8 fadeLeg[1] = {5}; // right leg - static const u8 fadeAll[6] = {2, 3, 4, 5, 6, 7}; + static const u8 fadeTop[2] = {2, 6}; // top bar: arms + spine crossing + static const u8 fadeMid[3] = {4, 7, 8}; // mid bar: arms + spine crossing + leg crossing + static const u8 fadeStem[3] = {3, 6, 7}; // spine: body + both spine crossings + static const u8 fadeLeg[2] = {5, 8}; // leg: body + leg/mid-bar crossing + static const u8 fadeAll[7] = {2, 3, 4, 5, 6, 7, 8}; LogoFadeSet(fadeTop, 2, 5); - LogoFadeSet(fadeMid, 2, 5); + LogoFadeSet(fadeMid, 3, 5); LogoFadeSet(fadeStem, 3, 5); - LogoFadeSet(fadeLeg, 1, 5); + LogoFadeSet(fadeLeg, 2, 5); // The total: all strokes fade up together and hold. for (u8 lvl = 1; lvl <= 7; lvl++) { u16 c = ((u16)lvl << 8) | ((u16)lvl << 4) | lvl; - for (u8 k = 0; k < 6; k++) VDP_SetPaletteEntry(fadeAll[k], c); + for (u8 k = 0; k < 7; k++) VDP_SetPaletteEntry(fadeAll[k], c); for (u8 h = 0; h < 5; h++) Halt(); } for (u8 h = 0; h < 150; h++) Halt();