stella-emu / stella

A multi-platform Atari 2600 Emulator
https://stella-emu.github.io
GNU General Public License v2.0
611 stars 112 forks source link

Add support for UnoCart (w/ STM32f4 MCU) #364

Open sa666666 opened 6 years ago

sa666666 commented 6 years ago

I don't know how feasible this is, but it was mentioned here: http://atariage.com/forums/topic/281105-open-source-c-project-template-now-available

This would involve, at minimum, finding an open-source, GPLv2-compatible emulator for the STM32f4 chip, similar to the Thumbulator stuff for the Harmony. There are probably other issues, but this would be the hardest part.

thrust26 commented 5 years ago

Some basic info:

I suppose the UnoCart uses Thumb2 code (too). @DirtyHairy do you know details here?

So far I found:

DirtyHairy commented 5 years ago

That is entirely dependent on the compiler; most likely, we would be dealing with Thumb 2 + FPU, but there could also be plain ARM instructions executing. The most reasonable thing would be to include an existing CPU emulator, and QEMU is a likely candidate --- it has been along for a long time and is battle tested.

However, with Zack's stuff, I think the biggest challenge is getting the synchronization between the ARM and 6502 right. If I understand his scheme correctly, he is generating a dynamic stream of 6502 instructions on the ARM, so we will have to get ARM emulation and 6502 bus activity into sync. From what I understand, qemu JITs whole blocks of memory into native code that is then executed, so that might be difficult to do, but the description of unicorn sounds like they might already have solved the problem for us. A very interesting find, definitely worth a second look.

DirtyHairy commented 5 years ago

Maybe a good way to tackle this would be to try and replace the existing thumbulator code with Unicorn. If that works out, then getting Zack's scheme working should be a good deal easier,