I have decided to build a prototype for a new cartridge that will support bus-stuffing and run everything on an ARM microcontroller. The goal for this project is to facilitate the creation of a new generation of Atari 2600 games in a timely manner.
Here is a high level diagram of the overall design. The basic concept is to offload the work off timing TIA register reads/writes and bus-stuffing to the FPGA thus freeing the MCU to run the game code. There will be two command buffers that will each have enough room for at least a single scanline of commands. The FPGA will automatically toggle between the buffers and raise an interrupt on the MCU each time the buffers are swapped. The MCU will then need to fill the other buffer during it's handling of the IRQ. When the MCU is not handling the buffer fill requests it is free to run whatever game logic it wants.
The following commands are what I've thought to support so far: 2cycle NOP, 3 Cycle Register Write, 4 Cycle Register Write, 5 Cycle Register Double Write (RMW Instruction), JMP to $1000, 3 cycle Register Read, 4 cycle Register Read.
Frameworks could be built on top of the command structure similar to batari Basic in order to provide some higher level abstractions for those who are just getting started with C++.
I would appreciate any feedback on this design, good or bad. If the prototype is successful I plan to modify stella so it can support running/debugging C++ games from within Visual Studio 2013. All design documents and source will be made publicly available.
Edited by ZackAttack, Sat May 16, 2015 6:39 PM.