MCUME/README.md

294 wiersze
12 KiB
Markdown
Czysty Zwykły widok Historia

2019-08-21 09:11:38 +00:00
# M.CU.M.E = Multi CompUter Machine Emulator
<p align="center">
<img width="320" height="140" src="/images/logo.png">
</p>
2019-08-21 14:30:49 +00:00
2019-08-21 14:29:55 +00:00
# News
2020-11-06 10:42:57 +00:00
November 2020: move to latest VGA_t4 library for stable HIRES support<br>
2020-11-06 10:43:34 +00:00
- USB mouse added to Amiga/Atari ST emulation
2020-11-06 10:42:57 +00:00
- Amiga sound improved (freq drifting less audible)
- Atari ST now support 640x200 and 640x400 (B/W) modes with double buffering!!!
- Amiga now support 640x240 mode for cleaner workbench!!!
2020-11-06 15:31:53 +00:00
https://www.youtube.com/watch?v=vex335vHc68
https://www.youtube.com/watch?v=LKdcduVwwGQ
2020-11-06 10:42:57 +00:00
2020-10-18 15:30:51 +00:00
Mid October 2020: Most emulators are now supporing VGA with sound on the Teensy4.1<br>
2020-10-18 15:36:41 +00:00
Experimental I2S sound driver has been added to the VGA_t4 library with minimal DMA disturbances.<br><br>
2020-10-18 15:30:51 +00:00
If you are experimenting issues (e.g. image flashing out, crash after few minutes):
- try compiling for smallest code iso faster
2020-10-18 15:37:35 +00:00
<br>
2020-10-18 15:39:14 +00:00
e.g.:<br>
2020-11-06 10:42:57 +00:00
- ST emu: compile for "smallest code"<br>
- Amiga emu: compile for "smallest code"<br>
- Doom: compile for "faster"<br>
2020-10-18 15:30:51 +00:00
Atari ST emu has now better sound support!<br>
<br>
2020-10-10 09:35:10 +00:00
October 2020: DOOM ported to the Teensy4.1 (for VGA and LCD displays)<br>
2020-10-10 11:20:33 +00:00
No sound yet but with USB keyboard support (see VGA prototype PCB below).<br>
2020-10-10 14:10:35 +00:00
https://www.youtube.com/watch?v=adYwnctiKsg
2020-10-10 11:20:33 +00:00
<br>
<p align="center">
<img src="/images/T41VGA.jpg" width="640" />
<br>
2020-06-14 19:08:16 +00:00
June 2020: Update of UAE (Amiga emulator) on Teensy4.1<br>
Now with HDD support, better sound and 68020 emulation.<br>
All for better compatibility...<br>
2020-06-14 19:10:19 +00:00
https://youtu.be/Ho8qZSCKdLg<br>
2020-06-14 19:08:16 +00:00
https://youtu.be/vuMYwylYqYs
2019-08-21 14:30:49 +00:00
2020-05-24 15:15:32 +00:00
May 2020: Amiga emulation on Teensy4.1 (with PSRAM) !!!<br>
Here is a video of the emulator running on my prototype board.<br>
https://youtu.be/LE4IWPG5z6g
2020-03-15 16:34:43 +00:00
March 2020: MSX1/2 emulation on Teensy4.0 (no SDRAM required)<br>
2020-03-15 16:43:51 +00:00
Mini-console prototype with 40 keys keyboard, keypad and 320x240 ST7789 display.
The prototype supports of course all systems below where keyboard is supported!<br>
2020-03-15 17:52:11 +00:00
https://youtu.be/YZGbGKmeb6I<br>
2020-03-15 16:34:43 +00:00
<br>
<p align="center">
2020-03-15 16:37:44 +00:00
<img src="/images/msx.png" width="640" />
2020-03-15 16:34:43 +00:00
<br>
2019-11-24 14:58:07 +00:00
Nov 2019: Gameboy, Sega Master System/ GameGear and Megadrive/Genesis emulator running with extra 8MB SPI RAM (PSRAM) <br>
2019-11-24 17:48:58 +00:00
https://youtu.be/j2sKw7KYpEo <br>
2019-11-24 14:58:07 +00:00
Oct 2019: PC-Engine 'tiny' emulator running on Teensy 4.0 using an extra 8MB SPI RAM (PSRAM) <br>
2019-11-03 16:20:29 +00:00
https://youtu.be/Ot9RgDMqdF4<br>
2019-11-10 23:23:16 +00:00
GFX bug due to objs cache limitation is now fixed!
2019-11-03 16:20:29 +00:00
<br>
2019-11-03 21:11:50 +00:00
<p align="center">
2019-11-03 21:12:32 +00:00
<img src="/images/t4piggy.png" width="240" />
2019-11-10 23:23:16 +00:00
<img src="/images/pcbT4.png" width="480" />
2019-11-03 21:12:32 +00:00
<br>
2019-11-10 23:23:16 +00:00
T4 with PSRAM piggy back and latest T4 pcb!
2019-11-03 21:11:50 +00:00
</p>
<br>
<br>
2019-11-03 16:20:29 +00:00
Sep 2019: Teensy 4.0 now running Atari 520ST emulator (68k core based)!!! <br>
2019-08-21 14:30:49 +00:00
https://youtu.be/UCOaOGmYYso<br>
https://youtu.be/6rr2hMqprO0<br>
<br>
2019-08-21 14:29:55 +00:00
2019-08-21 14:59:28 +00:00
<p align="center">
<img src="/images/teensy4SD.png" width="200" />
</p>
2019-08-21 09:11:38 +00:00
<p align="center">
2019-08-21 14:52:20 +00:00
<img src="/images/stdesktop.png" width="200" />
<img src="/images/strobocop.png" width="200" />
2019-08-21 09:11:38 +00:00
</p>
2019-08-21 14:29:55 +00:00
<p align="center">
<img src="/images/teensybread.jpg" width="200" />
<img src="/images/teensy362.jpg" width="200" />
2019-08-21 09:32:16 +00:00
</p>
2019-08-21 14:29:55 +00:00
2019-08-21 09:32:16 +00:00
<p align="center">
<img src="/images/esp321.jpg" width="200" />
<img src="/images/esp322.jpg" width="200" />
</p>
A collection of 80th game Console and Computer emulators ported to Teensy and ESP32 MCUs.<br>
2019-08-21 09:11:38 +00:00
Have a look at the video:
https://youtu.be/jlqoWH2X6gk<br><br>
This project is a spin-off of the TeensyCEC project https://github.com/Jean-MarcHarvengt/TeensyCEC<br>
2019-08-21 10:16:55 +00:00
Now ported to much more MCUs! <br>
2019-08-21 09:11:38 +00:00
# Featuring
2019-08-21 10:00:47 +00:00
2019-08-21 10:14:00 +00:00
Computer systems supported and status on various MCU platforms<br>
2019-08-21 10:02:00 +00:00
2020-10-10 09:35:10 +00:00
| System | Teensy3.6 | Teensy 4.0 | Teensy4.0 +PSRAM | Teensy4.1 +PSRAM+VGA | ESP32 | ESP32-Wrover |
2020-10-10 09:55:38 +00:00
| --- | --- | --- | --- | --- | --- | --- |
2020-10-10 09:35:10 +00:00
| Zx81 | X | X | X | X | X | X |
| Zx spectrum | X | X | X | X | X | X |
| Atari 800 | X | X | X | X | X | X |
| C64 | X | X | X | X | X | X |
2020-11-06 10:42:57 +00:00
| Atari 520ST | - | full speed! | X | X (640x400!) | - | slow |
2020-10-10 09:35:10 +00:00
| 8086 XT PC | - | full speed! | X | X | - | slow |
| MSX1/2 | - | full speed! | X | X | - | - |
2020-11-06 10:42:57 +00:00
| Amiga | - | - | exp only! | X (640x240!) | - | - |
2020-10-10 09:35:10 +00:00
| Doom | - | - | - | x | - | - |
2019-08-21 10:00:47 +00:00
2019-09-16 18:28:55 +00:00
Please compile for smallest code on the Teensy4.0 else you will run out of memory<br><br>
2020-10-10 09:35:10 +00:00
For Teensy 4.1 with PSRAM try compiling for faster code (unless it complains at compilation).<br>
Doom for example only works if compiled for faster code!
2019-09-16 18:28:55 +00:00
2019-08-21 10:14:00 +00:00
Game console systems supported and status on various MCU platforms<br>
2019-08-21 10:02:00 +00:00
2020-10-04 21:10:39 +00:00
| System | Teensy3.6 | Teensy 4.0 | Teensy4 +PSRAM | Teensy4.1 +PSRAM+VGA | ESP32 | ESP32-Wrover |
2020-09-28 19:27:27 +00:00
| --- | --- | --- | --- | --- | --- | --- |
| Atari 2600 | X | X | X | X | X | X |
| Odyssey/Videopac | X | X | X | X | X | X |
| Colecovision | X | X | X | X | X | X |
| Atari 5200 | X | X | X | X | X | X |
| Nintendo NES | X | big roms! | X | X | X | X |
| Vectrex | - | full speed! | X | X | - | slow |
| PC Engine | - | - | X | X | - | - |
| Gameboy/GBColor | - | - | X | X | - | - |
| Sega Master System/Game Gear | - | - | X | X | - | - |
| Sega Genesis/Megadrive | - | - | X | X | - | - |
2019-08-21 09:11:38 +00:00
# Minimal requirements:
2019-08-21 10:15:05 +00:00
- Teensy3.6/Teensy4.0 or ESP32 Node32S/Wrover SDK chip
2019-08-21 10:14:00 +00:00
- ILI9341 (Teensy/ESP32) or ST7789 (Teensy only) SPI display
2019-08-21 09:32:16 +00:00
- SD card (Teensy uses built-in uSD, ESP32 uses external one connected over SPI, e.g. ILI9341 integrated one)
2019-08-21 09:11:38 +00:00
- Analog joypad (Arduino or PSP like)
- 3 buttons (FIRE, USER1 and USER2)
# Optional requirements:
2019-08-21 09:40:14 +00:00
- I2C custom keyboard (for computers emulators)
- Sound (DAC for ESP and Teensy3.6, MQS for Teensy4.0)
2020-09-28 19:28:58 +00:00
- VGA output (Teensy 3.6 and Teensy 4.1 only)
2019-08-21 10:34:24 +00:00
- 2 extra buttons (USER3 and USER4) mostly for NES emu
2019-08-21 09:40:14 +00:00
2019-08-21 09:11:38 +00:00
# Wiring
2019-08-21 09:40:14 +00:00
- see pinout.txt file in the respective project (ESP32 or Teensy)
- Some KICAD image also available for ESP32
2019-08-21 09:11:38 +00:00
2019-08-21 10:34:24 +00:00
# I2C keyboard (for computer emus)
2019-08-21 09:32:16 +00:00
- see i2ckeyboard sub-directory
2019-08-21 09:11:38 +00:00
- the I2C keyboard is using a separate atmega328p MCU handling the keys matrix
2019-08-21 09:32:16 +00:00
- with 10x4 or 10x5 keys
2019-08-21 09:11:38 +00:00
# Installation
- Format the SD card as FAT32
- extract the content of SD.zip in the root directory
- there must be a sub-directorie for each emulator
2019-08-21 10:20:06 +00:00
- "2600" => for atarivcs, put your Atari 2600 roms here (.bin), with sub-dirs or not
2019-08-21 09:11:38 +00:00
- "5200" => for atari5200, put your Atari 5200 roms here (.bin)
- "800" => for atari800, put your Atari 800 cartridges here (.rom)
2019-08-21 10:20:06 +00:00
- 'c64" => for c64, put your C64 programs here (.prg), with sub-dirs or not
2019-08-21 09:11:38 +00:00
- "o2em" => for odyssey/videopac, put your Videopac/Odysssey roms here (.bin)
- "coleco" => for colem, put your Colecovision roms here (.rom, including coleco.rom)
2019-08-21 09:32:16 +00:00
- "nes" => for nes/nofrendo, put your .nes files here (e.g. galaga,xevious,mario1...)
2019-08-21 09:11:38 +00:00
- "spec" => for spectrum, put your ".z80" or ".sna" files here into sub-dirs or not ( max 48K )
2019-08-21 10:20:06 +00:00
- "z81" => for zx81, put your ".p", ".81"(, ".56") ".80" or ".o" files here ( max 56K )
- "st" => for AtariST, put your floppis ".st" files here
- "pc" => for 8086, put your HDD image ".img"
- "vectrex" => for Vectrex, put your ".gam" files here
2019-11-11 07:52:45 +00:00
- "pce" => for PC Engine, put your ".pce" files here
2019-11-24 14:58:07 +00:00
- "gameboy" => for Gameboy and GBColor, put your ".gb"/"gbc" files here
- "sms" => for Sega Master System/Game Gear, put your ".sms"/"gg" files here
2020-03-15 16:43:51 +00:00
- "gen" => for Sega Genesis/Megadrive, put your ".smd"/"bin" files here
- "msx" => for MSX roms, put your ".rom"/".msx2" files here. MSX system roms in msx/roms
2020-10-10 09:35:10 +00:00
- "amiga" => for Amiga floppies, put your ".adf" and ".hdf" files here.
- "data" => for Doom, put your WAD files there (doom1,doom2,plutonia or tnt)
2020-03-15 16:43:51 +00:00
2019-11-24 14:58:07 +00:00
-- insert the card into the SD slot
2019-08-21 09:32:16 +00:00
# Compilation/flashing (Teensy)
- open the respective ino file with Arduino SDK
2020-09-28 19:27:27 +00:00
- select DISPLAY MODULE in platform_config.h (ST7789 or ILI9341)!!!!
- select VGA or not in platform_config.h (T4.1 using vgat4 lib, T3.6 using uvga lib)
2019-08-21 10:29:34 +00:00
- double check iopins.h for pins configuration!!!!
2019-08-21 09:32:16 +00:00
- compile and install from there.
2019-08-21 09:11:38 +00:00
2019-08-21 09:32:16 +00:00
# Compilation/flashing (ESP32)
2019-08-21 09:11:38 +00:00
- go to espboot directory first:
- make, make flash => this will install custom partition table, bootloader and app selector
- go to any other directory (one by one!):
- Adapt ./flashapp.sh according your OS (I use OSX)
- make, ./flashapp.sh
# Status and known issues
2019-08-21 10:14:00 +00:00
- 64 (C64):
2019-08-21 09:40:14 +00:00
- Full speed with sound
2019-08-21 09:11:38 +00:00
- I2C custom keyboard support!
2019-08-21 09:32:16 +00:00
- (only few games working)
2019-08-21 10:14:00 +00:00
- colem (Colecovision):
2019-08-21 09:40:14 +00:00
- Full speed with sound
2019-08-21 10:14:00 +00:00
- vcs (Atari 2600):
2019-08-21 09:11:38 +00:00
- no sound yet
- limited cartridge size support (due to ram constraint)
2019-08-21 10:14:00 +00:00
- o2em (Videopac/Odyssey):
2019-08-21 09:11:38 +00:00
- no sound
- only videopac G7000 games supported (due to ram constraint)
2019-08-21 10:14:00 +00:00
- nofrendo (Nintendo NES):
2019-08-21 09:40:14 +00:00
- Full speed with sound
2019-08-21 09:32:16 +00:00
- 32k roms only supported except on Teensy 4.0
2019-08-21 10:14:00 +00:00
- 5200 (Atari 5200):
2019-08-21 09:40:14 +00:00
- Full speed with sound
2019-08-21 09:11:38 +00:00
- 16 and 32k roms
2019-08-21 10:14:00 +00:00
- speccy (Zx spectrum):
2019-08-21 09:11:38 +00:00
- SNA support (Z80 to be fixed)
- YM and preliminary buzz sound support
- 48k games only supported
- kempston joystick supported but on screen keyboard may not answer in some games
- I2C custom keyboard support!
2019-08-21 10:14:00 +00:00
- 81 (Zx81):
2019-08-21 09:11:38 +00:00
- zx80 and zx81
- .P, .81 and .80 format support (rename .56 for Zx81 hires game that requires 48k or more)
- I2C custom keyboard support!
- HIRES support for zx81
- zx80 support
- YM sound support for zx81
2019-08-21 10:14:00 +00:00
- 800 (Atari 400/800/XE/XL):
2019-08-21 09:11:38 +00:00
- .rom support (no floppy yet)
- I2C custom keyboard support!
2019-08-21 09:40:14 +00:00
- Full speed with sound
2019-08-21 10:14:00 +00:00
- Castaway (AtariST):
2019-08-21 09:32:16 +00:00
- floppy support
- I2C custom keyboard support!
2020-11-06 10:42:57 +00:00
- USB mouse and keyboard support (T4.1)
2019-08-21 09:32:16 +00:00
- with sound
- full speed on Teensy4.0 only!!
2019-08-21 10:14:00 +00:00
- 8086 (XT PC):
2019-08-21 09:32:16 +00:00
- HDD image support
- I2C custom keyboard support!
- no sound
- full speed on Teensy4.0 only!!
2019-08-21 10:14:00 +00:00
- Vectrex (MB Vectrex):
2019-08-21 09:32:16 +00:00
- .gam roms support
- no sound
- full speed on Teensy4.0 only!!
2019-11-11 07:52:45 +00:00
- PCE (PC Engine):
- .pce roms support
- Nearly full speed with sound
- Some games hang or do not start as Outrun, Powerdrift...
2019-11-24 14:58:07 +00:00
- SMS/GG (Sega Master System/Game Gear):
- Full speed with sound
- Gameboy (and Game Boy Color):
- Full speed with sound
- Major missing background issue
- Genesis (Sega Megadrive):
- Nearly Full speed with rarely sound
- Some background rotation issue
- Some games do not start
2020-03-15 16:43:51 +00:00
- MSX1/2:
- Full speed with sound
- up to 256KB roms
- some games are not working as uridium2
2020-05-24 14:26:11 +00:00
- Amiga:
2020-06-14 19:08:16 +00:00
- Full speed with sound
2020-05-24 14:26:11 +00:00
- up to 2MB chip RAM + 4MB expand fast RAM roms
2020-06-14 19:08:16 +00:00
- HDF (Hard Disk) and adf support
2020-11-06 10:42:57 +00:00
- USB mouse and keyboard support (T4.1)
2020-06-14 19:08:16 +00:00
- Improved compatibility (still no AGA support!)
2020-11-06 10:42:57 +00:00
- Doom:
- Full speed without sound
2019-08-21 09:11:38 +00:00
# Running
2019-08-21 09:32:16 +00:00
- ESP32 only: Select the emulator from the app selector screen and press FIRE (wait a bit that the SD get mounted)
2019-08-21 09:11:38 +00:00
- For the launched emulator you should see the roms of the SD card being listed
- you can select the rom with up/down
- you can start the game by pressing the FIRE key
- while the game is running, you might have to press USER1 or USER2 keys to start the game
- some emulators requires the I2Ckeyboard
- You can then play the game with the analog joystick and the FIRE/USER1 keys
- press the USER1+USER2 to reboot the emulator and load another ROM
- USER2 can be used to swap joystick 1/2 in some emulators
# Credits
I mostly ported the emulators from existing projects, all the credit goes to the authors of
2020-10-10 09:35:10 +00:00
colem, o2em , x2600, moarnes, mc-4u, sz81, atari800, Vice, Nofrendo, jun52, dcastaway, vectrexemu (sorry if I don't mention their name), Charles Macdonald (TGemu), Bernd Schmidt (UAE) and Mike Chambers for his 8086 Arduino project!<br>
Doom is based on the ST32 port of chocolate doom so thanks for initial porting effort.<br>
2019-08-21 09:11:38 +00:00
Thanks a lot also to Frank Boesing for his ILI DMA library from which I started from and his great Teensy64 project https://github.com/FrankBoesing/Teensy64