Sinistar
A source code rewrite to the 1983 arcade game.
Install / Use
/learn @synamaxmusic/SinistarREADME
A game by Sam Dicker, Noah Falstein, R.J. Mical and Richard Witt
Source code rewrite by SynaMax, started November 6th, 2023; complete ROM set rebuilt for the first time on January 12th, 2024 (sound and speech code added on the 15th and 16th respectively).
Original game concept by John Newcomer
Artwork by Jack Haeger
Sound ROM (VSNDRM9/VSNDRM10) programmed by Mike Metz
Speech routines programmed by John Kotlarik
Special thanks to: Kay Anderson, Harry Cline, Kristina Donofrio, Ken Fedesna, Ken Graham (RIP), Rich Grande, Ken Lantz, Pierre Maloka, Keith McMillen, John Meissen, Tim Murphy, Tom O'Meara, Bill Pfutzenreuter, Rudy Plemich, Dave Rzepka, Marc Stanis, Ed Suchocki, and Stewart West
SynaMax would like to thank: HistoricalSource, braedel, kgalocy, mecha, Daniel Lopez, Tony Temple, AT Gonzalez, Nick Bernhard, Alfred Arnold for creating {AS}, David "Haze" Haywood, "N-F", all my fans and subscribers from my YouTube channel, my Patreon supporters, everyone on KLOV who has shown their appreciation and encouragement; and last but not least, my spouse for their never-ending patience and support during this project.
The original source code for the game can be found at https://github.com/historicalsource/sinistar/
For the first time ever, the source code for the sound and speech ROMs are included with the game code. The older version of the recreated sound ROM source can be found here: https://github.com/synamaxmusic/Sinistar-Sound-ROM/
<!-- vim-markdown-toc GFM -->
- Important Milestones
- Overview
- Build Instructions
- About the source code
- Rewriting the source code
- Source code map
- Debug Options
- Mods
- Mod Combos
- Experimental Debug Options
- Old deprecated defines
Important Milestones
{Warning: flashing images below)
-
08/20/2025 - Wow, a lot has happened since I last updated this readme file 11 months ago. On April 30th, I released a documentary on my YouTube channel regarding the history and development of Sinistar at Williams Electronics, along with chronicling this cyber-archaeology journey of retarging the game's code. Using what I had learned during the two-years of working on this project I added more mods to the game, including a brand new shield system for the player that makes the gameplay a little bit easier, while adding a bunch of exciting features like new sound cues, HUD messages, and special effects. The positive reception for both the video and the new mod has exceeded all my expections!
Shortly after releasing the documentary, I was contacted by the organizers of the prestigious California Extreme pinball convention. They asked me to host a Sinistar presentation panel (along with bringing the shield mod so that it can be available to play on the showfloor - running on original hardware no less). As the event was fast approaching, we reached out to the dev team members to see if they would like to join us and before I knew it, the presentation had evolved into a reunion! Jack Haeger and Ken Lantz joined in via Zoom call, while Sam, Noah, and RJ were there in person. I also invited Jason Scott from the Internet Archive to join us and he gave an great intro speech. It was a truly once-in-a-lifetime event and from what I understand, it was the first time since 1983 that these 5 individuals were in the same room together (albeit two of them virtually). For me, it was truly an honor and a dream come true getting to host the panel and meeting the Sinistar developers in-person. I got to listen to new stories about the development history that I had never heard before and reminiscence about the game's legacy with the very people who created it. It's incredible to think that all of that was made possible thanks to my obsession with getting this codebase working again. My heartfelt gratitude goes out to everyone who has supported me and helped make this a reality. As promised, I have included the source code for the shield mod in this codebase for everyone to see.
-
09/10/2024 - Added a new mod combo that enables Sam's "TAIL" routine, the Marquee title screen fix, and changes the default value of the additional points per extra ship factor from 30,000 to 5,000 (which was confirmed by Noah to be a quick way of increasing the game's difficulty without messing up the game's tuning). This mod combo (19645) is probably the closest we'll get to making a "perfect" ROM set: it has the originally intended special graphics that were removed and it has Noah's final tuning of the enemy populations, but now it's much easier to score lives by default. Note: it is required to do a factory reset to make sure the new default value for the extra ships is copied over to NVRAM.
-
08/09/2024 - When I first uploaded the codebase to Github, I was disappointed to see that there were a lot of spacing issues everywhere. Tabs were used extensively in the original code so when I did the rewrite, I copied what the programmers did. Unfortunately, all these tabs (other than the leading indentations) were ruining the code formatting; but then the code would display correctly in the online editor.
I wasn't sure how to fix this for the longest time and I've been pushing it off until today. I'm forever grateful to the devs of Notepad++ because I was able to quickly go through the entire codebase and convert all the tabs into spaces using that text editor's powerful macro playback features. Before doing all of this, I confirmed in a separate test branch that the tab conversion indeed fixed the issue. All extra trailing spaces have been removed as well. The codebase is so much nicer to look at now and can be compared side-to-side with the original codebase from historicalsource!
Another thing that I changed was moving all the debug and mod options into a brand new file called,
mods.asm. This reduces a lot of clutter inMAKE.ASM. -
06/21/2024 - I have a surprise announcement! Sinistar's early "prototype" AMOA build from November 1982 is now rebuildable from the source code! In order to do this, I created a new repository and uploaded the AMOA edits there. This was done to keep the current codebase from getting too messy as there were a lot of edits that had to be made; it took ten days to get the ROMs to match up! With this code, we can finally start to completely understand what exactly changed between versions, other than the obvious missing stuff like the Sinistar biting the player ship. You can view the code here: https://github.com/synamaxmusic/sinistar-amoa
-
06/04/2024 - I just now discovered that back in February, Macro Assembler {AS} version 1.42 Build 262 changed the way it handles 6809 instructions that use an empty first argument on indexed address expressions (i.e. using
LDA Xinstead ofLDA ,X). This syntax is used extensively throughout the codebase and now results in errors when trying to build the game. A new instruction specific to AS has been inserted in theMAKE.ASMfile to fix this issue. -
05/24/2024 - I pushed an important fix for the new
SAMTAILmod. Braedel discovered by accident that the watchdog chip was still triggering a system reset after the initial "rug screen" checksum test. I narrowed down the problem to the initialization section of the TAIL routine where theINITRAMroutine is called a lot to to generate the thruster plume graphic effect. To insert the instructions needed to fix the issue, I found aCLRBinstruction that allowed me to use the B register without messing up anything else in the routine. According to Sean Riddle, preventing the watchdog from being triggered requires writing $39 to address $CBFF within 8 vertical blanking periods (about 133 milliseconds). The Williams devs refer to this as "stroking" or "feeding the watchdog". TheTAILroutine was allowing just enough VBLANKs between writes to cause the watchdog to "bark" and reset the system. Of course, this doesn't happen currently with MAME emulation so the watchdog never resets the machine, like it was doing on hardware.The fact that I had to add the watchdog instructions to this routine make me wonder
