* Fix .qip file, add missing PLLs Fix a problem with Quartus build where four `.qip` files, for four different PLLs, were missing. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Update to Chisel 7.3.0 Update all Chisel code to the latest Chisel (7.3.0). This has the major effect of changing the underlying FIRRTL compiler used to build the Verilog from the Scala-based FIRRTL Compiler (SFC) [[1]] to the MLIR-based FIRRTL Compiler (MFC or `firtool`) [[2]]. Additionally, as ChiselTest [[3]] is archived/unmaintained, this switches all the testing to use the newer Chisel testing framework, Chiselsim. A number of modules are sensitive to initialization conditions. This is exposed when switching to Chiselsim as it will use `initial` block randomization by default. Treadle, the default simulator when using ChiselTest, would initialize everything to zero. E.g., the cache doesn't appear to clear its tag bits on reset. This manifested with one test failing because the cache would transition to evict instead of fill (likely because the tag bits indicated that the line was dirty). Anytime this occurred it likely indicates bugs in the design. However, practically these shouldn't manifest as FPGA flows tend to zero-initialize everything in the bistream. (And empirically, the core has been working!) Because of the switch to ChiselSim, this will now pull in a dependency on Verilator to run tests. Other miscellaneous changes include fixing deprecations/removed functions (like the change around `MuxLookup`), removing width inference of a few output ports for modules used in tests (which is now illegal on public modules), and updating the mill build flow to use the latest version of mill. Verilog generation is now one-file-per-module under the `quartus/cave/` directory as opposed to a single file `quartus/cave.v`. [1]: https://github.com/chipsalliance/firrtl [2]: https://github.com/llvm/circt [3]: https://github.com/ucb-bar/chiseltest Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * [ci] Add Verilator CI dependency Add Verilator to the CI flow as this is necessary for Chiselsim. Unfortunately, this needs a Verilator version _newer_ than what is provided by the Ubuntu 24.04 (`ubuntu-latest`) GitHub runner. That only provides 5.020 which has a bug in Verilator throwing a spurious `WIDTHEXPAND` warning (which is fixed in newer versions). Grab the latest OSS Tabby CAD suite which has a newer version of Verilator. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * [rtl] Add Chisel 7.3.0 Verilog, update .qip Add the newly-generated Cave Verilog files, removing the old `Cave.v`. Because it is highly advised to have `firtool` generate Verilog one-file-per-module, that is done here. All generated verilog files are put into the `quartus/rtl/cave/` directory. Update the `quartus/files.qip` to reference these new files. It is my understanding that `.qip` doesn't support a wildcard import. Hence, this is a bit brittle in that it lists out all the Verilog files one-by-one. As long as generated Verilog files are committed to this repo, this will be a maintenance issue. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * squash! [rtl] Add Chisel 7.3.0 Verilog, update .qip Disable all randomization when generating FPGA Verilog (and in the resulting, committed Verilog). There's no reason to include this as none of this is enabled for the Quartus flow. This will save on the committed file size and also make the output Verilog more readable (though still generated). If there was any simulation of this Verilog, it would make sense to keep this. * [dep] Bump Chisel to 7.5.0 Bump Chisel to the latest release, 7.5.0. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Fix compile-time deprecation warnings Fix all compile-time deprecation warnings stemming from everything in `firrtl` being deprecated and the deprecation of `BlackBox` in favor of `ExtModule`. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * fixup! [rtl] Add Chisel 7.3.0 Verilog, update .qip * Omit version comment in generated Verilog Add the `omitVersionComment` option when generating Verilog to stop emitting the "Generated by ..." version comment. Normally this is useful, however, given the fact that this project commits the generated Verilog, it would be better to omit this to decrease the amount of churn due to Chisel version changes. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Regenerate Verilog from Chisel 7.5.0 Regenerated the Verilog using Chisel 7.5.0. There are no meaningful changes other than one internal name change. (This is a bug in upstream Chisel which someone is taking a look at.) Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Bump Chisel to 7.6.0 This includes a naming improvement when using `FlatIO`. This was necessary as part of the simplest `BlackBox` -> `ExtModule` migration, but included a naming regression that was identified here and then fixed in Chisel 7.6.0. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Regenerate Verilog using Chisel 7.6.0 Regenerate Verilog pulling in slightly improved Verilog names. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> * Bump Chisel to 7.7.0 Bump Chisel version. There are no changes to the emitted Verilog. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com> --------- Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com>
Cave 68000
This project contains the MiSTer core for Cave's first-generation 68000 arcade hardware.
Supported Games
| Title | Status |
|---|---|
| DoDonpachi | Public |
| ESP Ra. De. | Public |
| Dangun Feveron | Public |
| Uo Poko | Public |
| Guwange | Public |
| Gaia Crusaders | Public |
| Thunder Heroes | Public |
| Donpachi | Public |
| Air Gallet | Unimplemented |
| Hotdog Storm | WIP |
| Koro Koro Quest | Unimplemented |
| Mazinger Z | Unimplemented |
| Gogetsuji Legends | Unimplemented |
| Power Instinct 2 | Unimplemented |
| Saikyou Densetsu | Unimplemented |
| Pretty Soldier Sailor Moon | Unimplemented |
| The Ninja Master | Unimplemented |
Credits
Made with ❤️ by Josh (nullobject) Bassett, 2022.
This project is based on the prior work of Rick (rwk) Wertenbroek, who reverse engineered DoDonPachi for his master's thesis back in 2019. I would like to thank him personally for his technical guidance along the way, and providing me with source code for his original prototype.
I would also like to give a massive shout out to all my Patreon supporters. Your support keeps me working on these games, and helps bring them to everybody in the MiSTer community.
Special thanks to my top-tier Patrons:
Sherwood Hachtman, J, Michael Lawlor, TheDirtyScreech, Christopher R, Bitmap Bureau, Jason Philp, cbab, Magnus Aspling, Keith Stack, Andy Palmer, Jeremy Rayner, raoulvp, Hexxellor, Dorkocity, loopfz, Benjamin Walker, Adrian Longland, Lakeside, Christopher Tuckwell, Christopher Gelatt, 80's spaceman, Shane Lynch
Thanks to:
sixtyfps, Jeremy , Johan , Alfonso Clemente, Josh Mayer, Joost Peters, Kike Alcor, Frank Reyes, Niko, Joseph , Norman Walz, Cory Stargel, Mike Chapa, [mRg], marumusisan , richard thompson, Sam Matthews, Jeremy Riley, Raul3D, J Z, Arthur Fung, ItsACerealWow , Jon , Jonathan Garrard, Ryley, Corey Mark, dishwasherlove , Paul Houbart, fierman, Eugenio, Jaeson DeLeon, Jason Baker, Mike G, Ralph Barbagallo, Alexander Facchini, BinaryLuke, James Boone, Brock Lathrop, Castorgroup, The Collector, Hasan Tasdemir, Shaun Leach, Jan Paul, bnjc, Mahendra T., Ian Buer, Francois P, Nicolas VAILLANT, Dionys Descois, Pat Jones, CookSomeSoup, Dave Nice, Jimnakkum, Mark Alvarez, Magus Incognito, Josh Yates-Walker, Simon Rodemann, ItsBobDudes, 홍대 문, Brian Bickell, RayGun, Oriez, chackokhan, Mo Roy, James Jefferies, Mike Puelinckx, Chris Moon, Matt McCarthy, Aurich Lawson, freddie duron, Andrew Hannan, Roberto, Matt Richenburg, sascha matzke, Mist Sonata, "", Akshay Wadekar, Jeff Stanifer, David Nissen Schmidt, Paul Morales, Etik, Tymour Azzam, Arthur Carra, villainmarks, Psamtik , David Moylan, Allan Locso, Richard Thompson, Tyrone Cheng, Jay Lanagan, G Foyle, Andrea Bogazzi, IndieRetroHack , b garcia, Elio Berrios, Guy B, JSwan, Jonathan McDougall, twiiins, Martin Donlon, Amir Kavehrad, Alan Steremberg, Andre Bergei, Stefan Krueger, Denis Brækhus, Josh, Bakaskal, Colton Taylor, KanedaGTTurbo, Connor Stevens, Thomas Oskam, Edwin Fisher, Shannon King, Kevin Phelps, David Gralnik, jklax, Mike Stimpson, SwedishGojira , Nick Catto, OzMiSTerMods, Kelly Greenidge, BigJuffer, PaulieWalnuts, Scott Dowdle, Kinnon Yee, Barry Porch, 형 동바, Daniel Bauza, jbrlll, Martin Birkeldh, Torren Beitler, Negativeions, Tsht , Hung Ta, mpong , Meanderthal, yomitron, Adrian , Ulrich Straller, Erhune , ParkNangJung, Guillermo Izard, Matthew Hutchinson, Adrian Bledsoe, CyberpunkDre, Stephane Tremblay, Michael Deutsch, Grant King, Nailbomb , Michele Fiordispina, Adam Pita, Johan Smolinski, Balthasar Schopman, Dan Doyle, Darren Chell, M, Chris Marshall, Karl Lurman, Gillaxian, Jordon Phillips, Hayden Brown, Niall O'Higgins, Erik Krogh, Christian Keilback, Laurent Cooper, Tony Tang, Spiff , Phil Piwonka, Sipan Calli, Larry , SteveP, Matt Hargett, Arturo Sanchez, lamarax, Adrian Nabarro, 8PercentAndroid , Ben Cooper, James , Todd Lemons, Gladius, RetroRGB , Christa Isobel Lee, Rachael Netz, Report2Marty , David Becerro Recio, Peter Antoniew, Phil Fleabag, nakedarthur, Anthony Foderaro, Ian Court, Alex Limi, Matt Vande Vorde, lynn minmei, Keith Gordon, Michele Fornasini, Oliver Wndmth, the Chuckwagon, Tonton Kaloun, Matsu, Michael Brillant, Matthew Belshan, type78 , Vincent Bijwaard, Zakk, AL1138, krivx , Craig Somerfield, Hentai Joe, Steven , Jonathan Tuttle, Joshua Jodoin, it290, Lucian , Roberto Pedroni, Serge.EXE, Shannon Birt, Robert Dickenson, Richard Simpson, Adam Kessell, Klaus Wolf, dot_lvl , Ed Balan, Robert Douglas, Bradon Kanyid, RandomRetro, Nicholas Murray, Andyways , Nikolay Ivanchev, Scott Taylor, Josiah Wilson, hyp36rmax, Ben, Steven LeMaire, Chris Mawman, modsbox, Collin Jacobs, Darren Wootton, Fay Dek, Anton Gale, Steven Yedwab, Michael Anderson, Matthew Chretien, Owlnonymous , Quentin Sykes, Peter Brown, Charles , Trifle, Angelo Kanaris, Silvio Samadelli, AHMAD ALHAMLI, SteelRush , Rubèn Celada, felleg, odinmma ofili, SJohansson , Victor Lindo, Keith Stebor, ARCADEAGES , Ben Toman, loloC2C , Ronan Amicel, Magnus Kvevlander, SmoMo, Ludovic Germaneau, BigJazzyJay, Rob Shaw, Jim Wehrfritz, Xtro, Jockel, MrX-8B , Ruben Johnson, David Jones, Benjamin Leggett, ShootTheCore , Henry R, Miguel Candelario, Matt Postema, ganondork, Cody E, Marvin Blauth, Arjan de Lang, Tony Peters, Shaneus , DarkStar7 , Samuli Tuomola, Jeffrey Skube, Vlad Bogdalik, Darren Newman, Michael Packard, Porkchop Express, Keith F. Kelly, Humanoide70 , Mingus, Ross Jolet, Mike Holzinger, Matthew, emceebois , John Stringer, Allen Tipper, Johan Sjöstrand, Roland , Kevin Igoe, Steven Hertz, Ulf Skutnabba
...and the rest of my supporters 💖
The table template and attached image credit goes to atrac17.
Development
This core is primarily written in Chisel.
To compile this core you will need a working Scala environment and Intel Quartus 17 (or greater).
Compile the core:
make build
Program the DE10-Nano:
make program
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
