carlostex wrote:My lack of experience in patching games didn't help as i didn't look thoroughly into game files enough, making me believe that some games were much harder to patch than they actually were. One perfect example of this was Budokan: The Martial Spirit.
Yea, a lot of games had very simple code with address 220h hardcoded, so just changing all instances of '220h' to '210h' did the job.
Some games used a variable to store the base address. In which case it took a bit of detective work to see where this variable was being manipulated. In some cases, it turned out that there were undocumented commandline or other configuration settings, so you didn't actually have to patch the game, you just had to reverse-engineer how to configure it.
Budokan and a few others had the problem that the sound code was not in the main part of the game, so you first had to figure out where the code actually came from. Then it turned out that the code was stored in some kind of compressed or encrypted file, so in order to patch it, you would either have to reverse engineer the compression/encryption scheme, or you'd have to patch it in-memory by using some kind of TSR that would hook into some strategic place (eg the DOS FILE API), and make sure it would patch AFTER the proper code was loaded.
Then there were also some 'broken' games. As in: they would have some kind of autodetection scheme, so you couldn't get them to use CMS when an AdLib or SB was installed in the system.
In some cases this was 'by design': apparently the developers figured that if you had multiple sound cards, the one they considered 'the best' would be selected.
In some cases, it really was broken. As in, you could actually configure the soundcard you wanted with an installation tool or commandline option, but the autodetection would still override it.
This would often result in quite a bit of detective work to figure out just where to patch, so the autodetection scheme could be bypassed. This scenario was also extremely common with the Tandy Sound Card. Many games were developed with the assumption that a Tandy machine would ALWAYS use Tandy sound, and any other machine would NEVER use Tandy sound. Worst case scenario was that there were separate binaries for Tandy and regular PCs, so the entire Tandy sound code was simply missing altogether in the binaries for CGA/EGA/VGA graphics.