The Need for Emulation
May 5, 2026One of the first experiences I had with emulation occurred when I was a teenager using MS-DOS. I didn’t understand what emulation was at the time, not even conceptually. I was a burgeoning programmer to be sure, using all sorts of wonderful technologies like BASIC, QuickBASIC, C compilers to write simple programs. As a result, my experience was very narrow. I had even written primitive assembly language programs on more limited platforms like the Atari 800 XL. Impressed yet? Despite all of this vast experience, I was very naive about my new found hobby, if you can believe it.
On one fateful day, I was browsing the “hot downloads” on my local BBS and decided to download a curious program called “ZSNES,” which is a software emulator for the Super Nintendo Entertainment System. Once I had that downloaded and unpacked, I ran the main program and began looking through the menus. I did not understand the concept of a ROM file. I did not understand BIOS dumps. I did understand emulation. Did I let that stop me? After a bit of Internet sleuthing, I came across the required files fairly quickly. The Internet was a different place in the 1990’s, and it was trivially easy to find all manner of “unsavory” files. Back then, there was no stigma against ROM dumps or game backups, and lawyers were blessedly ignorant in this area, so things like music and small games were shared freely. Movie sharing needed to wait until technology in general grew up.
Once I had loaded my chosen ROM into the emulator, and it should be noted that I owned this game at the time, I was greeted by an all too familiar “tink” and the “Nintendo Presents” text on the screen. I could not believe what I was seeing, and I do not have the words to elaborate on how this experience altered my perception about how computers really worked. Save states anyone? Game Genies codes couldn’t hold a candle to this product of coding sorcery.
The revelation that I could now play SNES games on my computer was a song that needed to be sung and I was the new village preacher. Well, technically, I had a congregation size of one, maybe two if you included my cat and he didn’t have the same passion on the subject that I did. I could tell. The games looked fantastic on my VGA monitor and sounded great on my stereo (I used an FM transmitter). The experience far surpassed playing on my ho-hum console. As I started poking around the application, I uncovered all manner of technical details around how the SNES worked. It’s funny how I never gave the inner workings of game consoles much thought prior to this moment. I was the kind of teenager who wanted to take everything apart to reveal their secrets, much to the chagrin of my father, who wanted nothing more than for me to put that stereo back together right now and without any missing pieces this time! I had all kinds of interest in how computer games and programs worked, but consoles in my mind, were just different beasts altogether and completely inaccessible to me as a programmer.
This was true from a certain point of view. Console programming was a dark art, unless you had the blessing from the pantheon responsible for distributing development kits and technical manuals, and even if you had those kits, much of the development process was DIY. It was common for programmers with hardware knowledge to create their own interfaces and tools to make development and debugging easier when building games for these platforms, or even possible in some cases. The companies didn’t hold your hand and feed you websites filled with API documentation and pre-configured development machines.
This technical sleuthing into how this emulator worked sent me down a technical spiral that lasted a couple of years. I was changing the microcode in the ROM files to alter a game’s behavior. I was writing tools that dumped cartridge data and helped me piece it all together again. In one project, I wrote some code that dumped the tile-set for the Legend of Zelda: A Link to the Past, and then hacked an editing program called HyruleMagic to export the palettes and the tile maps, so I could color and organize the tiles. I used those colored tiles to build a small, boring Zelda game. I loved it.
Fast forward many years later, and my perspective on the gaming industry has changed significantly. While I have mostly lost that sense of wonder and magic around seeing programs like this for the first time, I can still feel that thrill on rare occasions. I still enjoy writing software, but for different reasons. I also see emulation from a very different angle now than I did on that day. I have never looked at emulation as a way for me to play illicit games. My parents supplied us with enough games, and I can afford to buy any game I want to play now. I also do not seek to collect massive numbers of games in an attempt to collect them all, a digital archive wasting away on a hard drive in my closet.
I see emulation as the only means to preserve technological and entertainment history. The outer shell of a console can be rebuilt, games can be archived, but if the details around the inner workings are not documented in excruciating detail, the technology required to run those games will be lost to time. Emulators serve as a great archive of how the machine worked, even if the software does not replicate the physical electronics, they do replicate the behavior of the system in so far as the logic, data, and processing are concerned.
Hardware eventually dies. Components stop working. The smallest component on a circuit board that has failed can cause the entire system to fail. Many people do not have the skill, time, desire, or the money to repair these machines, so they are resold or passed on, where they are eventually discarded by inheritors as junk. In time, the hardware supply will run out, and if emulation is not available, there would no longer be a way to experience the games of the past. You don’t need to go back very far in time to see this being played out with machines from the 1950s, 60s, and even later. There is a YouTube! channel called “Usagi Electric” whose owner takes the viewer on a journey around how the mechanics and the electronics are serviced from that era. It is not easy. The experts for those machines are retiring and passing on, and they are often key sources of information. Realistically, these machines never work when they enter his shop, and debugging one of those machines is a different problem than interpreting the symptoms. Unfortunately for Usagi Electric, there is precious little documentation available to those trying to resurrect them, even if there was an abundance when the machines were new.
The teams who write emulators are programmers who rarely work alone. It is often a team effort requiring several different kinds of skills. When you undertake a project like this, you need to understand the machine at a fundamental level. The companies behind these devices are not falling over themselves documenting how the machine works. It is exactly the opposite. Secrets abound in this domain and the companies behind this clever bit of engineering have zero incentive to document their hard work. As a result, emulator authors need to take the machines apart and try to build an understanding around how they work so that key systems can be simulated in software.
I need to underscore how difficult this job can be, even when trying to emulate relatively simple systems like the original Nintendo Entertainment System or Nintendo Gameboy. The process can require the knowledge and expertise in areas like hardware, software, and mathematics. Unrolling the functionality so that it can be accurately emulated is a large amount of work and these people are doing it mostly in the dark and for free. Earlier systems tended to be simpler with relatively few custom chips. Programmers could leverage hardware specifications for known chips to understand how they worked, but as the cost for producing custom chips went down, their use went up. Custom chips are rarely documented in a form available to the public, so they must be approached as a black box when trying to reveal their secrets. More sophisticated techniques for reverse engineering systems have been developed over the years, such as x-ray analysis or de-capping chips using chemistry or lasers. This knowledge is neither pervasive nor easily accessible for most hobbyists, and even if you could illuminate the guts of the chip, understanding what you are seeing is a whole different ball game, so they must rely on the results and the talents of others.
It cannot be overstated how unhelpful most companies are in this regard. Practically speaking, they do not want to legally separate the machine that runs the software from the intellectual property (IP) they are trying to protect. The console manufacturer doesn’t really care about the console from a money making perspective, it is primarily a delivery system for the products that do matter. The technical edge that a console has when it is first released, if any, is quickly overtaken by competitors in the market. A successful game franchise, like Mario Bros. for example, is a cash cow that keeps on delivering, year after year, console after console. As a result, lawyers abound in companies with IP to protect.
I understand their position and empathize with it. I do not think people should pirate software. While I enjoy the idea of playing a home-brew Zelda or Mario game, I understand and agree that these creations diminish the brand and could take the property to places they do not want it to go.
I also do not believe that the responsibility for preserving this part of our technological history should be entirely shouldered by the public. The unfortunate reality is that companies are constantly pushed to follow the money, and are incentivized towards building solutions that focus only on supporting the most lucrative software titles. This can mean that many properties get left behind and are no longer promoted or developed. As an example, Nintendo’s catalog of supported games through their virtual console platform continues to diminish after every new console release. What incentive do they have in providing the public access to the full library of games? Without emulation, the games that do not meet the cut are lost. Once a company folds, it becomes even more difficult to surface details about the platforms and the games.
Thus the responsibility for developing a solution to play these games falls to the public, and many emulator authors are actively punished for doing so. On the one hand, I do not think that the authors of a tool should be criminally responsible for building it. If I make high quality hammers and you decide to buy one and then proceed to smite your enemies with it, it’s not my fault simply because I made the hammer. On the other hand, there is a fine line here that is worth debating. While it is true that emulators can run custom software, it is also true that the primary use for such a product is to run commercially released software. Therefore certain companies aggressively defend their IP from these threats, and like the war on drugs, the defenders tend to go after the big fish.
There needs to be a balance, something in-between excessive prosecution and outright piracy. As a culture, things like games, film, art, music, and books are a creative part of the sociological fabric and shape us more than we would like to admit, we should all want to preserve these works so they can be enjoyed by future generations.
Categories: Retro, Software
No Comments »
Amiga 500 and OSSC to DVI
September 14, 2025I am currently using the common CGA/EGA/RGB/YUV to VGA converter board to display the video output from my Amgia 500 to a modern LCD. The output quality is OK, but nothing to write home about. It works well enough for games, but not as well when running Workbench.
I wanted to try using OSSC and an Amiga RGB to SCART cable and determine if there was a reasonable difference in quality. At first, the OSSC was having technical issues trying to lock onto the 15KHz signal from the Amiga. I did a bit of digging and I discovered that I needed to upgrade the unit. I had a 1.6 OSSC unit and I needed to upgrade it to 1.8. These are hardware revisions and not firmware versions. Usually, you cannot simply upgrade a piece of hardware to a new version. Luckily, in this instance, it can be done by implementing a couple of small hardware modifications. Be forewarned, it involves soldering really small details, like removing a resistor which is a little larger than 1mm in size and soldering a thin wire to the pin of a micro-controller, which is less than 1mm in width.
Once that is done, you need to set TX mode for the OSSC to DVI; it is set to HDMI by default.
I then needed to upgrade my firmware version, which must be accessed using the remote control for the unit and is not accessible via the two buttons on the unit. The process is quick and straight forward, just follow the instructions on the wiki. I used the latest version at the time, which was 1.12.
The result was a video signal that was better than the one I am getting from the signal conversion boards. I cannot upgrade my setup right now as I need to purchase another Amiga RGB to SCART cable and another OSSC, since my setup also includes and Amiga 1000. I would also need to get a DVI switch box since that is the best video input supported by the monitor I am using.
Categories: Amiga
No Comments »
Advil for Your Max Payne
August 26, 2025I recently wrote about my attempt to install Max Payne on a seemingly compatible Windows 98 SE system. I said I would update my progress if anything changed.
I decided to try the install on a Windows XP system sporting an NVIDIA GeForce 2 MX 400 video card, a Creative sound card (I think it’s a Sound Blaster Live!), and a LITE-ON DVD-RW SHW 160P6S optical drive. Nothing too fancy.
It installed and ran perfectly using the original release disc, no patches required, although I might decide to patch it if there are bugs that should be fixed.
Categories: Games, Windows
No Comments »
Max Payne can be a Real Pain on Windows 98
August 24, 2025Most predictable title ever. I must be an NPC.
I am one of those weird people who love PC computing from 1985 to 2001. I have a machine that runs Windows 98 natively along with a blistering 16X speed Yamaha CRW4416E CD-ROM, Sound Blaster sound card, and ATI Radeon 9600 series graphics card. I have been trying to get an authentic installation of Max Payne to run on this machine for a couple of days of on and off tinkering. The core issue seems to be around the terrible disk protection mechanism they used called SafeDisc.
At first I thought it was just the speed of the CD-ROM, which was causing the game to not recognize legitimate media. It was throwing a dialog box up stating “Cannot locate the CD-ROM” with additional text “Please insert the correct CD-ROM, select OK and restart application.” So, I lowered the speed to 4X using a utility called Nero DriveSpeed. That helped get past that particular error.
At this point, the game would start and the initial movie would play. After aborting the movie or letting it complete, the game would crash before reaching the game menu. Sometimes the crash would exit the game, other times it would cause the screen to freeze and require a reboot. I have tried running the game using different versions of DirectX and different screen resolutions and color depths. No dice. I am sitting at the latest version of DirectX (v9.0c) for Windows 98.
The confusing part in all of this is that this is a PC configuration that is suppose to be 100% compatible with the game. It should be noted that I have very little additional software installed on this machine which could cause compatibility issues. After researching the issue, it seems that people have more luck getting the game to run on Windows XP than on Windows 98, but it could also be that most of the people who posted an issue were using that setup; it is impossible to say.
I will dig into this a bit more over time, but it will be a slog.
Categories: Games, Windows
No Comments »
Gex 3: Enter the Gecko
August 17, 2025I love this game, and I do have an appropriate piece of hardware history sitting in my game room, so I decided to try and get it running on my Windows 98SE installation. I have a Radeon 9600 series video card, which has served me well for many games. The DirectX gods did not favour us this time, however, and I could not get the game to run. I did install nGlide 1.05, which provides a series of Glide wrappers, but that did not get the game up and running for whatever reason.
I should mention that I am assuming it is a 3dfx compatibility issue at this point, but before that, I did try multiple resolutions and colour depths. I did not find an official patch for the game.
I think I need to build a 3dfx machine to get this working. The good news is that there are several games requiring 3dfx acceleration in the market, so it would not be one off build.
Categories: Games, PC, Windows
No Comments »
Cyberpunk 2077
August 15, 2025As a preamble, I truly tip my hat to the team who built this game. I can only imagine the hell you went through to get this title out the door. I hope you all feel it was worth it.
I have started and re-started this game four times since I bought it back during the Covid pandemic. Each time I reboot this process, I end up playing for about 2-3 hours and then I stop. I do not pick it back up again for several months, and then I try again. I do not know what it is about this game that stops me from continuing to play, so I thought I would write my thoughts down and try to sort it out.
From a story line perspective, it does not grip me in the first few hours or compel to continue playing. There is no mystery that is revealed in the first few hours. There is no great calamity or evil threatening the land. No one has been captured, and no one or nothing has been lost. There is no pull, other than curiosity.
There are many decisions to make and things to learn in this short period of time. Perhaps too many. I recall feeling a bit overwhelmed at just the input control scheme.
You have an arsenal of weapons to choose from over the course of the first few hours, and your inventory will continue to swell for a long time after that according to some reviews I have read. You can change your clothing into a near infinite number of combinations, and anything else about your body you find undesirable, including the size of your genitals (if you are playing with those options enabled). You can hack machines and people using novel skills and technical mods. Fancy a sharp stick instead of a pee shooter? Swords and daggers are options along with a bevy of special fighting manoeuvres. Don’t feel like walking? Buy, steal, or earn your wheels; the selection is truly insane and the vehicles are nicely modelled. Anyway, I could go on, but I am starting to feel overwhelmed just listing the options out.
The voice acting and script is top notch. They had access to some real talent when they made this game. You have three different starting paths at the beginning of the game and you need to choose one. I don’t remember the option, I think it was nomad or something along those lines. Some games do have annoying dialog and voice talent, which can lead to burn out, but this game isn’t one of them.
It’s not that I avoid complex games. I have played many games with deep plots, vast skill trees, and control schemes that leave your hands feeling nicely tenderized.
My symptoms are not unique. I have read and listened to similar comments from other people. At some point on their journey, a few decided to clench their buttocks and learn this system. This system that is posing as a game. In the aftermath, all of them said that it was worth the effort. In this round, I would like to get a little further than I did in my last attempt.
Basically, I am trying to find the fun, and I will let you know when I do.
Categories: Games, Steam
No Comments »
Amiga 500 White Screen
May 27, 2025For the first time since I have owned an Amiga computer (you can read this as years in the making), the fix for an issue I was having was straight forward and quick! Starting about a year ago, I was getting a white screen from time to time; nothing too major, I just needed to reboot the system a few times, sometimes requiring that the system stay on for a minute or two between reboot cycles. However, today the system decided to not load into Kickstart at all after many reboots. The fix was to unseat the Paula chip, spray a little contact cleaner, and re-seat it. It booted into the ROM on the first try.
Categories: Amiga, Hardware
No Comments »
Getaway! Hack
January 14, 2025There are a few go-to games for the Atari 800 that I play frequently. One of them is a cops and robbers game called Getaway! Without getting into too much detail around the game play, you play the robber who canvases the city looking for treasure to steal and unmarked white vans to hi-jack and loot. The cops are roaming the city, essentially randomly, until you perform a specific action or a game play event takes place. One such action is robbing the white van, and an event could be the game transitioning to dusk or night fall. Once that happens, the cops immediately seek you out and give chase. As your score gets larger, they also become more suspicious and start chasing you sooner.
I find that the game gets considerably more difficult around 7000 points and I have yet to break the 8000 point barrier as of this writing.
As you progress through the game, there are different treasures that appear, giving different point values when you collect them. I wanted to know how many treasures there were in the game and what happens as you get to higher scores. Also, I have often thought that the game would be fun for young kids, if the police did not act so aggressively. They would have a blast driving around and collecting the treasure. Note that the game isn’t fun for an adult when this change is made, but a four year old would probably love it. If you find the modified game entertaining, you may not want to post that in the comments.
The author of the game, Mark Reid, released the source code to the game in 2017 on Github. It is written in assembly language but some of the basics can be puzzled out if you are familiar with a few core instructions. Like many computers of the era, the system is driven by a 6502 processor. Unlike many systems, it is clocked at a higher frequency than many of its competitors, running at a blazing 1.79 MHz for NTSC systems.
At any rate, I wanted to modify the game so that the cops would always remain in their random, passive state. The code refers to this state as “dumb” and the opposite behaviour as “smart.” To change it, just modify this piece of code:
COP031 CPX #4 ;Van is dumb
BCS DUMB
LDA RANDOM ;if SKILL>RANDOM
CMP SKILL ; COPs smart
BCC SMART
To this:
COP031 CPX #4 ;Van is dumb
BCS DUMB
LDA RANDOM ;if SKILL>RANDOM
CMP SKILL ; COPs dumb
BCC DUMB
Assemble the code. I think I needed to fix a few issues first, such as disabling debug mode which is found at the top of the module. If you leave the debug mode set to ‘2’, it will produce a weird looking map by default.
;
; compilation flags
;
DEBUG = 0 ; nonzero includes debugging code & sets debug map
There may also have been a few include paths that needed to be changed as well. At any rate, once those changes are done the assembler will produce a “getaway.exe” file. It is not a Windows executable file so don’t try and run it; just rename it to “getaway.xex” since that seems to be the format. I copied the file to my Lotharek drive and played it on the Atari, you could also choose to fire it up in an emulator.
Categories: Atari 8-bit, Games, Programming
No Comments »
Nintendo Switch – No Display via Dock
December 3, 2024I have seen this issue posted around the Internet, but nothing related to the issue I encountered. The short version is that there are two kinds of Nintendo branded power adapters for the Nintendo Switch. One is a charging adapter, that is intended to charge your console, and will only deliver 5V 1.5A to it. The other adds an additional 12V 2A supply that is required for the dock to function. Using the former will not work, and the console will show a message stating to use the adapter that came with the device. Over time, you may forget, like I did, that there are two versions. The annoying aspect to this whole scenario is that Nintendo branded power adapter are $30 + tax in Canada. For that price, and in my humble opinion, they should have included a USB C compliant power adapter that delivers the appropriate voltages for all of their device scenarios.
Categories: Nintendo
No Comments »
DOOM 3: BFG w/o Steam
April 1, 2024Round two. Playing DOOM 3: BFG outside of Steam works very well. Just check out this project and set it up as per the “Quick Installation Guide” in the second link.
- https://github.com/RobertBeckebans/RBDOOM-3-BFG/?tab=readme-ov-file
- https://github.com/RobertBeckebans/RBDOOM-3-BFG/releases
Categories: Games, Windows
No Comments »

