Inset the logo's lower-right stroke from the bars' right edge
The leg sat flush against the middle bar's right end, looking tacked on. Move it left so both bars overhang it on the right and it crosses the middle bar like a real glyph stroke. The leg/mid-bar crossing gets its own palette entry (pal8), lit during both the mid bar's and the leg's fade so neither shows a gap. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user