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

Commit ad60161

Browse files
authored
Add support for Miracle Piano. (#215)
Adds midi interface to support Miracle Piano. -Set the Miracle Piano to yes in the input section to set the piano to controller 2.
1 parent 42c8e21 commit ad60161

File tree

3 files changed

+485
-3
lines changed

3 files changed

+485
-3
lines changed

Genesis.sv

+35-3
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ module emu
177177
//`define DEBUG_BUILD
178178

179179
assign ADC_BUS = 'Z;
180-
assign {UART_RTS, UART_TXD, UART_DTR} = 0;
180+
//assign {UART_RTS, UART_TXD, UART_DTR} = 0;
181181
assign BUTTONS = osd_btn;
182182
assign {SD_SCK, SD_MOSI, SD_CS} = 'Z;
183183

@@ -244,11 +244,11 @@ video_freak video_freak
244244
// 0 1 2 3 4 5 6
245245
// 01234567890123456789012345678901 23456789012345678901234567890123
246246
// 0123456789ABCDEFGHIJKLMNOPQRSTUV 0123456789ABCDEFGHIJKLMNOPQRSTUV
247-
// XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX
247+
// XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX
248248

249249
`include "build_id.v"
250250
localparam CONF_STR = {
251-
"Genesis;;",
251+
"Genesis;UART31250,MIDI;",
252252
"FS,BINGENMD ;",
253253
"-;",
254254
"O67,Region,JP,US,EU;",
@@ -295,6 +295,7 @@ localparam CONF_STR = {
295295
"P2o89,Gun Control,Disabled,Joy1,Joy2,Mouse;",
296296
"D4P2oA,Gun Fire,Joy,Mouse;",
297297
"D4P2oBC,Cross,Small,Medium,Big,None;",
298+
"P2oO,Miracle Piano,No,Yes;",
298299

299300
"P3,Miscellaneous;",
300301
"P3-;",
@@ -1124,13 +1125,44 @@ always @(posedge clk_sys) begin
11241125
USER_OUT[2] <= SERJOYSTICK_OUT[4];
11251126
USER_OUT[6] <= SERJOYSTICK_OUT[5];
11261127
USER_OUT[4] <= SERJOYSTICK_OUT[6];
1128+
end else if (piano) begin
1129+
SERJOYSTICK_IN[0] <= piano_joypad_do;//up
1130+
SERJOYSTICK_IN[1] <= 0;//down
1131+
SERJOYSTICK_IN[2] <= 0;//left
1132+
SERJOYSTICK_IN[3] <= 0;//right
1133+
SERJOYSTICK_IN[4] <= 0;//b TL
1134+
SERJOYSTICK_IN[5] <= 0;//c TR GPIO7
1135+
SERJOYSTICK_IN[6] <= 0;// TH
1136+
SERJOYSTICK_IN[7] <= 0;
1137+
SER_OPT[0] <= 1'b0;
1138+
SER_OPT[1] <= 1'b1;
1139+
piano_clock <= SERJOYSTICK_OUT[5];
1140+
piano_strobe <= SERJOYSTICK_OUT[6];
11271141
end else begin
11281142
SER_OPT <= 0;
11291143
USER_OUT <= '1;
11301144
end
11311145
end
11321146

11331147

1148+
assign {UART_RTS, UART_DTR} = 1;
1149+
wire [15:0] uart_data;
1150+
wire piano_joypad_do;
1151+
wire piano_clock;
1152+
wire piano_strobe;
1153+
wire piano = status[56];
1154+
miraclepiano miracle(
1155+
.clk(clk_sys),
1156+
.reset(reset_nes || !piano),
1157+
.strobe(piano_strobe),
1158+
.joypad_o(piano_joypad_do),
1159+
.joypad_clock(piano_clock),
1160+
.data_o(uart_data),
1161+
.txd(UART_TXD),
1162+
.rxd(UART_RXD)
1163+
);
1164+
1165+
11341166
//debug
11351167
reg VDP_BGA_EN = 1;
11361168
reg VDP_BGB_EN = 1;

files.qip

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ set_global_assignment -name SYSTEMVERILOG_FILE rtl/gen_io.sv
1919
set_global_assignment -name SYSTEMVERILOG_FILE rtl/teamplayer.sv
2020
set_global_assignment -name VERILOG_FILE rtl/fourway.v
2121
set_global_assignment -name SYSTEMVERILOG_FILE rtl/multitap.sv
22+
set_global_assignment -name SYSTEMVERILOG_FILE rtl/miracle.sv
2223
set_global_assignment -name SYSTEMVERILOG_FILE rtl/system.sv
2324
set_global_assignment -name SDC_FILE Genesis.sdc
2425
set_global_assignment -name SYSTEMVERILOG_FILE Genesis.sv

0 commit comments

Comments
 (0)