diff --git a/Console_MiST/ChannelF_MiST/ChannelF.rbf b/Console_MiST/ChannelF_MiST/ChannelF.rbf new file mode 100644 index 00000000..e0edd5d4 Binary files /dev/null and b/Console_MiST/ChannelF_MiST/ChannelF.rbf differ diff --git a/Console_MiST/ChannelF_MiST/ReadMe.txt b/Console_MiST/ChannelF_MiST/ReadMe.txt new file mode 100644 index 00000000..48eb9d02 --- /dev/null +++ b/Console_MiST/ChannelF_MiST/ReadMe.txt @@ -0,0 +1,17 @@ + +ChannelF_MiSTer by Grabulosaure + +Controls ChannelF uses two joysticks that can be moved in 4 directions, they can also be pushed, pulled and the knob can be turned left or right. + +There are 5 buttons on the Channel F unit : RESET (1) TIME / 2 min / HOCKEY (2) MODE / 5 min / TENNIS (3) HOLD / 10 min / GAME 3 (4) START / 20 min / GAME 4 + +There are 2 games in ROM : Hockey and Tennis which can be run without loading any cartridge. + +Press RESET G? : The console asks which game shall be started +Press 1 for Hockey +Press 2 for Tennis S? : The console waits before starting the game +Press 1 to select a time limit T? : Set time limit +Press 1..4 for the time limit +Press 2 to select game speed M? : Set speed +Press 1..4 for the speed +Press 4 to start play \ No newline at end of file diff --git a/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf b/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf new file mode 100644 index 00000000..ce4de0fb Binary files /dev/null and b/Console_MiST/ChannelF_MiST/Snapshot/ChannelF.rbf differ diff --git a/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv b/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv index ab114820..f792a784 100644 --- a/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv +++ b/Console_MiST/ChannelF_MiST/rtl/CannelF_MiST.sv @@ -50,17 +50,19 @@ channel_f channel_f( .vga_hs(hs), .vga_vs(vs), .vga_de(blankn), - .joystick_0(~status[1] ? joystick_0 : joystick_1), - .joystick_1(~status[1] ? joystick_1 : joystick_0), + .Keys({m_four_players, m_three_players, m_two_players, m_one_player}), + .joystick_0({m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right}), + .joystick_1({m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2}), .ioctl_download(ioctl_downl), .ioctl_index(ioctl_index), - .ioctl_wr(1),//ioctl_wr),//todo + .ioctl_wr(~ioctl_wr),//todo .ioctl_addr(ioctl_addr), .ioctl_dout(ioctl_dout), // .ioctl_wait(ioctl_wait), .audio(audio) -); - +); + + wire ioctl_downl; wire [7:0] ioctl_index; wire ioctl_wr; @@ -149,5 +151,23 @@ dac( .dac_o(AUDIO_L) ); +wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF; +wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F; +wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players; +arcade_inputs inputs ( + .clk ( clock_48 ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .rotate ( 0 ), + .orientation ( 2'b00 ), + .joyswap ( status[1] ), + .oneplayer ( 1'b0 ), + .controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ), + .player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ), + .player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} ) +); endmodule \ No newline at end of file diff --git a/Console_MiST/ChannelF_MiST/rtl/channel_f.vhd b/Console_MiST/ChannelF_MiST/rtl/channel_f.vhd index 63ed5843..6a705638 100644 --- a/Console_MiST/ChannelF_MiST/rtl/channel_f.vhd +++ b/Console_MiST/ChannelF_MiST/rtl/channel_f.vhd @@ -73,8 +73,9 @@ ENTITY channel_f IS vga_vs : OUT std_logic; -- positive pulse! vga_de : OUT std_logic; -- = not (VBlank or HBlank) -- HPS IO - joystick_0 : IN unsigned(31 DOWNTO 0); - joystick_1 : IN unsigned(31 DOWNTO 0); + Keys : IN unsigned(3 DOWNTO 0); + joystick_0 : IN unsigned(7 DOWNTO 0); + joystick_1 : IN unsigned(7 DOWNTO 0); --ROM LOAD ioctl_download : IN std_logic; ioctl_index : IN std_logic_vector(7 DOWNTO 0); @@ -463,24 +464,24 @@ BEGIN ---------------------------------------------------------- -- Joysticks / Buttons pi0(7 DOWNTO 4)<=po0(7 DOWNTO 4); - pi0(0) <= NOT (joystick_0(4) OR joystick_1(4)); -- TIME - pi0(1) <= NOT (joystick_0(5) OR joystick_1(5)); -- MODE - pi0(2) <= NOT (joystick_0(6) OR joystick_1(6)); -- HOLD - pi0(3) <= NOT (joystick_0(7) OR joystick_1(7)); -- START + pi0(0) <= NOT Keys(0); -- TIME + pi0(1) <= NOT Keys(1); -- MODE + pi0(2) <= NOT Keys(2); -- HOLD + pi0(3) <= NOT Keys(3); -- START - pi1i(7) <= NOT joystick_0(8); -- RIGHT G.DOWN - pi1i(6) <= NOT joystick_0(9); -- RIGHT G.UP - pi1i(5) <= NOT joystick_0(10); -- RIGHT CW - pi1i(4) <= NOT joystick_0(11); -- RIGHT CCW + pi1i(7) <= NOT joystick_0(4); -- RIGHT G.DOWN + pi1i(6) <= NOT joystick_0(5); -- RIGHT G.UP + pi1i(5) <= NOT joystick_0(6); -- RIGHT CW + pi1i(4) <= NOT joystick_0(7); -- RIGHT CCW pi1i(3) <= NOT joystick_0(3); -- RIGHT UP pi1i(2) <= NOT joystick_0(2); -- RIGHT DOWN pi1i(1) <= NOT joystick_0(1); -- RIGHT LEFT pi1i(0) <= NOT joystick_0(0); -- RIGHT RIGHT - pi4i(7) <= NOT joystick_1(8); -- LEFT G.DOWN - pi4i(6) <= NOT joystick_1(9); -- LEFT G.UP - pi4i(5) <= NOT joystick_1(10); -- LEFT CW - pi4i(4) <= NOT joystick_1(11); -- LEFT CCW + pi4i(7) <= NOT joystick_1(4); -- LEFT G.DOWN + pi4i(6) <= NOT joystick_1(5); -- LEFT G.UP + pi4i(5) <= NOT joystick_1(6); -- LEFT CW + pi4i(4) <= NOT joystick_1(7); -- LEFT CCW pi4i(3) <= NOT joystick_1(3); -- LEFT UP pi4i(2) <= NOT joystick_1(2); -- LEFT DOWN pi4i(1) <= NOT joystick_1(1); -- LEFT LEFT