;##$CPU Z80 ;##$OriginalBinary omega.m7+omega.l7+omega.k7+omega.j7 ;##- ;##- Menu structure for CodeToWeb HTML generator ;##- ;##Menu 3 "Diagnostics" ;##MenuLink DiagString "Diagnostics text" ;##MenuLink DiagSetup "Diagnostics setup vectors" ;##MenuLink PrintString "Print vector string" ;##MenuLink Diagnostics "Diagnostics routine" ;##MenuLink DogAndDVG "Feed watchdog and start DVG" ;##MenuLink TestROM "Test ROM chip" ;##MenuLink TestRAM "Test RAM chip" ;##MenuLink TestNONVOL "Test NONVOL (4 bit) RAM" ;##- ;##Menu 3 "Hardware info from MAME omegrace.c" ;##MenuLink MemoryMap "Memory Map" ;##MenuLink Ports "I/O Port Information" ;##MenuLink DVG "DVG Vector Commands" ;##- ;##Menu 3 "Strings and Character Maps" ;##MenuLink VTableChars "Letters A-Z" ;##MenuLink VTableNums "Numbers and misc" ;##MemoryMap ; Comments from MAME source omegrace.c ; 0000 - 3fff PROM ; 4000 - 4bff RAM (3k) ; 5c00 - 5cff NVRAM (256 x 4bits) ; 8000 - 8fff Vec RAM (4k) ; 9000 - 9fff Vec ROM (4k) ; ; 15 14 13 12 11 10 ; --+--+--+--+--+-- ; 0 0 0 0 M8 - 2732 (4k) ; 0 0 0 1 L8 - 2732 ; 0 0 1 0 K8 - 2732 ; 0 0 1 1 J8 - 2732 ; ; 0 1 - 0 0 0 RAM (3k) ; 0 1 - 0 0 1 ; 0 1 - 0 1 0 ; ; 0 1 - 1 1 1 4 Bit BB RAM (d0-d3) ; ; 1 - - 0 0 Vec RAM (4k) ; 1 - - 0 1 ; 1 - - 1 0 Vec ROM (2k) E1 ; 1 - - 1 1 Vec ROM (2k) F1 ; ;##Ports ; I/O Ports ; ; 8 Start/ (VG start) ; 9 WDOG/ (Reset watchdog) ; A SEQRES/ (VG stop/reset?) ; B RDSTOP/ d7 = stop (VG running if 0) ; ; 10 I DIP SW C4 (game ship settings) ; ; 6 5 4 3 2 1 ; 1st bonus ship at ; | | | | 0 0 40,000 ; | | | | 0 1 50,000 ; | | | | 1 0 70,000 ; | | | | 1 1 100,000 ; | | | | 2nd and 3rd bonus ships ; | | 0 0 150,000 250,000 ; | | 0 1 250,000 500,000 ; | | 1 0 500,000 750,000 ; | | 1 1 750,000 1,500,000 ; | | ships per credit ; 0 0 1 credit = 2 ships / 2 credits = 4 ships ; 0 1 1 credit = 2 ships / 2 credits = 5 ships ; 1 0 1 credit = 3 ships / 2 credits = 6 ships ; 1 1 1 credit = 3 ships / 2 credits = 7 ships ; ; 11 I 7 = Test ; 6 = P1 Fire ; 5 = P1 Thrust ; 4 = Tilt ; ; 1 = Coin 2 ; 0 = Coin 1 ; ; 12 I 7 = 1P1CR ; 6 = 1P2CR ; ; 3 = 2P2CR -+ ; 2 = 2P1CR | ; 1 = P2Fire | ; 0 = P2Thr -+ cocktail only ; ; 13 O 7 = ; 6 = screen reverse ; 5 = 2 player 2 credit start LED ; 4 = 2 player 1 credit start LED ; 3 = 1 player 1 credit start LED ; 2 = 1 player 1 credit start LED ; 1 = coin meter 2 ; 0 = coin meter 1 ; ; 14 O sound command (interrupts sound Z80) ; ; 15 I encoder 1 (d7-d2) ; ; The encoder is a 64 position Grey Code encoder, or a ; pot and A to D converter. ; ; Unlike the quadrature inputs on Atari and Sega games, ; Omega Race's controller is an absolute angle. ; ; 0x00, 0x04, 0x14, 0x10, 0x18, 0x1c, 0x5c, 0x58, ; 0x50, 0x54, 0x44, 0x40, 0x48, 0x4c, 0x6c, 0x68, ; 0x60, 0x64, 0x74, 0x70, 0x78, 0x7c, 0xfc, 0xf8, ; 0xf0, 0xf4, 0xe4, 0xe0, 0xe8, 0xec, 0xcc, 0xc8, ; 0xc0, 0xc4, 0xd4, 0xd0, 0xd8, 0xdc, 0x9c, 0x98, ; 0x90, 0x94, 0x84, 0x80, 0x88, 0x8c, 0xac, 0xa8, ; 0xa0, 0xa4, 0xb4, 0xb0, 0xb8, 0xbc, 0x3c, 0x38, ; 0x30, 0x34, 0x24, 0x20, 0x28, 0x2c, 0x0c, 0x08 ; ; 16 I encoder 2 (d5-d0) ; ; The inputs aren't scrambled as they are on the 1 player ; encoder ; ; 17 I DIP SW C6 (coin/cocktail settings) ; ; 8 7 6 5 4 3 2 1 ; coin switch 1 ; | | | | | 0 0 0 1 coin 2 credits ; | | | | | 0 0 1 1 coin 3 credits ; | | | | | 0 1 0 1 coin 5 credits ; | | | | | 0 1 1 4 coins 5 credits ; | | | | | 1 0 0 3 coins 4 credits ; | | | | | 1 0 1 2 coins 3 credits ; | | | | | 1 1 0 2 coins 1 credit ; | | | | | 1 1 1 1 coin 1 credit ; | | | | | ; | | | | | coin switch 2 ; | | 0 0 0 1 coin 2 credits ; | | 0 0 1 1 coin 3 credits ; | | 0 1 0 1 coin 5 credits ; | | 0 1 1 4 coins 5 credits ; | | 1 0 0 3 coins 4 credits ; | | 1 0 1 2 coins 3 credits ; | | 1 1 0 2 coins 1 credit ; | | 1 1 1 1 coin 1 credit ; | | ; | 0 coin play ; | 1 free play ; | ; 0 normal ; 1 cocktail ; ;##DVG ; ; display list format: (4 byte opcodes) ; ; +------+------+------+------+------+------+------+------+ ; |DY07 DY06 DY05 DY04 DY03 DY02 DY01 DY00 | 0 ; +------+------+------+------+------+------+------+------+ ; |OPCD3 OPCD2 OPCD1 OPCD0 DY11 DY10 DY09 DY08 | 1 OPCD 1111 = ABBREV/ ; +------+------+------+------+------+------+------+------+ ; |DX07 DX06 DX05 DX04 DX03 DX02 DX01 DX00 | 2 ; +------+------+------+------+------+------+------+------+ ; |INTEN3 INTEN2 INTEN1 INTEN0 DX11 DX10 DX09 DX08 | 3 ; +------+------+------+------+------+------+------+------+ ; ; Draw relative vector 0x80 1000YYYY YYYYYYYY IIIIXXXX XXXXXXXX ; ; Draw relative vector ; and load scale 0x90 1001YYYY YYYYYYYY SSSSXXXX XXXXXXXX ; ; Beam to absolute ; screen position 0xA0 1010YYYY YYYYYYYY ----XXXX XXXXXXXX ; ; Halt 0xB0 1011---- -------- ; ; Jump to subroutine 0xC0 1100AAAA AAAAAAAA ; ; Return from subroutine 0xD0 1101---- -------- ; ; Jump to new address 0xE0 1110AAAA AAAAAAAA ; ; Short vector draw 0xF0 1111YYYY IIIIXXXX ; /* Omega Race has two pairs of the state PROM output ; * lines swapped before going into the decoder. ; * Since all other avg/dvg games connect the PROM ; * in a consistent way to the decoder, we swap the bits ; * here. */ ; for (i=0; i