Nuked-MD-FPGA
SGDK
Nuked-MD-FPGA | SGDK | |
---|---|---|
6 | 24 | |
284 | 1,658 | |
- | - | |
9.1 | 9.1 | |
8 months ago | 5 days ago | |
Verilog | C | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Nuked-MD-FPGA
-
FPGAs and the Renaissance of Retro Hardware
The reality is that the vast majority of these FPGA-based clones don't actually perfectly emulate the logic. They're using the same reverse engineering techniques the traditional emulator developers used and sometimes even the same community documentation. The results are often quite good, but they're making a new implementation that matches the observed behavior of the original system to the best of their abilities.
Now there are some exceptions. Nuked MD FPGA[0] is a recent example of an FPGA recreation that is a fairly direct translation of the original logic using silicon die analysis. In this case, the logic is basically identical, but as you guessed the physical layout is different. Generally speaking, you write FPGA "gateware" in a language like Verilog or VHDL. These don't intrinsically have any information about the physical layout of the logic which is handled by the toolchain instead. As wmf says, this is generally not a problem most of the time. For synchronous logic, either the total propagation delay is small enough for a single cycle or it isn't. The toolchain will estimate this delay and report whether you met timing or not for the configured clockspeed.
Not everything you can do in silicon translates well to FPGAs (both clock edges is also generally not well supported for instance), but for the most part these things are easy enough to work around.
[0] https://github.com/nukeykt/Nuked-MD-FPGA
-
Nuked-MD-FPGA – accurate Sega Genesis re-implementation based on decapped chips
Kinda, sorta? This is like saying "a computer is not enough, you need a binary." What's here is the source code in Verilog. This produces a netlist (set of gates) which is synthesized into an actual bitstream (proprietary gate configuration file) for a specific FPGA hosted on a specific board.
In this case, the project isn't very documented but it looks like fairly generic Verilog without a lot of vendor specific extensions. So, what you need is a Verilog toolchain which can synthesize the source code into a netlist, and then into a bitstream, and the right set of extra code to target an actual physical piece of hardware.
Right now, it looks like the only board support that's checked into the repository is for the Icarus Verilog simulation environment: https://github.com/nukeykt/Nuked-MD-FPGA/tree/main/icarus .
But, the overall setup looks pretty simple and generic, so it should (hopefully) be possible to synthesize to your board of choice by reimplementing run.v and memstubs.v towards an actual hardware configuration.
- Nuked-MD-FPGA -- cycle-accurate Sega Genesis/MD hardware implementation based on reverse-engineering console's chips
SGDK
-
FC8 – Faster 68K Decompression (2016)
I'm working on a game for Amiga (another 68k-based platform) and settled on ZX0 to decompress assets on the fly: https://github.com/einar-saukas/ZX0
I was originally using LZ4, but I switched to ZX0 after learning that it can do in-place decompression, which means I don't have to allocate separate memory for the compressed data. I'm very happy with the compression ratio, and decompression of large assets (~48kb) only takes a few frames on a 7MHz 68000.
Also of note is LZ4W, included in Sega Genesis Dev Kit (and discussed in the comments section of OP's article), a variant of LZ4 that only uses word-aligned operations. That makes it much faster on the 68000, which can struggle to efficiently handle 8-bit data. More info here: https://github.com/Stephane-D/SGDK/blob/master/bin/lz4w.txt
- iHaveNoReasonToDoThisOtherThanBraggingRights
- Crowd sourcing for genesis
- If I were to try to make a simple 2D RPG or visual novel is the n64 easier than genesis Dreamcast and Saturn?
-
Problem with compiling
It might have needed two at one point. I see both mentioned in a few places, but the wiki appears to say you need the full path. https://github.com/Stephane-D/SGDK/wiki/SGDK-Usage
-
Best way to create a map with enemy characters using C?
P.S. The plan down the line is to at some point add sprites to it and port it to the Sega Genesis using SGDK so it would no longer be a text adventure game. However for now I'm having fun practicing my C skills with this and hopefully will have a cool project for my portfolio.
-
At least college isn't making me learn Objective-C.
Examples: - Someone I know created machine-optimized library in c and asm to accelerate compression, erasure coding, and encryption on Intel Xeon CPUs (https://github.com/intel/isa-l) which runs those ops WAY faster than the standard linux libraries. - My friend is making a retro SEGA genesis game using a C and asm dev kit (https://github.com/Stephane-D/SGDK)
-
What is it called when you make a whole new game and put it on a old console like NES Atari genesis etc
If you are specifically looking into the Genesis you should look into SGDK, the sega development toolkit https://github.com/Stephane-D/SGDK.
- SGDK – A free and open development kit for the Sega Mega Drive
- Dear developers and hardware engineers of reddit, It is possible to develop new games for old consoles? Like the SNES or DS for instance. If it is indeed possible, what tools would be required?
What are some alternatives?
MegaDrivePlusPlus - Universal Region mod, 50/60 Hz switch and In-Game-Reset (IGR) for Sega Mega Drive (AKA Genesis)
pvsneslib - PVSnesLib : A small, open and free development kit for the Nintendo SNES
Genesis_MiSTer - Sega Genesis for MiSTer
TotalSMS - Sega Master System emulator
Nuked-OPN2 - Cycle-accurate Yamaha YM3438(YM2612) emulator
beginners-C-program-examples - Simple, Short and Sweet beginners friendly C language programs , revised.
analogue-pocket-utils - Collection of IP and information on how to develop for openFPGA and Analogue Pocket
neosdconv - A command line tool to convert Neo Geo roms into the format needed for NeoSD
moa - An emulator for various m68k and z80 based computers, written in Rust. Currently it has support for the Sega Genesis, TRS-80, and Computie (my own project), with Macintosh support in the works
Save-Game-Copier - Copy Sega Saturn save game files
independence-day - Gno.land airdrop scripts.
Energy-Languages - The complete set of tools for energy consumption analysis of programming languages, using Computer Language Benchmark Game