68k program header

ASM ROM header templates.

For cartridge systems

 * $0064: VBlank handling routine pointer
 * $0100: "NEO-GEO",$00 string
 * $0108: NGH number
 * $010A: program size (isn't read by any bios)
 * $010E: pointer to debug DIPs (in user RAM) (isn't read by any bios)
 * $0114: boot logo flag and tile number
 * $0116: pointer to Japanese software DIPs settings layout
 * $011A: pointer to US settings software DIPs settings layout
 * $011E: pointer to Euro settings software DIPs settings layout
 * $0122: pointer to code start
 * $0128: pointer to player start (unknown meaning)
 * $012E: pointer to demo end (unknown meaning)
 * $0134: pointer to coin sound (unknown meaning)
 * $0182: pointer to security code

Minimal header (from Smkdan's sources)
No need for a complete 68k vector table.

org $0064 dc.l VBLANK	;IRQ handler

org $0100 dc.b "NEO-GEO",$00

org $0108 dc.w $017	;NGH

org $0122 jmp Start	;entry

org $0114 dc.w $0100	;logo flag, don't show it just go straight to the entry point

org $0182 dc.l Code	;code pointer Code: dc.l $76004A6D,$0A146600,$003C206D,$0A043E2D dc.l $0A0813C0,$00300001,$32100C01,$00FF671A dc.l $30280002,$B02D0ACE,$66103028,$0004B02D dc.l $0ACF6606,$B22D0AD0,$67085088,$51CFFFD4 dc.l $36074E75,$206D0A04,$3E2D0A08,$3210E049 dc.l $0C0100FF,$671A3010,$B02D0ACE,$66123028 dc.l $0002E048,$B02D0ACF,$6606B22D,$0AD06708 dc.l $588851CF,$FFD83607 dc.w $4e75

Full header (from some unknown example code)
org $0100 dc.b "NEO-GEO",$00

dc.w $0052       ;NGH dc.l $00080000   ;ROM p1 size dc.l $00100000   ;debug DIPs pointer dc.w $01         ;unknown dc.b $00         ;bootscreen flag, anything else than 0x00 means no logo dc.b $1B         ;first tile number of the NeoGeo logo in the C ROMs dc.l JPConfig    ;Japanese config menu pointer dc.l USConfig    ;US config menu pointer dc.l EUConfig    ;European config menu pointer

jmp       Start jmp       Start  ;? jmp       Start  ;? jmp       Start  ;?

org $0182 dc.l Code        ;code pointer Code: dc.l $76004A6D,$0A146600,$003C206D,$0A043E2D dc.l $0A0813C0,$00300001,$32100C01,$00FF671A dc.l $30280002,$B02D0ACE,$66103028,$0004B02D dc.l $0ACF6606,$B22D0AD0,$67085088,$51CFFFD4 dc.l $36074E75,$206D0A04,$3E2D0A08,$3210E049 dc.l $0C0100FF,$671A3010,$B02D0ACE,$66123028 dc.l $0002E048,$B02D0ACF,$6606B22D,$0AD06708 dc.l $588851CF,$FFD83607 dc.w $4e75

; Configuration menu layouts (soft DIPs) JPConfig: dc.b   "0123456789ABCDEF"                            ; Game name dc.b   $FF,$FF,$FF,$FF,$FF,$FF                       ; Special list dc.b   $24,$02,$00,$00,$00,$00,$00,$00,$00,$00       ; Option list dc.b   "LIVES       " dc.b   "1           " dc.b   "2           " dc.b   "3           " dc.b   "4           " dc.b   "HOW TO PLAY " dc.b   "WITH        " dc.b   "WITHOUT     "

USConfig: dc.b   "0123456789ABCDEF"                            ; Game name dc.b   $FF,$FF,$FF,$FF,$FF,$FF                       ; Special list dc.b   $24,$02,$00,$00,$00,$00,$00,$00,$00,$00       ; Option list dc.b   "LIVES       " dc.b   "1           " dc.b   "2           " dc.b   "3           " dc.b   "4           " dc.b   "HOW TO PLAY " dc.b   "WITH        " dc.b   "WITHOUT     "

EUConfig: dc.b   "0123456789ABCDEF"                            ; Game name dc.b   $FF,$FF,$FF,$FF,$FF,$FF                       ; Special list dc.b   $24,$02,$00,$00,$00,$00,$00,$00,$00,$00       ; Option list dc.b   "LIVES       " dc.b   "1           " dc.b   "2           " dc.b   "3           " dc.b   "4           " dc.b   "HOW TO PLAY " dc.b   "WITH        " dc.b   "WITHOUT     "

For CD systems
org    $100 dc.b   "NEO-GEO", $02          ;CDDA flag dc.w   $1234                   ;NGH dc.l   $00500000               ;from Metal Slug 2 dc.l   $0010F000               ;debug DIPs pointer dc.w   $007A                   ;not used ? dc.w   $00A1                   ;not used ?

org    $122 jmp    Start jmp    Generic                 ;? jmp    Generic                 ;? jmp    Generic                 ;?

org    $13A dc.w   $0000                   ;Z80 RAM address for CDDA commands

Generic: rte rts