-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Micro Joy Home Video Computer is a hardware-based and free and open source software (FOSS) setup for a DIY retro styled home computer similar to TIC-80.
This home computer must meet the following minimum requirements:
- MCU: RP2040 with MicroPython
- AUDIO: AY-3-8910 compatible Programmable Sound Generator (PSG)
- VIDEO: TMS9918 compatible Video Display Processor (VDP)
- INPUT: Parallel In Serial Out (PISO) Shift Register based gamepad
These components can be upgraded in the future if desired to improve their capabilities. The ideal hardware setup consists of the following components:
- MCU: RP2040 with MicroPython
- AUDIO: AY-3-8910 Programmable Sound Generator (PSG) + Konami SCC emulation with LPC810/812 via SoundCortexLPC + Waytronic WT588D Voice module
- VIDEO: SEGA Master System 315-5124/315-5246 Video Display Processor (VDP)
- INPUT: x2 Parallel In Serial Out (PISO) Shift Register based gamepad + PS/2 Keyboard
To make a retro styled game, the whole process of creation takes place under some technical limitations:
Specifications | |
---|---|
Resolution | 256x192 pixel display |
Color | 16 color palette |
Input | 2 gamepads / keyboard |
Sprites | 32 foreground sprites (chosen from 256 8x8 or 64 16x16) (only 4 visible at each scanline) |
Name table | 40x24 (text mode) or 32x24 characters (graphics mode) (chosen from 256 8x8) |
Sound | 3 square or noise channels + 5 wavetable channels (using SoundCortex) |
Code | Python 3.x compatible code for microcontrollers (MicroPython) |
Memory | 2/4/8/16MB Flash / 264KB of RAM / 16KB of VRAM |
- SDK
- Important system files
The boot.py file
The main.py file
Libraries
- MCU
What is MicroPython?
How to install MicroPython
- Video
TMS9918 compatible VDP parts
TMS9918 VDP display modes
Color palette
Video modes
Video adapters
MGB file format
- Video API
vdp_set_bdcolor
vdp_print
vdp_cls
vdp_mset
vdp_textcolor
vdp_sprite_set_position
vdp_text_wrap
set_write_address
write_byte_to_VRAM
vdp_init
- Audio
Music related troubleshooting
AY-3-8910 compatible PSG parts
How to flash LPC810 or LPC812 MCU
How to flash ATmega8, ATmega48, ATmega88, ATmega168 or ATmega328
AY-3-8910
Konami SCC
WT588D
Clock sources
SoundCortex limitations
VGM file format
WT588D's BUSY output
- Audio API
music.reset
music.load_vgm
music.tick
music.set_vol
music.play_freq
music.play_notes
voice.send_threelines
voice.send_oneline
- Input
PISO shift register compatible gamepad parts
PS2 keyboard scancodes
- Input API
- Memory
Memory related troubleshooting
Video RAM
- Memory API