dc.l $0010F300 ;Stack Pointer = 0x0010F300 dc.l $00C00402 ;Initial PC = 0x00C00402 dc.l $00C00408 dc.l $00C0040E dc.l $00C00414 ;Pointer to debugging switch = 0x00C00414 dc.l $00C0041A dc.l $00C0041A dc.l $00C0041A dc.l $00C0041A dc.l $00C00420 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C0042C dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00426 dc.l $00C00432 dc.l VBLANK ;Pointer to Vertical Blank Interrupt dc.l IRQ2 ;IRQ2 Pointer - Horisontal Blank Interrupt dc.l $00000000 dc.l $00000000 dc.l $00000000 dc.l $00000000 dc.l $00000000 dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $4E454F2D ;"NEO-" dc.l $47454F82 ;"GEO " dc.w $0300 ;NEO-GEO Cart Number = 300 dc.l $00000000 dc.l $0010E000 ;Pointer to debugging switch dc.w $0000 ;Blank dc.w $0000 ;Starting sprite number = 0x0000 dc.l $00000200 ;Pointer to Japanese config dc.l $00000200 ;Pointer to English config dc.l $00000200 ;Pointer to Spanish config jmp START ;Entry point of program jmp FINISH ;Finish operations - clearing registers and memory dc.l $FFFFFFFF ;Japanese Config 26 bytes - first 16 bytes Game Name dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $03641413 dc.w $2401 dc.l $FFFFFFFF ;English Config 26 bytes - first 16 bytes Game Name dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $03641413 dc.w $2401 dc.l $FFFFFFFF ;Spanish Config 26 bytes - first 16 bytes Game Name dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $FFFFFFFF dc.l $03641413 dc.w $2401 dc.l $00000186 ;Pointer to security code ;Securty code - 122 bytes dc.l $76004A6D dc.l $0A146600 dc.l $003C206D dc.l $0A043E2D dc.l $0A0813C0 dc.l $00300001 dc.l $32100C01 dc.l $00FF671A dc.l $30280002 dc.l $B02D0ACE dc.l $66103028 dc.l $0004B02D dc.l $0ACF6606 dc.l $B22D0AD0 dc.l $67085088 dc.l $51CFFFD4 dc.l $36074E75 dc.l $206D0A04 dc.l $3E2D0A08 dc.l $3210E049 dc.l $0C0100FF dc.l $671A3010 dc.l $B02D0ACE dc.l $66123028 dc.l $0002E048 dc.l $B02D0ACF dc.l $6606B22D dc.l $0AD06708 dc.l $588851CF dc.l $FFD83607 dc.w $4E75 BIOS Config(00000200 offset): dc.l $47552052 ;"GU R" dc.l $55205249 ;"U RI" dc.l $204E2020 ;" N " dc.l $20202020 ;" " dc.l $FFFFFFFF dc.l $FF643802 dc.l $02020212 dc.l $00000000 dc.l $434F4E54 ;"CONT" dc.l $494E5545 ;"INUE" dc.l $20202020 ;" " dc.l $44494646 ;"DIFF" dc.l $4943554C ;"ICUL" dc.l $54592020 ;"TY " dc.l $4C455645 ;"LEVE" dc.l $4C203120 ;"L 1 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203220 ;"L 2 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203320 ;"L 3 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203420 ;"L 4 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203520 ;"L 5 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203620 ;"L 6 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203720 ;"L 7 " dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C203820 ;"L 8 " dc.l $20202020 ;" " dc.l $44454D4F ;"DEMO" dc.l $20534F55 ;" SOU" dc.l $4E442020 ;"ND " dc.l $57495448 ;"WITH" dc.l $20202020 ;" " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $204F5554 ;" OUT" dc.l $20202020 ;" " dc.l $43524544 ;"CRED" dc.l $49542020 ;"IT " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $20202020 ;" " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $204F5554 ;" OUT" dc.l $20202020 ;" " dc.l $4C455645 ;"LEVE" dc.l $4C202020 ;"L " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $20202020 ;" " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $204F5554 ;" OUT" dc.l $20202020 ;" " dc.l $484F5720 ;"HOW " dc.l $544F2050 ;"TO P" dc.l $4C415920 ;"LAY " dc.l $57495448 ;"WITH" dc.l $20202020 ;" " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $204F5554 ;" OUT" dc.l $20202020 ;" " dc.l $50312047 ;"P1 G" dc.l $414D4520 ;"AME " dc.l $4D542E20 ;"MT. " dc.l $57495448 ;"WITH" dc.l $20202020 ;" " dc.l $20202020 ;" " dc.l $57495448 ;"WITH" dc.l $204F5554 ;" OUT" dc.l $20202020 ;" " VBLANK: tst.b from $10FD80 with Zero ;Bit 7=1 when Neo-Geo logo is displayed bmi DISPLAYEDLOGO jmp $00C00438 ;jmp in BIOS in Neo-Geo logo display function DISPLAYEDLOGO: movem.l A0-A6/D0-D7 to -(A7) move.w #4 to $3C000C ;IRQ4 move.b D0 to $300001 ;Watchdog move.b #1 to $100000 ;Vertical Blank occured movem.l +(A7) to A0-A6/D0-D7 rte IRQ2: move.w #2 to $3C000C ;IRQ2 rte START: moveq #$00 to D0 move.b $0010FDAE to D0 add.w D0 to D0 add.w D0 to D0 movea.l (d8,PC,Xn) to A0 on #$0004 jmp (A0) dc.l $0000036E ;Pointer to NEO-GEO startup dc.l $00C00444 dc.l $00C00374 (0000036E offset): jmp $00C00444 ;NEO-GEO startup (00000374 offset): jmp $00000380 jmp $00000400 ;Main program pointer (00000380 offset): addq.b #1 to $0010FDC2 bclr #$0007 from $0010FD80 move.w #$2000 to SR jsr $00C004C2 jsr $00C004C8 subq.b #1 from $0010FDC2 bset #$0007 to $0010FD80 rts FINISH: ;Clearing all registers and memory and jump to START rts Main program (00000400 offset): lea #$0010F300 to A7 ;Stack pionter move.b D0 to $00300001 ;Hardware DIP Switch move.w #$0000 to $003C0006 ;HBlank Interrupt Control move.w #$0007 to $003C000C ;Clear VBlank IRQ & HBlank IRQ jsr $00C004C2 ;BIOS Soft Dip Settings jsr $00C004C8 ;Unknown yet jsr $00C0044A ;Set controller and some other values into RAM move #$2000 to SR ;Disable Interrupts ... Sound play example (00000432 offset): move.b #$0007 to $00320000 ;Send $07 command to Z80 move.b #$003F to D7 ;Some delay for perfect Z80 corresponding move.b #$0022 to $00320000 ;Send $22 command - number of track ($0722) Loop: jmp Loop