Hacker News new | past | comments | ask | show | jobs | submit login
Wolfenstein 3D with a CGA Renderer (github.com/jhhoward)
147 points by elvis70 on Jan 22, 2023 | hide | past | favorite | 42 comments

The port to 8088 is really interesting. I can't find the minimum system requirements for the original Wolf 3D, but didn't it require a 386? (I'm pretty sure it used a 32 bit DOS extender).

From memory, it could run on a 286. Here is this version running on a NEC V20 at 9.55 MHz, an Intel 8088 clone, but was closer to the 80188 : https://twitter.com/Jameshhoward/status/1612900164745981953

yeah 286 was minimum. I had an 8088 XT and it would not run.

However... there is a little known game that id Software did release that would run on an 8088. It's called Catacomb 3-D[1]. It was basically Wolfenstein with goblins and skeletons. Pretty sure that engine went on to become Wolf3d.

Despite the Wikipedia page saying it runs on a EGA I had a CGA monitor and was running it. Thinking I might be losing my mind I downloaded the source code on archive.org[2] and sure enough there is reference to CGA code all over the place.

[1] https://en.wikipedia.org/wiki/Catacomb_3-D

[2] https://archive.org/details/CatacombAbyss_source

Wikipedia, in my anecdotal experience, is wrong all the time on mid 80s to mid 90s minutia. I probably sense it because that was my peak era. But good luck finding a source besides, “that’s not how it happened, man…”

Oh neat, I didn't realise it had been open sourced.

I tried it out on an 8MHz V40 (think V20 with onboard peripherals), and it delivers five frames per second. Definitely as smooth if not smoother than Quake on a 486DX. (lest we forget that it was the Crysis of its era since hardware 3D acceleration didn't yet exist on most consumer-grade kit)

The dithering (on a VGA card and modern LCD) sort of makes it hard to view; an EGA port might be interesting as 16 colours might be enough to make it workable without dithering. Although if they're using 2x2 blocks for dithering, they'd be effectively cutting the number of "pixels" to render by a factor of four, and that might make it viable.

I ran wolf just fine on a Tandy 2600 which featured “10 mhz of Intel processing power” according to the instructions. Spear of destiny too if I recall.

I can recall playing it on a 10MHz 286 and having to shrink the window for good framerates.

Tandy 2000 (and presumably the 2600) used an 80186.

The 2600xl came later and featured an upgraded processor from the 1000 line.

I ran it on a Packard Bell Legend V 286 16MHz machine.

Definitely was a 286. I had a 486sx and loved the game. I took it over to a friend who had an 8086/88 but had a CD-ROM, which was quite cool at the time in the very early 90s. Even now, 30 years later, I remember the screen saying it needed a 286. He was crestfallen. It was the first time we experienced our computers being “different” other than the CD-ROM.

The requirements are on the official web site: http://legacy.3drealms.com/wolf3d/index.html

You need to decrease the window size a bit if want it to be playable on a 286, though. At full size, I tend to get a headache.

> "Due to the game content, this game may not be ordered by residents of Germany"

Germany has unbanned Wolfenstein in 2019 :)

Wolf3D as I recall could run on a 286 but it required a "fast" late model 286 (like the 16 MHz part from AMD) to run at an acceptable frame rate. It was also quite choppy in frame rate on like a 386SX/16.


I had a 12mhz AMD 286 as a kid and played the crap out of Wolfenstein. I'm sure it was running terribly but I didn't know any better.

AFAIK Wolf3D required a 286 and I found a forum thread[1] that seems to agree.

1. https://forum.vcfed.org/index.php?threads/wolfenstein-3d-sys...

Totally off the top of my head, but I'm pretty sure Wolfenstein 3D was real mode, because I remember reading that Rise of the Triad was based on the Wolfenstein engine and one of the changes involved converting it to protected mode.

I'm probably confusing it with DOOM, which definitely did use a DOS extender (Watcom 4GW).

Exactly. I had a 286 for a long time and then jumped to a Pentium. In between that period I missed a lot of games which would only run on >386 especially Doom. I played a lot of Wolfenstein. My first walkthru was with one life and lots of lots of saving and reloading, because I didn't realize you could press m to use a medipack, HAHAHA dang!

There was even an Apple IIgs version. 2.8 mHz yeah. It was totally unplayable without an accelerator card.


It was a real mode program. It was written to VGA modes (and IIRC soundblaster audio?), but as long as you had a 8 bit VGA card (they did exist) it would in principle run on an original PC. ID surely never tested or supported that configuration though.

The README in the project talks about "8088 support" being added, but the only thing I see in the commit log is the replacement of a stray 286 assembler directive.


Shift-by-immediate-value was introduced with the 80186 (and became broadly available with the 80286). https://en.wikipedia.org/wiki/Intel_80186#cite_ref-6

You can replace the 8088 in the original PC with a NEC V20, which provides these extra instructions. IIRC the CPU detection code in Wolf3D has to be patched too to make this work, because it only checks for 286+ and would exit with an error message.

iD (id?) didn't use DOS extenders until Doom IIRC

I think that ran on 286 computers

I wonder if the existence of a red/cyan/white CGA palette inspired the project? It's perfect for that game!

Tried it on 4.7MHz 8088. Looks great but too slow to enjoy the gameplay.

I think hitting F5 and using the arrow keys in-game should allow you to decrease the size of the gameplay window to try to increase performance. You might try that if you haven't already...

How? You have an original PC sitting around?

Yes, specifically IBM PCjr-ish clone. Compared to IBM PC 5150 it has 2x slower access to the first 96K of RAM due to “integrated” nature of its non-standard take on CGA. But, the rest of RAM is actually faster than IBM PC because it is a modern retro computing extension card made with fast SRAM.

That sounds class. Have you an period monitor to compliment it? What else have you it doing?

The oldest kit I own is a Toshiba MSX PC. It can run MSX-DOS but wrong architecture for Wolf3d unfortunately.

It has TTL RGBI and composite NTSC outputs. The latter is actually very interesting in that it can produce 16-color images using color smearing effect on NTSC TV. Many games from the period used this to achieve more colorful graphics at the expense of dropping to 160x200 resolution. OP port of Wolf3d is also supporting this mode.

I am working on FPGA-based converter to be able to show RGBI and composite CGA on modern VGA screens.

This looks much better than expected for 4-color CGA, but now I'd really love to see a 16-color EGA version!

There was originally going to be an EGA version, some of the original art was released a while back. Supposedly an EGA alpha version was released as well.


To build you will need a copy of the Borland C compiler version 3/3.1.

You can get it as one big 19M download or 11 separate 3.5 floppy downloads. =D


The trickiest part of this endeavour is finding 11 floppy disks.


A few questions:

1. Is the Tandy mode compatible with Amstrad's PC1512 and PC1640 / Plantronics CGA extensions, or maybe these should get dedicated support?

2. Any plans to also implement "modifications" beyond the ones for the i8088 so it can also run on a Z80 or a ASCII corp R800?

This is absolutely amazing. I seem to recall ultima underworld came out a few months before with a similar ray tracing engine, but it wasn’t open sourced so it’s not possible to try

Though the Ultima Underworld maps were made out of a 2D grid, the rendering was done using texture-mapped polygons - and not just that but they even used dithering for more light variations. While pretty much all objects were rendered as 2D sprites, there were a few 3D polygonal objects too.

Wolf3D has a much more limited renderer - only walls are rendered, no lighting (the shaded side for walls is actually different textures) and the viewport is fixed at the middle of the walls for example. On the other hand Wolf3D was much faster and responsive and had a larger render window than UU.

UU itself was not open sourced, however System Shock 1 which is based on the same engine was[0][1].

[0] https://github.com/NightDive-Studio/shockmac

[1] https://github.com/Interrupt/systemshock

On WOlf3D, does it exist free data as it does for Doom (FreeDoom) and Heretic (Blasphemer)?

Now I want a time machine to play Wolfenstein on the T3100e I owned in the 90's.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact