Page 1 of 1

ao486 and PC Booter games

Posted: Mon Jan 18, 2021 5:00 am
by jamesfmackenzie
I've tried booting a few "PC Booter" floppy images: https://en.wikipedia.org/wiki/List_of_PC_booter_games

All that I've tried so far give me "Boot failed: not a bootable disk". Is this something we should expect to work on ao486 or no?

I'm interested if we can get these old PC Booters running

Re: ao486 and PC Booter games

Posted: Tue Jan 19, 2021 1:49 am
by ExCyber
I don't especially have direct experience with booter games, but researching this has led to believe that a lot of the disk images floating around online are associated with a utility program called "Flopper" that somehow loads them from DOS, and thus aren't necessarily actually bootable disk images as-is. In particular, you might try making sure that the byte sequence "55 AA" is in the disk image at hex offset 1FE.

Re: ao486 and PC Booter games

Posted: Wed Jan 20, 2021 3:40 am
by ExCyber
Here's a (probably not very "Pythonic") Python script that will add the signature in question.

Honestly, though, the thing you're likely to run into with games of this vintage is that many of them really don't run properly on anything other than an early PC/clone, at least not without additional tools that would require conversion to DOS executables. Some of them probably also have copy protection that can't be represented in a flat disk image file.

Code: Select all

#!/usr/bin/env python3
import argparse
import os

parser = argparse.ArgumentParser()
parser.add_argument("infile", help="Input floppy image file name")
parser.add_argument("-f", "--force", action="store_true", help="apply signature even if infile is not an expected size")
parser.add_argument("-o", "--outfile", metavar="outfile", help="write modified image to outfile (optional)")
args = parser.parse_args()

infilebase, infileext = os.path.splitext(args.infile)
if (args.outfile):
    outFilename = args.outfile
else:
    outFilename = infilebase + '-bootsig' + infileext

with open(args.infile, 'rb') as infile, open(outFilename, 'wb') as outfile:
    inbytes = infile.read()
    if not args.force and not len(inbytes) in [163840, 184320, 204800, 327680, 368640]:
        print("File is not an expected floppy image size.")
        exit(1)
    outbytes = bytearray(inbytes)
    outbytes[0x1fe] = 0x55
    outbytes[0x1ff] = 0xaa
    outfile.write(outbytes)