1

I just figured out how to get this working well, so I figured I'd share the steps I used. The Logo file page on the wiki helped a bit, but I ran into some issues.

Things you'll need
  • A text editor tongue
  • 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:
logopage.png

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.asm
While 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)
0012.png

I know this process can be made a lot easier, but getting this far motivated me to show everyone else how I did it. smile Feel free to ask questions.
avatar

2

nice work, thank you for sharing! smile
the way you use VASM is impressive.

3

you tested on real hardware?

4

sadly no, I still don't have any real hardware. Oddly enough, MAME shows it fine, while NGFX beta 5 shows a different palette (tiles and animation are ok)...
avatar

5

if I remember correctly no 'offical' logo_*.prg uses palette < 5, these colors are set by system (logo, loadingbar, loading-animation), because of this NGFX ignores your palette #2 and uses system-palette #2. but i never checked this on real hardware, please send me your logo_*.prg and i will do a test on real system.

6

A bit late, but here it is, with the source elements as well (in case you want/need to take a closer look).

No makefile; sorry. The recipe above should work, though, if called from the main directory... keep me posted.
avatar

7

good news, your work is displayed properly on real hardware. smile

fmstudio-logoreal_0_o.png

So it seems palette # 2+ is ok, I have corrected this in NGFX.

fmstudio-logo_1_o.png

8

glad to hear, thanks for testing! hope you didn't waste a CD on it wink
avatar

9

Dont worry, no CD-R was harmed! wink

10

...

11

oops, guess I didn't get to the post fast enough. I'd still be interested in creating a simple Hello World with comments anyways, system or not. smile

edit: on-topic, I made a .txt file explaining what I know about making LOGO_*.PRG files and put it in the freemlib repo:
https://raw.githubusercontent.com/freem/freemlib-neogeo/master/doc/LOGO_x_PRG.txt
avatar

12

Hi Freem, I have sent you a PM about it.

13

[Entry Index]
The entry index holds a number of entries. Each entry is two longword values:
the data type, and the start address. It appears that you should structure the
file list in the order of the data types, so the fix tiles should come first,then palettes, etc. However, this has not been confirmed to be true.

these LOGO_*.PRG's do not contain any FIX-data... FIX-data from IPL is used.
- Street Hoop / Dunk Dream
- Metal Slug
- Metalslug 2
- Aero Fighters 2 / Sonic Wings 2
- Aero Fighters 3 / Sonic Wings 3
- Twinkle Star Sprites

14

Thanks for the information; pushed a new update to the file. smile
avatar

15

blastar (./9) :
Dont worry, no CD-R was harmed! wink
coming back, I'm a bit curious; how are you testing this? via pc-2-neo cable or some other method?
avatar

16

yes, using PC2NEO (USB-version) with my universe-bios equipped NGCD.
how did you loaded you own iso/chd with mess?

17

Much like adding new roms for the cart system, you'll need to add an entry to neocd.xml in the hash folder; this is what I have (though it might be out of date) in there:

<software name="fmstudio">
	<description>FM Studio</description>
	<year>2016</year>
	<publisher>freemco</publisher>
	<part name="cdrom" interface="neocd_cdrom">
		<diskarea name="cdrom">
			<disk name="fmstudio" sha1="4c8ee173d4920718b0279f74e711131ff6ef6c3e"/>
		</diskarea>
	</part>
</software>
avatar