Designing a modern retro console for (my) kids: Adding chiptune music

The ideal modern-retro video game console https://www.youtube.com/watch?v=G_Fzt8RlbFc My goal is to build a video game console for (my) kids. I want to teach them programming in a fun way: fun for them… and also fun for me. The video-game console features are: Modern components, with a retro “spirit”. Easy to program, a must. Chosen: Python, in particular CircuitPython Gamepad support: Multiple gamepads at the same time (multiplayer is a must). Chosen: Bluepad32 firmware since it supports all modern Bluetooth gamepads ( see my previous post) “Retro” sound: Chosen: SN76489 (more info down below) “Retro” screen: Chosen: 64x32 LED matrix. Let’s see what we can do in this extremely low-resolution screen. A powerful enough micro-controller: Chosen: Matrix Portal M4, mostly for convenience since it comes with an ARM Cortex M4, ESP32, “expansion port” + header to connect to the matrix LED. It already supports CircuitPython. As a bonus it has an accelerometer. Portability: It should be portable, no need to use an external power supply. In other words, I’m building a Nintendo Switch killer. What will happen next is that Nintendo will run out of business. If this happens, my 7-year-old kid will kill me, since his dream is to be a video game designer at Nintendo… so probably I shouldn’t be that aggressive in my marketing campaign.

December 13, 2020 · 5 min · ricardoquesada

Bluepad32: Gamepad support for ESP32

I’m happy to announce the release of Bluepad32: gamepad support for the ESP32. Bluepad32 is a firmware that runs in the ESP32 microcontroller. It supports all the modern Bluetooth gamepads like Sony (PS5, PS4, PS3), Microsoft (Xbox One S) and Nintendo (Switch, Wii) gamepads. https://www.youtube.com/watch?v=V0AGUe-CrEY Who is this for? This is for: …tinkers / makers / electronic hobbyist …that want to add gamepad support into their projects …in a maintainable and easy way For further info, read: Adding new platforms. Real world examples Unijoysticle 2: Gamepad support for the Commodore 64 / Amiga / etc. MatrixPortal M4: Gamepad support for the Adafruit AirLift family of boards ULX3S: An FPGA-based computer Just add an ESP32 to your project, and control it with a gamepad!

November 24, 2020 · 2 min · ricardoquesada

Unijoysticle 2: Nintendo controllers and more!

Unijoysticle 2 Christmas 2019 update, with support for: Nintendo Wii Remote Nintendo Wii U Pro Controller Nintendo Wii Remote + Nunchuk extension Nintendo Wii Remote + Classic Controller extension Nintendo Switch Pro controller 8BitDo family: all modes supported (Switch, Windows, Mac, Android). iCade 8-bitty It also supports: ...

December 23, 2019 · 1 min · ricardoquesada

Commando disassembled - fully commented code

In order to create Commando 2084, I had to disassemble Commando. My original intention was to patch what was only needed and stop there. But I got carried away and I ended up analyzing and commenting the entire Commando code. The commented code (that can be recompiled to generate the exact original binary) is here: https://gitlab.com/ricardoquesada/c64-commando-2084/tree/orig

October 2, 2019 · 4 min · ricardoquesada

Commando 2084 - a game for the Commodore 64

Commando 2084 is the mix between Commando and Robotron 2084: it is like the original Commando game, but using the Robotron 2084 controls.

September 29, 2019 · 2 min · ricardoquesada

Unijoysticle 2: modern bluetooth gamepads for retro computers

Announcing Unijoysticle 2: Use modern Bluetooth controllers (gamepads, mice, smart TV remote controllers) in retro computers like the Commodore 64/128, Atari ST, Amiga and more. For further info go here: /unijoysticle2

April 16, 2019 · 1 min · ricardoquesada

Atari ST: First impressions

A few months ago I got an Atari 1040 STF. I knew nothing about it when I got it, except that it was a similar to the Amiga. The Atari ST, the Amiga and the Macintosh were computers released in the mid 80’s, all of them based on the Motorola 68k, and all of them came with a windows-based GUI. This was a revolutionary step compared to the 8-bit machines which were CLI text-driven. The base “ST” model includes: 8 Mhz Motorola 68000 CPU Yamaha YM2149 3-voice square-wave plus 1-voice white noise (mono) 512Kb or 1Mb RAM (520 vs 1040 models) 3 video modes: 320 x 200 x 16 colors (from a 512 color palette). 640 x 200 x 4 colors (from a 512 color palette) 640 x 400 x 2 colors (I believe this is only B/W) Midi In / Out: Apparently a killer feature for musicians. Compared with the 8-bit home computers like the C64/C128, the Atari ST is a good improvement. From only 64K/128K RAM to 512K (or 1024K) RAM, an 8 Mhz CPU (vs. 1 or 2 Mhz) and Midi. But there are no hardware sprites (no blitter), and the music is chiptune, like in the C64. The C64 SID chip might be even better. The video modes are OKish. Having a 320x200 @ 16 colors from a palette of 512 is nice, but not that impressive. It is worth noting that the Atari ST (like the Amiga and the Macintosh) don’t have “text video modes”, they only have “graphic” ones.

November 8, 2018 · 6 min · ricardoquesada

64K RAM Ought to be Enough: a demo for the PCjr

Updated 2018–10–08 https://www.youtube.com/watch?v=uakDpJns9LA A demo for the IBM PCjr by Pungas de Villa Martelli. It was presented at Flashparty 2018 and won the Demo category. Requirements An IBM PCjr with at least 64k RAM. Download Source code: https://gitlab.com/ricardoquesada/pcjr-flashparty–2018 Binary: pvm-64ko.zip (does not run on emulators) Technical description The demo is divided in the boot loader and demo 3 parts Boot loader [caption id="" align=“alignnone” width=“512”] Boot loader[/caption] The demo is intended to work with a 64K RAM (or more) PCjr. Booting from its own boot loader is needed to save precious memory. DOS alone takes ~20K of RAM. That is 30% of the total memory. You don’t want to waste that memory.

September 27, 2018 · 9 min · ricardoquesada

Cromemco System 3 computer

The Cromemco System Three is a Z-80 based computer. Which is nice, because I always wanted to learn Z-80 (this is my second Z-80 computer, the other one is a MSX2). But What I like about the Cromemco is how well-built it is. I love it. https://www.youtube.com/watch?v=zz7FH5TeOzs The computer is that not big, but it is a very heavy computer. At the moment I don’t have the needed cables to test it. If I can’t find them, I might be able to build them myself (or not). If manage to get the cables, and provided that the computer works, I promise to write a game or something for it :) Photos: [caption id="" align=“alignnone” width=“512”] Cromemco System Three[/caption]

March 7, 2018 · 1 min · ricardoquesada

Performance of the 8088 on PC, PCjr and Tandy 1000

It’s well-known that you should measure the performance of your code, and not rely only on the opcode’s “cycle counts”. But how fast is an IBM PC 5150 compared to a PCjr ? or to a Tandy 1000? or how fast is the Tandy 1000 HX in fast mode (7.16Mhz) compared to the slow mode (4.77Mhz) ? Or how fast is a nop compared to a cwd ? I created a test ( perf.asm) that measures the performance of different opcodes and run it on different Intel 8088 machines. I run the test multiple times just to make sure the results were stable enough. All interrupts were disabled, except the Timer (of course). And on the PCjr the NMI is disabled as well. Without further ado, here are the results: Intel 8088 opcodes performance

March 5, 2018 · 3 min · ricardoquesada