Trixter
Veteran Member
In my defense, I didn't want to disassemble the entire thing, but rather teach CarlosTex a little assembly. RE'ing AMB.EXE in IDA, I can see that you're right
There's actually Tandy detection code in there too.
The NOT instruction to perform the inversion is only so that values of FF, FE, FD, and FC show up as 0, 1, 2, or 3. (Which is weird, they could have just compared the byte directly, but whatever.) This is their way of checking if the model byte matches FF (IBM PC, or Tandy if f000:c000=21h), FE (PC/XT), FD (PCjr), or FC (PC/AT).
In my defense, I didn't want to disassemble the entire thing, but rather teach CarlosTex a little assembly.
The first two jumps are for Compaq and Tandy detection. NOP them so it always falls through to the PCjr check. Then change "not bl" to "mov bl, 2". This is the value bl would have if the machine byte was FDh (for PCjr) and then inverted.
It is rather silly that they check for Tandy and then force it to use PC speaker. Maybe the authors really hated Tandy owners
seg000:0346 mov ah, es:0FFFEh
seg000:034B cmp ah, 0FDh ; '²'
seg000:034E mov al, 0
seg000:0350 jnz short loc_10354
seg000:0352 mov al, 4
Do we have a repo for these patched versions yet?
If not, I am offering to set up an FTP directory on ftp.oldskool.org and give the login/password to a user who is not myself, so that said user can be the contact for "forced tandy audio patched games" and upload them. I nominate CarlosTex.
Are there any public file sharing sites that allow multiple people to have admin access to a single repo? You'd think that problem would have been solved by now. I know github can work in that capacity, but using it as a dump for patched binaries is not in the spirit of using github and is likely against their terms of service.
What if we write patch scripts instead, rather than the actual binaries?
There's probably a generic DOS patcher out there, and if not, it's not too difficult to write one in Pascal or C I guess. Just a list of offsets and bytes.
I've done a simple one in C for Windows, could be ported if someone wants.
The patches will be smaller than the binaries, and they will not violate any laws or terms of service I guess.
What if we write patch scripts instead, rather than the actual binaries?
I don't mind doing that at all. I already have a set of exe files ready and i'm gonna build a readme.txt file to document which and what are the changes to each game. ftp.oldskool.org was actually what i thought at first and i was eventually gonna contact you, if there was interest to host these patches.
Because this only works if the binaries don't change size. One of the first things I do patching binaries is uncompress them, so a simple patching util won't work. (I don't know of a free tool that does complex differential patching that runs in DOS)
I really don't think we need to worry about the legality of distributing 30 year old patched binaries that require additional data files to run anyway.
I believe unp needs at least a 386 though, so you may have to end up doing the unp and patching in DOSBox or such, before transferring to the target machine. At least, that's what I normally do.
Sure, binaries are easier, but they aren't legal. The above methods are.
I really don't think we need to worry about the legality of distributing 30 year old patched binaries that require additional data files to run anyway.