Things you'll need
- A text editor
- 2KiB of Fix graphics in regular format (whether that's via YY-CHR.net + my plugin, the DATLib tools, NGFX, or some other method)
- Your palettes (14? max; at least one is used for the loading bar, so unless you hide that... Unsure of palette 0 as well.)
- A tool to byteswap the Fix data (e.g. ROMWak or other tools)
- vasm, or any other assembler that can make a simple binary. (it's simpler to do it with something that supports the 68K's data widths, though)
- I use GNU Make to put this all together, but you can run the steps manually in a batch file, shell script, or whatever.,
Preparation
Get your fix graphics ready, if they aren't already. The default amount of graphics to load is 2KiB, though the screen I made only uses half of that.
Here are my fix tiles:
The Makefile follows some simple rules:
cdlogo: romwak /f logopage.fix logotiles.out vasm68k -m68000 -devpac -Fbin -nosym -DLOGO_JAPAN -o LOGO_J.PRG cdlogo.asm vasm68k -m68000 -devpac -Fbin -nosym -DLOGO_USA -o LOGO_U.PRG cdlogo.asm vasm68k -m68000 -devpac -Fbin -nosym -DLOGO_EUROPE -o LOGO_E.PRG cdlogo.asmWhile I don't use the defines in this example, they're there in case you need them.
The code itself...
; LOGO_*.PRG file ;==============================================================================; ; this is such a hack, using vasm to create a non-program file... ;==============================================================================; LOGO_TYPE_FIX = $00000001 LOGO_TYPE_PAL = $00000002 LOGO_TYPE_MAP = $00000003 LOGO_TYPE_ANIM = $00000004 ;==============================================================================; ; logomac_RepeatTile ; A lazy way to repeat a tile multiple times. ; (Params) ; \1 [word] tile number and palette ; \2 [byte] number of times to repeat logomac_RepeatTile: macro rept \2 dc.w \1 endr endm ;==============================================================================; ; header dc.w %00000011 ; |||||||| ; |||||||+-- disable "Now Loading Please Wait" graphic (if set) ; ||||||+--- disable progress indicator (if set) ; |||||+---- disable animation (if set) ; +++++----- unknown/unused by standard CD/CDZ sysrom ;==============================================================================; ; entries dc.l LOGO_TYPE_FIX,$120000+logo_FixTiles dc.l LOGO_TYPE_PAL,$120000+logo_PalSet_01 dc.l LOGO_TYPE_MAP,$120000+logo_FixMap_Background dc.l LOGO_TYPE_MAP,$120000+logo_FixMap_FMStudio dc.l LOGO_TYPE_MAP,$120000+logo_FixMap_NowLoading dc.l LOGO_TYPE_ANIM,$120000+logo_AnimMap_LoadBar dc.l $FFFFFFFF ;==============================================================================; ; begin the data logo_FixTiles: dc.l $4000 ; offset (starts at tile $100, oddly enough) dc.l $4000 ; size (16K) incbin "cdlogo/logotiles.out" ; byteswapped fix tiles ;------------------------------------------------------------------------------; logo_PalSet_01: dc.w 2 ; palette index incbin "cdlogo/cdlogo.ngpal" ;------------------------------------------------------------------------------; logo_FixMap_Background: dc.w $7022 ; start address dc.w 38 ; width (tiles) dc.w 28 ; height (tiles) ;--------------------------------------; logomac_RepeatTile $2100,38 logomac_RepeatTile $2101,38 logomac_RepeatTile $2102,38 logomac_RepeatTile $2103,38 logomac_RepeatTile $2104,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2106,38 logomac_RepeatTile $2107,38 logomac_RepeatTile $2108,38 logomac_RepeatTile $2109,38 logomac_RepeatTile $210A,38 logomac_RepeatTile $210B,38 logomac_RepeatTile $210C,38 logomac_RepeatTile $210D,38 logomac_RepeatTile $210E,38 logomac_RepeatTile $210F,38 logomac_RepeatTile $2110,38 logomac_RepeatTile $2111,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2105,38 logomac_RepeatTile $2112,38 logomac_RepeatTile $2113,38 logomac_RepeatTile $2114,38 logomac_RepeatTile $2115,38 logomac_RepeatTile $2116,38 ;------------------------------------------------------------------------------; logo_FixMap_FMStudio: dc.w $71ED ; start address dc.w 10 ; width (tiles) dc.w 6 ; height (tiles) ;--------------------------------------; dc.w $2109, $2121, $2122, $2123, $2124, $2125, $2126, $2127, $2128, $2109 dc.w $210A, $2131, $2132, $2133, $2134, $2135, $2136, $2137, $2138, $210A dc.w $210B, $2141, $2142, $2143, $2144, $2145, $2146, $2147, $2148, $210B dc.w $210C, $2151, $2152, $210C, $2154, $2155, $210C, $2157, $2158, $210C dc.w $2160, $2161, $2162, $2163, $2164, $2165, $2166, $2167, $2168, $2169 dc.w $2170, $2171, $2172, $2173, $2174, $2175, $2176, $2177, $2178, $2179 ;------------------------------------------------------------------------------; logo_FixMap_NowLoading: dc.w $71D7 ; start address dc.w 12 ; width (tiles) dc.w 2 ; height (tiles) ;--------------------------------------; dc.w $2180, $2181, $2182, $2183, $2184, $2185, $2186, $2187, $2188, $2189, $218A, $218B dc.w $2190, $2191, $2192, $2193, $2194, $2195, $2196, $2197, $2198, $2199, $219A, $219B ;------------------------------------------------------------------------------; logo_AnimMap_LoadBar: dc.w $7215 ; start address dc.w 8 ; width (tiles) dc.w 1 ; height (tiles) dc.w 18 ; number of frames in animation dc.w 3 ; length to show each frame ;--------------------------------------; dc.w $2117,$2117,$2117,$2117,$2117,$2117,$2117,$2117 dc.w $211F,$2117,$2117,$2117,$2117,$2117,$2117,$2117 dc.w $211E,$211F,$2117,$2117,$2117,$2117,$2117,$2117 dc.w $211D,$211E,$211F,$2117,$2117,$2117,$2117,$2117 dc.w $211C,$211D,$211E,$211F,$2117,$2117,$2117,$2117 dc.w $211B,$211C,$211D,$211E,$211F,$2117,$2117,$2117 dc.w $211A,$211B,$211C,$211D,$211E,$211F,$2117,$2117 dc.w $2119,$211A,$211B,$211C,$211D,$211E,$211F,$2117 dc.w $2118,$2119,$211A,$211B,$211C,$211D,$211E,$211F dc.w $2117,$2118,$2119,$211A,$211B,$211C,$211D,$211E dc.w $2117,$2117,$2118,$2119,$211A,$211B,$211C,$211D dc.w $2117,$2117,$2117,$2118,$2119,$211A,$211B,$211C dc.w $2117,$2117,$2117,$2117,$2118,$2119,$211A,$211B dc.w $2117,$2117,$2117,$2117,$2117,$2118,$2119,$211A dc.w $2117,$2117,$2117,$2117,$2117,$2117,$2118,$2119 dc.w $2117,$2117,$2117,$2117,$2117,$2117,$2117,$2118 dc.w $2117,$2117,$2117,$2117,$2117,$2117,$2117,$2117 dc.w $2117,$2117,$2117,$2117,$2117,$2117,$2117,$2117
Final Result (still picture)
I know this process can be made a lot easier, but getting this far motivated me to show everyone else how I did it. Feel free to ask questions.