A couple of people have been asking about the technical details of our latest games: BRIDE and SQUEEZE. We don't (yet) have time to really talk in detail about the joys of developing for a certain game and time-keeping platform (perhaps that is best left to heaven). However, we did want to go ahead and give a high level overview.

Initial Design Sketch

First off, yes: they are real LCD games. At least, in some sense. They were written in Sharp SM510 assembly and were produced with MAME in mind. They are designed to be compatible with machine configurations already supported by MAME as part of its newly introduced handheld compatibility. BRIDE runs on the same hardware as Donkey Kong Jr.. SQUEEZE runs on the same dual-screen hardware as Mickey & Donald.

Improved Design Sketch

Both of these games use the earlier SM510 and not the expanded SM511 or it's brethren. That means we were limited to roughly 2772 bytes of ROM (divided into 63 byte "pages"), 64 bytes of RAM (128 4-bit words, 32 of which are taken up by the "screen"), and must produce sound by "bit banging" a 4096Hz oscillator. The chip has a 32,768Hz oscillator but the system clock runs at "one second" that or 16,384Hz with an instruction cycle taking roughly a single clock tick. That means the clock/instruction speed is audible even to a geriatric and that the clock signal could accurately be stored on an audio CD or even a compact cassette!

Background Sketch

MAME itself has an excellent debugger for the Sharp line of chips and Paul Robson had previously written an assembler. However, his assembler was optimized for his own emulator so we ended up writing our own.

Early Game Field Vectors

MAME expects LCD "screens" to be SVG images with individually addressable segments. Backdrops and overlays are stored as transparency enabled rasters. For maximum consistency and to future proof the games, we took on producing everything as vector art. It kind of sucked, but we think it was worth it. The web/iOS versions of the games use these vector versions. For MAME only, the backdrops and overlays are rasterized.

Final Game Field

Speaking of the web/iOS versions: For these we took the SM510 opcode interpreter from the MAME project and compiled it to WebAssembly using Emscripten. We filled in everything else required for full emulation (IO, audio, visualization) ourselves with pure JavaScript. This allows the games to run a little bit more efficiently and in a few more configurations than the pre-existing (and more general) web port based on SDL. However, we still have issues running on Chrome on certain Android devices (due to poor support for small audio buffers). FireFox runs fine though.

In terms of design, we took our cues from the way a certain company handled it and designed the games mostly visually. The art and animations were prepared and the gameplay was built around that. We would like to think that we've done a good job not just emulating (literally) the platform, but the aesthetics and gameplay of the LCD originals. We'd love to know what you think!

Click to Play BRIDE!