Retrocomputing

Retro music - Open Cubic Player

K.3.401
Stian Sebastian Skjelstad
This presentation includes multiple topics mixed together * Porting a DOS multimedia program into Linux/BSD * How music was composed/stored in old type of games from the 8bit era, up into the amiga (and partly the DOS world) * How does audio/music hardware work. C64 SID, ZX-Spectrum and alike, Amiga, Adlib FM-synth OPL2/3 and General Midi
As a child, I was exposed to Cubic Player. This program was a text-based music player. All the color full texts mesmerized me and it gave a direct visual feedback of how the music was generated. During teenage years I learned programming and got introduced to Linux. All the sourcecode for everything was available. The kernel, multimedia libraries, tools, all kind of APIs. If there are anything you wonder how works, you can inspect it. If you are unable resolve a specific detail in your own project, try to find another project that has done something similar! But for playback of these Amiga style modules, there was no programs that had the same charm as Cubic Player. Programs like mikmod, XMMS, Audacious only displayed playlist, maybe instrument-names and maybe an spectrum analyzer. When I discovered that Cubic Player had been released as Open Cubic Player. I grabbed the source code and started to study it. All of it was based on direct hardware access, as it was written for DOS. Direct access to video-memory/hardware, raw keyboard scan codes, hardware interrupts for timers allowing background rendering of audio if needed etc. A natural candidate for a novice programmer to port? Slowly I went through one and one single file of the original source code. * Lots of logic could be kept * Some could be thrown away like direct audio hardware drivers * Some needed heavy rewrites like video output * Assembler needed to be rewritten into C inlines * The timer interrupt porting caused a zero-day kernel bug to be discovered https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-0554 When text appears on the screen, and audio (highly distorted in the beginning) appeared, was a magical feeling. Progress was faster when the goal felt to be well within the reach. When you the make your code public, people start to use it... and you start to get feedback like: * Program is unable to compile on other platforms * Program crash on other platforms * Specific crashes that only happens for some few people - compiler bugs (these were more common back in the days) How did old systems playback music? Using specific hardware circuits. How is music composed / stored / playback? We will take a deep dive into these two questions on these platforms: ZX-Spectrum 128 .AY files - Using code chopped out from "aylet" Atari ST .YM files - Using ST Sound Library C64 .SID files - libsidplay OPL2/OPL3 style - libadplug Amiga style modules General MIDI - TiMidity++ Open Source makes it possible to combine the work and effort from multiple volunteers. Not everything is a always an easy walk in the park, but it sure makes it easier than writing everything from scratch when there are known working code that can be either be used as a template or wrapped around.

Additional information

Type devroom

More sessions

2/1/20
Retrocomputing
K.3.401
A quick introduction to the 3rd edition of the retro-computing devroom.
2/1/20
Retrocomputing
Christophe de Dinechin
K.3.401
Alpha Waves is the first 3D platform game ever, according to the Guiness Book of Records. Initially developed on Atari ST, it was then ported on Amiga and on the IBM PC. The technology later gave rise to Alone in the Dark, a major game that launched Infogrames in the big league. This is the history of that game.
2/1/20
Retrocomputing
Rob Hagemans
K.3.401
At the height of the cold war, BASIC programs exchanged by radio and cassette tape provided young people of socialist Eastern and capitalist Western Europe a rare insight into each other's worlds. BASICODE was a transmission format and an API developed by the Dutch public broadcasting service to overcome the challenge of exchanging open source hobby programs in the highly fragmented 8-bit computing landscape of the early 1980s, which was dominated by mutually incompatible versions of BASIC. ...
2/1/20
Retrocomputing
Frédéric Bisson
K.3.401
Using web technologies, one can easily emulate the Minitel ecosystem, not only the iconic french terminal but also its servers. This easiness has been made possible due to ES6 and websockets.
2/1/20
Retrocomputing
Ben Dooks
K.3.401
Going from seeing an image of a cartridge that I would have loved to have had for my VIC-20 to working out how it was built and then making my own.
2/1/20
Retrocomputing
Jeroen Baten
K.3.401
Yes, this talk is about running your own mainframe on your own hardware. Mainframes are old, yes, but they are still very much alive. New hardware is still being developed and there are a lot of fresh jobs in this area too. A lot of mainframes run COBOL workloads. COBOL is far from a dead language. It processes an estimated 85% of all business transactions, and 5 billion lines of new COBOL code are written every year. In this session the speaker will help you in take your first steps towards ...
2/1/20
Retrocomputing
Rui Martins
K.3.401
Reverse engineering an Arcade game and re-implementing it into an 8 bit system is an engineering exercise, where compromises have to be made in order to accomplish the goal, since the capabilities of the target machine are severely under powered when compared with the source machine. The processes of accomplishing this and all it involves, will be presented.