Skip to content
This repository was archived by the owner on Sep 4, 2023. It is now read-only.

Commit ff25b8c

Browse files
committed
TeamPlayer: support port2 connection. Up to 5 players.
1 parent 91d2d25 commit ff25b8c

File tree

6 files changed

+234
-109
lines changed

6 files changed

+234
-109
lines changed

Genesis.sdc

+3
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ set_multicycle_path -to {*Hq2x*} -hold 3
66

77
set_multicycle_path -from [get_clocks { *|pll|pll_inst|altera_pll_i|*[1].*|divclk}] -to {ascal|*} -setup 4
88
set_multicycle_path -from [get_clocks { *|pll|pll_inst|altera_pll_i|*[1].*|divclk}] -to {ascal|*} -hold 3
9+
10+
set_multicycle_path -from {emu|sdram|dout*} -to {emu|system|data*} -setup 2
11+
set_multicycle_path -from {emu|sdram|dout*} -to {emu|system|data*} -hold 1

Genesis.sv

+6-4
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ assign LED_USER = cart_download | sav_pending;
177177
// 0 1 2 3 4 5 6
178178
// 01234567890123456789012345678901 23456789012345678901234567890123
179179
// 0123456789ABCDEFGHIJKLMNOPQRSTUV 0123456789ABCDEFGHIJKLMNOPQRSTUV
180-
// XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXX
180+
// XXXXXXXXXXXX XXXXXXXX XXXXXXXXX XXXXXXXX
181181

182182
`include "build_id.v"
183183
localparam CONF_STR = {
@@ -207,7 +207,7 @@ localparam CONF_STR = {
207207
"-;",
208208
"O4,Swap Joysticks,No,Yes;",
209209
"O5,6 Buttons Mode,No,Yes;",
210-
"OLM,Multitap,Disabled,4-Way,TeamPlayer,J-Cart;",
210+
"o57,Multitap,Disabled,4-Way,TeamPlayer: Port1,TeamPlayer: Port2,J-Cart;",
211211
"OIJ,Mouse,None,Port1,Port2;",
212212
"OK,Mouse Flip Y,No,Yes;",
213213
"-;",
@@ -228,7 +228,7 @@ localparam CONF_STR = {
228228

229229
wire [63:0] status;
230230
wire [1:0] buttons;
231-
wire [11:0] joystick_0,joystick_1,joystick_2,joystick_3;
231+
wire [11:0] joystick_0,joystick_1,joystick_2,joystick_3,joystick_4;
232232
wire ioctl_download;
233233
wire ioctl_wr;
234234
wire [24:0] ioctl_addr;
@@ -266,6 +266,7 @@ hps_io #(.STRLEN($size(CONF_STR)>>3), .WIDE(1)) hps_io
266266
.joystick_1(joystick_1),
267267
.joystick_2(joystick_2),
268268
.joystick_3(joystick_3),
269+
.joystick_4(joystick_4),
269270
.buttons(buttons),
270271
.forced_scandoubler(forced_scandoubler),
271272
.new_vmode(new_vmode),
@@ -429,7 +430,8 @@ system system
429430
.JOY_2(status[4] ? joystick_0 : joystick_1),
430431
.JOY_3(joystick_2),
431432
.JOY_4(joystick_3),
432-
.MULTITAP(status[22:21]),
433+
.JOY_5(joystick_4),
434+
.MULTITAP(status[39:37]),
433435

434436
.MOUSE(ps2_mouse),
435437
.MOUSE_OPT(status[20:18]),

multitap.sv

+20-4
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ module multitap
4545
input P2_UP, P2_DOWN, P2_LEFT, P2_RIGHT, P2_A, P2_B, P2_C, P2_START, P2_MODE, P2_X, P2_Y, P2_Z,
4646
input P3_UP, P3_DOWN, P3_LEFT, P3_RIGHT, P3_A, P3_B, P3_C, P3_START, P3_MODE, P3_X, P3_Y, P3_Z,
4747
input P4_UP, P4_DOWN, P4_LEFT, P4_RIGHT, P4_A, P4_B, P4_C, P4_START, P4_MODE, P4_X, P4_Y, P4_Z,
48+
input P5_UP, P5_DOWN, P5_LEFT, P5_RIGHT, P5_A, P5_B, P5_C, P5_START, P5_MODE, P5_X, P5_Y, P5_Z,
4849

4950
input DISK,
5051

51-
input TEAMPLAYER_EN,
52+
input [1:0] TEAMPLAYER_EN,
5253
input FOURWAY_EN,
5354

5455
input [24:0] MOUSE,
@@ -74,6 +75,19 @@ gen_io io
7475
(
7576
.*,
7677

78+
.P2_UP (TEAMPLAYER_EN[0] ? P5_UP : P2_UP ),
79+
.P2_DOWN (TEAMPLAYER_EN[0] ? P5_DOWN : P2_DOWN ),
80+
.P2_LEFT (TEAMPLAYER_EN[0] ? P5_LEFT : P2_LEFT ),
81+
.P2_RIGHT(TEAMPLAYER_EN[0] ? P5_RIGHT : P2_RIGHT),
82+
.P2_A (TEAMPLAYER_EN[0] ? P5_A : P2_A ),
83+
.P2_B (TEAMPLAYER_EN[0] ? P5_B : P2_B ),
84+
.P2_C (TEAMPLAYER_EN[0] ? P5_C : P2_C ),
85+
.P2_START(TEAMPLAYER_EN[0] ? P5_START : P2_START),
86+
.P2_MODE (TEAMPLAYER_EN[0] ? P5_MODE : P2_MODE ),
87+
.P2_X (TEAMPLAYER_EN[0] ? P5_X : P2_X ),
88+
.P2_Y (TEAMPLAYER_EN[0] ? P5_Y : P2_Y ),
89+
.P2_Z (TEAMPLAYER_EN[0] ? P5_Z : P2_Z ),
90+
7791
.DO(GEN_DO)
7892
);
7993

@@ -90,7 +104,8 @@ wire [7:0] TP_DO;
90104
teamplayer teamplayer
91105
(
92106
.*,
93-
107+
108+
.PORT(TEAMPLAYER_EN[1]),
94109
.DO(TP_DO),
95110
.DTACK_N()
96111
);
@@ -143,7 +158,8 @@ pad_io jcart_l
143158
.DTACK_N()
144159
);
145160

146-
wire MT_SEL = (A==1 || A==2);
147-
assign DO = (FOURWAY_EN & MT_SEL) ? FW_DO : (TEAMPLAYER_EN & MT_SEL) ? TP_DO : GEN_DO;
161+
assign DO = (FOURWAY_EN && (A==1 || A==2)) ? FW_DO :
162+
((TEAMPLAYER_EN[0] && A==1) || (TEAMPLAYER_EN[1] && A==2)) ? TP_DO :
163+
GEN_DO;
148164

149165
endmodule

multitap.txt

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
In short:
3+
4+
Electronic Arts -> 4-Way-Play
5+
Codemasters -> J-Cart
6+
Others -> Team Player
7+
8+
-------------------------------------------------------------------------------------
9+
Game Publisher 4-Way-Play Team Player J-Cart
10+
-------------------------------------------------------------------------------------
11+
ATP Tour Tennis Sega 4
12+
Barkley: Shut up and Jam 2 Accolade 4
13+
Bill Walsh College Football (CD) Electronic Arts 4
14+
Bill Walsh College Football Electronic Arts 4
15+
Coach K College Basketball Electronic Arts 4
16+
College Football USA '96 Electronic Arts 4
17+
College Football USA '97 Electronic Arts 4
18+
College Football's Natl Chp. Sega 4
19+
College Football's Natl...2 Sega 4
20+
College Slam Acclaim 4
21+
Columns III Vic Tokai 5
22+
Double Dribble Playoff Ed. Konami 8
23+
Dungeon Explorer (CD) Hudson 4
24+
Gauntlet IV Tengen 4 4
25+
ESPN National Hockey Night Sony 4
26+
ESPN National Hockey Night (CD) Sony 4
27+
FIFA International Soccer (CD) Electronic Arts 4
28+
FIFA International Soccer Electronic Arts 4
29+
FIFA Soccer '95 Electronic Arts 4
30+
FIFA Soccer '96 Electronic Arts 4
31+
FIFA Soccer '97 Electronic Arts 4
32+
FIFA Road to the World Cup '98 Electronic Arts 4
33+
General Chaos Electronic Arts 4
34+
Head-On Soccer U.S. Gold 4?
35+
The Lost Vikings Interplay 3
36+
Madden '94 Electronic Arts 4
37+
Madden '95 Electronic Arts 4
38+
Madden '96 Electronic Arts 4
39+
Madden '97 Electronic Arts 4
40+
Madden '98 Electronic Arts 4
41+
Mega Bomberman Hudson 4
42+
Micro Machines 2: TT Codemasters 4
43+
Micro Machines '96 Codemasters 4
44+
Micro Machines Military Codemasters 4
45+
Mutant League Hockey Electronic Arts 4
46+
NBA Action '94 Sega 5
47+
NBA Action '95 Sega 5
48+
NBA Hangtime Acclaim 4
49+
NBA Jam (CD) 4
50+
NBA Jam Arena 4
51+
NBA Jam TE (32X) Acclaim 4
52+
NBA Jam TE Acclaim 4
53+
NFL '95 Sega 4
54+
NFL Quarterback Club (32X) Acclaim 5
55+
NFL Quarterback Club '96 Acclaim 5
56+
NHL '94 (CD) Electronic Arts 4
57+
NHL '94 Electronic Arts 4
58+
NHL '95 Electronic Arts 4
59+
NHL '96 Electronic Arts 4
60+
NHL '97 Electronic Arts 4
61+
NHL '98 Electronic Arts 4
62+
Pele' II World Tnmt. Soccer Accolade 4?
63+
Pete Sampras Tennis Codemasters 4
64+
PGA Tour Golf III Electronic Arts 4?
65+
Prime Time NFL... Deion Sanders Sega 4
66+
Rugby World Cup '95 Electronic Arts 4
67+
Sampras Tennis 96 Codemasters 4
68+
Super Skidmarks Codemasters 4
69+
Tiny Toon ACME All Stars Konami 4
70+
Triple Play '96 Electronic Arts 4
71+
Wayne Gretzky...All Stars Time Warner Int. 4
72+
Wheel of Fortune (CD) Gametek 3
73+
World Cup USA '94 U.S. Gold 4
74+
World Cup USA '94 (CD) U.S. Gold 4
75+
WWF Raw Acclaim 4
76+
Yu Yu Hakusho (Japan) Sega 4

system.sv

+17-3
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ module system
8888
input [11:0] JOY_2,
8989
input [11:0] JOY_3,
9090
input [11:0] JOY_4,
91-
input [1:0] MULTITAP,
91+
input [11:0] JOY_5,
92+
input [2:0] MULTITAP,
9293

9394
input [24:0] MOUSE,
9495
input [2:0] MOUSE_OPT,
@@ -519,8 +520,21 @@ multitap multitap
519520
.P4_Y(~JOY_4[10]),
520521
.P4_Z(~JOY_4[11]),
521522

523+
.P5_UP(~JOY_5[3]),
524+
.P5_DOWN(~JOY_5[2]),
525+
.P5_LEFT(~JOY_5[1]),
526+
.P5_RIGHT(~JOY_5[0]),
527+
.P5_A(~JOY_5[4]),
528+
.P5_B(~JOY_5[5]),
529+
.P5_C(~JOY_5[6]),
530+
.P5_START(~JOY_5[7]),
531+
.P5_MODE(~JOY_5[8]),
532+
.P5_X(~JOY_5[9]),
533+
.P5_Y(~JOY_5[10]),
534+
.P5_Z(~JOY_5[11]),
535+
522536
.FOURWAY_EN(MULTITAP == 1),
523-
.TEAMPLAYER_EN(MULTITAP == 2),
537+
.TEAMPLAYER_EN({MULTITAP == 3,MULTITAP == 2}),
524538

525539
.MOUSE(MOUSE),
526540
.MOUSE_OPT(MOUSE_OPT),
@@ -875,7 +889,7 @@ always @(posedge MCLK) begin
875889
ROM_REQ <= ~ROM_ACK;
876890
mstate <= MBUS_ROM_READ;
877891
end
878-
else if ((MULTITAP == 3) && ({MBUS_A,1'b0} == 'h3FFFFE || {MBUS_A,1'b0} == 'h38FFFE)) begin
892+
else if ((MULTITAP == 4) && ({MBUS_A,1'b0} == 'h3FFFFE || {MBUS_A,1'b0} == 'h38FFFE)) begin
879893
JCART_SEL <= 1;
880894
mstate <= MBUS_JCRT_READ;
881895
end

0 commit comments

Comments
 (0)