It's difficult to impress how cool it was to have a open world flight sim / 3D movie editor in 1995. There's not much like it even today; GTA V's movie editor is close. A small "scene" grew up around it, and there were lots of mods/hacks in the 2000s: https://armknechted.com/sicentral/newpage/hacksi.html
Having just watched it, I like that the engine has specific support for points, lines and filled circles, because it predates efficient texture-mapping and high polygon counts, so they use dots for stars on the US flag, a series of line segments to write text in 3D, and green spheres to represent tree leaves. These days it's all triangles (...very well lit and textured triangles with more computation expended per pixel than the 1992 computer had in its entirety)
The engine only copied pixels from fast main RAM to slow VGA RAM when they changed value, so using flat shading for most of the objects was a necessity for performance. IIRC all of the planes used Gouraud shading.
Video ram is still slow if you're accessing it from the CPU! Doing software 3D didn't really let you make use of whatever (limited) acceleration video adapters had at the time, which were mostly aimed at accelerated lines and moving rectangles around (you know, things that are useful if you're Windows). That meant the CPU was having to calculate everything and then push pixels over the bus.
This was why people were willing to use things like the VESA Local Bus, basically an extension of the 486 bus usually used to drive a graphics card and starting at a heady 100MB/sec. Terrible idea (it got faster as your CPU bus got faster, and if your card couldn't deal with that you'd have to underclock your CPU), but until graphics hardware started offering operations that matches what game developers wanted, the number of pixels you could push over that bus per second was genuinely a limiting factor.
My understanding is that the double buffering was done in RAM (instead of VRAM). He did it by keeping the two last frames in EMS/XMS, calculating the delta, and copying only the parts that had changed from RAM to VRAM during VBLANK.
Absolutely loved this game. I used to try and fly an F4 Phantom through the canyon at top speed. My brother created a short film "Attack of the Killer Christmas Trees". Endless fun.
It is an amazing game! Do you (or does he) happen to still have that short film somewhere? It sounds great. I collect user-made films, and have about 320 in the Stunt Island Archive. I'm sure there are thousands more than unfortunately never got preserved.
My go-to stunt was climb to the aircraft ceiling then dive nearly straight toward the Golden Gate Bridge and fly under it and climb immediately. I was somewhat successful.
Given the technicalities of the stunt, I rather suspect you were successful (no crash), or not successful (did crash). "Somewhat successful", seems very - I don't know - 'corporate'..."The number of deaths do not reflect the overall success of the mission, which managed to gather substantial information regarding the cause of the deaths".
It’s fun to look back and gain some insight into how this game was made. 30 years ago I was just starting middle school and I remember vividly seeing this game for the first time. I was visiting my cousins and they had all these fantastic games like Secret of Monkey Island, Lechuck’s Revenge, Maniac Mansion, Day of the Tentacle. I remember spending hours playing these games. One of my favorites was Stunts which came with a built-in track editor!
Feels just like yesterday. Shocking how our perception of time works.
That's probably going to involve a full decompile and replacing the renderer, because DOS games are basically limited to using one of the video modes which render into 64k of video RAM.
You could probably monitor the DOS VM to scrape camera/object matrices, render the static world in a huge GL (or what have you) display list, and then the other objects. The mesh formats were reverse engineered long ago.
Not sure how viable that would be, but if the rotation within the game is high-res enough I imagine one might render the same scene four times each with a rotation offset equivalent to half a pixel. Then combine those to a whopping 640x400 image :)
However, DirectX games were much easier... I remember patching F-22 Total Air War (a DiD Flight Sim) to support higher resolutions back in 2001 or something, and it was just 3 bytes or so that needed changing, and worked surprisingly well...
(Seem to remember a bit of a community doing it in various games on the simhq.com forums back then.)
Really interesting! I’ve been working on an idea for a dual-purpose compiler/decompiler and this is really useful for understanding the kinds of things it might need to be used for.
I saw that title and thought to myself "Wow, a 3D game engine from the 80's!" before realizing 30 years ago was 1994-95, during the time of Doom 2 and a year before the first Quake. Damn, I'm getting old fast.
I'm sure everyone experiences this some, but do wonder if it's maybe worse for those for whom the year 2000 hit at the wrong point in their personal timeline. I don't think I ever quite got over guesstimating "X years ago" based on that marker. I've gotten a little better at it, but still get tripped up for a second by times-ago longer than 20 years or so.
The other day I was reading something and was surprised that "50 years ago" was the mid '70s, not, like, the 50s. Then they hit me with Guardians of the Galaxy already being ten years old. Ouch, right in the mortality.
See this fact, GTA Vice City was set in the year 1986 and was released in the year 2003. That game is now older (21 years) than the time period it was set in when it launched (17 years). So if they made that game today with the same time delta, it would be set in the year 2008 when we already had the second gen iPhone.
I think this perceived time warp is affecting many people in the 30+ age group since the world(at least the west) hasn't changed that much in the last 10-15 years or so, so compared to the past when 10-15 years delta made a huge difference, especially in the areas of technology and entertainment, so it kinda feels like time just went by us while the world stood still.
The further we get past the year 2000 the more clear it becomes that all the pre-2000 memes of 2000 being the future were right, and not much happened in the west in terms of quality of life or daily conveniences or productivity since 2000.
What really makes me feel old is realising Jurassic Park is as ancient to my son now as the early 1960's movies my parents would show me from their childhood when I was a kid.
The other day I made a reference to something from Jurassic Park at work to a fresh graduate, and got a blank stare. So I say "You know, from Jurassic Park". And was told "Oh, I've never seen it".
I think that a lot of people feel like this post-COVID, like there's a sort of 'temporal collapse' where you feel stuck in a Big Now where Now never changes, no matter how many days do, and the pounds accumulate but not the years... I wonder if there's something to how delayed careers and life progression, and the shift to streaming/recommendation heavy media, and the apparent 'stuckness' of culture, all contribute to this feeling of being unmoored in time and being unable to realize intuitively that '30 years ago was 1994'?
I've been experimenting on my website with automatically adding to all years or dates a little subscript like '5ya'. While I thought it was clunky at first, I'm finding it helpful to be regularly reminded that when I mention something that happened in '2003', that really was '21 years ago', and I feel a little less like Billy Pilgrim.
Good ol' Driller will always be my first 3D game. The novelty of 3D graphics that were more than the plain wireframes of Elite, was such that we put up with the 1 FPS framerate for hours on end.
I wish I could regain some of that wonder back, but all the Raytracing and RTX make it very hard to find.
It's difficult to impress how cool it was to have a open world flight sim / 3D movie editor in 1995. There's not much like it even today; GTA V's movie editor is close. A small "scene" grew up around it, and there were lots of mods/hacks in the 2000s: https://armknechted.com/sicentral/newpage/hacksi.html
Yeah, this was an incredibly unique game that I played hours of in high school. It obviously looks dated now, but was amazing at the time.
This is awesome. Mickey's Revenge looks so much better with LOD at 800%!
This game is a gem, it deserves a spot in the video-game hall of fame.
Mickey's Revenge: https://www.youtube.com/watch?v=AZMDm-2IIzc
Having just watched it, I like that the engine has specific support for points, lines and filled circles, because it predates efficient texture-mapping and high polygon counts, so they use dots for stars on the US flag, a series of line segments to write text in 3D, and green spheres to represent tree leaves. These days it's all triangles (...very well lit and textured triangles with more computation expended per pixel than the 1992 computer had in its entirety)
The engine only copied pixels from fast main RAM to slow VGA RAM when they changed value, so using flat shading for most of the objects was a necessity for performance. IIRC all of the planes used Gouraud shading.
"Slow video RAM". Wild!
Video ram is still slow if you're accessing it from the CPU! Doing software 3D didn't really let you make use of whatever (limited) acceleration video adapters had at the time, which were mostly aimed at accelerated lines and moving rectangles around (you know, things that are useful if you're Windows). That meant the CPU was having to calculate everything and then push pixels over the bus.
This was why people were willing to use things like the VESA Local Bus, basically an extension of the 486 bus usually used to drive a graphics card and starting at a heady 100MB/sec. Terrible idea (it got faster as your CPU bus got faster, and if your card couldn't deal with that you'd have to underclock your CPU), but until graphics hardware started offering operations that matches what game developers wanted, the number of pixels you could push over that bus per second was genuinely a limiting factor.
Did it have double buffering, or did you have to update the screen while it wasn't scanning out that part?
My understanding is that the double buffering was done in RAM (instead of VRAM). He did it by keeping the two last frames in EMS/XMS, calculating the delta, and copying only the parts that had changed from RAM to VRAM during VBLANK.
Source: https://fabiensanglard.net/stunt_island/#:~:text=I%20always%...
Absolutely loved this game. I used to try and fly an F4 Phantom through the canyon at top speed. My brother created a short film "Attack of the Killer Christmas Trees". Endless fun.
It is an amazing game! Do you (or does he) happen to still have that short film somewhere? It sounds great. I collect user-made films, and have about 320 in the Stunt Island Archive. I'm sure there are thousands more than unfortunately never got preserved.
Archive link: https://armknechted.com/sicentral/newpage/SIArchive.html
That's so cool! Feels like a long shot but I'll look into it.
My go-to stunt was climb to the aircraft ceiling then dive nearly straight toward the Golden Gate Bridge and fly under it and climb immediately. I was somewhat successful.
>I was somewhat successful.
Given the technicalities of the stunt, I rather suspect you were successful (no crash), or not successful (did crash). "Somewhat successful", seems very - I don't know - 'corporate'..."The number of deaths do not reflect the overall success of the mission, which managed to gather substantial information regarding the cause of the deaths".
"If you can walk away from a landing, it's a good landing. If you can use the airplane the next day, it's an outstanding landing."
It’s fun to look back and gain some insight into how this game was made. 30 years ago I was just starting middle school and I remember vividly seeing this game for the first time. I was visiting my cousins and they had all these fantastic games like Secret of Monkey Island, Lechuck’s Revenge, Maniac Mansion, Day of the Tentacle. I remember spending hours playing these games. One of my favorites was Stunts which came with a built-in track editor!
Feels just like yesterday. Shocking how our perception of time works.
> One of my favorites was Stunts which came with a built-in track editor!
In case you didn't know it: the games of the TrackMania series can be considered spiritual successors of Stunts:
> https://en.wikipedia.org/wiki/TrackMania
> https://www.trackmania.com/
Ah, I mentioned Stunts in the other post on my blog. The game still has a small but active community, with ongoing races (https://zak.stunts.hu/).
Neat stuff!
(The aliasing seems brutal now though with all that detail. Need to figure out how to boost the resolution / do some type of MSAA.)
That's probably going to involve a full decompile and replacing the renderer, because DOS games are basically limited to using one of the video modes which render into 64k of video RAM.
You could probably monitor the DOS VM to scrape camera/object matrices, render the static world in a huge GL (or what have you) display list, and then the other objects. The mesh formats were reverse engineered long ago.
Not sure how viable that would be, but if the rotation within the game is high-res enough I imagine one might render the same scene four times each with a rotation offset equivalent to half a pixel. Then combine those to a whopping 640x400 image :)
Yes, for DOS games.
However, DirectX games were much easier... I remember patching F-22 Total Air War (a DiD Flight Sim) to support higher resolutions back in 2001 or something, and it was just 3 bytes or so that needed changing, and worked surprisingly well...
(Seem to remember a bit of a community doing it in various games on the simhq.com forums back then.)
Yep.
https://fabiensanglard.net/reverse_engineering_strike_comman...
Really interesting! I’ve been working on an idea for a dual-purpose compiler/decompiler and this is really useful for understanding the kinds of things it might need to be used for.
Those seem to be very different purposes? Also, Ghidra is really good these days.
This is so great. I loved Stunt Island back in the day.
"Twerking stunt island's 30-year-old 3d engine?" On HN?! I'm in!
... ah
>30-year-old 3D Engine
I saw that title and thought to myself "Wow, a 3D game engine from the 80's!" before realizing 30 years ago was 1994-95, during the time of Doom 2 and a year before the first Quake. Damn, I'm getting old fast.
I'm sure everyone experiences this some, but do wonder if it's maybe worse for those for whom the year 2000 hit at the wrong point in their personal timeline. I don't think I ever quite got over guesstimating "X years ago" based on that marker. I've gotten a little better at it, but still get tripped up for a second by times-ago longer than 20 years or so.
The other day I was reading something and was surprised that "50 years ago" was the mid '70s, not, like, the 50s. Then they hit me with Guardians of the Galaxy already being ten years old. Ouch, right in the mortality.
See this fact, GTA Vice City was set in the year 1986 and was released in the year 2003. That game is now older (21 years) than the time period it was set in when it launched (17 years). So if they made that game today with the same time delta, it would be set in the year 2008 when we already had the second gen iPhone.
I think this perceived time warp is affecting many people in the 30+ age group since the world(at least the west) hasn't changed that much in the last 10-15 years or so, so compared to the past when 10-15 years delta made a huge difference, especially in the areas of technology and entertainment, so it kinda feels like time just went by us while the world stood still.
The further we get past the year 2000 the more clear it becomes that all the pre-2000 memes of 2000 being the future were right, and not much happened in the west in terms of quality of life or daily conveniences or productivity since 2000.
You've put it much better than I could.
Basically, the 80s feel like they happened about 100 years ago. Which makes us depressingly old.
What really makes me feel old is realising Jurassic Park is as ancient to my son now as the early 1960's movies my parents would show me from their childhood when I was a kid.
The other day I made a reference to something from Jurassic Park at work to a fresh graduate, and got a blank stare. So I say "You know, from Jurassic Park". And was told "Oh, I've never seen it".
I have never felt older than in that moment.
How's this: if you're over 27 years old, you were born closer to the moon landing than the present day.
Yeah. Here's another: Space Invaders is now closer in time to the Gamecube than the Gamecube is to today.
Similarly, Windows 95 is now closer in time to the Intel 4004 microprocessor than to today.
I think that a lot of people feel like this post-COVID, like there's a sort of 'temporal collapse' where you feel stuck in a Big Now where Now never changes, no matter how many days do, and the pounds accumulate but not the years... I wonder if there's something to how delayed careers and life progression, and the shift to streaming/recommendation heavy media, and the apparent 'stuckness' of culture, all contribute to this feeling of being unmoored in time and being unable to realize intuitively that '30 years ago was 1994'?
I've been experimenting on my website with automatically adding to all years or dates a little subscript like '5ya'. While I thought it was clunky at first, I'm finding it helpful to be regularly reminded that when I mention something that happened in '2003', that really was '21 years ago', and I feel a little less like Billy Pilgrim.
I did feel like that for the first couple years, but I feel like it's a separate effect from feeling like it's still 2000.
The Freescape 3D Engine was in use in the 80's (see https://en.wikipedia.org/wiki/Freescape ).
Good ol' Driller will always be my first 3D game. The novelty of 3D graphics that were more than the plain wireframes of Elite, was such that we put up with the 1 FPS framerate for hours on end.
I wish I could regain some of that wonder back, but all the Raytracing and RTX make it very hard to find.
I suppose this is where I plug my own 30 year old 3D engine (caution: it's not very good) https://github.com/pjc50/ancient-3d-for-turboc