• Please review our updated Terms and Rules here

List of DOS games that can run on V20 but cannot on 8088

rastepanyan

Member
Joined
Jan 31, 2023
Messages
24
Location
Bulgaria
I have 2 NuXT 2.0 machines that are completely identical except for their CPUs. One has an NEC V20, and the other has an AMD 8088-1. So, here is a list of some games that could run only on NEC V20:

Abandoned Places
Monster Bash!
The Invasion of the Mutant Space Bats of Doom
Brix
Congo Bongo (This game is old, but the version I have is compiled with instructions that 8088 cannot handle)
Cosmo's Adventure 1, 2 and 3
Damiano
Dungeon of Death
Doofus
F117
Fleet Sweep
Be Our Guest
Hangman 2
Hocus Pocus
Scuba Venture
Knightmare
Pang
Return of the Mutant Space Bats of Doom
Simon the Sorcerer
Star Control 2
Stronghold
Super Maxit
The Incredible Machines 2 (This needs 256 kb EMS memory)
Victory Road
The Journey of the West Config
WWF European Rampage
Xargon 1,2 and 3

According to the performance, some of these games are just runnable, and others can be played surprisingly well (a good example is Hocus Pocus).
 
I don't think your list is credible. No serious PC software company made releases for CPUs not used by IBM specifically. I remember over 35 years ago playing Microprose F117 on an 8088n PC. Check your computer with the 8088 CPU for faults, or for lack of more generic PC compatibility (NuXT sounds to me like some contemporary PC experiment ;) ). V20 CPU may have some clock duty cycle requirements that NuXT may have jumper settings for.

Being in Bulgaria, the country that at government level produced PCs and Apple2 clones for the whole Soviet block , you have no excuse you hadn't saved from scrappers some vintage PCBs for your needs. Bulgarian semiconductor factories used relatively significant amount of gold in many semiconductors, capacitors contain palladium, edge connectors are gold plated, illiterate scrappers know that, and are looking specifically for PCBs from that era and factories. That explains why these motherboards and cards are expensive nowadays if one buys them from scrappers, but still less expensive and with much higher quality than making your own contemporary PC.
 
Last edited:
I don't think your list is credible. No serious PC software company made releases for CPUs not used by IBM specifically.
It doesn't say that these games were specifically released for the V20, just that they "*can* run on V20" (handles 80186 instructions, so it's more-or-less a real-mode-only 286). Seems to make sense with that in mind.

Congo Bongo (This game is old, but the version I have is compiled with instructions that 8088 cannot handle)
Probably just a faulty loader/crack. I've seen some 8088 booter conversions with 386 code in their loaders...

Star Control 2
Oh man, I wonder how the MOD player would handle (Nu-)XT speeds.

Either way, you're gonna need that QuasiSpace Portal Spawner real bad. :LOL:
 
It doesn't say that these games were specifically released for the V20, just that they "*can* run on V20" (handles 80186 instructions, so it's more-or-less a real-mode-only 286). Seems to make sense with that in mind.
It doesn't make any sense, except to you, because the title explicitly says "but cannot on 8088", and later on in the topic "run only on V20". The list, or part of it, is misleading. I would be curious to see any game that complains it needs an 80286 (or above) when run on an 8088/6, but able to run on V20/V30 instead.
 
Last edited:
No, it makes perfect sense what was said.

Wolfenstein 3D is a weird one which does a 286 check rather than a v20 check. I think a v20 should be able to run it if it weren't for the check.
Just bare allegation without a proof ;) You THINK! Based on what? On disassembly? On debugger? On your assembly language programming experience? On your reversing experience with other x86 software? Or on your superstition?
 
Just bare allegation without a proof ;) You THINK! Based on what? On disassembly? On debugger? On your assembly language programming experience? On your reversing experience with other x86 software? Or on your superstition?

The game is open source. Also, stop being antagonistic.
 
Just bare allegation without a proof ;) You THINK! Based on what? On disassembly? On debugger? On your assembly language programming experience? On your reversing experience with other x86 software? Or on your superstition?
The relevant passage of assembler checking for a 286 (from Wolf3D's modified version of Borland C++'s crt0):

Code:
;===================
;
;         IDsoft - Check to make sure that we're running on a 286 or better

                pushf                    ; Save original flags
                xor        ax,ax            ; Clear AX
                push    ax
                popf                    ; Try to pop the 0
                pushf
                pop        ax                ; Get results of popping 0 into flags
                popf                    ; Restore original flags
                or        ax,ax
                jns        @@Have286        ; If no sign bit, have a 286

                mov     cx, lgth_no286MSG
                mov     dx, offset DGROUP: no286MSG
                jmp        MsgExit3

@@Have286:
;        IDsoft - End of modifications (there's also a code segment string)
;
;===================

Wolf3D uses the 186 instructions included in the 286, but it runs in real mode. A V20/V30 is functionally exactly what it needs (although I can't imagine it'll run particularly speedily, with an 8-bit EGA card and a generally higher number of cycles per instruction vs. the 286).
 
This topic has come up before, but what are the relevant dealbreaker instructions for a user program (as opposed to the BIOS, where insw/outsw make sense)? push immediate and shift reg,immediate are both useful and clumsy to work around being missing on 8086, so is it those?
 
There are some others like 3 arg imul, which is useful for the compiler to generate struct array offsets - and then PUSHA/POPA/LEAVE all are pretty good byte savers. But at the end of the day none of these are really dealbreakers (including push imm and shift imm). It does add up and you see your 286 binaries a few percent smaller than the the 8088 binaries as a result.
 
It is very easy to be patched and cut the 286 check to *partially* proof your concept (partially, because it is still a modification and not an original release).

I know how to check for 286, no need for examples which are over 30 years late ;) Of course, with the source code, once can even replace all 186/286 real mode instructions with 8086 code.
 
This topic has come up before, but what are the relevant dealbreaker instructions for a user program (as opposed to the BIOS, where insw/outsw make sense)? push immediate and shift reg,immediate are both useful and clumsy to work around being missing on 8086, so is it those?
The big ones are those two, pusha/popa for when you really need to Save/Restore Everything Right Now (pusha costs 36/68 cycles on the 186/188 vs seven pushes being 77/105 on the 86/88, and popa is about the same iirc), enter/leave to save a few bytes and imul reg16,reg16,imm8 as mentioned by sqpat. I don't know if many 286 code generators of the time emitted many bound instructions; I imagine that since people still write horribly insecure C where they're not doing bounds checking even when their IDE yells at them about it, it was even less common in the mid-late 80s.

Mildly annoyingly, my preferred resource for quickly looking up pre-Pentium x86 instruction timings doesn't have the 186/188 listed, so I had to pull the datasheet up to compare. Shows how many people even now forget it existed.

It is very easy to be patched and cut the 286 check to *partially* proof your concept (partially, because it is still a modification and not an original release).

I know how to check for 286, no need for examples which are over 30 years late ;) Of course, with the source code, once can even replace all 186/286 real mode instructions with 8086 code.
I'd argue that if you patch out a 286 check and the program works without a hitch on a V20/V30, then it fully proves that the program can run on a V20/V30 by virtue of it having run on a V20/V30 without crashing.

Unless you're of the opinion that I need to use a period correct toolchain on a period correct machine while drinking period correct John Carmack-approved Diet Cokes to freshly compile as close to accurate-to-original-distribution binaries as possible, just with a dozen lines of machine code commented out, in order to be definitive about this. At which point I question what your criteria for anything running "fully" on any given machine is.
 
Yes, there are 8088 ports of wolf3d and I'm pretty sure a few different people have patched out the 286 check.
 
So, the OP posted a list of some 30 games he claims run on V20 but not on 8086/8. I recognized one game in that list that definitely runs on 8088/6 which proves the OP has either problems with his testing experiment computer(s), or he actually never tested all of these games, and the whole list is compromised for whatever reason. You find one game -- wolf3d -- that MUST be patched (maybe) to run on V20/V30. Does this prove the OP's list? This is in fact what makes not sense, not my remarks in the topic.
 
Last edited:
So, the OP posted a list of some 30 games he claims run on V20 but not on 8086/8. I recognized one game in that list that definitely runs on 8088/6 which proves the OP has either problems with his testing experiment computer(s), or he actually never tested all of these games, and the whole list is compromised for whatever reason. You find one game -- wolf3d -- that MUST be patched (maybe) to run on V20/V30. Does this prove the OP's list? This is in fact what makes not sense, not my remarks in the topic.
There are multiple versions of F117, and Wolfenstein 3D isn't on OP's list. You should also consider that your "over 35 years ago" memory might not be 100% correct.
 
There are multiple versions of F117, and Wolfenstein 3D isn't on OP's list. You should also consider that your "over 35 years ago" memory might not be 100% correct.
Would you show an example of different DOS F117 releases? I am probably mistaking it for Microprose F19.
 
Last edited:
Speaking of 286 checks, i just checked skyroads out of curiosity (another game)
"This program requires at least a 286 microprocessor"

ok... 15 minutes in martyPC says otherwise

In the executable change byte 0x62EF from 0x75 to 0xEB. The cpu check is

Code:
mov  cl, 21h
shr  ax, cl
jnz  000Bh

So just change jnz to jmp and the game will run on v20, checked on 86box and martypc.

EDIT: if anyone knows of any other "286 and up" games let me know and i'll see if i can get work out the cpu check and make it run on the v20
 
Last edited:
Speaking of 286 checks, i just checked skyroads out of curiosity (another game)
"This program requires at least a 286 microprocessor"

ok... 15 minutes in martyPC says otherwise

In the executable change byte 0x62EF from 0x75 to 0xEB. The cpu check is

Code:
mov  cl, 21h
shr  ax, cl
jnz  000Bh

So just change jnz to jmp and the game will run on v20, checked on 86box and martypc.
I doubt the OP patched that game in order to run it on his V20...He must have used an already modified, non-original version from somewhere.
 
It's near to assume any purely* real mode 286 game will run on a 18{6,8}/V{3,2}0, albeit likely at somewhere around 60% of the performance per MHz, what with the additional 286 instructions over the 186 being in support of protected mode and the additional internal design of the 286 accounting for that performance disparity.

Though I am now somewhat wondering what the overall benchmark lineup of an 8 MHz 186 vs. an 8 MHz V30 vs. an 8 MHz 286 using only 8-bit ISA cards...

* Disclaimer: MSW instructions are not considered purely real mode in this case as they are intended to support 16-bit protected mode. Ask your doctor if V30 is right for you. Offer not valid in Quebec.
 
Skyroads wasnt in the original list, I just checked it now because its a game I used to play back then and it felt like it might work on a v20. OP said they tested the games in the first post. Those games probably crashed on 8088 or had processor checks okaying v20.
 
Back
Top