Two things surprised me (obviously without mentioning great effort for makin this vid). 1 - code runs on 386 instruction set (+FPU of course) without any fancy 486/586 BSWAP/XADD etc.... 2 - code is so good so it does not crash even on super slow systems (division errors due to timers being out of range) I guess its Carmack skill. Rage (1) still can utilize all cores if you set it to super high resolution etc... incredible.
@@user-nu5ib2ri9o I believe the source was either pure C/C++ and may had had hand-tuned ASM wrapped in #IFDEFs for x86 platforms - so, if you disabled those and recompiled with the appropriate arch, it would work fine. Or, if you are a god-tier programmer, rewrite any ASM segments with 386/7 opcodes for MAX PERFORMANCE!
It's not fair to compare software OpenGL rendering on 386DX to contemporary 3D-accelerated rendering, besides that it was running on Pentium I-II-III machines.
Running this game on this kind of hardware may sound so outlandish to a point where it's the most memeable thing in the world, but it's really not far off from the realities of 3D rendering in the early 90's. Notable early projects like the TV show "ReBoot" had been rendering episodes since 1991, but it wouldn't be for another _three years_ until the program would be ready to air.
16mb 30pins wow i thought 4mb ones were the largest. You have taken the lead on this noone has the patience to try this 0.0 fps experiment. Much respect!
Makes me sad seeing Mr Elusive running around on thee. RIP Jan Paul van Waveren, developer of the Omicron Bot for Quake1 originally and was hired by id Software to do the AI for Quake3, and who worked on all of the games afterward up until leaving to work at Oculus. A lot of the work he did w/ Carmack is what runs on the Oculus Quest headsets to this day.
Thanks for the video! Very informative. Now imagine running a 2022 game with a good 2012 CPU like the 3770K. It would run no problem, just not for high-refresh monitors.
Estoy jugando Start Wars Jedi Fallen con una Lenovo T430 de fines de 2012 con un modding impresionante. i7-3920XM @ 3.9Ghz (Bios Mod) + Ripjaws 16GB DDR3L @ 1866 (Bios Mod) + eGPU con EVGA nVidia GTX 1660 Super 6GB VRAM + SSD 2TB x 2 SATA3 y mSATA y anda fluido a 30FPS o mas
This is some Interstellar movie type of stuff ))))) Everything seems normal but then you check clocks and... mannnnnnn no it's not normal, blackhole in range, we are screwed, mission abort, mission abort ))))
I'm not sure how much I believe this. For one, it suggests not only was the game engine compiled only using instructions compatible with 386 and the legacy FPU but equally a functioning opengl driver stack for the same. Not impossible but it seems unlikely that no 586+ instructions would exist anywhere in the code path for something released when the Pentium 2 was common.
@@command_line_channelI'll take your word for it but it still seems unlikely to me. If the whole stack was rendered in software I'd expect massively variable render time per frame that would manifest itself as a very jittery video when sped up. Your video looks like you just video captured it on a regular spec system and simply showed an elapsed time that you could've estimated or even plain made up. Who's going to check? I worked on some 3D drivers for the Amiga so I'm familiar with how Quake 3 runs on underpowered hardware and just how much variation there is in frame time on underpowered CPUs and that was with hardware radterisarion.
@@0xABADCAFE you can ask some other retro channels to check, it's not so hard to reproduce for some 386-DX owner. All you need is a math co-processor and GLDirect demo version.
64MB of RAM on a 386DX-40 motherboard, how?? My 386DX-40 board only counts up to 16MB and then it stops. Also... I didn't know that 16MB SIMM modules exist, I tought I was cool when I found my 4MB SIMMs.
Now I want to try 16MB SIMMs in my M-321 motherboard. Ostensibly, the board's limit is 32MB, just like the M-326. Maybe even the 256KB cache won't cache all of it, but it'd be interesting nonetheless.
How would a PCI card with OpenGL 3.3 support and 386 work (though you need to update ioquake3). My idea is: More modern graphics API:s can upload all data to the GPU before rendering starts. Modern graphics cards has more video memory. So, before starting playing the game, wait some hours for data to be transferred to the GPU, and expect a playable game. It should hit around 10 fps. Most of the CPU time will be spent in collision detection I guess.
You can not do that for a variety of reasons: 1) There is no 386 motherboard that supports PCI slots (to my knowledge). 2) OpenGL 3.3 is is from 2010; no driver for any GPU supporting OGL 3.3 would load on anything lower than a Pentium MMX and Windows XP; I would be surprised if they would load on anything below the Pentium 3 (SSE 1.0). Most high performance code compiled in the last 15 years has abandoned 387 instructions almost entirely, relying on the SSE and AVX instruction sets. 3) Even if you used an emulator like PCEm and pair a 386+387 with a Voodoo 2 in Windows 95, the API calls for the Glide renderer would still suffocate the CPU. Likewise, if you compiled your own Linux kernel and drivers for a modern GPU, that would be even worse. 4) The problem is not about GPU memory and data transfer. 5) It is irrelevant if you have an OpenGL 3.3 GPU with an old game like Quake 1, 2, or 3; the game would still only use OpenGL 1.0, 1.1, maybe 1.2 (respectively, but even Quake 3 runs on cards limited to OGL 1.1) 6) No game supporting OpenGL 3.3 would run on anything older than a Pentium 4 or Athlon XP. + a variety of many other reasons
@@AndreiNeacsu I mean that glBegin() glVertex(), glEnd(), is a very CPU heavy way of doing things. That is why it all was scrapped with OpenGL 3.3. And yes, ioquake3 will not be ported to modern OpenGL. But a 386 can sort of cope with DOOM if you reduce the screen size. Thus, if you could offload the rendering I would expect similar figures. Though Quake 3 may have a somewhat more complicated collision detection. I said that would probably be the bottleneck in such a system.
Try a VLB 3D Blaster with your 386DX-40 on a OPTI 495SX Motherboard and try running Quake again! Will it work? Probably not, but there's only one way to find out 😎
Don't get me wrong. I'm into retro gaming and retro systems. I've got a 386. I've got a 486, a Pentium, Pentium Pro, K6-III and even an Amiga. Heck I've got a ZX Spectrum. And even so, this video makes me go... "But why?" Does this prove that a 386 can run Quake 3? Not in the slightest. Was that even something that anyone though might be possible? I doubt it. But hey, each to their own :)
Two things surprised me (obviously without mentioning great effort for makin this vid).
1 - code runs on 386 instruction set (+FPU of course) without any fancy 486/586 BSWAP/XADD etc....
2 - code is so good so it does not crash even on super slow systems (division errors due to timers being out of range)
I guess its Carmack skill. Rage (1) still can utilize all cores if you set it to super high resolution etc... incredible.
1 - Compiler magic
2 - I would expect division errors on super fast systems instead, due to 0ms delays between events, e.g. famous Run Time Error 200
@@user-nu5ib2ri9o I believe the source was either pure C/C++ and may had had hand-tuned ASM wrapped in #IFDEFs for x86 platforms - so, if you disabled those and recompiled with the appropriate arch, it would work fine. Or, if you are a god-tier programmer, rewrite any ASM segments with 386/7 opcodes for MAX PERFORMANCE!
John Carmack is truly a wizard
This really puts in perspective how fast technology evolved in that small time frame.
It's not fair to compare software OpenGL rendering on 386DX to contemporary 3D-accelerated rendering, besides that it was running on Pentium I-II-III machines.
You videos are a piece of art! Absolutely great! I also like your experiment very much. 72 hours. unbelievable. very cool.
Thank you! I love your channel as well! 200Mhz 486 is a Legend!
Nice, it runs at ~200 frames per sec.... I mean, ~200 seconds per frame.
I measured about 8 frames per hour (during the tough fighting parts.) So 450 seconds per frame (7.5 minutes) 😮
@@hrayz Yep, the math checks out, 271191.7 / 1399 = average of 193.847 SPF, what a MONSTER!
Well that is surprising, my assumption would be that Quake 3 required much later instructions to run. Very cool :)
You can definitely see the advantage of the co-processor here
Everyone should be writing letters to Santa that they want a Cyrix FasMath this Christmas!
@@command_line_channel probably easier to get than one of them new Ryzen chips too 😉
74 hours to play a 2 minute demo... Truly blazing fast speeds
Also I really dig how you selected music, illustrated timelaps, the intro part. Masterpiece. thumbs up.
Running this game on this kind of hardware may sound so outlandish to a point where it's the most memeable thing in the world, but it's really not far off from the realities of 3D rendering in the early 90's. Notable early projects like the TV show "ReBoot" had been rendering episodes since 1991, but it wouldn't be for another _three years_ until the program would be ready to air.
wth really??? This is crazy dedication and a bold step for science!
18.5 frames per hour; impressive!
16mb 30pins wow i thought 4mb ones were the largest. You have taken the lead on this noone has the patience to try this 0.0 fps experiment. Much respect!
yes, 64MB of ram on a 386... it sounds incredible.
386dx40:
-Dear diary I cannot find the words to describe the pain and humiliation I have experienced
Makes me sad seeing Mr Elusive running around on thee. RIP Jan Paul van Waveren, developer of the Omicron Bot for Quake1 originally and was hired by id Software to do the AI for Quake3, and who worked on all of the games afterward up until leaving to work at Oculus. A lot of the work he did w/ Carmack is what runs on the Oculus Quest headsets to this day.
"How many FPS can I get running Quake 3 on my 386?"
"YES"
Amazing! And the ultimate 386 stress test😄
Thanks for the video! Very informative.
Now imagine running a 2022 game with a good 2012 CPU like the 3770K. It would run no problem, just not for high-refresh monitors.
Estoy jugando Start Wars Jedi Fallen con una Lenovo T430 de fines de 2012 con un modding impresionante. i7-3920XM @ 3.9Ghz (Bios Mod) + Ripjaws 16GB DDR3L @ 1866 (Bios Mod) + eGPU con EVGA nVidia GTX 1660 Super 6GB VRAM + SSD 2TB x 2 SATA3 y mSATA y anda fluido a 30FPS o mas
Speedrunnin't. Speeruining. Speedrun't.
Wow that little FasMath workin' OVERTIME!! 😆
You're out of your mind... and I love it!
I love this video :D
Proper dedication that!
Something so stupid it just had to be done. I love it!
This is some Interstellar movie type of stuff ))))) Everything seems normal but then you check clocks and... mannnnnnn no it's not normal, blackhole in range, we are screwed, mission abort, mission abort ))))
Great experiment!
I'm not sure how much I believe this. For one, it suggests not only was the game engine compiled only using instructions compatible with 386 and the legacy FPU but equally a functioning opengl driver stack for the same. Not impossible but it seems unlikely that no 586+ instructions would exist anywhere in the code path for something released when the Pentium 2 was common.
OpenGL is a software emulation by Scitech GLDirect for Windows
@@command_line_channelI'll take your word for it but it still seems unlikely to me. If the whole stack was rendered in software I'd expect massively variable render time per frame that would manifest itself as a very jittery video when sped up. Your video looks like you just video captured it on a regular spec system and simply showed an elapsed time that you could've estimated or even plain made up. Who's going to check? I worked on some 3D drivers for the Amiga so I'm familiar with how Quake 3 runs on underpowered hardware and just how much variation there is in frame time on underpowered CPUs and that was with hardware radterisarion.
@@0xABADCAFE you can ask some other retro channels to check, it's not so hard to reproduce for some 386-DX owner. All you need is a math co-processor and GLDirect demo version.
Wow! 18,57132 FPh (Frames per Hour)...
LGR would be proud
The song is Ambient - Light Years
This is completely pointless, and I LOVE it!
This video is so good wtf
64MB of RAM on a 386DX-40 motherboard, how??
My 386DX-40 board only counts up to 16MB and then it stops.
Also... I didn't know that 16MB SIMM modules exist, I tought I was cool when I found my 4MB SIMMs.
You need to have OPTi chipset or similar. Some cheap brands did not connect all address lines on memory slots.
THIS IS AMAZING WORK!!!
I wonder if this 386 mainboard would work with 128MB RAM / 8x16 MB too.
Ah I knew it! so it DOES work! Intel keeps selling "faster" chips but this is proof we only need a 386
what is the name of the music in the background?
This video proves: Pentiums are really fast.
How on earth did you focus on playing a solid 74 hours?
Ah, it was a demo mode! answered at the very end ;)
Now I want to try 16MB SIMMs in my M-321 motherboard. Ostensibly, the board's limit is 32MB, just like the M-326. Maybe even the 256KB cache won't cache all of it, but it'd be interesting nonetheless.
0.0051587 frames per second!
still faster than chrome on school pc
64 mb ram would've been a lot though. My 486 sx had 4 ..
Yeah, but if you want you can disable some graphics options in .cfg file...
WE WANT MORE :) !
you ll need calendar for that instead stopwatch (clarckson)
Awesome
How would a PCI card with OpenGL 3.3 support and 386 work (though you need to update ioquake3). My idea is: More modern graphics API:s can upload all data to the GPU before rendering starts. Modern graphics cards has more video memory. So, before starting playing the game, wait some hours for data to be transferred to the GPU, and expect a playable game. It should hit around 10 fps. Most of the CPU time will be spent in collision detection I guess.
You can not do that for a variety of reasons:
1) There is no 386 motherboard that supports PCI slots (to my knowledge).
2) OpenGL 3.3 is is from 2010; no driver for any GPU supporting OGL 3.3 would load on anything lower than a Pentium MMX and Windows XP; I would be surprised if they would load on anything below the Pentium 3 (SSE 1.0). Most high performance code compiled in the last 15 years has abandoned 387 instructions almost entirely, relying on the SSE and AVX instruction sets.
3) Even if you used an emulator like PCEm and pair a 386+387 with a Voodoo 2 in Windows 95, the API calls for the Glide renderer would still suffocate the CPU. Likewise, if you compiled your own Linux kernel and drivers for a modern GPU, that would be even worse.
4) The problem is not about GPU memory and data transfer.
5) It is irrelevant if you have an OpenGL 3.3 GPU with an old game like Quake 1, 2, or 3; the game would still only use OpenGL 1.0, 1.1, maybe 1.2 (respectively, but even Quake 3 runs on cards limited to OGL 1.1)
6) No game supporting OpenGL 3.3 would run on anything older than a Pentium 4 or Athlon XP.
+ a variety of many other reasons
@@AndreiNeacsu I mean that glBegin() glVertex(), glEnd(), is a very CPU heavy way of doing things. That is why it all was scrapped with OpenGL 3.3. And yes, ioquake3 will not be ported to modern OpenGL. But a 386 can sort of cope with DOOM if you reduce the screen size. Thus, if you could offload the rendering I would expect similar figures. Though Quake 3 may have a somewhat more complicated collision detection. I said that would probably be the bottleneck in such a system.
The bus isnt fast enough
Try a VLB 3D Blaster with your 386DX-40 on a OPTI 495SX Motherboard and try running Quake again! Will it work? Probably not, but there's only one way to find out 😎
If i only had a VLB 3D Blaster :) But, as far as I know, it never supported Open GL anyway.
Gorgeous video. Amazing feat. One thing i didnt know is that the game could run without 3D accelerator. This is OpenGL on software?
Yes, GLDirect OpenGL software emulator was used
@@command_line_channel I wonder how a Pentium III 500 runs with that OpenGL software.
Wow! 5 mills per second! You should try 386SX to beat that record.
286 looks to be champion on that record
Subscribed.
But can it run Crysis?
I also ask myself this question
No, it cannot run Crysis.
But ain't nobody got time for that...
А ведь проц старше игры на 14 лет!
88 minutes to load the game?
That's faster than a PS4. lol
Good. Now try Crysis on 486.
i was doing this on 486's you could actually play it tho :D
How long did a single frame last on there?
maybe is PCem v17
i thought this is gonna be realtime, like graphics card taking the workload. naive.
I don't know, even 386 chipset can support PCI bus.
Is that software OpenGL renderer?
ISA VGA is mentioned in description. Even early 3D-accelerators (that couldn't run Q3) were made on PCI or AGP bus.
Don't get me wrong. I'm into retro gaming and retro systems. I've got a 386. I've got a 486, a Pentium, Pentium Pro, K6-III and even an Amiga. Heck I've got a ZX Spectrum. And even so, this video makes me go... "But why?" Does this prove that a 386 can run Quake 3? Not in the slightest. Was that even something that anyone though might be possible? I doubt it. But hey, each to their own :)
For me personally it's a stunning experiment as for proof of concept. Also the video is done pretty cool too. :)