This is the third blog-post regarding “building a video-game console for (my) kids”. See Part II: chiptune, and Part I: gamepad.
Quico
We have name: Quico. From now on, I’ll refer to this project as “Quico”:
- Quico ( /ˈkiko/), short for Kids Console (or Kids Computer)
- Also, one of the main characters of El Chavo del Ocho
Sound Shield
I converted the breadboard into “shield” for the MatrixPortal M4.
Shield for the MatrixPortal M4
“Shield” features:
- Output:
- Headphones: Audio jack
- or Speaker: 5V/GND/AudioOut pins
- Fits perfectly on top of the MatrixPortal M4
- Sturdy connection: 8 pins + 2 screws
- Easy to solder: All components are through-hole, except audio-jack (SMD) but it is as easy to solder as the rest.
- Open source / open hardware ( docs, schematics, layout)
Shield + MatrixPortal M4 + LED matrix
Improved sound API
The sound API was improved:
- Added new “sync” methods (functions that return when music ends)
- To be used mostly from CircuitPython REPL console
- But can be used for simple games as well
- Improved “async” VGM player
- Easier to use
Examples of improved APIs:
import music76489
m = music76489.Music76489()
# Sync APIs: can be used from REPL,
# like if you were using BASIC in a Commodore 128
# To play certain frequencies
m.play_freq(voice, freq)
# To play noise
m.play_noise(mode, shift_rate)
# To play notes: supports different voices, duration, semi-tones, and more.
m.play_notes('CDEFGAB')
# To set the volume
m.set_vol(voice, volume)
# To just play a VGM song:
m.play_vgm('data/mysong.vgm')
# Async API:
m.load_vgm('data/mysong.vgm')
while True:
m.tick()
time.sleep(1/60)
The latest version can be found here:
Improved gamepad support
# To change gamepad LED color.
# Valid for DualShock 4. DualSense coming soon.
spi.set_gamepad_color_led(gamepad_seat, rbg_color)
# To change gamepad players LED.
# Valid for Nintendo Switch, Wii, Wii U and other gamepads
spi.set_gamepad_player_leds(gamepad_seat, leds)
# To set rumble (AKA force-feedback).
# Valid for DualShock4, Xbox One S, Nintendo Switch controllers
spi.set_gamepad_rumble(gamepad_seat, force, duration)
The latest version can be found here:
Parts
- A: 64x32 LED Matrix display
- B: Adafruit MatrixPortal M4
- C: Music shield for the MatrixPortal M4
- D: Bluetooth gamepad ( any modern Bluetooh gamepad will work…)
- E: Audio amplifier
- F: 8 Ohm speaker
Official git repository
Quico-related stuff is hosted here: https://gitlab.com/ricardoquesada/quico
TODO
The project is still in its early stage, so there is many things left to do. To name a few:
- Write games!
- Write documentation
- 3d-printed enclosure/border
- Polish