diff --git a/Arcade_MiST/Gottlieb Qbert/meta/Argus.mra b/Arcade_MiST/Gottlieb Qbert/meta/Argus.mra new file mode 100644 index 00000000..40c8a3be --- /dev/null +++ b/Arcade_MiST/Gottlieb Qbert/meta/Argus.mra @@ -0,0 +1,51 @@ + + + Argus + 0228 + argusg + 20201231150731 + 1983 + Gottlieb + Platform + qbert + + + + + + + + 7 + + + + + + + + + + + + + + + + + + + + + 00 + + + + + + + + + + + + \ No newline at end of file diff --git a/Arcade_MiST/Gottlieb Qbert/meta/Curve Ball.mra b/Arcade_MiST/Gottlieb Qbert/meta/Curve Ball.mra index 74d1cfc2..75719df9 100644 --- a/Arcade_MiST/Gottlieb Qbert/meta/Curve Ball.mra +++ b/Arcade_MiST/Gottlieb Qbert/meta/Curve Ball.mra @@ -10,9 +10,10 @@ qbert - - - + + + + 4 diff --git a/Arcade_MiST/Gottlieb Qbert/meta/Insector.mra b/Arcade_MiST/Gottlieb Qbert/meta/Insector.mra index cbf8ff85..e42d9cfb 100644 --- a/Arcade_MiST/Gottlieb Qbert/meta/Insector.mra +++ b/Arcade_MiST/Gottlieb Qbert/meta/Insector.mra @@ -10,7 +10,7 @@ qbert - + diff --git a/Arcade_MiST/Gottlieb Qbert/meta/Knightmare.mra b/Arcade_MiST/Gottlieb Qbert/meta/Knightmare.mra new file mode 100644 index 00000000..9f39766a --- /dev/null +++ b/Arcade_MiST/Gottlieb Qbert/meta/Knightmare.mra @@ -0,0 +1,73 @@ + + Knightmare + USA + no + no + Set 1 + + + + 1982 + Gottlieb + Platform - Climb + + kngtmare + qbert + 0198 + qbert + + + 15kHz + vertical (ccw) + yes + + 2 (alternating) + 4-way diagonal + + 0 + + + + + + + + 8 + + + + + + + + + 00 + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + 20210430005030 + diff --git a/Arcade_MiST/Gottlieb Qbert/meta/Krull.mra b/Arcade_MiST/Gottlieb Qbert/meta/Krull.mra index f3e86cfb..55b57ff8 100644 --- a/Arcade_MiST/Gottlieb Qbert/meta/Krull.mra +++ b/Arcade_MiST/Gottlieb Qbert/meta/Krull.mra @@ -10,8 +10,11 @@ qbert - + + + + 3 diff --git a/Arcade_MiST/Gottlieb Qbert/meta/QBert Qubes.mra b/Arcade_MiST/Gottlieb Qbert/meta/QBert Qubes.mra index c420c554..e9ed30db 100644 --- a/Arcade_MiST/Gottlieb Qbert/meta/QBert Qubes.mra +++ b/Arcade_MiST/Gottlieb Qbert/meta/QBert Qubes.mra @@ -10,11 +10,10 @@ qbert - - - - - + + + + 1 diff --git a/Arcade_MiST/Gottlieb Qbert/rtl/Qbert_MiST.sv b/Arcade_MiST/Gottlieb Qbert/rtl/Qbert_MiST.sv index 792b51bb..44d9ef96 100644 --- a/Arcade_MiST/Gottlieb Qbert/rtl/Qbert_MiST.sv +++ b/Arcade_MiST/Gottlieb Qbert/rtl/Qbert_MiST.sv @@ -55,7 +55,7 @@ wire flip = status[7]; wire service = status[8]; wire diagonal = status[9]; -wire [1:0] orientation = {flip, core_mod != mod_tylz && core_mod != mod_insector}; +wire [1:0] orientation = {flip, core_mod != mod_tylz && core_mod != mod_insector && core_mod != mod_kngtmare && core_mod != mod_argus}; wire [7:0] dip_sw = status[23:16]; assign LED = ~ioctl_downl; @@ -105,9 +105,12 @@ localparam mod_krull = 3; localparam mod_curvebal = 4; localparam mod_tylz = 5; localparam mod_insector = 6; +localparam mod_argus = 7; +localparam mod_kngtmare = 8; -wire [7:0] spinner_pos; wire spinner_reset; +// Mad Planets spinner +wire [7:0] spinner_pos; spinner spinner ( .clock_40(clk_sys), .reset(spinner_reset), @@ -117,14 +120,36 @@ spinner spinner ( .spin_angle(spinner_pos) ); +// Argus trackball +wire [15:0] trackball_pos; +spinner spinnerX ( + .clock_40(clk_sys), + .reset(spinner_reset), + .btn_left(m_left), + .btn_right(m_right), + .btn_acc(1'b1), + .ctc_zc_to_2(vb), + .spin_angle(trackball_pos[15:8]) +); + +spinner spinnerY ( + .clock_40(clk_sys), + .reset(spinner_reset), + .btn_left(m_up), + .btn_right(m_down), + .btn_acc(1'b1), + .ctc_zc_to_2(vb), + .spin_angle(trackball_pos[7:0]) +); + reg [5:0] OP2720; reg [7:0] IP1710; reg [7:0] IP4740; -reg [7:0] IPA1J2; +reg [15:0] IPA1J2; always @(*) begin - IPA1J2 = 8'd0; + IPA1J2 = 16'd0; IP4740 = 8'd0; IP1710 = { @@ -193,7 +218,7 @@ always @(*) begin m_up }; - IPA1J2 = spinner_pos; + IPA1J2 = {spinner_pos, spinner_pos}; end mod_krull: @@ -289,6 +314,48 @@ always @(*) begin m_up }; end + + mod_argus: + begin + IP1710 = { // IN1 + 4'h0, + m_coin2, + m_coin1, + m_fireA, + ~service + }; + + IP4740 = { // IN4 + 4'h0, + m_fire2A, + m_fire2B, + m_fireA, + m_fireB + }; + IPA1J2 = trackball_pos; + end + + mod_kngtmare: + begin + IP1710 = { // IN1 + 4'h0, + m_coin2, + m_coin1, + 2'b00 + }; + + IP4740 = { // IN4 + m_two_players, + m_one_player, + m_fireB, + m_fireA, + m_rightB | m_right2, + m_left, + m_leftB | m_left2, + m_right + }; + end + default: begin end @@ -465,7 +532,7 @@ mylstar_board mylstar_board .rom_init_address(ioctl_addr), .rom_init_data(ioctl_dout), .nvram_data(ioctl_din), - .bgram(core_mod == mod_krull), + .bgram(core_mod == mod_krull || core_mod == mod_argus), .vflip(flip), .hflip(flip), diff --git a/Arcade_MiST/Gottlieb Qbert/rtl/mylstar_board.v b/Arcade_MiST/Gottlieb Qbert/rtl/mylstar_board.v index 9bc27385..7e4bb36b 100644 --- a/Arcade_MiST/Gottlieb Qbert/rtl/mylstar_board.v +++ b/Arcade_MiST/Gottlieb Qbert/rtl/mylstar_board.v @@ -21,7 +21,7 @@ module mylstar_board input [7:0] IP1710, input [7:0] IP4740, - input [7:0] IPA1J2, + input [15:0] IPA1J2, output [5:0] OP2720, output [4:0] OP3337, output [7:0] OP4740, @@ -129,7 +129,8 @@ end // CPU/RAM/ROM // //////////////////////// -wire [7:0] A1J2 = (trackball0_sel | trackball1_sel) ? IPA1J2 : 8'd0; +wire [7:0] A1J2 = trackball0_sel ? IPA1J2[15:8] : + trackball1_sel ? IPA1J2[7:0] : 8'd0; wire [7:0] ram_dout = C5_Q | C6_Q | C7_Q | C9_10_Q | C8_9_Q | C10_11_Q; wire [7:0] rom_dout; diff --git a/Arcade_MiST/Gottlieb Qbert/rtl/spinner.vhd b/Arcade_MiST/Gottlieb Qbert/rtl/spinner.vhd index bc841af7..cbf6c60a 100644 --- a/Arcade_MiST/Gottlieb Qbert/rtl/spinner.vhd +++ b/Arcade_MiST/Gottlieb Qbert/rtl/spinner.vhd @@ -36,8 +36,8 @@ begin if btn_left = '1' then spin_count <= spin_count - 3; end if; -- left if btn_right = '1' then spin_count <= spin_count + 3; end if; -- right else - if btn_left = '1' then spin_count <= spin_count - 55; end if; - if btn_right = '1' then spin_count <= spin_count + 55; end if; + if btn_left = '1' then spin_count <= spin_count - 15; end if; + if btn_right = '1' then spin_count <= spin_count + 15; end if; end if; end if; end if; diff --git a/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra b/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra index 131de7d2..6d43617e 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra +++ b/Arcade_MiST/Namco Super Pacman Hardware/meta/Grobda.mra @@ -35,4 +35,20 @@ + + + + + + + + + + + + + + + + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra index ed332900..3e5b9171 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra +++ b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac n Pal.mra @@ -8,7 +8,7 @@ druaga 20210326 - 05 + 07 diff --git a/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac-Man & Chomp Chomp.mra b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac-Man & Chomp Chomp.mra index ea9cf5c9..020f52ab 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac-Man & Chomp Chomp.mra +++ b/Arcade_MiST/Namco Super Pacman Hardware/meta/Pac-Man & Chomp Chomp.mra @@ -8,7 +8,7 @@ druaga 20210326 - 05 + 07 @@ -44,7 +44,7 @@ - + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/TheTowerofDruaga_mist.sv b/Arcade_MiST/Namco Super Pacman Hardware/rtl/TheTowerofDruaga_mist.sv index f515b416..3da56194 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/TheTowerofDruaga_mist.sv +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/TheTowerofDruaga_mist.sv @@ -66,7 +66,7 @@ always @(*) begin DSW2 = 0; case (core_mod) - 7'h0, 7'h1, 7'h3, 7'h6: // DRUAGA, DIGDUG2, GROBDA + 7'h0, 7'h1, 7'h3: // DRUAGA, DIGDUG2 begin DSW0 = status[15:8]; DSW1 = status[23:16]; @@ -78,6 +78,13 @@ always @(*) begin DSW1 = status[23:16]; DSW2 = { {2{status[27:24]}} }; end + 7'h6: // GROBDA + begin + DSW0 = status[15:8]; + DSW1 = {status[23:22], m_fire2B, m_fireB, status[19:16]}; + DSW2 = status[31:24]; + end + default: begin DSW0 = status[15:8]; @@ -113,8 +120,6 @@ wire key_strobe; wire key_pressed; wire [7:0] key_code; -// assign core_mod=7'd5; - user_io #(.STRLEN($size(CONF_STR)>>3))user_io( .clk_sys (clock_48 ), .conf_str (CONF_STR ), diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_sprite.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_sprite.v index c3a9c0cc..4372a107 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_sprite.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_sprite.v @@ -28,8 +28,7 @@ module DRUAGA_SPRITE input FLIP_SCREEN ); -parameter [2:0] SUPERPAC=3'd5; -parameter [2:0] GROBDA=3'd6; +`include "param.v" reg [9:0] CLT1_A; wire [3:0] CLT1_D; @@ -92,7 +91,7 @@ always @(*) begin (ox[1:0]==2'b01) ? { pn, SPCO[14], SPCO[10], SPCO[6], SPCO[2] } : (ox[1:0]==2'b10) ? { pn, SPCO[13], SPCO[ 9], SPCO[5], SPCO[1] } : { pn, SPCO[12], SPCO[ 8], SPCO[4], SPCO[0] } ; - if( MODEL == SUPERPAC || MODEL == GROBDA) begin // 2bpp + if( MODEL == SUPERPAC || MODEL == GROBDA || MODEL == PACNPAL) begin // 2bpp CLT1_A[9:2]= { 2'd0, CLT1_A[9:4] }; end end diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_video.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_video.v index 9806e1ec..389c4fa3 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_video.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/druaga_video.v @@ -35,8 +35,7 @@ module DRUAGA_VIDEO input FLIP_SCREEN ); -parameter [2:0] SUPERPAC=3'd5; -parameter [2:0] GROBDA=3'd6; +`include "param.v" wire [8:0] HPOS = PH-8'd16; wire [8:0] VPOS = PV; @@ -91,11 +90,11 @@ always @ ( posedge VCLKx8 ) begin end -assign CLT0_A = BGPN ^ ( (MODEL==SUPERPAC || MODEL==GROBDA) ? 8'h0 : 8'h03 ); -assign VRAM_A = VRAMADRS & ( (MODEL==SUPERPAC || MODEL==GROBDA) ? 11'h3FF : 11'h7FF ); +assign CLT0_A = BGPN ^ ( (MODEL==SUPERPAC || MODEL==GROBDA || MODEL==PACNPAL) ? 8'h0 : 8'h03 ); +assign VRAM_A = VRAMADRS & ( (MODEL==SUPERPAC || MODEL==GROBDA || MODEL==PACNPAL) ? 11'h3FF : 11'h7FF ); wire BGHI = BGH & (CLT0_D!=4'd15); -wire [4:0] BGCOL = { 1'b1, ((MODEL==SUPERPAC || MODEL==GROBDA) ? ~CLT0_D :CLT0_D) }; +wire [4:0] BGCOL = { 1'b1, ((MODEL==SUPERPAC || MODEL==GROBDA || MODEL==PACNPAL) ? ~CLT0_D :CLT0_D) }; always @(*) begin COL = HPOS[8:3] ^ {5{FLIP_SCREEN}}; @@ -103,7 +102,7 @@ always @(*) begin // rather than the original circuit count. ROW = (VPOS[8:3] + 6'h2) ^ {5{FLIP_SCREEN}}; - if( MODEL==SUPERPAC || MODEL==GROBDA ) begin + if( MODEL==SUPERPAC || MODEL==GROBDA || MODEL==PACNPAL) begin VRAMADRS = { 1'b0, COL[5] ? {COL[4:0], ROW[4:0]} : {ROW[4:0], COL[4:0]} @@ -119,7 +118,7 @@ end //---------------------------------------- wire [4:0] SPCOL; -DRUAGA_SPRITE #(.SUPERPAC(SUPERPAC)) spr +DRUAGA_SPRITE spr ( VCLKx8, VCLK_EN, HPOS, VPOS, oHB, diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/fpga_druaga.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/fpga_druaga.v index 35468909..e5c5e675 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/fpga_druaga.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/fpga_druaga.v @@ -41,8 +41,6 @@ module fpga_druaga input FLIP_SCREEN ); -parameter [2:0] SUPERPAC=3'd5; - // Clock Generator reg [4:0] CLKS; @@ -79,7 +77,7 @@ wire [10:0] vram_a; wire [15:0] vram_d; wire [6:0] spra_a; wire [23:0] spra_d; -MEMS #(.SUPERPAC(SUPERPAC)) mems +MEMS mems ( MCLK, CLKCPUx2, @@ -101,7 +99,7 @@ wire SCPU_IRQ, SCPU_IRQEN; wire SCPU_RESET, IO_RESET; wire PSG_ENABLE; -REGS #(.SUPERPAC(SUPERPAC)) regs +REGS regs ( CLKCPUx2, RESET, oVB, MCPU_ADRS, MCPU_VMA, MCPU_WE, @@ -117,7 +115,7 @@ REGS #(.SUPERPAC(SUPERPAC)) regs // I/O Controler wire IsMOTOS; -IOCTRL #(.SUPERPAC(SUPERPAC)) ioctrl( +IOCTRL ioctrl( CLKCPUx2, oVB, IO_RESET, MCPU_CS_IO, MCPU_WE, MCPU_ADRS[5:0], MCPU_DO, IO_O, @@ -241,8 +239,7 @@ module MEMS input [2:0] MODEL ); -parameter [2:0] SUPERPAC=3'd5; -parameter [2:0] GROBDA=3'd6; +`include "param.v" wire [7:0] mrom_d, srom_d; //DLROM #(15,8) mcpui( CPUCLKx2, MCPU_ADRS[14:0], mrom_d, ROMCL,ROMAD[14:0],ROMDT,ROMEN & (ROMAD[16:15]==2'b0_0)); @@ -266,7 +263,7 @@ wire mrom_cs = ( MCPU_ADRS[15] ) & MCPU_VMA; // $8000-$FFFF always @(*) begin cram_ad = mram_ad; - if( MODEL == SUPERPAC || MODEL == GROBDA) begin + if( MODEL == SUPERPAC || MODEL == GROBDA || MODEL == PACNPAL) begin mram_cs0 = ( MCPU_ADRS[15:10] == 6'b000000 ) && MCPU_VMA; // $0000-$03FF mram_cs1 = ( MCPU_ADRS[15:10] == 6'b000001 ) && MCPU_VMA; // $0400-$07FF mram_cs2 = ( MCPU_ADRS[15:11] == 5'b00001 ) && MCPU_VMA; // $1000-$17FF @@ -352,16 +349,14 @@ module REGS input [2:0] MODEL ); -parameter [2:0] SUPERPAC=3'd5; -parameter [2:0] GROBDA=3'd6; - +`include "param.v" // BG Scroll Register wire MCPU_SCRWE = ( ( MCPU_ADRS[15:11] == 5'b00111 ) & MCPU_VMA & MCPU_WE ); always @ ( negedge MCPU_CLK or posedge RESET ) begin if ( RESET ) SCROLL <= 8'h0; else begin - if( MODEL==SUPERPAC || MODEL==GROBDA) + if( MODEL==SUPERPAC || MODEL==GROBDA || MODEL==PACNPAL) SCROLL <= 8'd0; else if ( MCPU_SCRWE ) SCROLL <= MCPU_ADRS[10:3]; diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl.v index 3314d828..f3016847 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl.v @@ -42,13 +42,12 @@ reg [9:0] pSTKTRG12; reg [2:0] pCSTART12; reg bUpdate; -reg bIOMode; - -parameter [2:0] SUPERPAC=3'd5; +reg [1:0] bIOMode; +`include "param.v" assign OUT = { 4'b1111, outr }; -assign IsMOTOS = bIOMode; +assign IsMOTOS = bIOMode == 1; // Detect falling edges: wire [11:0] iSTKTRG12 = ( STKTRG12 ^ pSTKTRG12 ) & STKTRG12; @@ -60,13 +59,13 @@ BCDCONV creditsBCD( credits, CREDIT_ONES, CREDIT_TENS ); always @ ( posedge CLK ) begin if ( ENABLE ) begin if ( ADRS[5] ) begin - if ( WR ) memc[ADRS[4:0]] <= IN; + if ( WR ) memc[ADRS[4:0]] <= IN[3:0]; outr <= memc[ADRS[4:0]]; end else if ( ADRS[4] ) begin - if ( WR ) memb[ADRS[3:0]] <= IN; + if ( WR ) memb[ADRS[3:0]] <= IN[3:0]; outr <= memb[ADRS[3:0]]; end else begin - if ( WR ) mema[ADRS[3:0]] <= IN; + if ( WR ) mema[ADRS[3:0]] <= IN[3:0]; outr <= mema[ADRS[3:0]]; end end @@ -78,14 +77,28 @@ always @ ( posedge CLK ) begin credits <= 0; end else begin if ( UPDATE & (~bUpdate) ) begin - if ( mema[4'h8] == 4'h8 || MODEL==SUPERPAC ) - bIOMode <= 1'b1; // Is running "Motos" ? + if (MODEL == PACNPAL) + bIOMode <= 2'd3; + else if (MODEL == GROBDA) + bIOMode <= 2'd2; + else if ( mema[4'h8] == 4'h8 || MODEL==SUPERPAC) + bIOMode <= 2'd1; // Is running "Motos" ? - if ( bIOMode ) begin - `include "ioctrl_1.v" + if ( bIOMode == 3) begin + `include "ioctrl_1a.v" + `include "ioctrl_2b.v" + end + else if ( bIOMode == 2) begin + `include "ioctrl_0a.v" + `include "ioctrl_1b.v" + end + else if ( bIOMode == 1) begin + `include "ioctrl_1a.v" + `include "ioctrl_1b.v" end else begin - `include "ioctrl_0.v" + `include "ioctrl_0a.v" + `include "ioctrl_0b.v" end pCSTART12 <= CSTART12; diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0a.v similarity index 56% rename from Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0.v rename to Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0a.v index f86ec387..d2a60bd7 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0a.v @@ -12,21 +12,21 @@ if ( iCSTART12[2] & ( credits < 99 ) ) begin credit_add = 8'h01; - credits = credits + 1; + credits = credits + 1'd1; end if ( mema[4'h9] == 0 ) begin if ( ( credits >= 2 ) & iCSTART12[1] ) begin credit_sub = 8'h02; - credits = credits - 2; + credits = credits - 2'd2; end else if ( ( credits >= 1 ) & iCSTART12[0] ) begin credit_sub = 8'h01; - credits = credits - 1; + credits = credits - 1'd1; end end mema[4'h0] <= credit_add; - mema[4'h1] <= credit_sub | {7'd0,CSTART12[0]}; + mema[4'h1] <= credit_sub | {3'd0,CSTART12[0]}; mema[4'h2] <= CREDIT_TENS; mema[4'h3] <= CREDIT_ONES; mema[4'h4] <= STKTRG12[3:0]; @@ -60,48 +60,3 @@ default:; endcase - - - case ( memb[4'h8] ) - - 4'h1,4'h3: begin - memb[4'h0] <= 0; - memb[4'h1] <= 0; - memb[4'h2] <= 0; - memb[4'h3] <= 0; - memb[4'h4] <= 0; - memb[4'h5] <= 0; - memb[4'h6] <= 0; - memb[4'h7] <= 0; - end - - 4'h4: begin - memb[4'h0] <= DIPSW[11: 8]; // (P0) DSW1 Mappy - memb[4'h1] <= DIPSW[15:12]; - - memb[4'h2] <= DIPSW[ 3: 0]; // (P1) DSW0 - memb[4'h4] <= DIPSW[ 7: 4]; - - memb[4'h5] <={DIPSW[15:14],STKTRG12[ 5],iSTKTRG12[ 5]}; // (P2) DSW1 Druaga/DigDug2 - memb[4'h6] <= DIPSW[23:20]; // IsMappy ? DIPSW[19:16] : DIPSW[11:8] - - memb[4'h7] <={DIPSW[19:18],STKTRG12[11],iSTKTRG12[11]}; // (P3) DSW2 - - memb[4'h3] <= 0; - end - - 4'h5: begin - memb[4'h0] <= 4'h0; - memb[4'h1] <= 4'h8; - memb[4'h2] <= 4'h4; - memb[4'h3] <= 4'h6; - memb[4'h4] <= 4'hE; - memb[4'h5] <= 4'hD; - memb[4'h6] <= 4'h9; - memb[4'h7] <= 4'hD; - end - - default:; - - endcase - diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0b.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0b.v new file mode 100644 index 00000000..2a66fd66 --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_0b.v @@ -0,0 +1,49 @@ +//------------------------------------------ +// I/O Chip for "Mappy/Druaga/DigDug2" +// +// Copyright (c) 2007,19 MiSTer-X +//------------------------------------------ + + case ( memb[4'h8] ) + + 4'h1,4'h3: begin + memb[4'h0] <= 0; + memb[4'h1] <= 0; + memb[4'h2] <= 0; + memb[4'h3] <= 0; + memb[4'h4] <= 0; + memb[4'h5] <= 0; + memb[4'h6] <= 0; + memb[4'h7] <= 0; + end + + 4'h4: begin + memb[4'h0] <= DIPSW[11: 8]; // (P0) DSW1 Mappy + memb[4'h1] <= DIPSW[15:12]; + + memb[4'h2] <= DIPSW[ 3: 0]; // (P1) DSW0 + memb[4'h4] <= DIPSW[ 7: 4]; + + memb[4'h5] <={DIPSW[15:14],STKTRG12[ 5],iSTKTRG12[ 5]}; // (P2) DSW1 Druaga/DigDug2 + memb[4'h6] <= DIPSW[23:20]; // IsMappy ? DIPSW[19:16] : DIPSW[11:8] + + memb[4'h7] <={DIPSW[19:18],STKTRG12[11],iSTKTRG12[11]}; // (P3) DSW2 + + memb[4'h3] <= 0; + end + + 4'h5: begin + memb[4'h0] <= 4'h0; + memb[4'h1] <= 4'h8; + memb[4'h2] <= 4'h4; + memb[4'h3] <= 4'h6; + memb[4'h4] <= 4'hE; + memb[4'h5] <= 4'hD; + memb[4'h6] <= 4'h9; + memb[4'h7] <= 4'hD; + end + + default:; + + endcase + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1a.v similarity index 75% rename from Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1.v rename to Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1a.v index 1e78daeb..8f963e69 100644 --- a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1.v +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1a.v @@ -25,21 +25,21 @@ if ( iCSTART12[2] & ( credits < 99 ) ) begin credit_add = 8'h01; - credits = credits + 1; + credits = credits + 1'd1; end if ( mema[4'h9] == 0 ) begin if ( ( credits >= 2 ) && iCSTART12[1] ) begin credit_sub = 8'h02; - credits = credits - 2; + credits = credits - 2'd2; end else if ( ( credits >= 1 ) && iCSTART12[0] ) begin credit_sub = 8'h01; - credits = credits - 1; + credits = credits - 1'd1; end end mema[4'h0] <= credit_add; - mema[4'h1] <= credit_sub | {7'd0,CSTART12[0]}; + mema[4'h1] <= credit_sub | {3'd0,CSTART12[0]}; mema[4'h2] <= CREDIT_TENS; mema[4'h3] <= CREDIT_ONES; mema[4'h4] <= STKTRG12[3:0]; @@ -57,28 +57,3 @@ default:; endcase - - - case ( memb[4'h8] ) - - 4'h8: begin - memb[4'h0] <= 4'h6; - memb[4'h1] <= 4'h9; - end - - 4'h9: begin - memb[4'h2] <= DIPSW[3:0]; - memb[4'h4] <= DIPSW[7:4]; - memb[4'h6] <= DIPSW[15:12]; - - memb[4'h0] <= 0; - memb[4'h1] <= 0; - memb[4'h3] <= 0; - memb[4'h5] <= 0; - memb[4'h7] <= 0; - end - - default:; - - endcase - diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1b.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1b.v new file mode 100644 index 00000000..335048c4 --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_1b.v @@ -0,0 +1,29 @@ +//------------------------------------------ +// I/O Chip for "Motos" +// Namco 56xx +// +// Copyright (c) 2007,19 MiSTer-X +//------------------------------------------ + case ( memb[4'h8] ) + + 4'h8: begin + memb[4'h0] <= 4'h6; + memb[4'h1] <= 4'h9; + end + + 4'h9: begin + memb[4'h2] <= DIPSW[3:0]; + memb[4'h4] <= DIPSW[7:4]; + memb[4'h6] <= DIPSW[15:12]; + + memb[4'h0] <= DIPSW[19:16]; + memb[4'h1] <= DIPSW[23:20]; + memb[4'h3] <= 0; + memb[4'h5] <= 0; + memb[4'h7] <= 0; + end + + default:; + + endcase + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_2b.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_2b.v new file mode 100644 index 00000000..20db8bc5 --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/ioctrl_2b.v @@ -0,0 +1,25 @@ +//------------------------------------------ +// I/O Chip for "Pac & Pal" +// Namco 59xx +// +// Copyright (c) 2007,19 MiSTer-X +// Copyright (c) 2022 Slingshot +//------------------------------------------ + case ( memb[4'h8] ) + + 4'h3: begin + memb[4'h4] <= DIPSW[3:0]; //0 + memb[4'h5] <= DIPSW[23:20]; //2 + memb[4'h6] <= DIPSW[19:16]; //1 + memb[4'h7] <= DIPSW[15:12]; //3 + + memb[4'h0] <= 0; + memb[4'h1] <= 0; + memb[4'h2] <= 0; + memb[4'h3] <= 0; + end + + default:; + + endcase + diff --git a/Arcade_MiST/Namco Super Pacman Hardware/rtl/param.v b/Arcade_MiST/Namco Super Pacman Hardware/rtl/param.v new file mode 100644 index 00000000..dd871ffb --- /dev/null +++ b/Arcade_MiST/Namco Super Pacman Hardware/rtl/param.v @@ -0,0 +1,3 @@ +localparam [2:0] SUPERPAC=3'd5; +localparam [2:0] GROBDA=3'd6; +localparam [2:0] PACNPAL=3'd7; \ No newline at end of file diff --git a/Arcade_MiST/Sega System 1 Hardware/README.txt b/Arcade_MiST/Sega System 1 Hardware/README.txt index f8755dbe..c02b603f 100644 --- a/Arcade_MiST/Sega System 1 Hardware/README.txt +++ b/Arcade_MiST/Sega System 1 Hardware/README.txt @@ -18,7 +18,9 @@ -- Left Ctrl : Trig1 -- Left Alt : Trig2 -- SPACE : Trig3 +-- --------------------------------------------------------------------------------- +-- Original by: -- -- Arcade: SEGA System 1 for MiSTer by MiSTer-X -- 07 January 2020 @@ -30,48 +32,50 @@ -- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) --------------------------------------------------------------------------------- -- --- Keyboard inputs : +-- System2 based on the work of Blackwine -- --- F2 : Coin + Start 2 players --- F1 : Coin + Start 1 player --- UP,DOWN,LEFT,RIGHT arrows : Movements --- SPACE : Trig1 --- CTRL : Trig2 --- ALT : Trig3 -- --- MAME/IPAC/JPAC Style Keyboard inputs: --- 5 : Coin 1 --- 6 : Coin 2 --- 1 : Start 1 Player --- 2 : Start 2 Players --- R,F,D,G : Player 2 Movements --- A : Player 2 Trig1 --- S : Player 2 Trig2 --- Q : Player 2 Trig3 +-- Games currently supported: -- --- Joystick support. +-- SYSTEM1 +-- ------- -- ---------------------------------------------------------------------------------- --- 2020/01/08 Impl. Trigger 3 (for SEGA Ninja) ---------------------------------------------------------------------------------- - - *** Attention *** - -ROM is not included. In order to use this arcade, you need to provide a correct ROM file. - -Find this zip file somewhere. You need to find the file exactly as required. -Do not rename other zip files even if they also represent the same game - they are not compatible! -The name of zip is taken from M.A.M.E. project, so you can get more info about -hashes and contained files there. - - -How to install: - 0. Update MiSTer binary to v200106 or later - 1. copy releases/*.mra to /media/fat/_Arcade - 2. copy releases/*.rbf to /media/fat/_Arcade/cores - 3. copy ROM zip files to /media/fat/_Arcade/mame - - -Be sure to use the MRA file in "releases" of this repository. -It does not guarantee the operation when using other MRA files. - +-- 4-D Warriors +-- Block Gal +-- Brain +-- Bullfight +-- Flicky +-- Gardia +-- Heavy Metal +-- I'm Sorry +-- Mister Viking +-- My Hero +-- Pitfall II +-- Rafflesia +-- Regulus +-- Sega Ninja +-- Spatter +-- Star Jacker +-- SWAT +-- TeddyBoy Blues +-- Up'n Down +-- Water Match +-- Wonder Boy +-- +-- SYSTEM2 +-- ------- +-- +-- Choplifter +-- Toki no Senshi - Chrono Soldier +-- Ufo Senshi Yohko Chan +-- Wonder Boy in Monster Land +-- +-- +-- Currently not supported: +-- +-- Noboranka / Zippy Bug (bootleg) +-- DakkoChan House +-- 119 +-- Senryaku Game Bopeep +-- Shooting Master +-- Warball diff --git a/Arcade_MiST/Sega System 1 Hardware/Segasys1.qsf b/Arcade_MiST/Sega System 1 Hardware/Segasys1.qsf index 13b26afb..8db10cb4 100644 --- a/Arcade_MiST/Sega System 1 Hardware/Segasys1.qsf +++ b/Arcade_MiST/Sega System 1 Hardware/Segasys1.qsf @@ -41,7 +41,7 @@ # ======================== set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name LAST_QUARTUS_VERSION "13.1 SP4.26" +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" # Pin & Location Assignments @@ -154,7 +154,7 @@ set_global_assignment -name USE_CONFIGURATION_DEVICE OFF # SignalTap II Assignments # ======================== set_global_assignment -name ENABLE_SIGNALTAP OFF -set_global_assignment -name USE_SIGNALTAP_FILE output_files/dect.stp +set_global_assignment -name USE_SIGNALTAP_FILE output_files/dect2.stp # Power Estimation Assignments # ============================ @@ -224,6 +224,9 @@ set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top # ------------------------ set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ON +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA ON set_global_assignment -name SYSTEMVERILOG_FILE rtl/Segasys1_MiST.sv set_global_assignment -name VERILOG_FILE rtl/HVGEN.v set_global_assignment -name VERILOG_FILE rtl/SEGASYS1.v @@ -233,6 +236,7 @@ set_global_assignment -name VERILOG_FILE rtl/SEGASYS1_SOUND.v set_global_assignment -name VERILOG_FILE rtl/SEGASYS1_PRGDEC.v set_global_assignment -name VERILOG_FILE rtl/SEGASYS1_MAIN.v set_global_assignment -name VERILOG_FILE rtl/parts.v +set_global_assignment -name VERILOG_FILE rtl/MC8123.v set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv set_global_assignment -name VERILOG_FILE rtl/pll_mist.v set_global_assignment -name VERILOG_FILE rtl/z80ip.v @@ -244,7 +248,5 @@ set_global_assignment -name QIP_FILE ../../common/mist/mist.qip set_global_assignment -name SIGNALTAP_FILE output_files/bg.stp set_global_assignment -name SIGNALTAP_FILE output_files/spr.stp set_global_assignment -name SIGNALTAP_FILE output_files/dect.stp -set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON -set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA ON -set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA ON +set_global_assignment -name SIGNALTAP_FILE output_files/dect2.stp set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/4-D Warriors.mra b/Arcade_MiST/Sega System 1 Hardware/meta/4-D Warriors.mra deleted file mode 100644 index 6fe176fc..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/4-D Warriors.mra +++ /dev/null @@ -1,63 +0,0 @@ - - 4D Warriors - 0216 - 4dwarrio - 202001100000 - 1985 - Sega - Shmup - segasys1 - - - - - - - 04 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 05 -05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 06 -06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 -07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 -08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 09 -09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0A -0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B -0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0C - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/4D Warriors (315-5162).mra b/Arcade_MiST/Sega System 1 Hardware/meta/4D Warriors (315-5162).mra new file mode 100644 index 00000000..3a4fd4b4 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/4D Warriors (315-5162).mra @@ -0,0 +1,113 @@ + + 4-D Warriors (315-5162) + 4dwarrio + segasys1 + 0229 + 1985 + Coreland / Sega + 2 + 8-way + horizontal + World + + + + + + + + + + + + + 04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + + 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 05 + 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 06 + 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 + 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 + 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 09 + 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0a + 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0b + 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0c + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 A0 00 20 00 00 C0 17 00 03 00 02 + + + 20210629000000 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Block Gal.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Block Gal.mra new file mode 100644 index 00000000..8363da82 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Block Gal.mra @@ -0,0 +1,98 @@ + + Block Gal (MC-8123B, 317-0029) + blockgal + segasys1 + 0229 + 1987 + Sega / Vic Tokai + 2 + 4-way + vertical/cw + World + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + 00 + + + + + + + 32 + + + + 00 00 00 00 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 C0 62 00 03 00 01 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Brain.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Brain.mra new file mode 100644 index 00000000..6c0497d9 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Brain.mra @@ -0,0 +1,70 @@ + + Brain + 0229 + brain + 20210629000000 + 1986 + Coreland / Sega + 2 + 8-way + horizontal + Shooter + segasys1 + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + ff + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Bull Fight (315-5056).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Bull Fight (315-5056).mra new file mode 100644 index 00000000..931f3c40 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Bull Fight (315-5056).mra @@ -0,0 +1,120 @@ + + Bullfight (315-5065) + bullfgt + segasys1 + 0229 + 1984 + Coreland / Sega + 2 + 8-way + horizontal + World + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + a0 a8 20 28 80 a0 00 20 + 20 28 00 08 20 28 00 08 + a0 a8 20 28 08 28 00 20 + 88 08 a8 28 88 08 a8 28 + a0 a8 20 28 20 28 00 08 + 28 a8 20 a0 20 28 00 08 + a0 a8 20 28 08 28 00 20 + 88 08 a8 28 88 08 a8 28 + 28 a8 20 a0 a0 a8 20 28 + 88 08 a8 28 80 a0 00 20 + 28 a8 20 a0 08 28 00 20 + 28 a8 20 a0 80 a0 00 20 + 20 28 00 08 20 28 00 08 + 88 08 a8 28 20 28 00 08 + 08 28 00 20 80 a0 00 20 + 08 28 00 20 88 08 a8 28 + + + + 00 + + + + 00 00 00 00 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 3C 00 49 + 00 00 C0 14 00 03 00 02 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Bullfight.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Bullfight.mra deleted file mode 100644 index 5ff2da74..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Bullfight.mra +++ /dev/null @@ -1,61 +0,0 @@ - - Bull Fight (315-5065) - 0217 - bullfgt - 202001070000 - 1984 - Coreland / Sega - Sport - segasys1 - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -a0 a8 20 28 80 a0 00 20 20 28 00 08 20 28 00 08 -a0 a8 20 28 08 28 00 20 88 08 a8 28 88 08 a8 28 -a0 a8 20 28 20 28 00 08 28 a8 20 a0 20 28 00 08 -a0 a8 20 28 08 28 00 20 88 08 a8 28 88 08 a8 28 -28 a8 20 a0 a0 a8 20 28 88 08 a8 28 80 a0 00 20 -28 a8 20 a0 08 28 00 20 28 a8 20 a0 80 a0 00 20 -20 28 00 08 20 28 00 08 88 08 a8 28 20 28 00 08 -08 28 00 20 80 a0 00 20 08 28 00 20 88 08 a8 28 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Choplifter (unprotected).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Choplifter (unprotected).mra new file mode 100644 index 00000000..73e9e0f3 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Choplifter (unprotected).mra @@ -0,0 +1,74 @@ + + Choplifter (unprotected) + 0229 + chopliftu + 20210706000000 + 1985 + Sega + Shooter + segasys1 + + + + + + + + + + + + + + 41 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Flicky (128k Version, 315-5051).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Flicky (128k Version, 315-5051).mra new file mode 100644 index 00000000..e2d11438 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Flicky (128k Version, 315-5051).mra @@ -0,0 +1,114 @@ + + Flicky (128k Version, 315-5051) + flicky + segasys1 + 0229 + 1984 + Sega + 2 + 4-way + horizontal + World + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 08 88 00 80 a0 80 a8 88 + 80 00 a0 20 88 80 08 00 + a0 80 a8 88 28 08 20 00 + 28 08 20 00 a0 80 a8 88 + 08 88 00 80 80 00 a0 20 + 80 00 a0 20 88 80 08 00 + 28 08 20 00 28 08 20 00 + 28 08 20 00 88 80 08 00 + 08 88 00 80 a8 88 28 08 + a8 88 28 08 80 00 a0 20 + 28 08 20 00 88 80 08 00 + a8 88 28 08 88 80 08 00 + 08 88 00 80 80 00 a0 20 + a8 88 28 08 80 00 a0 20 + 28 08 20 00 28 08 20 00 + 08 88 00 80 88 80 08 00 + + + + 00 + + + + 00 8F FF FF 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 E7 00 00 31 00 41 + 00 00 C0 D5 00 03 00 00 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Flicky.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Flicky.mra deleted file mode 100644 index 07e5f027..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Flicky.mra +++ /dev/null @@ -1,59 +0,0 @@ - - Flicky (128k Version, 315-5051) - 0217 - flicky - 202001070000 - 1984 - Sega - Maze / Cat and Mouse - Platform - segasys1 - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -08 88 00 80 a0 80 a8 88 80 00 a0 20 88 80 08 00 -a0 80 a8 88 28 08 20 00 28 08 20 00 a0 80 a8 88 -08 88 00 80 80 00 a0 20 80 00 a0 20 88 80 08 00 -28 08 20 00 28 08 20 00 28 08 20 00 88 80 08 00 -08 88 00 80 a8 88 28 08 a8 88 28 08 80 00 a0 20 -28 08 20 00 88 80 08 00 a8 88 28 08 88 80 08 00 -08 88 00 80 80 00 a0 20 a8 88 28 08 80 00 a0 20 -28 08 20 00 28 08 20 00 08 88 00 80 88 80 08 00 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Gardia (317-0006).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Gardia (317-0006).mra new file mode 100644 index 00000000..a7296f2a --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Gardia (317-0006).mra @@ -0,0 +1,89 @@ + + Gardia (317-0006) + 0229 + gardia + 1986 + Coreland / Sega + 2 + 8-way + vertical + Shooter + segasys1 + + + + + + + + + + + + + + 02 + + + + + ff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 44 14 15 15 51 41 41 14 10 50 15 55 54 05 04 41 + 51 01 05 10 55 51 05 05 54 11 45 05 04 14 10 55 + 01 41 51 05 55 04 45 41 55 14 45 10 04 45 55 50 + 40 00 11 45 15 00 01 00 40 00 01 45 11 00 45 00 + 44 54 40 04 05 15 15 10 15 04 01 05 50 11 00 44 + 44 04 04 01 50 05 51 00 45 44 50 15 54 40 41 45 + 40 10 14 15 40 51 50 50 45 00 10 15 05 51 50 44 + 01 15 40 04 01 44 50 44 50 50 50 10 44 04 40 04 + + 0c 01 12 0b 08 17 15 11 00 17 16 00 15 0f 0d 13 + 15 14 14 0c 0d 0a 14 00 0e 12 06 12 03 05 05 14 + 14 0d 08 00 14 12 04 0e 08 05 11 06 16 0a 00 15 + 00 01 06 0b 11 09 11 03 09 15 00 04 10 01 0d 11 + 15 05 03 07 02 10 12 0d 06 13 0b 17 03 14 03 02 + 12 0a 12 17 13 17 03 0f 00 0a 05 0c 00 00 0b 16 + 08 0e 08 06 01 0f 07 0b 02 11 0a 0f 08 15 0a 00 + 02 06 01 01 03 01 0c 12 10 05 00 0f 11 0f 0a 14 + + + 20210629000000 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Heavy Metal (315-5135).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Heavy Metal (315-5135).mra new file mode 100644 index 00000000..5690e9a3 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Heavy Metal (315-5135).mra @@ -0,0 +1,85 @@ + + Heavy Metal (315-5135) + 0229 + hvymetal + 1985 + Sega + 2 + 8-way + horizontal + Shooter + segasys1 + + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 88 a8 80 a0 a0 80 a8 88 88 a8 80 a0 88 80 08 00 + a0 80 a8 88 88 a8 80 a0 88 a8 80 a0 88 80 08 00 + a0 80 a8 88 88 80 08 00 88 80 08 00 88 80 08 00 + a0 80 a8 88 88 80 08 00 88 80 08 00 28 08 a8 88 + a0 20 a8 28 88 a8 80 a0 a0 20 a8 28 88 a8 80 a0 + a0 20 a8 28 88 a8 80 a0 88 a8 80 a0 28 08 a8 88 + 28 a8 08 88 a0 20 a8 28 a0 20 a8 28 28 a8 08 88 + 28 a8 08 88 a0 20 a8 28 28 08 a8 88 28 a8 08 88 + + + + + 20210623000000 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry (US, 315-5110).mra b/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry (US, 315-5110).mra new file mode 100644 index 00000000..0f980ac9 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry (US, 315-5110).mra @@ -0,0 +1,122 @@ + + I'm Sorry (315-5110, US) + USA + no + no + 315-5110 + + Sega System 1 + + 1985 + Sega + Maze + + imsorry + imsorry + 0229 + segasys1 + + + 15kHz + horizontal + + + 2 (alternating) + 8-way + + 2 + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 88 08 80 00 00 20 80 a0 00 20 80 a0 88 08 80 00 + 88 08 a8 28 00 20 80 a0 00 20 80 a0 88 08 a8 28 + 00 20 80 a0 08 00 88 80 00 20 80 a0 20 28 a0 a8 + 20 28 a0 a8 00 20 80 a0 20 28 a0 a8 88 08 a8 28 + 88 08 80 00 08 00 88 80 08 00 88 80 88 08 80 00 + 08 28 00 20 08 28 00 20 88 08 80 00 08 28 00 20 + 08 28 00 20 08 00 88 80 08 28 00 20 20 28 a0 a8 + 20 28 a0 a8 08 28 00 20 20 28 a0 a8 08 28 00 20 + + + + + + 00 1F FF FF 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 C0 17 00 03 00 02 00 00 D3 00 00 A0 00 20 + + + + + + + + + 20210430005030 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry.mra b/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry.mra deleted file mode 100644 index bc1bebe6..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/I'm Sorry.mra +++ /dev/null @@ -1,55 +0,0 @@ - - I'm Sorry (315-5110, US) - 0217 - imsorry - 202001070000 - 1985 - Coreland / Sega - Maze - segasys1 - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -88 08 80 00 00 20 80 a0 00 20 80 a0 88 08 80 00 -88 08 a8 28 00 20 80 a0 00 20 80 a0 88 08 a8 28 -00 20 80 a0 08 00 88 80 00 20 80 a0 20 28 a0 a8 -20 28 a0 a8 00 20 80 a0 20 28 a0 a8 88 08 a8 28 -88 08 80 00 08 00 88 80 08 00 88 80 88 08 80 00 -08 28 00 20 08 28 00 20 88 08 80 00 08 28 00 20 -08 28 00 20 08 00 88 80 08 28 00 20 20 28 a0 a8 -20 28 a0 a8 08 28 00 20 20 28 a0 a8 08 28 00 20 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking (315-5041).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking (315-5041).mra new file mode 100644 index 00000000..b7b70872 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking (315-5041).mra @@ -0,0 +1,122 @@ + + Mister Viking (315-5041) + mrviking + segasys1 + 0229 + 1984 + Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + + + 06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 28 a8 08 88 88 80 08 00 + 88 08 80 00 88 80 08 00 + 28 08 a8 88 28 a8 08 88 + 88 08 80 00 88 08 80 00 + 28 08 a8 88 88 80 08 00 + 88 80 08 00 28 a8 08 88 + a0 80 a8 88 28 08 a8 88 + a0 80 a8 88 a0 80 a8 88 + 88 80 08 00 88 80 08 00 + 88 08 80 00 88 80 08 00 + a0 80 20 00 28 08 a8 88 + a0 80 20 00 88 08 80 00 + 28 08 a8 88 a0 80 20 00 + a0 80 20 00 a0 80 20 00 + a0 80 a8 88 28 08 a8 88 + a0 80 20 00 a0 80 a8 88 + + + + + 00 00 00 FF 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 D4 2C 00 15 59 47 + 00 00 D3 00 00 15 00 01 + 00 00 C0 86 00 03 00 02 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking.mra deleted file mode 100644 index 03def992..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Mister Viking.mra +++ /dev/null @@ -1,59 +0,0 @@ - - Mister Viking (315-5041) - 0217 - mrviking - 202001070000 - 1984 - Sega - Fighter / Warriors - segasys1 - - - - - - - - 06 - - - - - - - - - - - - - - - FF - - - - - - - - - - - - - - - - -28 a8 08 88 88 80 08 00 88 08 80 00 88 80 08 00 -28 08 a8 88 28 a8 08 88 88 08 80 00 88 08 80 00 -28 08 a8 88 88 80 08 00 88 80 08 00 28 a8 08 88 -a0 80 a8 88 28 08 a8 88 a0 80 a8 88 a0 80 a8 88 -88 80 08 00 88 80 08 00 88 08 80 00 88 80 08 00 -a0 80 20 00 28 08 a8 88 a0 80 20 00 88 08 80 00 -28 08 a8 88 a0 80 20 00 a0 80 20 00 a0 80 20 00 -a0 80 a8 88 28 08 a8 88 a0 80 20 00 a0 80 a8 88 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/My Hero (US, not Encrypted).mra b/Arcade_MiST/Sega System 1 Hardware/meta/My Hero (US, not Encrypted).mra new file mode 100644 index 00000000..08341422 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/My Hero (US, not Encrypted).mra @@ -0,0 +1,116 @@ + + My Hero + USA + no + no + not Encrypted + + Sega System 1 + + 1985 + Sega + Platform + + myhero + myhero + 0229 + segasys1 + + + 15kHz + horizontal + + + 2 (alternating) + 8-way + + 2 + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + 00 + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 3C 00 49 00 00 C0 17 00 03 00 00 + + + + + + + + + 20210430005030 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/My Hero.mra b/Arcade_MiST/Sega System 1 Hardware/meta/My Hero.mra deleted file mode 100644 index 83afb56e..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/My Hero.mra +++ /dev/null @@ -1,56 +0,0 @@ - - My Hero (US, not encrypted) - 0217 - myhero - 202001060000 - 1985 - Coreland / Sega - Fighter / Hero - segasys1 - - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Pitfall II.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Pitfall II.mra index 540f5875..f2086eff 100644 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Pitfall II.mra +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Pitfall II.mra @@ -1,57 +1,104 @@ - Pitfall II - 0216 + Pitfall II (315-5093) pitfall2 - 202001100000 + segasys1 + 0229 1985 Sega - Maze / Extra - segasys1 - - - - - - - + 2 + 8-way + horizontal + World + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + a0 80 a8 88 a0 80 a8 88 08 88 28 a8 28 a8 20 a0 + a0 80 a8 88 a0 80 a8 88 a0 a8 20 28 a0 a8 20 28 + a0 80 a8 88 20 00 a0 80 28 a8 20 a0 20 00 a0 80 + a0 a8 20 28 a0 a8 20 28 28 a8 20 a0 a0 a8 20 28 + 20 00 a0 80 80 88 a0 a8 80 88 a0 a8 80 88 a0 a8 + a0 a8 20 28 a0 80 a8 88 80 88 a0 a8 28 a8 20 a0 + 20 00 a0 80 80 88 a0 a8 80 88 a0 a8 20 00 a0 80 + a0 a8 20 28 a0 80 a8 88 80 88 a0 a8 28 a8 20 a0 + + 00 - - - - - - - - - - - - - - - - - - - - - - - - - - + -a0 80 a8 88 a0 80 a8 88 08 88 28 a8 28 a8 20 a0 -a0 80 a8 88 a0 80 a8 88 a0 a8 20 28 a0 a8 20 28 -a0 80 a8 88 20 00 a0 80 28 a8 20 a0 20 00 a0 80 -a0 a8 20 28 a0 a8 20 28 28 a8 20 a0 a0 a8 20 28 -20 00 a0 80 80 88 a0 a8 80 88 a0 a8 80 88 a0 a8 -a0 a8 20 28 a0 80 a8 88 80 88 a0 a8 28 a8 20 a0 -20 00 a0 80 80 88 a0 a8 80 88 a0 a8 20 00 a0 80 -a0 a8 20 28 a0 80 a8 88 80 88 a0 a8 28 a8 20 a0 + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 38 00 41 00 00 C0 00 00 04 00 00 - + + + + + + + + + + + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia (315-5162).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia (315-5162).mra new file mode 100644 index 00000000..6123a86b --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia (315-5162).mra @@ -0,0 +1,116 @@ + + Rafflesia (315-5162) + raflesia + segasys1 + 0229 + 1986 + Coreland / Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + + 06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + 40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 + + 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 05 + 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 06 + 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 + 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 + 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 09 + 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0a + 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0b + 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0c + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 50 00 4A 00 00 C0 17 00 03 00 02 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia.mra deleted file mode 100644 index d7c643fc..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Rafflesia.mra +++ /dev/null @@ -1,63 +0,0 @@ - - Rafflesia - 0216 - raflesia - 202001100000 - 1986 - Sega - Shmup - segasys1 - - - - - - - 06 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -40 10 50 04 44 14 54 01 41 11 51 05 45 15 55 00 -04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 05 -05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 06 -06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 -07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 -08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 09 -09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0A -0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B -0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0C - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Regulus (315-5033, Rev A).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Regulus (315-5033, Rev A).mra new file mode 100644 index 00000000..1164bc3b --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Regulus (315-5033, Rev A).mra @@ -0,0 +1,114 @@ + + Regulus (315-5033, Rev A.) + regulus + segasys1 + 0229 + 1983 + Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + + 06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 28 08 a8 88 88 80 08 00 28 08 a8 88 28 a8 08 88 + 88 80 08 00 88 08 80 00 88 08 80 00 28 a8 08 88 + 28 08 a8 88 88 80 08 00 88 80 08 00 88 80 08 00 + 88 08 80 00 88 08 80 00 a0 80 a8 88 a0 80 a8 88 + 80 a0 00 20 28 08 a8 88 28 a8 08 88 28 08 a8 88 + 80 a0 00 20 80 a0 00 20 28 a8 08 88 80 a0 00 20 + a0 80 a8 88 28 08 a8 88 80 a0 00 20 a0 80 a8 88 + a0 80 a8 88 80 a0 00 20 a0 80 a8 88 a0 80 a8 88 + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 CE 40 00 1E 41 4A 00 00 C0 E1 00 03 00 00 + 00 00 CD 01 00 1E 00 00 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Regulus.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Regulus.mra deleted file mode 100644 index bde38073..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Regulus.mra +++ /dev/null @@ -1,57 +0,0 @@ - - Regulus - 0216 - regulus - 202001100000 - 1983 - Sega - Shmup - segasys1 - - - - - - - 06 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -28 08 a8 88 88 80 08 00 28 08 a8 88 28 a8 08 88 -88 80 08 00 88 08 80 00 88 08 80 00 28 a8 08 88 -28 08 a8 88 88 80 08 00 88 80 08 00 88 80 08 00 -88 08 80 00 88 08 80 00 a0 80 a8 88 a0 80 a8 88 -80 a0 00 20 28 08 a8 88 28 a8 08 88 28 08 a8 88 -80 a0 00 20 80 a0 00 20 28 a8 08 88 80 a0 00 20 -a0 80 a8 88 28 08 a8 88 80 a0 00 20 a0 80 a8 88 -a0 80 a8 88 80 a0 00 20 a0 80 a8 88 a0 80 a8 88 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja (315-5102).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja (315-5102).mra new file mode 100644 index 00000000..cfae8712 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja (315-5102).mra @@ -0,0 +1,117 @@ + + Sega Ninja (315-5102) + seganinj + segasys1 + 0229 + 1985 + Sega + 2 + 8-way + horizontal + World + + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 88 a8 80 a0 88 08 80 00 + 28 a8 08 88 a0 a8 80 88 + a8 a0 28 20 a8 a0 28 20 + 28 a8 08 88 a0 a8 80 88 + 28 08 a8 88 28 08 a8 88 + 28 a8 08 88 88 08 80 00 + 28 08 a8 88 28 08 a8 88 + 28 a8 08 88 a8 a0 28 20 + 88 08 80 00 88 a8 80 a0 + a0 a8 80 88 28 a8 08 88 + a8 a0 28 20 88 a8 80 a0 + a8 a0 28 20 28 a8 08 88 + 28 08 a8 88 88 a8 80 a0 + 28 08 a8 88 28 08 a8 88 + 88 a8 80 a0 88 a8 80 a0 + a8 a0 28 20 28 08 a8 88 + + + + + 00 00 00 00 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 EF 00 00 31 00 43 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja.mra deleted file mode 100644 index 15968bf5..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Sega Ninja.mra +++ /dev/null @@ -1,56 +0,0 @@ - - Sega Ninja (315-5102) - 0217 - seganinj - 20200107000000 - 1985 - Sega - Fighter / Asian - segasys1 - - - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - -88 a8 80 a0 88 08 80 00 28 a8 08 88 a0 a8 80 88 -a8 a0 28 20 a8 a0 28 20 28 a8 08 88 a0 a8 80 88 -28 08 a8 88 28 08 a8 88 28 a8 08 88 88 08 80 00 -28 08 a8 88 28 08 a8 88 28 a8 08 88 a8 a0 28 20 -88 08 80 00 88 a8 80 a0 a0 a8 80 88 28 a8 08 88 -a8 a0 28 20 88 a8 80 a0 a8 a0 28 20 28 a8 08 88 -28 08 a8 88 88 a8 80 a0 28 08 a8 88 28 08 a8 88 -88 a8 80 a0 88 a8 80 a0 a8 a0 28 20 28 08 a8 88 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Spatter (315-5xxx).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Spatter (315-5xxx).mra new file mode 100644 index 00000000..e6a12c80 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Spatter (315-5xxx).mra @@ -0,0 +1,106 @@ + + Spatter (315-5xxx) + spatter + segasys1 + 0229 + 1984 + Sega + 2 + 8-way + horizontal + World + + + + + + + + + + + + + + 04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 88 08 80 00 00 08 20 28 28 a8 08 88 28 a8 08 88 + 28 20 a8 a0 28 20 a8 a0 88 08 80 00 88 08 80 00 + 00 08 20 28 88 08 80 00 a0 80 20 00 80 88 00 08 + 88 08 80 00 a0 80 20 00 88 08 80 00 28 20 a8 a0 + 28 a8 08 88 80 88 00 08 80 88 00 08 00 08 20 28 + 28 20 a8 a0 28 a8 08 88 00 08 20 28 80 a0 88 a8 + 80 88 00 08 a0 80 20 00 80 a0 88 a8 a0 80 20 00 + a0 80 20 00 80 a0 88 a8 28 20 a8 a0 00 08 20 28 + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 EF 00 00 31 00 52 00 00 C0 0B 00 03 00 00 + 00 00 C0 0C 00 01 10 10 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Spatter.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Spatter.mra deleted file mode 100644 index cddedf5c..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Spatter.mra +++ /dev/null @@ -1,56 +0,0 @@ - - Spatter (315-5xxx) - 0217 - spatter - 202001070000 - 1984 - Sega - Maze / Extra - segasys1 - - - - - - - - 04 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -88 08 80 00 00 08 20 28 28 a8 08 88 28 a8 08 88 -28 20 a8 a0 28 20 a8 a0 88 08 80 00 88 08 80 00 -00 08 20 28 88 08 80 00 a0 80 20 00 80 88 00 08 -88 08 80 00 a0 80 20 00 88 08 80 00 28 20 a8 a0 -28 a8 08 88 80 88 00 08 80 88 00 08 00 08 20 28 -28 20 a8 a0 28 a8 08 88 00 08 20 28 80 a0 88 a8 -80 88 00 08 a0 80 20 00 80 a0 88 a8 a0 80 20 00 -a0 80 20 00 80 a0 88 a8 28 20 a8 a0 00 08 20 28 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker (alt).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker (alt).mra new file mode 100644 index 00000000..19621531 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker (alt).mra @@ -0,0 +1,126 @@ + + Star Jacker + + no + no + Alt + Star Jacker + Sega System 1 + + 1983 + Sega + Stern + Shooter - Vertical + + starjacks + starjack + 0216 + segasys1 + + + 15kHz + vertical (ccw) + no + + 2 (alternating) + 8-way + + 2 + + + + + + + + + + + + + + + 06 + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + 00 + + + + + 01 0F FF FF 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 C1 02 00 23 00 52 00 00 C0 FB 00 04 00 00 + + + + + + + + + 20210629000000 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker.mra new file mode 100644 index 00000000..ced59614 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Star Jacker.mra @@ -0,0 +1,101 @@ + + Star Jacker (Sega) + starjack + segasys1 + 0229 + 1983 + Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + + + 06 + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + 00 + + + + 01 0F FF FF 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 C0 E1 00 1E 00 52 00 00 C0 DB 00 03 00 03 + + + + 20210629000000 + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Starjacker.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Starjacker.mra deleted file mode 100644 index 09ccf3f9..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Starjacker.mra +++ /dev/null @@ -1,60 +0,0 @@ - - Star Jacker - 0216 - starjack - 202001100000 - 1983 - Sega - Shmup - segasys1 - - - - - - - 06 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Swat (315-5048).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Swat (315-5048).mra new file mode 100644 index 00000000..f6703e3a --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Swat (315-5048).mra @@ -0,0 +1,107 @@ + + SWAT (315-5048) + swat + segasys1 + 0229 + 1984 + Coreland / Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + 06 + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 88 08 80 00 a0 a8 80 88 88 08 80 00 88 a8 80 a0 + a0 80 20 00 88 08 80 00 a0 a8 80 88 88 08 80 00 + 28 20 a8 a0 a0 a8 80 88 88 a8 80 a0 28 20 a8 a0 + a0 80 20 00 a0 a8 80 88 28 20 a8 a0 a0 a8 80 88 + a0 80 20 00 a0 80 20 00 a0 20 80 00 88 a8 80 a0 + a0 20 80 00 a0 20 80 00 a0 20 80 00 a0 20 80 00 + a0 80 20 00 a0 80 20 00 88 a8 80 a0 28 20 a8 a0 + a0 a8 80 88 a0 80 20 00 28 20 a8 a0 a0 a8 80 88 + + + + + 00 00 00 00 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 D3 00 00 3C 00 49 00 00 C0 14 00 03 00 02 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Swat.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Swat.mra deleted file mode 100644 index f301fed4..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Swat.mra +++ /dev/null @@ -1,60 +0,0 @@ - - Swat (315-5048) - 0217 - swat - 202001070000 - 1984 - Coreland / Sega - Shooter - segasys1 - - - - - - 06 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -88 08 80 00 a0 a8 80 88 88 08 80 00 88 a8 80 a0 -a0 80 20 00 88 08 80 00 a0 a8 80 88 88 08 80 00 -28 20 a8 a0 a0 a8 80 88 88 a8 80 a0 28 20 a8 a0 -a0 80 20 00 a0 a8 80 88 28 20 a8 a0 a0 a8 80 88 -a0 80 20 00 a0 80 20 00 a0 20 80 00 88 a8 80 a0 -a0 20 80 00 a0 20 80 00 a0 20 80 00 a0 20 80 00 -a0 80 20 00 a0 80 20 00 88 a8 80 a0 28 20 a8 a0 -a0 a8 80 88 a0 80 20 00 28 20 a8 a0 a0 a8 80 88 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues (315-5115, New Ver).mra b/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues (315-5115, New Ver).mra new file mode 100644 index 00000000..62631b00 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues (315-5115, New Ver).mra @@ -0,0 +1,109 @@ + + TeddyBoy Blues (315-5115, New Ver.) + teddybb + segasys1 + 0229 + 1985 + Sega + 2 + 8-way + horizontal + World + + + + + + + + + + + + + + 00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 20 28 00 08 80 00 a0 20 20 28 00 08 a0 a8 20 28 + 28 08 a8 88 a0 80 a8 88 a0 a8 20 28 a0 80 a8 88 + 20 28 00 08 28 08 a8 88 a0 a8 20 28 a0 a8 20 28 + a0 80 a8 88 28 08 a8 88 a0 a8 20 28 28 08 a8 88 + 80 00 a0 20 80 00 a0 20 a0 20 a8 28 a0 a8 20 28 + a0 20 a8 28 a0 80 a8 88 a0 80 a8 88 a0 80 a8 88 + 80 00 a0 20 20 28 00 08 a0 a8 20 28 a0 20 a8 28 + 80 00 a0 20 a0 80 a8 88 a0 a8 20 28 a0 20 a8 28 + + + + + + + 55 00 00 00 00 FF 00 02 + 00 02 00 01 00 FF 00 00 + 00 00 C5 78 00 03 00 00 + 00 00 EF 03 00 31 00 49 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues.mra b/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues.mra deleted file mode 100644 index b4c337e8..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/TeddyBoy Blues.mra +++ /dev/null @@ -1,55 +0,0 @@ - - TeddyBoy Blues (315-5115, New Ver.) - 0217 - teddybb - 202001070000 - 1985 - Sega - Platform - segasys1 - - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - - -20 28 00 08 80 00 a0 20 20 28 00 08 a0 a8 20 28 -28 08 a8 88 a0 80 a8 88 a0 a8 20 28 a0 80 a8 88 -20 28 00 08 28 08 a8 88 a0 a8 20 28 a0 a8 20 28 -a0 80 a8 88 28 08 a8 88 a0 a8 20 28 28 08 a8 88 -80 00 a0 20 80 00 a0 20 a0 20 a8 28 a0 a8 20 28 -a0 20 a8 28 a0 80 a8 88 a0 80 a8 88 a0 80 a8 88 -80 00 a0 20 20 28 00 08 a0 a8 20 28 a0 20 a8 28 -80 00 a0 20 a0 80 a8 88 a0 a8 20 28 a0 20 a8 28 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Toki no Senshi - Chrono Soldier (MC-8123, 317-0040).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Toki no Senshi - Chrono Soldier (MC-8123, 317-0040).mra new file mode 100644 index 00000000..c42aafb2 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Toki no Senshi - Chrono Soldier (MC-8123, 317-0040).mra @@ -0,0 +1,61 @@ + + Toki no Senshi - Chrono Soldier (MC-8123, 317-0040) + 0229 + tokisens + 20210706000000 + 1985 + Sega + Shooter + segasys1 + + + + + + + + + + + + 13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Ufo Senshi Yohko Chan (MC-8123, 317-0064).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Ufo Senshi Yohko Chan (MC-8123, 317-0064).mra new file mode 100644 index 00000000..e16a5058 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Ufo Senshi Yohko Chan (MC-8123, 317-0064).mra @@ -0,0 +1,63 @@ + + Ufo Senshi Yohko Chan (MC-8123, 317-0064) + 0229 + ufosensi + 20210706000000 + 1985 + Sega + Shooter + segasys1 + + + + + + + + + + + + + + 01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Up'n Down.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Up'n Down.mra index 9a7e9d72..e340e638 100644 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Up'n Down.mra +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Up'n Down.mra @@ -1,41 +1,64 @@ - Up'n Down - 0216 + Up'n Down (315-5030) upndown - 202001100000 - 1984 - Sega - Shmup segasys1 - - - - - - - 06 - - - - - - - - - - - - - - + 0229 + 1983 + Sega + 2 + 8-way + vertical/ccw + World + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -43,16 +66,45 @@ - + + + + + 00 + + -08 88 00 80 a0 20 80 00 a8 a0 28 20 88 a8 80 a0 -88 80 08 00 28 08 a8 88 88 a8 80 a0 28 08 a8 88 -88 a8 80 a0 a0 20 80 00 a8 a0 28 20 a8 a0 28 20 -88 80 08 00 88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 -a0 20 80 00 a0 20 80 00 08 88 00 80 28 08 a8 88 -88 a8 80 a0 88 80 08 00 88 a8 80 a0 28 08 a8 88 -88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 -88 80 08 00 88 80 08 00 08 88 00 80 28 08 a8 88 + 08 88 00 80 a0 20 80 00 a8 a0 28 20 88 a8 80 a0 + 88 80 08 00 28 08 a8 88 88 a8 80 a0 28 08 a8 88 + 88 a8 80 a0 a0 20 80 00 a8 a0 28 20 a8 a0 28 20 + 88 80 08 00 88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 + a0 20 80 00 a0 20 80 00 08 88 00 80 28 08 a8 88 + 88 a8 80 a0 88 80 08 00 88 a8 80 a0 28 08 a8 88 + 88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 88 a8 80 a0 + 88 80 08 00 88 80 08 00 08 88 00 80 28 08 a8 88 + + 06 + + + + 00 0F FF FF 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 C9 3F 00 3F 01 00 + + + + + + + + + + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Water Match (315-5064).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Water Match (315-5064).mra new file mode 100644 index 00000000..917a19b6 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Water Match (315-5064).mra @@ -0,0 +1,103 @@ + + Water Match (315-5064) + wmatch + segasys1 + 0229 + 1984 + Sega + 2 + 4-way + vertical/ccw + World + + + + + + + + + + + + + 0E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 88 a8 80 a0 a0 80 20 00 08 88 00 80 88 a8 80 a0 + 20 00 a0 80 20 28 a0 a8 20 28 a0 a8 a0 80 20 00 + a8 28 88 08 a8 28 88 08 08 88 00 80 a8 28 88 08 + a8 28 88 08 20 28 a0 a8 a8 28 88 08 a8 28 88 08 + 20 28 a0 a8 88 a8 80 a0 88 a8 80 a0 20 28 a0 a8 + 20 28 a0 a8 a0 80 20 00 20 28 a0 a8 20 28 a0 a8 + 20 00 a0 80 20 28 a0 a8 a8 28 88 08 a0 80 20 00 + 20 28 a0 a8 20 28 a0 a8 a8 28 88 08 a8 28 88 08 + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Water Match.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Water Match.mra deleted file mode 100644 index defd43fc..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Water Match.mra +++ /dev/null @@ -1,62 +0,0 @@ - - Water Match (315-5064) - 0217 - wmatch - 202001070000 - 1984 - Sega - Sport - segasys1 - - - - - - - - 0E - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -88 a8 80 a0 a0 80 20 00 08 88 00 80 88 a8 80 a0 -20 00 a0 80 20 28 a0 a8 20 28 a0 a8 a0 80 20 00 -a8 28 88 08 a8 28 88 08 08 88 00 80 a8 28 88 08 -a8 28 88 08 20 28 a0 a8 a8 28 88 08 a8 28 88 08 -20 28 a0 a8 88 a8 80 a0 88 a8 80 a0 20 28 a0 a8 -20 28 a0 a8 a0 80 20 00 20 28 a0 a8 20 28 a0 a8 -20 00 a0 80 20 28 a0 a8 a8 28 88 08 a0 80 20 00 -20 28 a0 a8 20 28 a0 a8 a8 28 88 08 a8 28 88 08 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy (Set 1, 315-5177).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy (Set 1, 315-5177).mra new file mode 100644 index 00000000..e5dfd9b6 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy (Set 1, 315-5177).mra @@ -0,0 +1,115 @@ + + Wonder Boy (set 1, 315-5177) + wboy + segasys1 + 0229 + 1986 + Escape (Sega license) + 2 + 4-way + horizontal + World + + + + + + + + + + + + + + + 04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + 04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 + 41 45 00 50 54 11 45 40 04 54 51 15 40 44 01 51 + 55 10 44 41 05 55 50 14 41 45 00 50 54 11 45 40 + 04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 + 04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 + 41 45 00 50 54 11 45 40 04 54 51 15 40 44 01 51 + 55 10 44 41 05 55 50 14 41 45 00 50 54 11 45 40 + 04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 + + 00 00 00 00 01 01 01 01 01 02 02 02 02 02 03 03 + 03 03 04 04 04 04 04 05 05 05 05 05 06 06 06 06 + 06 07 07 07 07 07 08 08 08 08 09 09 09 09 09 0a + 0a 0a 0a 0a 0b 0b 0b 0b 0b 0c 0c 0c 0c 0c 0d 0d + 08 08 08 08 09 09 09 09 09 0a 0a 0a 0a 0a 0b 0b + 0b 0b 0c 0c 0c 0c 0c 0d 0d 0d 0d 0d 0e 0e 0e 0e + 0e 0f 0f 0f 0f 0f 10 10 10 10 11 11 11 11 11 12 + 12 12 12 12 13 13 13 13 13 14 14 14 14 14 15 15 + + + + + 00 0F FF FF 00 FF 00 02 00 02 00 01 00 FF 00 00 + 00 00 C1 00 01 40 20 20 00 00 E8 56 00 0F 01 10 + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043).mra b/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043).mra new file mode 100644 index 00000000..e46f883a --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043).mra @@ -0,0 +1,67 @@ + + Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043) + wbml + segasys1 + 0229 + 1986 + Escape (Sega license) + 2 + 4-way + horizontal + World + + + + + + + + + + + + + + + 05 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + + + + + diff --git a/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy.mra b/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy.mra deleted file mode 100644 index 4c3d8d2b..00000000 --- a/Arcade_MiST/Sega System 1 Hardware/meta/Wonder Boy.mra +++ /dev/null @@ -1,63 +0,0 @@ - - Wonder Boy (set 1, 315-5177) - 0217 - wboy - 20200107000000 - 1986 - Escape (Sega license) - Platform / Extra - segasys1 - - - - - - - - - 00 - - - - - - - - - - - - - - - - - - - - - - - - - - -04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 -41 45 00 50 54 11 45 40 04 54 51 15 40 44 01 51 -55 10 44 41 05 55 50 14 41 45 00 50 54 11 45 40 -04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 -04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 -41 45 00 50 54 11 45 40 04 54 51 15 40 44 01 51 -55 10 44 41 05 55 50 14 41 45 00 50 54 11 45 40 -04 54 51 15 40 44 01 51 55 10 44 41 05 55 50 14 -00 00 00 00 01 01 01 01 01 02 02 02 02 02 03 03 -03 03 04 04 04 04 04 05 05 05 05 05 06 06 06 06 -06 07 07 07 07 07 08 08 08 08 09 09 09 09 09 0a -0a 0a 0a 0a 0b 0b 0b 0b 0b 0c 0c 0c 0c 0c 0d 0d -08 08 08 08 09 09 09 09 09 0a 0a 0a 0a 0a 0b 0b -0b 0b 0c 0c 0c 0c 0c 0d 0d 0d 0d 0d 0e 0e 0e 0e -0e 0f 0f 0f 0f 0f 10 10 10 10 11 11 11 11 11 12 -12 12 12 12 13 13 13 13 13 14 14 14 14 14 15 15 - - - diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/HVGEN.v b/Arcade_MiST/Sega System 1 Hardware/rtl/HVGEN.v index 9838a60a..ef15a1b8 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/HVGEN.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/HVGEN.v @@ -6,9 +6,9 @@ module HVGEN output [8:0] VPOS, input CLK, input PCLK_EN, - input [14:0] iRGB, + input [11:0] iRGB, - output reg [14:0] oRGB, + output reg [11:0] oRGB, output reg HBLK = 1, output reg VBLK = 1, output reg HSYN = 1, diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/MC8123.v b/Arcade_MiST/Sega System 1 Hardware/rtl/MC8123.v new file mode 100644 index 00000000..1e90f527 --- /dev/null +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/MC8123.v @@ -0,0 +1,327 @@ +// Copyright 2021 by blackwine +// decryption algorithm based on MAME sources + +module MC8123_rom_decrypt +( + input clk, + + // connect to CPU + input m1, + input [15:0] a, + output reg [7:0] d, + + // connect to program ROM + input [7:0] prog_d, + + // connect to cpu decryption key ROM + output [12:0] key_a, + input [7:0] key_d +); + +assign key_a = {~m1,a[15:10],a[8],a[6],a[4],a[2:0]}; + +wire [7:0] key = ~key_d; + +wire [2:0] decrypt_type = {key[4]^key[5], + key[0]^key[1]^key[2]^key[4], + key[0]^key[2]^~m1}; + +wire [1:0] swap = {key[2]^key[3], + key[0]^key[1]}; + +wire [3:0] param = {key[1]^key[6]^key[7], + key[0]^key[1]^key[6], + key[0]^key[2]^key[3], + key[0]^~m1}; + +always @( negedge clk ) begin + case (decrypt_type) + 0: d <= decrypt_type_0 (prog_d, param, swap); + 1: d <= decrypt_type_0 (prog_d, param, swap); + 2: d <= decrypt_type_1a(prog_d, param, swap); + 3: d <= decrypt_type_1b(prog_d, param, swap); + 4: d <= decrypt_type_2a(prog_d, param, swap); + 5: d <= decrypt_type_2b(prog_d, param, swap); + 6: d <= decrypt_type_3a(prog_d, param, swap); + 7: d <= decrypt_type_3b(prog_d, param, swap); + endcase +end + +`define bitswap8(a,b,c,d,e,f,g,h) {v[a],v[b],v[c],v[d],v[e],v[f],v[g],v[h]} + +reg [7:0] v; +reg s; +reg t; + +function [7:0] decrypt_type_0; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(7,5,3,1,2,0,6,4); + 1: v = `bitswap8(5,3,7,2,1,0,4,6); + 2: v = `bitswap8(0,3,4,6,7,1,5,2); + 3: v = `bitswap8(0,7,3,2,6,4,1,5); + endcase + + s = p[3] & v[7]; + t = p[2] & v[6]; + + v = { + v[7] ^ t ^ v[6] ^ p[1], + v[6] ^ (p[1] & (v[7] ^ t ^ v[6])) ^ p[1], + v[5] ^ s ^ v[2] ^ t ^ p[2] ^ p[0], + ~v[4], + ~v[3] ^ s, + v[2] ^ t ^ p[2], + ~v[1] ^ t, + v[0] ^ s ^ v[2] ^ t ^ p[2] ^ p[0] + }; + + decrypt_type_0 = p[0] ? `bitswap8(7,6,5,1,4,3,2,0) : v; + +endfunction + +// decrypt type 1a + +function [7:0] decrypt_type_1a; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(4,2,6,5,3,7,1,0); + 1: v = `bitswap8(6,0,5,4,3,2,1,7); + 2: v = `bitswap8(2,3,6,1,4,0,7,5); + 3: v = `bitswap8(6,5,1,3,2,7,0,4); + endcase + + v = p[2] ? `bitswap8(7,6,1,5,3,2,4,0) : v; + + v = { + v[7] ^ v[4] ^ p[3], + ~v[6] ^ v[7] ^ v[2] ^ v[4] ^ p[1], + v[5], + v[4] ^ v[7] ^ v[2], + ~v[3] ^ v[7] ^ v[6] ^ v[2] ^ p[1], + v[2] ^ v[4] ^ p[3], + ~v[1] ^ v[2], + ~v[0] ^ v[1] + }; + + decrypt_type_1a = p[0] ? `bitswap8(7,6,1,4,3,2,5,0) : v; +endfunction + +// decrypt type 1b + +function [7:0] decrypt_type_1b; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(1,0,3,2,5,6,4,7); + 1: v = `bitswap8(2,0,5,1,7,4,6,3); + 2: v = `bitswap8(6,4,7,2,0,5,1,3); + 3: v = `bitswap8(7,1,3,6,0,2,5,4); + endcase + + s = v[2] & v[0]; + v = { + v[7] ^ s ^ v[5] ^ v[3] ^ p[2], + ~v[6] ^ v[4] ^ s ^ v[0] ^ v[3] ^ p[2] ^ p[0], + v[5] ^ v[4] ^ s ^ v[1], + ~v[4] ^ s ^ p[3] ^ p[1], + v[3] ^ p[1] ^ p[2], + v[2] ^ v[7] ^ s ^ v[5] ^ v[0] ^ v[3] ^ p[0], + v[1] ^ v[6] ^ v[0] ^ v[3] ^ p[3] ^ p[0], + ~v[0] ^ v[3] ^ p[0] ^ p[2] + }; + + decrypt_type_1b = v; +endfunction + +// decrypt type 2a + +function [7:0] decrypt_type_2a; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(0,1,4,3,5,6,2,7); + 1: v = `bitswap8(6,3,0,5,7,4,1,2); + 2: v = `bitswap8(1,6,4,5,0,3,7,2); + 3: v = `bitswap8(4,6,7,5,2,3,1,0); + endcase + + v = (v[3] || (p[1] & v[2])) ? `bitswap8(6,0,7,4,3,2,1,5) : v; + v = { + ~v[7] ^ v[5], + ~v[6] ^ v[0], + ~v[5] ^ v[6], + ~v[4] ^ p[2], + v[3] ^ v[4] ^ p[2], + v[2] ^ v[1] ^ p[2], + ~v[1] ^ p[2], + v[0] ^ v[4] ^ p[2] + }; + + case({p[3],p[0]}) + 1: v = `bitswap8(7,6,5,2,1,3,4,0); + 2: v = `bitswap8(7,6,5,1,2,4,3,0); + 3: v = `bitswap8(7,6,5,3,4,1,2,0); + default:; + endcase + + decrypt_type_2a = v; +endfunction + +// decrypt type 2b + +function [7:0] decrypt_type_2b; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(1,3,4,6,5,7,0,2); + 1: v = `bitswap8(0,1,5,4,7,3,2,6); + 2: v = `bitswap8(3,5,4,1,6,2,0,7); + 3: v = `bitswap8(5,2,3,0,4,7,6,1); + endcase + + s = v[7] & v[3]; + v = { + v[7] ^ v[5] ^ s ^ v[4], + v[6] ^ s, + v[5] ^ v[1] ^ s ^ v[4], + v[4] ^ s, + v[3] ^ v[5] ^ s ^ v[4], + v[2] ^ v[7], + v[1] ^ s ^ v[4], + v[0] ^ s + }; + + s = v[5] & (v[7] ^ v[1]); + v = { + ~v[7] ^ v[6] ^ v[3] ^ p[2] ^ p[1], + v[6] ^ v[3] ^ p[3] ^ p[2], + v[5] ^ v[6] ^ v[3] ^ p[2] ^ p[0], + v[4] ^ s, + ~v[3] ^ v[2] ^ p[3] ^ p[2], + ~v[2] ^ p[2] ^ p[0], + ~v[1] ^ v[3] ^ v[2] ^ p[3] ^ p[2], + v[0] ^ s + }; + decrypt_type_2b = v; + +endfunction + +// decrypt type 3a + +function [7:0] decrypt_type_3a; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(5,3,1,7,0,2,6,4); + 1: v = `bitswap8(3,1,2,5,4,7,0,6); + 2: v = `bitswap8(5,6,1,2,7,0,4,3); + 3: v = `bitswap8(5,6,7,0,4,2,1,3); + endcase + + v = { + v[7] ^ v[2], + v[6], + v[5] ^ v[2], + v[4] ^ v[2], + v[3], + v[2], + v[1], + v[0] ^ v[3] + }; + + v = p[0] ? `bitswap8(7,2,5,4,3,1,0,6) : v; + + v = { + v[7], + v[6] ^ v[1], + v[5], + v[4] ^ v[3] ^ p[3], + v[3] ^ p[3], + v[2] ^ v[3], + v[1] ^ v[3], + v[0] ^ v[1] + }; + + v = v[3] ? `bitswap8(5,6,7,4,3,2,1,0) : v; + + v = { + v[7] ^ p[2], + ~v[6], + ~v[5], + ~v[4] ^ p[1], + ~v[3], + v[2] ^ v[5], + v[1] ^ v[5], + v[0] ^ p[0] + }; + decrypt_type_3a = v; +endfunction + + +// decrypt type 3b + +function [7:0] decrypt_type_3b; + input [7:0] value; + input [3:0] p; // param + input [1:0] swap; + + v = value; + case (swap) + 0: v = `bitswap8(3,7,5,4,0,6,2,1); + 1: v = `bitswap8(7,5,4,6,1,2,0,3); + 2: v = `bitswap8(7,4,3,0,5,1,6,2); + 3: v = `bitswap8(2,6,4,1,3,7,0,5); + endcase + + v = (v[2] ^ v[7]) ? `bitswap8(7,6,3,4,5,2,1,0) : v; + + s = v[2] ^ p[3]; + t = v[4] ^ v[1]; + v = { + v[7] ^ s ^ p[3], + v[6] ^ t, + v[5], + v[4] ^ v[1], + v[3], + v[2] ^ v[1], + v[1] ^ ((v[7] ^ s) & (v[6] ^ t) ^ v[7] ^ s), + v[0] ^ p[2] + }; + + v = p[3] ? `bitswap8(4,6,3,2,5,0,1,7) : v; + v = { + v[7] ^ p[1], + v[6], + ~v[5], + v[4] ^ v[5], + ~v[3] ^ p[0], + ~v[2] ^ v[7], + v[1] ^ v[4], + v[0] + }; + + decrypt_type_3b = v; +endfunction + +endmodule diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1.v index 412e54db..7e264802 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1.v @@ -14,19 +14,21 @@ module SEGASYSTEM1 input [7:0] DSW0, input [7:0] DSW1, - + input SYSTEM2, + input SYSTEM2_ROWSCROLL, + input [8:0] PH, // PIXEL H input [8:0] PV, // PIXEL V output PCLK_EN, - output [7:0] POUT, // PIXEL OUT + output [11:0] POUT, // PIXEL OUT output [15:0] SOUT, // Sound Out (PCM) - output [15:0] cpu_rom_addr, + output [16:0] cpu_rom_addr, input [7:0] cpu_rom_do, - output [12:0] snd_rom_addr, + output [14:0] snd_rom_addr, input [7:0] snd_rom_do, - output [13:0] tile_rom_addr, + output [14:0] tile_rom_addr, input [31:0] tile_rom_do, output [17:0] spr_rom_addr, input [7:0] spr_rom_do, @@ -39,7 +41,7 @@ module SEGASYSTEM1 // CPU wire [15:0] CPUAD; -wire [7:0] CPUDO,VIDDO,SNDNO,VIDMD; +wire [7:0] CPUDO,VIDDO,SNDNO,VIDMD,SNDCTL; wire CPUWR,VIDCS,VBLK; wire SNDRQ; @@ -47,24 +49,28 @@ SEGASYS1_MAIN Main ( .RESET(reset), .INP0(INP0),.INP1(INP1),.INP2(INP2), .DSW0(DSW0),.DSW1(DSW1), + .SYSTEM2(SYSTEM2), .CLK40M(clk40M), .CPUAD(CPUAD),.CPUDO(CPUDO),.CPUWR(CPUWR), .VBLK(VBLK),.VIDCS(VIDCS),.VIDDO(VIDDO), .SNDRQ(SNDRQ),.SNDNO(SNDNO), - .VIDMD(VIDMD), + .VIDMD(VIDMD),.SNDCTL(SNDCTL), .cpu_rom_addr(cpu_rom_addr), .cpu_rom_do(cpu_rom_do), - + .ROMCL(ROMCL),.ROMAD(ROMAD),.ROMDT(ROMDT),.ROMEN(ROMEN) ); // Video -wire [7:0] OPIX; +wire [11:0] OPIX; SEGASYS1_VIDEO Video ( .RESET(reset),.VCLKx8(clk40M), .PH(PH),.PV(PV),.VFLP(VIDMD[7]), - .VBLK(VBLK),.PCLK_EN(PCLK_EN),.RGB8(OPIX),.PALDSW(1'b0), + .VBLK(VBLK),.PCLK_EN(PCLK_EN),.RGB(OPIX), + .VRAM_BANK(SYSTEM2 ? SNDCTL[2:1] : 2'b00), + .SYSTEM2(SYSTEM2),.SYSTEM2_ROWSCROLL(SYSTEM2_ROWSCROLL), + .PALDSW(1'b0), .cpu_ad(CPUAD),.cpu_wr(CPUWR),.cpu_dw(CPUDO), .cpu_rd(VIDCS),.cpu_dr(VIDDO), @@ -73,7 +79,7 @@ SEGASYS1_VIDEO Video ( .ROMCL(ROMCL),.ROMAD(ROMAD),.ROMDT(ROMDT),.ROMEN(ROMEN) ); -assign POUT = VIDMD[4] ? 8'd0 : OPIX; +assign POUT = VIDMD[4] ? 12'd0 : OPIX; // Sound diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_MAIN.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_MAIN.v index 1b16f393..bc2d6d55 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_MAIN.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_MAIN.v @@ -1,7 +1,8 @@ // Copyright (c) 2017,19 MiSTer-X -`define EN_MCPU0 (ROMAD[17:15]==3'b00_0 ) -`define EN_MCPU8 (ROMAD[17:14]==4'b00_10) +`define EN_MCPU0_PRG (ROMAD[18:15]==4'b000_1) // $08000-$0ffff +`define EN_MCPU8_PRG (ROMAD[18:16]==3'b001) // $10000-$1ffff +`define EN_KEY (ROMAD[18:13]==6'b110_001) // $62000-$63fff module SEGASYS1_MAIN ( @@ -15,6 +16,7 @@ module SEGASYS1_MAIN input [7:0] DSW0, input [7:0] DSW1, + input SYSTEM2, input VBLK, input VIDCS, @@ -28,8 +30,9 @@ module SEGASYS1_MAIN output reg [7:0] SNDNO, output reg [7:0] VIDMD, + output reg [7:0] SNDCTL, - output [15:0] cpu_rom_addr, + output [16:0] cpu_rom_addr, input [7:0] cpu_rom_do, input ROMCL, // Downloaded ROM image @@ -84,46 +87,71 @@ SEGASYS1_IPORT port(CPUAD,cpu_iorq, INP0,INP1,INP2, DSW0,DSW1, cpu_cs_port,cpu_r // Program ROM -wire cpu_cs_mrom0 = (CPUAD[15] == 1'b0 ) & cpu_mreq; -wire cpu_cs_mrom1 = (CPUAD[15:14] == 2'b10) & cpu_mreq; - -wire [7:0] cpu_rd_mrom0; -wire [7:0] cpu_rd_mrom1; +wire cpu_cs_mrom0 = (CPUAD[15] == 1'b0 ) & cpu_mreq; +wire cpu_cs_mrom8 = (CPUAD[15:14] == 2'b10) & cpu_mreq; +wire [7:0] cpu_rd_mrom0_prg; +wire [7:0] cpu_rd_mrom8; +wire [7:0] cpu_rd_mc8123; wire [14:0] rad; wire [7:0] rdt; +wire [12:0] key_a; +wire [7:0] key_d; -SEGASYS1_PRGDEC decr(CLK40M,cpu_m1,CPUAD,cpu_rd_mrom0, rad,rdt, ROMCL,ROMAD,ROMDT,ROMEN); - -assign cpu_rom_addr = CPUAD[15] ? CPUAD[15:0] : {1'b0, rad}; +assign cpu_rom_addr = CPUAD[15] ? {3'd2 + cpu_bank, CPUAD[13:0]} : {1'b0, has_mc8123_key ? CPUAD[14:0] : rad}; assign rdt = cpu_rom_do; -assign cpu_rd_mrom1 = cpu_rom_do; +assign cpu_rd_mrom8 = cpu_rom_do; -//DLROM #(15,8) rom0(AXSCL, rad, rdt, ROMCL,ROMAD,ROMDT,ROMEN & `EN_MCPU0); // ($0000-$7FFF encrypted) -//DLROM #(14,8) rom1(CPUCLn,CPUAD,cpu_rd_mrom1, ROMCL,ROMAD,ROMDT,ROMEN & `EN_MCPU8); // ($8000-$BFFF non-encrypted) +// CPU Region $0000-$7fff ROM +//DLROM #(15,8) rom0_prg(CLK40M, has_mc8123_key ? CPUAD : rad, rdt, ROMCL,ROMAD,ROMDT,ROMEN & `EN_MCPU0_PRG); +// CPU Region $8000-$bfff, 4 ROM banks +// No BRAM for separate opcode memory banks, they may be not needed though +wire [1:0] cpu_bank = {SYSTEM2 ? VIDMD[3] : VIDMD[6], VIDMD[2]}; +//DLROM #(16,8) rom8_prg(CLK40M, {cpu_bank,CPUAD[13:0]}, cpu_rd_mrom8, ROMCL,ROMAD,ROMDT,ROMEN & `EN_MCPU8_PRG); + +// 315-5xxx CPU decryption for selected SEGA System 1 titles +SEGASYS1_PRGDEC decr(CLK40M,cpu_m1,CPUAD,cpu_rd_mrom0_prg, rad,rdt, ROMCL,ROMAD,ROMDT,ROMEN); + +// MC-8123 CPU decryption for selected SEGA System 2 titles +MC8123_rom_decrypt mc8123_decrypt(CLK40M, cpu_m1, CPUAD, cpu_rd_mc8123, + !CPUAD[15] ? rdt : cpu_rd_mrom8, key_a, key_d); +DLROM #(13,8) rom_keys(CLK40M, key_a, key_d, + ROMCL, ROMAD, ROMDT, ROMEN & `EN_KEY); + +// Detect if we have mc8123 keys or opcode roms +//reg has_opcode_roms = 0; +reg has_mc8123_key = 0; +always @(posedge CLK40M) begin + if (ROMEN & `EN_KEY) + has_mc8123_key <= has_mc8123_key | ~(!ROMDT); +end // Work RAM -wire [7:0] cpu_rd_mram; -wire cpu_cs_mram = (CPUAD[15:12] == 4'b1100) & cpu_mreq; +wire [7:0] cpu_rd_mram; +wire cpu_cs_mram = (CPUAD[15:12] == 4'b1100) & cpu_mreq; SRAM_4096 mainram(CLK40M, CPUAD[11:0], cpu_rd_mram, cpu_cs_mram & CPUWR, CPUDO ); // Video mode latch & Sound Request wire cpu_cs_sreq = ((CPUAD[7:0] == 8'h14)|(CPUAD[7:0] == 8'h18)) & cpu_iorq; wire cpu_cs_vidm = ((CPUAD[7:0] == 8'h15)|(CPUAD[7:0] == 8'h19)) & cpu_iorq; +wire cpu_cs_sctl = (CPUAD[7:0] == 8'h16) & cpu_iorq; wire cpu_wr_sreq = cpu_cs_sreq & _cpu_wr; wire cpu_wr_vidm = cpu_cs_vidm & _cpu_wr; +wire cpu_wr_sctl = cpu_cs_sctl & _cpu_wr; always @(posedge CLK40M or posedge RESET) begin if (RESET) begin VIDMD <= 0; SNDRQ <= 0; SNDNO <= 0; + SNDCTL <= 0; end else begin if (cpu_wr_vidm) VIDMD <= CPUDO; + if (cpu_wr_sctl) SNDCTL <= CPUDO; if (cpu_wr_sreq) begin SNDNO <= CPUDO; SNDRQ <= 1'b1; end else SNDRQ <= 1'b0; end end @@ -132,10 +160,11 @@ end // CPU data selector assign CPUDI = (VIDCS & cpu_mreq) ? VIDDO : cpu_cs_vidm ? VIDMD : + cpu_cs_sctl ? SNDCTL : cpu_cs_port ? cpu_rd_port : cpu_cs_mram ? cpu_rd_mram : - cpu_cs_mrom0 ? cpu_rd_mrom0 : - cpu_cs_mrom1 ? cpu_rd_mrom1 : 8'hFF; + cpu_cs_mrom0 ? (has_mc8123_key ? cpu_rd_mc8123 : cpu_rd_mrom0_prg) : + cpu_cs_mrom8 ? (has_mc8123_key ? cpu_rd_mc8123 : cpu_rd_mrom8) : 8'hFF; endmodule diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_PRGDEC.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_PRGDEC.v index d895b8b2..331ced05 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_PRGDEC.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_PRGDEC.v @@ -1,11 +1,11 @@ // Copyright (c) 2017,19 MiSTer-X -`define DECTBLADRS (25'h30100) +`define DECTBLADRS (25'h60400) -`define EN_DEC1TBL (ROMAD[17:7]==11'b11_0000_0001_0) // $30100 +`define EN_DEC1TBL (ROMAD[18:7]==12'b110_0000_0100_0) // $60400 -`define EN_DEC2XOR (ROMAD[17:7]==11'b11_0000_0001_0) // $30100 -`define EN_DEC2SWP (ROMAD[17:7]==11'b11_0000_0001_1) // $30180 +`define EN_DEC2XOR (ROMAD[18:7]==12'b110_0000_0100_0) // $60400 +`define EN_DEC2SWP (ROMAD[18:7]==12'b110_0000_0100_1) // $60480 module SEGASYS1_PRGDEC @@ -45,7 +45,6 @@ always @(posedge ROMCL) begin end end end - assign mrom_dt = (cnt0>=128) ? rdt : (cnt2>=128) ? od1 : od0; endmodule diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SOUND.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SOUND.v index 87dc0693..dab6b7cb 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SOUND.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SOUND.v @@ -1,6 +1,6 @@ // Copyright (c) 2017,19 MiSTer-X -`define EN_SCPU (ROMAD[17:13]==5'b00_110) // $0C000-$0DFFF +`define EN_SCPU (ROMAD[18:15]==4'b000_0) // $0-$7fff module SEGASYS1_SOUND ( @@ -12,7 +12,7 @@ module SEGASYS1_SOUND output [15:0] sndout, - output [12:0] snd_rom_addr, + output [14:0] snd_rom_addr, input [7:0] snd_rom_do ); @@ -24,7 +24,7 @@ wire clk8M_en,clk4M_en,clk2M_en; SndClkGen clkgen(clk40M,clk8M_en,clk4M_en,clk2M_en); //---------------------------------- -// Z80 (1.5625MHz) +// Z80 (4MHz) //---------------------------------- wire [15:0] cpu_ad; wire [7:0] cpu_di, cpu_do; @@ -59,7 +59,7 @@ wire [7:0] rom_dt; // ROM wire [7:0] ram_do; // RAM wire [7:0] comlatch; // Sound Command Latch -assign snd_rom_addr = cpu_ad[12:0]; +assign snd_rom_addr = cpu_ad[14:0]; assign rom_dt = snd_rom_do; //DLROM #(13,8) subir( cpuclkx2, cpu_ad[12:0], rom_dt, ROMCL,ROMAD,ROMDT,ROMEN & `EN_SCPU ); diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SPRITE.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SPRITE.v index 6775b2d4..376c1cf4 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SPRITE.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_SPRITE.v @@ -8,6 +8,8 @@ module SEGASYS1_SPRITE input VCLKx4_EN, input VCLK_EN, + input SYSTEM2, + input [8:0] PH, input [8:0] PV, @@ -147,7 +149,7 @@ always @ ( posedge VCLKx8 ) if (VCLKx4_EN) begin // get yofs/xpos/bank 2: begin yofs <= hitsprvps[hitr]; - xpos <= ((sprdt[8:0]+1)>>1) + 8'd14; + xpos <= ((sprdt[8:0]+1)>>1) + (SYSTEM2 ? 8'd22 : 8'd14); bank <= { sprdt[13], sprdt[14], sprdt[15] }; spr_ofs <= 2; phaseHD <= 3; diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_VIDEO.v b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_VIDEO.v index 51f0ea74..bb8ee49d 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_VIDEO.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/SEGASYS1_VIDEO.v @@ -1,15 +1,15 @@ // Copyright (c) 2017,19 MiSTer-X -`define EN_SPRITE (ROMAD[17:16]==2'b01) // $10000-$1FFFF +`define EN_SPRITE (ROMAD[18:17]==2'b01) // $20000-$3FFFF -`define EN_TILE00 (ROMAD[17:13]==5'b10_000) // $20000-$21FFF -`define EN_TILE01 (ROMAD[17:13]==5'b10_001) // $22000-$23FFF -`define EN_TILE02 (ROMAD[17:13]==5'b10_010) // $24000-$25FFF -`define EN_TILE10 (ROMAD[17:13]==5'b10_100) // $28000-$29FFF -`define EN_TILE11 (ROMAD[17:13]==5'b10_101) // $2A000-$2BFFF -`define EN_TILE12 (ROMAD[17:13]==5'b10_110) // $2C000-$2DFFF +`define EN_TILE00 (ROMAD[18:14]==6'b100_00) // $40000-$43FFF +`define EN_TILE10 (ROMAD[18:14]==6'b100_01) // $44000-$47FFF +`define EN_TILE01 (ROMAD[18:14]==6'b100_10) // $48000-$4bFFF +`define EN_TILE11 (ROMAD[18:14]==6'b100_11) // $4c000-$4fFFF +`define EN_TILE02 (ROMAD[18:14]==6'b101_00) // $50000-$53FFF +`define EN_TILE12 (ROMAD[18:14]==6'b101_01) // $54000-$57FFF -`define EN_CLUT (ROMAD[17:8]==10'b11_0000_0000) // $30000-$300FF +`define EN_CLUT (ROMAD[18:8]==11'b110_0000_0000) // $60000-$600FF module SEGASYS1_VIDEO @@ -25,7 +25,11 @@ module SEGASYS1_VIDEO output VBLK, output PCLK, output PCLK_EN, - output [7:0] RGB8, + output [11:0] RGB, + + input [1:0] VRAM_BANK, + input SYSTEM2, + input SYSTEM2_ROWSCROLL, input PALDSW, @@ -35,7 +39,7 @@ module SEGASYS1_VIDEO output cpu_rd, output [7:0] cpu_dr, - output reg [13:0] tile_rom_addr, + output reg [14:0] tile_rom_addr, input [31:0] tile_rom_do, output [17:0] spr_rom_addr, input [7:0] spr_rom_do, @@ -63,9 +67,9 @@ wire [7:0] palout; wire [9:0] sprad; wire [15:0] sprdt; -wire [9:0] vram0ad; +wire [12:0] vram0ad; wire [15:0] vram0dt; -wire [9:0] vram1ad; +wire [12:0] vram1ad; wire [15:0] vram1dt; wire [5:0] mixcoll_ad; @@ -75,11 +79,13 @@ wire sprcoll; wire [15:0] scrx; wire [7:0] scry; +wire [11:0] bg_pages; VIDCPUINTF intf( RESET, VCLKx8, + PH, PV, cpu_ad, cpu_wr, cpu_dw, cpu_rd, cpu_dr, @@ -87,9 +93,12 @@ VIDCPUINTF intf( sprad, sprdt, vram0ad, vram0dt, vram1ad, vram1dt, + VRAM_BANK, mixcoll_ad, mixcoll, sprcoll_ad, sprcoll, - scrx, scry + scrx, scry, + SYSTEM2, SYSTEM2_ROWSCROLL, + bg_pages ); @@ -98,6 +107,7 @@ wire [8:0] HPOS, VPOS; wire [8:0] BG0HP, BG0VP; wire [8:0] BG1HP, BG1VP; VIDHVGEN hv( + SYSTEM2, PH, PV, scrx, scry, HPOS, VPOS, @@ -119,6 +129,7 @@ SEGASYS1_SPRITE sprite( .VCLKx8(VCLKx8), .VCLKx4(VCLKx4),.VCLK(VCLK), .VCLKx4_EN(VCLKx4_EN), .VCLK_EN(VCLK_EN), + .SYSTEM2(SYSTEM2), .PH(HPOS),.PV(VPOS), .sprad(sprad),.sprdt(sprdt), .sprchad(sprchad),.sprchdt(sprchdt), @@ -129,40 +140,73 @@ SEGASYS1_SPRITE sprite( // BG Scanline Generator wire [10:0] BG0PX, BG1PX; -wire [13:0] tile0ad, tile1ad, tilead; -reg [23:0] tile0dt, tile1dt, tile0dt_r; +wire [14:0] tile0ad, tile1ad; +wire [14:0] tilead_fg = SYSTEM2 ? tile0ad : tile1ad; +wire [14:0] tilead_bg = SYSTEM2 ? tile1ad : tile0ad; +reg [14:0] tilead; +reg [23:0] tiledt_fg, tiledt_bg, tiledt_r; +wire [23:0] tile0dt = SYSTEM2 ? tiledt_fg : tiledt_bg; +wire [23:0] tile1dt = SYSTEM2 ? tiledt_bg : tiledt_fg; always @(posedge VCLKx8) begin if (VCLK_EN) begin if (HPOS[2:0] == 3'b000) begin - tile_rom_addr <= tile0ad; - tile1dt <= tile_rom_do[23:0]; - tile0dt <= tile0dt_r; + tile_rom_addr <= tilead_bg; + tiledt_fg <= tile_rom_do[23:0]; + tiledt_bg <= tiledt_r; end if (HPOS[2:0] == 3'b100) begin - tile_rom_addr <= tile1ad; - tile0dt_r <= tile_rom_do[23:0]; + tile_rom_addr <= tilead_fg; + tiledt_r <= tile_rom_do[23:0]; end end end -BGGEN bg0(VCLKx8,VCLK_EN,BG0HP,BG0VP,vram0ad,vram0dt,tile0ad,tile0dt,BG0PX); -BGGEN bg1(VCLKx8,VCLK_EN,BG1HP,BG1VP,vram1ad,vram1dt,tile1ad,tile1dt,BG1PX); - +wire [11:0] pages = !SYSTEM2 ? 12'b001001001001 : bg_pages; +BGGEN bg0(VCLKx8,VCLK_EN,BG0HP,BG0VP,0, vram0ad,vram0dt,tile0ad,tile0dt,BG0PX); +BGGEN bg1(VCLKx8,VCLK_EN,BG1HP,BG1VP,pages,vram1ad,vram1dt,tile1ad,tile1dt,BG1PX); // Color Mixer & RGB Output wire [7:0] cltidx,cltval; +wire [7:0] color; + DLROM #(8,8) clut(VCLKx8, cltidx, cltval, ROMCL,ROMAD,ROMDT,ROMEN & `EN_CLUT ); COLMIX cmix( VCLKx8, VCLK_EN, - BG0PX, BG1PX, SPRPX, + SYSTEM2 ? BG1PX : BG0PX, + SYSTEM2 ? BG0PX : BG1PX, + SPRPX, PALDSW, HPOS, VPOS, cltidx, cltval, mixcoll, mixcoll_ad, palno, palout, - RGB8 + color ); +// Palette +`define EN_PALR (ROMAD[18:8]==11'b110_0000_0001) // $60100 +`define EN_PALG (ROMAD[18:8]==11'b110_0000_0010) // $60200 +`define EN_PALB (ROMAD[18:8]==11'b110_0000_0011) // $60300 + +wire [3:0] r,g,b; + +DLROM #(8,8) pal_r(VCLKx8, color, r, ROMCL,ROMAD,ROMDT,ROMEN & `EN_PALR ); +DLROM #(8,8) pal_g(VCLKx8, color, g, ROMCL,ROMAD,ROMDT,ROMEN & `EN_PALG ); +DLROM #(8,8) pal_b(VCLKx8, color, b, ROMCL,ROMAD,ROMDT,ROMEN & `EN_PALB ); + +// detect color proms while transfering them +reg has_color_prom = 0; +always @(posedge ROMCL) + if (ROMEN) + if(`EN_PALR | `EN_PALG | `EN_PALB) + has_color_prom <= has_color_prom | ~(!ROMDT); + +assign RGB = has_color_prom ? {b,g,r} : + {color[7:6], color[7:6], + color[5:3], color[5], + color[2:0], color[2]}; + + endmodule @@ -174,6 +218,8 @@ module VIDCPUINTF input RESET, input clk, + input [8:0] PH, + input [8:0] PV, input [15:0] cpu_ad, input cpu_wr, input [7:0] cpu_dw, @@ -186,12 +232,14 @@ module VIDCPUINTF input [9:0] sprad, output [15:0] sprdt, - input [9:0] vram0ad, + input [12:0] vram0ad, output [15:0] vram0dt, - input [9:0] vram1ad, + input [12:0] vram1ad, output [15:0] vram1dt, + input [1:0] vram_bank, + input [5:0] mixcoll_ad, input mixcoll, @@ -199,7 +247,10 @@ module VIDCPUINTF input sprcoll, output reg [15:0] scrx, - output reg [7:0] scry + output reg [7:0] scry, + input SYSTEM2, + input SYSTEM2_ROWSCROLL, + output [11:0] bg_pages ); // CPU Address Decoders @@ -207,8 +258,7 @@ wire cpu_cs_palram; wire cpu_cs_spram; wire cpu_cs_mixcoll; wire cpu_cs_sprcoll; -wire cpu_cs_vram0; -wire cpu_cs_vram1; +wire cpu_cs_vram; wire cpu_wr_palram; wire cpu_wr_spram; @@ -216,9 +266,10 @@ wire cpu_wr_mixcoll; wire cpu_wr_mixcollclr; wire cpu_wr_sprcoll; wire cpu_wr_sprcollclr; -wire cpu_wr_vram0; -wire cpu_wr_vram1; -wire cpu_wr_scrreg; +wire cpu_wr_vram; +wire cpu_wr_scrreg1; +wire cpu_wr_scrreg0; +wire cpu_wr_bgpage; VIDADEC adecs( cpu_ad, @@ -228,8 +279,7 @@ VIDADEC adecs( cpu_cs_spram, cpu_cs_mixcoll, cpu_cs_sprcoll, - cpu_cs_vram0, - cpu_cs_vram1, + cpu_cs_vram, cpu_wr_palram, cpu_wr_spram, @@ -237,27 +287,47 @@ VIDADEC adecs( cpu_wr_mixcollclr, cpu_wr_sprcoll, cpu_wr_sprcollclr, - cpu_wr_vram0, - cpu_wr_vram1, - cpu_wr_scrreg, + cpu_wr_vram, + cpu_wr_scrreg0, + cpu_wr_scrreg1, + cpu_wr_bgpage, cpu_rd ); -// Scroll Register +reg [7:0] scrx_row[64]; +reg [2:0] bg_page[4]; +assign bg_pages = {bg_page[3],bg_page[2],bg_page[1],bg_page[0]}; + +// Scroll and background plane registers always @ ( posedge clk or posedge RESET) begin if (RESET) begin scrx <= 0; scry <= 0; end else begin - if (cpu_wr_scrreg) begin - case(cpu_ad[7:0]) - 8'hBD: scry <= cpu_dw; - 8'hFC: scrx[ 7:0] <= cpu_dw; - 8'hFD: scrx[15:8] <= cpu_dw; - default:; - endcase + if (SYSTEM2) begin + if (cpu_wr_bgpage & !vram_bank) + bg_page[cpu_ad[2:1]] <= cpu_dw[2:0]; + else if (cpu_wr_scrreg0 & !vram_bank) begin + if (cpu_ad[6]) + scrx_row[cpu_ad[5:0]] <= cpu_dw; + else if (cpu_ad[7:0] == 8'hba) + scry <= cpu_dw; + end + if (SYSTEM2_ROWSCROLL) + scrx <= {scrx_row[{PV[7:3],1'b1}],scrx_row[{PV[7:3],1'b0}]}; + else + scrx <= {scrx_row[1],scrx_row[0]}; + end else begin + if (cpu_wr_scrreg1) begin + case(cpu_ad[7:0]) + 8'hBD: scry <= cpu_dw; + 8'hFC: scrx[ 7:0] <= cpu_dw; + 8'hFD: scrx[15:8] <= cpu_dw; + default:; + endcase + end end end end @@ -290,21 +360,15 @@ COLLRAM_S sprc( ); // VRAM -wire [7:0] cpu_rd_vram0, cpu_rd_vram1; -VRAM vram0( - clk, cpu_ad[10:0], cpu_rd_vram0, cpu_dw, cpu_wr_vram0, - clk, vram0ad, vram0dt +wire [7:0] cpu_rd_vram; +VRAM vram( + clk, {vram_bank, cpu_ad[11:0]}, cpu_rd_vram, cpu_dw, cpu_wr_vram, + vram0ad, vram0dt, vram1ad, vram1dt ); -VRAM vram1( - clk, cpu_ad[10:0], cpu_rd_vram1, cpu_dw, cpu_wr_vram1, - clk, vram1ad, vram1dt -); - // CPU Read Data Selector assign cpu_dr = cpu_cs_palram ? cpu_rd_palram : - cpu_cs_vram0 ? cpu_rd_vram0 : - cpu_cs_vram1 ? cpu_rd_vram1 : + cpu_cs_vram ? cpu_rd_vram : cpu_cs_spram ? cpu_rd_spram : cpu_cs_sprcoll ? cpu_rd_sprcoll : cpu_cs_mixcoll ? cpu_rd_mixcoll : 8'hFF; @@ -316,6 +380,7 @@ endmodule //---------------------------------- module VIDHVGEN ( + input SYSTEM2, input [8:0] PH, input [8:0] PV, @@ -339,14 +404,14 @@ assign VBLK = (PV == 9'd224) & (PH <= 9'd64); assign HPOS = PH+1'd1; assign VPOS = PV; -wire [7:0] BGHSCR = scrx[9:1]+4'd14; +wire [7:0] BGHSCR = scrx[8:1]; wire [7:0] BGVSCR = scry; -assign BG0HP = (HPOS-BGHSCR)+8'd3; -assign BG0VP = (VPOS+BGVSCR); +assign BG0HP = SYSTEM2 ? HPOS : (HPOS-BGHSCR-4'd14)+4'd3; +assign BG0VP = SYSTEM2 ? VPOS : (VPOS+BGVSCR); -assign BG1HP = HPOS+8'd3; -assign BG1VP = VPOS; +assign BG1HP = SYSTEM2 ? HPOS-BGHSCR-4'd4 : HPOS+4'd3; +assign BG1VP = SYSTEM2 ? (VPOS+BGVSCR) : VPOS; endmodule @@ -356,57 +421,56 @@ endmodule //---------------------------------- module VIDADEC ( - input [15:0] cpu_ad, - input cpu_wr, + input [15:0] cpu_ad, + input cpu_wr, - output cpu_cs_palram, - output cpu_cs_spram, - output cpu_cs_mixcoll, - output cpu_cs_sprcoll, - output cpu_cs_vram0, - output cpu_cs_vram1, - - output cpu_wr_palram, - output cpu_wr_spram, - output cpu_wr_mixcoll, - output cpu_wr_mixcollclr, - output cpu_wr_sprcoll, - output cpu_wr_sprcollclr, - output cpu_wr_vram0, - output cpu_wr_vram1, - output cpu_wr_scrreg, + output cpu_cs_palram, + output cpu_cs_spram, + output cpu_cs_mixcoll, + output cpu_cs_sprcoll, + output cpu_cs_vram, - output cpu_rd + output cpu_wr_palram, + output cpu_wr_spram, + output cpu_wr_mixcoll, + output cpu_wr_mixcollclr, + output cpu_wr_sprcoll, + output cpu_wr_sprcollclr, + output cpu_wr_vram, + output cpu_wr_scrreg0, + output cpu_wr_scrreg1, + output cpu_wr_bgpage, + + output cpu_rd ); -assign cpu_cs_palram = (cpu_ad[15:11] == 5'b1101_1 ); -assign cpu_cs_spram = (cpu_ad[15:11] == 5'b1101_0 ); -assign cpu_cs_mixcoll = (cpu_ad[15:10] == 6'b1111_00 ); -wire cpu_cs_mixcollclr = (cpu_ad[15:10] == 6'b1111_01 ); -assign cpu_cs_sprcoll = (cpu_ad[15:10] == 6'b1111_10 ); -wire cpu_cs_sprcollclr = (cpu_ad[15:10] == 6'b1111_11 ); -assign cpu_cs_vram0 = (cpu_ad[15:11] == 5'b1110_0 ); -assign cpu_cs_vram1 = (cpu_ad[15:11] == 5'b1110_1 ); -wire cpu_cs_scrreg = (cpu_ad[15: 8] == 8'b1110_1111); +assign cpu_cs_palram = (cpu_ad[15:11] == 5'b1101_1); +assign cpu_cs_spram = (cpu_ad[15:11] == 5'b1101_0); +assign cpu_cs_mixcoll = (cpu_ad[15:10] == 6'b1111_00); +wire cpu_cs_mixcollclr = (cpu_ad[15:10] == 6'b1111_01); +assign cpu_cs_sprcoll = (cpu_ad[15:10] == 6'b1111_10); +wire cpu_cs_sprcollclr = (cpu_ad[15:10] == 6'b1111_11); +assign cpu_cs_vram = (cpu_ad[15:12] == 4'b1110); +wire cpu_cs_scrreg0 = (cpu_ad[15: 7] == 9'b1110_0111_1); +wire cpu_cs_scrreg1 = (cpu_ad[15: 8] == 8'b1110_1111); +wire cpu_cs_bgpage = (cpu_ad[15: 3] == 13'b1110_0111_0100_0) & !cpu_ad[0]; - -assign cpu_wr_palram = cpu_cs_palram & cpu_wr; -assign cpu_wr_spram = cpu_cs_spram & cpu_wr; +assign cpu_wr_palram = cpu_cs_palram & cpu_wr; +assign cpu_wr_spram = cpu_cs_spram & cpu_wr; assign cpu_wr_mixcoll = cpu_cs_mixcoll & cpu_wr; assign cpu_wr_mixcollclr = cpu_cs_mixcollclr & cpu_wr; assign cpu_wr_sprcoll = cpu_cs_sprcoll & cpu_wr; assign cpu_wr_sprcollclr = cpu_cs_sprcollclr & cpu_wr; -assign cpu_wr_vram0 = cpu_cs_vram0 & cpu_wr; -assign cpu_wr_vram1 = cpu_cs_vram1 & cpu_wr; -assign cpu_wr_scrreg = cpu_cs_scrreg & cpu_wr; - +assign cpu_wr_scrreg0 = cpu_cs_scrreg0 & cpu_wr; +assign cpu_wr_scrreg1 = cpu_cs_scrreg1 & cpu_wr; +assign cpu_wr_bgpage = cpu_cs_bgpage & cpu_wr; +assign cpu_wr_vram = cpu_cs_vram & cpu_wr; assign cpu_rd = cpu_cs_palram | - cpu_cs_vram0 | - cpu_cs_vram1 | - cpu_cs_spram | - cpu_cs_sprcoll | - cpu_cs_mixcoll ; + cpu_cs_vram | + cpu_cs_spram | + cpu_cs_sprcoll | + cpu_cs_mixcoll; endmodule @@ -421,17 +485,21 @@ module BGGEN input [8:0] HP, input [8:0] VP, + input [11:0] BG_PAGES, - output [9:0] VRAMAD, - input [15:0] VRAMDT, + output [12:0] VRAMAD, + input [15:0] VRAMDT, - output [13:0] TILEAD, - input [23:0] TILEDT, + output [14:0] TILEAD, + input [23:0] TILEDT, output [10:0] OPIX ); -assign VRAMAD = { VP[7:3], HP[7:3] }; +assign VRAMAD = {VP[8] ? (HP[8] ? BG_PAGES[8:6] : BG_PAGES[11:9]) + : (HP[8] ? BG_PAGES[2:0] : BG_PAGES[5:3]), + VP[7:3], HP[7:3]}; + assign TILEAD = { VRAMDT[15], VRAMDT[10:0], VP[2:0] }; reg [31:0] BGREG; @@ -482,7 +550,7 @@ module COLMIX output [10:0] palno, input [7:0] palout, - output reg [7:0] RGB8 + output reg [7:0] color ); assign cltidx = { 1'b0, @@ -504,7 +572,7 @@ wire [10:0] palno_d = {HPOS[7],VPOS[7:2],HPOS[6:3]}; assign palno = PALDSW ? palno_d : palno_i; -always @(posedge CLK ) if (VCLK_EN) RGB8 <= palout; +always @(posedge CLK ) if (VCLK_EN) color <= palout; endmodule diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/Segasys1_MiST.sv b/Arcade_MiST/Sega System 1 Hardware/rtl/Segasys1_MiST.sv index 51985ae8..2aac66f2 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/Segasys1_MiST.sv +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/Segasys1_MiST.sv @@ -32,6 +32,7 @@ module Segasys1_MiST( `include "rtl/build_id.v" `define CORE_NAME "FLICKY" + localparam CONF_STR = { `CORE_NAME,";ROM;", "O2,Rotate Controls,Off,On;", @@ -51,6 +52,12 @@ always @(*) begin INP0 = ~{m_left, m_right,m_up, m_down,1'b0,m_fireB,m_fireA,m_fireC}; INP1 = ~{m_left2,m_right2,m_up2, m_down2,1'b0,m_fire2B,m_fire2A,m_fire2C}; INP2 = ~{2'b00,m_two_players, m_one_player,3'b000, m_coin1}; + if (core_mod[5]) begin + // Block Gal + INP0 = ~spin[8:1]; + INP1 = ~spin[8:1]; + INP2 = ~{m_fire2A | |mouse_flags[2:0], m_fireA | |mouse_flags[2:0], m_two_players, m_one_player, 2'b00, m_coin2, m_coin1}; + end else if (core_mod[3]) begin //WaterMatch INP0 = ~{m_left, m_right, m_up, m_down, m_left2,m_right2,m_up2,m_down2}; @@ -59,11 +66,22 @@ always @(*) begin end end +wire signed [8:0] spin; +wire signed [8:0] spin_next = spin + mouse_x; +always @(posedge clk_sys) begin + if (mouse_strobe) begin + if (spin[8] != mouse_x[8] || spin[8] == spin_next[8]) + spin <= spin_next; + else + spin <= {spin[8], {8{~spin[8]}}}; + end +end + wire [7:0] DSW0 = status[15: 8]; wire [7:0] DSW1 = status[23:16]; -wire [6:0] core_mod; // [0]=SYS1/SYS2,[1]=H/V,[2]=H256/H240,[3]=4controllers -wire [1:0] orientation = { 1'b0, core_mod[1] }; +wire [6:0] core_mod; // [0]=SYS1/SYS2,[1]=H/V,[2]=H256/H240,[3]=4controllers,[4]=CW/CCW,[5]=spinner,[6]=SYS2 rowscroll, +wire [1:0] orientation = { core_mod[4], core_mod[1] }; assign LED = ~ioctl_downl; assign SDRAM_CLK = sdram_clk; @@ -89,6 +107,10 @@ wire [7:0] joystick_3; wire key_pressed; wire key_strobe; wire [7:0] key_code; +wire signed [8:0] mouse_x; +wire signed [8:0] mouse_y; +wire [7:0] mouse_flags; +wire mouse_strobe; wire scandoublerD; wire ypbpr; wire no_csync; @@ -111,19 +133,23 @@ user_io( .key_strobe (key_strobe ), .key_pressed (key_pressed ), .key_code (key_code ), + .mouse_strobe (mouse_strobe ), + .mouse_x (mouse_x ), + .mouse_y (mouse_y ), + .mouse_flags (mouse_flags ), .joystick_0 (joystick_0 ), .joystick_1 (joystick_1 ), .status (status ) ); wire [15:0] audio; -wire [15:0] rom_addr; -wire [15:0] rom_do; -wire [15:0] spr_rom_addr; +wire [16:0] cpu_rom_addr; +wire [15:0] cpu_rom_do; +wire [16:0] spr_rom_addr; wire [15:0] spr_rom_do; -wire [12:0] snd_rom_addr; +wire [14:0] snd_rom_addr; wire [15:0] snd_rom_do; -wire [13:0] tile_rom_addr; +wire [15:0] tile_rom_addr; wire [23:0] tile_rom_do; wire ioctl_downl; wire [7:0] ioctl_index; @@ -144,7 +170,7 @@ data_io data_io( ); reg port1_req, port2_req; -wire [24:0] tl_ioctl_addr = ioctl_addr - 18'h20000; +wire [24:0] tl_ioctl_addr = ioctl_addr - 20'h40000; sdram #(80) sdram( .*, .init_n ( pll_locked ), @@ -159,11 +185,11 @@ sdram #(80) sdram( .port1_d ( {ioctl_dout, ioctl_dout} ), .port1_q ( ), - .cpu1_addr ( ioctl_downl ? 16'hffff : {1'b0, rom_addr[15:1]}), // offset 0 - .cpu1_q ( rom_do ), - .cpu2_addr ( ioctl_downl ? 16'hffff : (16'h6000 + snd_rom_addr[12:1]) ), // offset c000 + .cpu1_addr ( ioctl_downl ? 17'h1ffff : (17'h4000 + cpu_rom_addr[16:1]) ), // offset 8000h + .cpu1_q ( cpu_rom_do ), + .cpu2_addr ( ioctl_downl ? 17'h1ffff : snd_rom_addr[14:1] ), // offset 0 .cpu2_q ( snd_rom_do ), - .cpu3_addr ( ioctl_downl ? 16'hffff : (16'h8000 + spr_rom_addr[15:1]) ), // offset 10000 + .cpu3_addr ( ioctl_downl ? 17'h1ffff : (17'h10000 + spr_rom_addr[16:1]) ), // offset 20000h .cpu3_q ( spr_rom_do ), // port2 for backround tiles @@ -175,7 +201,7 @@ sdram #(80) sdram( .port2_d ( {ioctl_dout, ioctl_dout} ), .port2_q ( ), - .sp_addr ( ioctl_downl ? 15'h7fff : tile_rom_addr ), + .sp_addr ( ioctl_downl ? 16'hffff : tile_rom_addr ), .sp_q ( tile_rom_do ) ); @@ -210,13 +236,17 @@ SEGASYSTEM1 System1_Top( .DSW0(DSW0), .DSW1(DSW1), + + .SYSTEM2(core_mod[0]), + .SYSTEM2_ROWSCROLL(core_mod[6]), + .PH(HPOS), .PV(VPOS), .PCLK_EN(PCLK_EN), .POUT(POUT), - .cpu_rom_addr(rom_addr), - .cpu_rom_do( rom_addr[0] ? rom_do[15:8] : rom_do[7:0] ), + .cpu_rom_addr(cpu_rom_addr), + .cpu_rom_do(cpu_rom_addr[0] ? cpu_rom_do[15:8] : cpu_rom_do[7:0] ), .snd_rom_addr(snd_rom_addr), .snd_rom_do(snd_rom_addr[0] ? snd_rom_do[15:8] : snd_rom_do[7:0] ), @@ -228,20 +258,19 @@ SEGASYSTEM1 System1_Top( .tile_rom_do(tile_rom_do), .ROMCL(clk_sys), - .ROMAD(ioctl_addr[17:0]), - .ROMDT( ioctl_dout ), - .ROMEN( ioctl_wr ), + .ROMAD(ioctl_addr), + .ROMDT(ioctl_dout), + .ROMEN(ioctl_wr), .SOUT(audio) ); wire PCLK_EN; wire [8:0] HPOS,VPOS; -wire [7:0] POUT; +wire [11:0] POUT; wire [7:0] HOFFS = 8'd2; wire [7:0] VOFFS = 8'd2; wire hs, vs; -wire [2:0] g, r; -wire [1:0] b; +wire [3:0] b, g, r; HVGEN hvgen ( @@ -250,14 +279,14 @@ HVGEN hvgen .H240(core_mod[2]),.HOFFS(HOFFS),.VOFFS(VOFFS) ); -mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( +mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(10)) mist_video( .clk_sys ( clk_sys ), .SPI_SCK ( SPI_SCK ), .SPI_SS3 ( SPI_SS3 ), .SPI_DI ( SPI_DI ), .R ( r ), .G ( g ), - .B ( {b, b[1]} ), + .B ( b ), .HSync ( hs ), .VSync ( vs ), .VGA_R ( VGA_R ), @@ -267,7 +296,7 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .VGA_HS ( VGA_HS ), .ce_divider ( 1'b0 ), .blend ( blend ), - .rotate ( {1'b0, rotate} ), + .rotate ( {core_mod[4], rotate} ), .scandoubler_disable(scandoublerD ), .scanlines ( scanlines ), .ypbpr ( ypbpr ), diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/parts.v b/Arcade_MiST/Sega System 1 Hardware/rtl/parts.v index a420f669..5a5000e9 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/parts.v +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/parts.v @@ -155,52 +155,66 @@ endmodule //---------------------------------- module VRAMs ( - input clk0, - input [9:0] adr0, - output reg [7:0] dat0, - input [7:0] dtw0, - input wen0, + input clk, + input [12:0] adr0, + output reg [7:0] dat0, + input [7:0] dtw0, + input wen0, - input clk1, - input [9:0] adr1, - output reg [7:0] dat1 + input [12:0] adr1, + output reg [7:0] dat1, + + input [12:0] adr2, + output reg [7:0] dat2 ); -reg [7:0] core [0:1023]; +reg [7:0] core ['h2000]; -always @( posedge clk0 ) begin +reg sel; +reg [12:0] adr; +reg [7:0] dat; + +always @( posedge clk ) begin if (wen0) core[adr0] <= dtw0; - else dat0 <= core[adr0]; + dat0 <= core[adr0]; + + adr <= sel ? adr1 : adr2; + dat <= core[adr]; end -always @( posedge clk1 ) begin - dat1 <= core[adr1]; +always @( posedge clk ) begin + sel <= ~sel; + if (sel) dat1 <= dat; else dat2 <= dat; end endmodule module VRAM ( - input clk0, - input [10:0] adr0, - output [7:0] dat0, - input [7:0] dtw0, - input wen0, + input clk, + input [13:0] adr0, + output [7:0] dat0, + input [7:0] dtw0, + input wen0, - input clk1, - input [9:0] adr1, - output [15:0] dat1 + input [12:0] adr1, + output [15:0] dat1, + input [12:0] adr2, + output [15:0] dat2 ); wire even = ~adr0[0]; wire odd = adr0[0]; -wire [7:0] do00, do01, do10, do11; -VRAMs ram0( clk0, adr0[10:1], do00, dtw0, wen0 & even, clk1, adr1, do10 ); -VRAMs ram1( clk0, adr0[10:1], do01, dtw0, wen0 & odd, clk1, adr1, do11 ); +wire [7:0] do00, do01, do10, do11, do20, do21; +VRAMs ram0(clk, adr0[13:1], do00, dtw0, wen0 & even, + adr1, do10, adr2, do20); +VRAMs ram1(clk, adr0[13:1], do01, dtw0, wen0 & odd, + adr1, do11, adr2, do21); -assign dat0 = adr0[0] ? do01 : do00; +assign dat0 = odd ? do01 : do00; assign dat1 = { do11, do10 }; +assign dat2 = { do21, do20 }; endmodule diff --git a/Arcade_MiST/Sega System 1 Hardware/rtl/sdram.sv b/Arcade_MiST/Sega System 1 Hardware/rtl/sdram.sv index 7fa4a0a2..b8f56f02 100644 --- a/Arcade_MiST/Sega System 1 Hardware/rtl/sdram.sv +++ b/Arcade_MiST/Sega System 1 Hardware/rtl/sdram.sv @@ -46,11 +46,11 @@ module sdram ( input [15:0] port1_d, output reg [15:0] port1_q, - input [16:1] cpu1_addr, + input [17:1] cpu1_addr, output reg [15:0] cpu1_q, - input [16:1] cpu2_addr, + input [17:1] cpu2_addr, output reg [15:0] cpu2_q, - input [16:1] cpu3_addr, + input [17:1] cpu3_addr, output reg [15:0] cpu3_q, input port2_req, @@ -61,7 +61,7 @@ module sdram ( input [15:0] port2_d, output reg [31:0] port2_q, - input [16:2] sp_addr, + input [17:2] sp_addr, output reg [31:0] sp_q ); @@ -156,8 +156,8 @@ assign SDRAM_nWE = sd_cmd[0]; reg [24:1] addr_latch[3]; reg [24:1] addr_latch_next[2]; -reg [16:1] addr_last[4]; -reg [16:2] addr_last2[2]; +reg [17:1] addr_last[4]; +reg [17:2] addr_last2[2]; reg [15:0] din_latch[2]; reg [1:0] oe_latch; reg [1:0] we_latch; @@ -190,13 +190,13 @@ always @(*) begin addr_latch_next[0] = { 1'b0, port1_a }; end else if (cpu1_addr != addr_last[PORT_CPU1]) begin next_port[0] = PORT_CPU1; - addr_latch_next[0] = { 8'd0, cpu1_addr }; + addr_latch_next[0] = { 7'd0, cpu1_addr }; end else if (cpu2_addr != addr_last[PORT_CPU2]) begin next_port[0] = PORT_CPU2; - addr_latch_next[0] = { 8'd0, cpu2_addr }; + addr_latch_next[0] = { 7'd0, cpu2_addr }; end else if (cpu3_addr != addr_last[PORT_CPU3]) begin next_port[0] = PORT_CPU3; - addr_latch_next[0] = { 8'd0, cpu3_addr }; + addr_latch_next[0] = { 7'd0, cpu3_addr }; end else begin next_port[0] = PORT_NONE; addr_latch_next[0] = addr_latch[0]; @@ -210,7 +210,7 @@ always @(*) begin addr_latch_next[1] = { 1'b1, port2_a }; end else if (sp_addr != addr_last2[PORT_SP]) begin next_port[1] = PORT_SP; - addr_latch_next[1] = { 1'b1, 7'd0, sp_addr, 1'b0 }; + addr_latch_next[1] = { 1'b1, 6'd0, sp_addr, 1'b0 }; end else begin next_port[1] = PORT_NONE; addr_latch_next[1] = addr_latch[1]; @@ -257,7 +257,7 @@ always @(posedge clk) begin sd_cmd <= CMD_ACTIVE; SDRAM_A <= addr_latch_next[0][22:10]; SDRAM_BA <= addr_latch_next[0][24:23]; - addr_last[next_port[0]] <= addr_latch_next[0][16:1]; + addr_last[next_port[0]] <= addr_latch_next[0][17:1]; if (next_port[0] == PORT_REQ) begin { oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we }; ds[0] <= port1_ds; @@ -281,7 +281,7 @@ always @(posedge clk) begin sd_cmd <= CMD_ACTIVE; SDRAM_A <= addr_latch_next[1][22:10]; SDRAM_BA <= addr_latch_next[1][24:23]; - addr_last2[next_port[1]] <= addr_latch_next[1][16:2]; + addr_last2[next_port[1]] <= addr_latch_next[1][17:2]; if (next_port[1] == PORT_REQ) begin { oe_latch[1], we_latch[1] } <= { ~port1_we, port1_we }; ds[1] <= port2_ds; diff --git a/Arcade_MiST/Universal MrDo/MrDo.qsf b/Arcade_MiST/Universal MrDo/MrDo.qsf index afc21e15..4a010507 100644 --- a/Arcade_MiST/Universal MrDo/MrDo.qsf +++ b/Arcade_MiST/Universal MrDo/MrDo.qsf @@ -41,7 +41,7 @@ # ======================== set_global_assignment -name ORIGINAL_QUARTUS_VERSION "12.1 SP1" set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:07:52 FEBRUARY 01, 2013" -set_global_assignment -name LAST_QUARTUS_VERSION "13.1 SP4.26" +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name SMART_RECOMPILE ON set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" @@ -222,6 +222,7 @@ set_global_assignment -name ENABLE_SIGNALTAP OFF set_global_assignment -name USE_SIGNALTAP_FILE output_files/mrdo.stp set_global_assignment -name SYSTEMVERILOG_FILE rtl/MrDo_mist.sv set_global_assignment -name SYSTEMVERILOG_FILE rtl/MrDo_top.sv +set_global_assignment -name VERILOG_FILE rtl/secret_pal.v set_global_assignment -name VERILOG_FILE rtl/video_timing.v set_global_assignment -name VERILOG_FILE rtl/ram_dp_1k.v set_global_assignment -name VERILOG_FILE rtl/cpu_ram.v diff --git a/Arcade_MiST/Universal MrDo/meta/Mr.Do.Fixed.mra b/Arcade_MiST/Universal MrDo/meta/Mr.Do.Fixed.mra index 6076be72..395ad154 100644 --- a/Arcade_MiST/Universal MrDo/meta/Mr.Do.Fixed.mra +++ b/Arcade_MiST/Universal MrDo/meta/Mr.Do.Fixed.mra @@ -37,6 +37,5 @@ - 00 \ No newline at end of file diff --git a/Arcade_MiST/Universal MrDo/meta/Mr.Do.mra b/Arcade_MiST/Universal MrDo/meta/Mr.Do.mra index f079226e..078433ed 100644 --- a/Arcade_MiST/Universal MrDo/meta/Mr.Do.mra +++ b/Arcade_MiST/Universal MrDo/meta/Mr.Do.mra @@ -37,6 +37,5 @@ - 00 diff --git a/Arcade_MiST/Universal MrDo/rtl/MrDo_top.sv b/Arcade_MiST/Universal MrDo/rtl/MrDo_top.sv index 7526d763..08e928db 100644 --- a/Arcade_MiST/Universal MrDo/rtl/MrDo_top.sv +++ b/Arcade_MiST/Universal MrDo/rtl/MrDo_top.sv @@ -678,13 +678,8 @@ reg [15:0] unhandled_addr ; always @ (posedge clk_20M ) begin if ( rd_n == 0 ) begin - // read program rom - if (cpu_addr == 16'h049a ) begin - // patch rom to bypass "secret" pal protection - // cpu tries to read val from 0x9803 which is state machine pal - // written to on all tile ram access. should try converting pal logic to verilog. - cpu_din <= 0; - end else if ( cpu_addr >= 16'h0000 && cpu_addr < 16'h8000 ) begin + // read program rom + if ( cpu_addr >= 16'h0000 && cpu_addr < 16'h8000 ) begin cpu_din <= rom_do; // 0x0000 end else if ( cpu_addr >= 16'h8000 && cpu_addr < 16'h8400 ) begin cpu_din <= bg_ram0_data; @@ -695,7 +690,7 @@ always @ (posedge clk_20M ) begin end else if ( cpu_addr >= 16'h8c00 && cpu_addr < 16'h9000 ) begin cpu_din <= fg_ram1_data; end else if ( cpu_addr == 16'h9803 ) begin - cpu_din <= 0; + cpu_din <= u001_dout; end else if ( cpu_addr == 16'ha000 ) begin cpu_din <= p1; end else if ( cpu_addr == 16'ha001 ) begin @@ -755,6 +750,24 @@ always @ (posedge clk_20M ) begin end end +// u001 "secret" pal protection +// cpu tries to read val from 0x9803 which is state machine pal +// written to on all tile ram access.. + +wire [7:0] u001_dout ; + +reg gfx_ram_wr_old; +always @(posedge clk_20M) gfx_ram_wr_old <= gfx_fg_ram0_wr | gfx_fg_ram1_wr; +wire secret_pal_clk_en = ~gfx_ram_wr_old & (gfx_fg_ram0_wr | gfx_fg_ram1_wr); + +secret_pal u001 +( + .clk( clk_20M ), + .clk_en( secret_pal_clk_en ), + .din( cpu_dout ), + .dout( u001_dout ) +); + // first 256 bytes are attribute data // bit 7 of attr == MSB of tile // bit 6 tile flip diff --git a/Arcade_MiST/Universal MrDo/rtl/secret_pal.v b/Arcade_MiST/Universal MrDo/rtl/secret_pal.v new file mode 100644 index 00000000..36c8355d --- /dev/null +++ b/Arcade_MiST/Universal MrDo/rtl/secret_pal.v @@ -0,0 +1,79 @@ + +// PAL16R6 (IC U001) + +// no feedback used so a 128 byte lookup table could work too. + +module secret_pal +( + input clk, + input clk_en, + input [7:0] din, + output [7:0] dout +); + +wire [9:2] i ; +reg [19:12] r ; + +// data bus d7 (msb) is pin 2 so reverse input bit order +assign i = {din[0],din[1],din[2],din[3],din[4],din[5],din[6],din[7]}; + +assign dout = r ; + +wire t1 = i[2] & ~i[3] & i[4] & ~i[5] & ~i[6] & ~i[8] & i[9] ; +wire t2 = ~i[2] & ~i[3] & i[4] & i[5] & ~i[6] & i[8] & ~i[9] ; +wire t3 = i[2] & i[3] & ~i[4] & ~i[5] & i[6] & ~i[8] & i[9] ; +wire t4 = ~i[2] & i[3] & i[4] & ~i[5] & i[6] & i[8] & i[9] ; + + +always @(posedge clk) begin + + if (clk_en) begin + // pal output is registered clocked by pin 1 connected to (TRAM WE) $8800-$8fff + // pal OE is enabled by reading address $9803 (SECRE) + + r[12] <= 0; + + // /rf13 := i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 + r[13] <= ~ ( t1 ); + + // /rf14 := /i2 & /i3 & i4 & i5 & /i6 & i8 & /i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 + r[14] <= ~ ( t2 | t1 ); + + // /rf15 := i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 + r[15] <= ~ ( t3 | t1 ); + + // /rf16 := i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 + r[16] <= ~ ( t1 ); + + // /rf17 := i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 + r[17] <= ~ ( t3 | t1 ); + + // /rf18 := /i2 & i3 & i4 & /i5 & i6 & i8 & i9 + i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 + r[18] <= ~ ( t4 | t3 ); + + r[19] <= 0; + end +end + +endmodule +/* + +/rf13 := i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 +rf13.oe = OE + +/rf14 := /i2 & /i3 & i4 & i5 & /i6 & i8 & /i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 +rf14.oe = OE + +/rf15 := i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 +rf15.oe = OE + +/rf16 := i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 +rf16.oe = OE + +/rf17 := i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 + i2 & /i3 & i4 & /i5 & /i6 & /i8 & i9 +rf17.oe = OE + +/rf18 := /i2 & i3 & i4 & /i5 & i6 & i8 & i9 + i2 & i3 & /i4 & /i5 & i6 & /i8 & i9 +rf18.oe = OE + +*/ \ No newline at end of file