Restore Japanese-glyph logo shape with evened bars
The uniform-thickness pass had dropped the bars' left overhangs, turning the logo into a pinwheel (swastika-like). Restore the original firehawk.sc5 layout — a vertical spine crossed by two bars that overhang it on both sides, plus a hanging lower-right stroke — but even out the weights: both bars and the leg are a uniform 6px, with the spine slightly thicker (8px) to keep the original glyph's character. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
@@ -738,20 +738,22 @@ static void LogoFadeSet(const u8* idx, u8 n, u8 delay_halts)
|
||||
}
|
||||
}
|
||||
|
||||
// The logo is an "F" and "H" combined, sharing the left vertical stroke and the
|
||||
// middle crossbar. Each stroke shimmers in and out on its own before the whole
|
||||
// logo lights up. Because the stem and crossbars overlap, the two crossing
|
||||
// points get their OWN palette entries (6, 7) that are lit during BOTH the
|
||||
// crossbar's turn and the stem's turn — so neither the horizontals nor the
|
||||
// verticals ever show a gap. Strokes are partitioned (no shared pixels):
|
||||
// pal2 = top crossbar arms pal3 = stem (excl. crossings) pal6 = top crossing
|
||||
// pal4 = middle crossbar arms pal5 = right leg pal7 = middle crossing
|
||||
// Origin X is even so the byte-aligned HMMV fills land on pixel boundaries.
|
||||
// All strokes share a uniform 6-pixel thickness (vertical width == horizontal
|
||||
// height) so the F+H reads evenly.
|
||||
#define LOGO_OX 106 // logo origin X (even: keeps HMMV fills pixel-aligned)
|
||||
// The logo is a Japanese-letter-like glyph (from the original firehawk.sc5): a
|
||||
// vertical spine with two crossing bars that overhang it on BOTH sides, plus a
|
||||
// short hanging stroke on the lower right. Each stroke shimmers in and out on
|
||||
// its own before the whole logo lights up. Because the spine and bars overlap,
|
||||
// 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
|
||||
// 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.
|
||||
#define LOGO_OX 108 // logo origin X (even: keeps HMMV fills pixel-aligned)
|
||||
#define LOGO_OY 73 // logo origin Y
|
||||
#define LOGO_T 6 // stroke thickness (px)
|
||||
#define LOGO_SW 8 // spine width
|
||||
#define LOGO_BT 6 // bar height / leg width (evened)
|
||||
|
||||
static void ShowLogoAnimation(void)
|
||||
{
|
||||
@@ -768,21 +770,22 @@ static void ShowLogoAnimation(void)
|
||||
VDP_SetPaletteEntry(i, 0);
|
||||
|
||||
// Draw the strokes. They are partitioned so no two share a pixel; the two
|
||||
// stem/crossbar crossings are separate fills (pal6, pal7). Local x12..21 is
|
||||
// the stem column; crossbars are split into left/right arms around it.
|
||||
// Stem (vertical, width LOGO_T) at local x12, full height. Drawn as the three
|
||||
// segments not covered by a crossbar, so the crossings (pal6/7) light separately.
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 0, LOGO_T, 2, 0x33); VDP_CommandWait(); // stem: above top bar
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 8, LOGO_T, 7, 0x33); VDP_CommandWait(); // stem: between bars
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 21, LOGO_T, 13, 0x33); VDP_CommandWait(); // stem: below mid bar
|
||||
// Top crossbar (horizontal, height LOGO_T): right arm + stem crossing.
|
||||
VDP_CommandHMMV(LOGO_OX + 18, LOGO_OY + 2, 16, LOGO_T, 0x22); VDP_CommandWait(); // top bar: arm
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 2, LOGO_T, LOGO_T, 0x66); VDP_CommandWait(); // top crossing
|
||||
// Middle crossbar (horizontal, height LOGO_T): arm to the leg + stem crossing.
|
||||
VDP_CommandHMMV(LOGO_OX + 18, LOGO_OY + 15, 10, LOGO_T, 0x44); VDP_CommandWait(); // mid bar: arm
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 15, LOGO_T, LOGO_T, 0x77); VDP_CommandWait(); // middle crossing
|
||||
// Right leg (vertical, width LOGO_T), butts against the middle crossbar.
|
||||
VDP_CommandHMMV(LOGO_OX + 28, LOGO_OY + 15, LOGO_T, 19, 0x55); VDP_CommandWait(); // right leg
|
||||
// spine/bar crossings are separate fills (pal6, pal7). The spine sits at local
|
||||
// x12 (width LOGO_SW); each bar overhangs it on the left (x8) and right.
|
||||
// Spine: three segments not covered by a bar, so the crossings light separately.
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 0, LOGO_SW, 2, 0x33); VDP_CommandWait(); // spine: above top bar
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 8, LOGO_SW, 8, 0x33); VDP_CommandWait(); // spine: between bars
|
||||
VDP_CommandHMMV(LOGO_OX + 12, LOGO_OY + 22, LOGO_SW, 12, 0x33); VDP_CommandWait(); // spine: below mid bar
|
||||
// Top bar (height LOGO_BT): left overhang + spine crossing + right arm.
|
||||
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).
|
||||
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_EnableDisplay(TRUE);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user