VOGONS


Jetfighter

Topic actions

First post, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

I have come across an interesting fact concerning the original Jetfighter game. Apparently, it does not even run on newer CPUs in pure DOS. I remember seeing, back in the 386 days, a warning in the instruction manual for this game that it may not work on some 486DX2 CPUs. It worked fine, of course, on my 386 under DOS. However, it has not worked under pure DOS (i.e. no Windows, just a bootable MS-DOS floppy or a restart in MS-DOS mode in Win 9x) on the following CPUs: AMD K6, AMD K6-2, AMD Athlon XP, Intel Pentium II Celeron, Intel Pentium III, and Intel Pentium 4 Celeron. It fails on these CPUs the same way it does in DOSBox: It freezes at the title screen. Also, I noticed that DOSBox, according to Windows 3.1 MSD, appears to emulate a 486DX in all core modes. Is it possible that this and maybe a few other games could be made to work by using very strict 286 or 286 emulation, rather than 486 emulation? Maybe there were some bugs in Intel and AMD's real mode where there were minor incompatibilities w/ a small amount of old binaries.

Reply 1 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Doesn't have much to do with the 80486 identification, most likely
they do tricky stuff with the prefetch queue. Up to the 80386 (and
early 80486) had a buggy implementation wrt self modifying code,
which was used by some very in-depth copy/exe protections.

A few games that are known to use the prefetch queue could
be made working by emulating the pq (partially at least) but this
might slow things down and isn't really safe as is.

Reply 2 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

Just as a sidenote: you mention copy protection. The manual for this game explicitly states that it is NOT copy-protected. Also, as far as speed, for anything ancient enough to not be able to run on a 486 speed isn't much of an issue. Therefore, at least from that perspective it makes sense to me to add a "strict 8086", "strict 286" and/or "strict 386" core to DOSBox with accurate prefetch emulation. Don't know how difficult it would be or if anyone out there is willing to do it but I think it would be a good thing.

Reply 3 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

> The manual for this game explicitly states that it is NOT copy-protected

Well i don't know the executable, but looking at it in a hex-editor you might
judge about it better than believing what they say in the manual 😉

> it makes sense to me to add a "strict 8086", "strict 286" and/or
> "strict 386" core to DOSBox

Well the idea is to have as few cores as possible, so this was kicked.
The thing about the prefetch queue was just an idea (and imo very
likely as from your posting) but might not be the real reason for this
game not to work.

Reply 4 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

I believe there were two iterations of this game: the original and the Memorex re-release. I have the Memorex re-release. Also, I looked at jf.exe in a hex editor, and almost nothing in it is in any way human-readable and there was no evidence, from what I could see, of copy protection.

Reply 6 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

attached some older build that emulates the prefetch queue,
works with some games that are known to deploy those tricks

just set core=prefetch (create a clean dosbox.conf before!)

Last edited by wd on 2006-08-16, 16:01. Edited 1 time in total.

Reply 7 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

How do I get this working? It keeps performing illegal ops when I copy sdl.dll and sdl_net.dll from my default dosbox installation. I think that's probably the problem, but where do I get the correct versions of these files?

Reply 9 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

I guess I wasn't clear before, so let me restate: I can't even get this thing to run. It gives me an illegal op before it gets to a command prompt. I also tried it on my laptop, same error, so it's not just my computer. If this has any strange CPU-specific optimizations, I need a version that is compatible w/ an Athlon XP or a Pentium III.

Reply 11 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

If you could do that it would be much appreciated. I've wanted to play this game ever since I dumped my 386, and have been curious how it could not work on a supposedly binary-compatible CPU or even an emulator. I guess Intel and AMD's claims that their modern X86 CPUs are 100% binary compatible with all previous X86 CPUs is not true in a few obscure cases.

Reply 12 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Well newer processors didn't take over all bugs of the 80386 😉

Found some short snippet about the prefetch queue at
http://www.etext.org/CuD/40hex/40hex007
in case you're interested what's it all about.

Reply 13 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

In the mean time, can you give me the details of how you got that prefetch build working, i.e. what CPU, OS, sdl dll files, etc.? Also, can you post the dosbox.conf file that it worked with?

Lastly, if anyone else has a prefetch queue emulating build, please post.

Reply 15 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Lowered the optimization settings, and removed the debugger.
Maybe it works now.

Attachments

  • Filename
    db_prefetch.rar
    File size
    344.01 KiB
    Downloads
    520 downloads
    File license
    Fair use/fair dealing exception

Reply 16 of 25, by dsimcha

User metadata
Rank Newbie
Rank
Newbie

Tried the dosbox prefetch version on a P4 celeron, and it worked. Seems like somehow there were SSE2 instructions in it or something. Jetfighter worked perfectly w/ the prefetch core and did the normal errors with the normal core. Much appreciated. If possible, at your convenience, please re-compile this and double-check the settings to make sure it can run on an Athlon or P3, or just send me the source and I'll do it myself. Also, I would love what you suggested about patching a later version of DOSBox with this. IMHO this prefetch core should be in the main tree.

Reply 19 of 25, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Well it should just serve as a test whether they really used some prefetch tricks.
That stuff is very difficult to detect, but happily only very few games actually
make use of it.