Skip to content

Commit 42dcec0

Browse files
committed
add support for bl616 firmware
1 parent e7926f1 commit 42dcec0

10 files changed

+608
-138
lines changed

build.tcl

+23-10
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
if {$argc == 0} {
2-
puts "Usage: $argv0 <device> <controller>"
2+
puts "Usage: $argv0 <device> <controller> <mcu>"
33
puts " device: nano20k, primer25k, mega60k"
44
puts " controller: snes, ds2"
5+
puts " mcu: bl616, picorv32"
56
puts "Note: nano20k supports both controllers simultaneously, so build with just: gw_sh build.tcl nano20k"
67
exit 1
78
}
89

910
set dev [lindex $argv 0]
10-
if {$argc == 2} {
11+
if {$argc >= 2} {
1112
set controller [lindex $argv 1]
1213
} else {
1314
set controller ""
1415
}
16+
if {$argc >= 3} {
17+
set mcu [lindex $argv 2]
18+
} else {
19+
set mcu "bl616"
20+
}
1521

1622
# process $dev and $controller
1723
if {$dev eq "nano20k"} {
@@ -77,6 +83,21 @@ if {$dev eq "nano20k"} {
7783
error "Unknown device $dev"
7884
}
7985

86+
if {$mcu eq "bl616"} {
87+
add_file -type verilog "src/iosys/iosys_bl616.v"
88+
add_file -type verilog "src/iosys/uart_fractional.v"
89+
} elseif {$mcu eq "picorv32"} {
90+
add_file -type verilog "src/iosys/iosys_picorv32.v"
91+
add_file -type verilog "src/iosys/simplespimaster.v"
92+
add_file -type verilog "src/iosys/simpleuart.v"
93+
add_file -type verilog "src/iosys/spi_master.v"
94+
add_file -type verilog "src/iosys/spiflash.v"
95+
} else {
96+
error "Unknown MCU $mcu"
97+
}
98+
add_file -type verilog "src/iosys/gowin_dpb_menu.v"
99+
add_file -type verilog "src/iosys/textdisp.v"
100+
80101
add_file -type verilog "src/apu.v"
81102
add_file -type verilog "src/autofire.v"
82103
add_file -type verilog "src/cart.sv"
@@ -98,14 +119,6 @@ add_file -type verilog "src/hdmi2/serializer.sv"
98119
add_file -type verilog "src/hdmi2/source_product_description_info_frame.sv"
99120
add_file -type verilog "src/hdmi2/tmds_channel.sv"
100121
add_file -type verilog "src/hw_uart.v"
101-
add_file -type verilog "src/iosys/gowin_dpb_menu.v"
102-
add_file -type verilog "src/iosys/iosys.v"
103-
add_file -type verilog "src/iosys/picorv32.v"
104-
add_file -type verilog "src/iosys/simplespimaster.v"
105-
add_file -type verilog "src/iosys/simpleuart.v"
106-
add_file -type verilog "src/iosys/spi_master.v"
107-
add_file -type verilog "src/iosys/spiflash.v"
108-
add_file -type verilog "src/iosys/textdisp.v"
109122
add_file -type verilog "src/mappers/generic.sv"
110123
add_file -type verilog "src/mappers/iir_filter.v"
111124
add_file -type verilog "src/mappers/JYCompany.sv"

impl/nestang_console60k_process_config.json

-92
This file was deleted.

nestang_console60k_bl616.gprj

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?xml version="1" encoding="UTF-8"?>
2+
<!DOCTYPE gowin-fpga-project>
3+
<Project>
4+
<Template>FPGA</Template>
5+
<Version>5</Version>
6+
<Device name="GW5AT-60B" pn="GW5AT-LV60PG484AC1/I0">gw5at60b-002</Device>
7+
<FileList>
8+
<File path="src/iosys/iosys_bl616.v" type="file.verilog" enable="1"/>
9+
<File path="src/EEPROM_24C0x.sv" type="file.verilog" enable="1"/>
10+
<File path="src/apu.v" type="file.verilog" enable="1"/>
11+
<File path="src/autofire.v" type="file.verilog" enable="1"/>
12+
<File path="src/cart.sv" type="file.verilog" enable="1"/>
13+
<File path="src/compat.v" type="file.verilog" enable="1"/>
14+
<File path="src/console60k/config.v" type="file.verilog" enable="1"/>
15+
<File path="src/controller_ds2.sv" type="file.verilog" enable="1"/>
16+
<File path="src/controller_snes.v" type="file.verilog" enable="1"/>
17+
<File path="src/dpram.v" type="file.verilog" enable="1"/>
18+
<File path="src/dualshock_controller.v" type="file.verilog" enable="1"/>
19+
<File path="src/game_loader.v" type="file.verilog" enable="1"/>
20+
<File path="src/hdmi2/audio_clock_regeneration_packet.sv" type="file.verilog" enable="1"/>
21+
<File path="src/hdmi2/audio_info_frame.sv" type="file.verilog" enable="1"/>
22+
<File path="src/hdmi2/audio_sample_packet.sv" type="file.verilog" enable="1"/>
23+
<File path="src/hdmi2/auxiliary_video_information_info_frame.sv" type="file.verilog" enable="1"/>
24+
<File path="src/hdmi2/hdmi.sv" type="file.verilog" enable="1"/>
25+
<File path="src/hdmi2/packet_assembler.sv" type="file.verilog" enable="1"/>
26+
<File path="src/hdmi2/packet_picker.sv" type="file.verilog" enable="1"/>
27+
<File path="src/hdmi2/serializer.sv" type="file.verilog" enable="1"/>
28+
<File path="src/hdmi2/source_product_description_info_frame.sv" type="file.verilog" enable="1"/>
29+
<File path="src/hdmi2/tmds_channel.sv" type="file.verilog" enable="1"/>
30+
<File path="src/mappers/JYCompany.sv" type="file.verilog" enable="1"/>
31+
<File path="src/mappers/MMC1.sv" type="file.verilog" enable="1"/>
32+
<File path="src/mappers/MMC2.sv" type="file.verilog" enable="1"/>
33+
<File path="src/mappers/MMC3.sv" type="file.verilog" enable="1"/>
34+
<File path="src/mappers/MMC5.sv" type="file.verilog" enable="1"/>
35+
<File path="src/mappers/Namco.sv" type="file.verilog" enable="1"/>
36+
<File path="src/mappers/Sachen.sv" type="file.verilog" enable="1"/>
37+
<File path="src/mappers/Sunsoft.sv" type="file.verilog" enable="1"/>
38+
<File path="src/mappers/generic.sv" type="file.verilog" enable="1"/>
39+
<File path="src/mappers/iir_filter.v" type="file.verilog" enable="1"/>
40+
<File path="src/mappers/misc.sv" type="file.verilog" enable="1"/>
41+
<File path="src/nes.v" type="file.verilog" enable="1"/>
42+
<File path="src/nes2hdmi.sv" type="file.verilog" enable="1"/>
43+
<File path="src/nestang_top.sv" type="file.verilog" enable="1"/>
44+
<File path="src/ppu.v" type="file.verilog" enable="1"/>
45+
<File path="src/primer25k/gowin_pll_27.v" type="file.verilog" enable="1"/>
46+
<File path="src/primer25k/gowin_pll_hdmi.v" type="file.verilog" enable="1"/>
47+
<File path="src/primer25k/gowin_pll_nes.v" type="file.verilog" enable="1"/>
48+
<File path="src/sdram_nes.v" type="file.verilog" enable="1"/>
49+
<File path="src/iosys/gowin_dpb_menu.v" type="file.verilog" enable="1"/>
50+
<File path="src/iosys/textdisp.v" type="file.verilog" enable="1"/>
51+
<File path="src/iosys/uart_fractional.v" type="file.verilog" enable="1"/>
52+
<File path="src/t65/T65.v" type="file.verilog" enable="1"/>
53+
<File path="src/t65/T65_ALU.v" type="file.verilog" enable="1"/>
54+
<File path="src/t65/T65_MCode.v" type="file.verilog" enable="1"/>
55+
<File path="src/t65/T65_Pack.v" type="file.verilog" enable="1"/>
56+
<File path="src/usb_hid_host.v" type="file.verilog" enable="1"/>
57+
<File path="src/usb_hid_host_rom.v" type="file.verilog" enable="1"/>
58+
<File path="src/console60k/nestang.cst" type="file.cst" enable="1"/>
59+
<File path="src/primer25k/nestang.cst" type="file.cst" enable="0"/>
60+
<File path="src/primer25k/nestang_snescontroller.cst" type="file.cst" enable="0"/>
61+
<File path="src/primer25k/nestang.sdc" type="file.sdc" enable="1"/>
62+
<File path="src/nes.gao" type="file.gao" enable="0"/>
63+
<File path="src/nestang_console60k.rao" type="file.gao" enable="0"/>
64+
</FileList>
65+
</Project>
File renamed without changes.

src/cart.sv

+4
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,9 @@ MMC4 mmc4(
320320
// Notes : Uses expansion audio and PPU hacks. Could use a thorough review. //
321321
// Games : Castlevania III, Just Breed //
322322
//*****************************************************************************//
323+
324+
// nand2mario 2/2025: somehow this causes routing failures. disable for now
325+
/*
323326
MMC5 mmc5(
324327
.clk (clk),
325328
.ce (ce),
@@ -350,6 +353,7 @@ MMC5 mmc5(
350353
.ppu_ce (ppu_ce),
351354
.ppuflags (ppuflags)
352355
);
356+
*/
353357

354358
//*****************************************************************************//
355359
// Name : CPROM //

src/console60k/nestang.cst

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ IO_LOC "sd_dat3" W15; // 1
4141
IO_PORT "sd_dat3" PULL_MODE=NONE IO_TYPE=LVCMOS33;
4242

4343
// UART through USB-C port
44-
IO_LOC "UART_RXD" Y14;
44+
IO_LOC "UART_RXD" V14;
4545
IO_LOC "UART_TXD" U15;
4646
IO_PORT "UART_RXD" IO_TYPE=LVCMOS33;
4747
IO_PORT "UART_TXD" IO_TYPE=LVCMOS33;

0 commit comments

Comments
 (0)