
A Closer Look at the Super NES Doom Source Code Release [video] - zdw
https://www.youtube.com/watch?v=JqP3ZzWiul0
======
kanobo
Modern Vintage Gamer makes excellent videos, all are worth watching if you
have any interested in the history of video game tech.

~~~
alpineidyll3
He wrote a lot of the emus for Xbox 1. Guys a lesser treasure of computing.

~~~
justapassenger
I'm a big fan of his videos, and he's a really great educator. But he didn't
wrote those emulators (and never claimed to) - he ported existing ones.

I don't say that to reduce his contributions (hell, I did my share bit of
porting code to more exotic platforms, and a proper port is tons of work), but
to give credits to original authors who did most of heavy lifting of writing
actual emulators.

~~~
lowtolerance
He literally has a video titled “I wrote the Emulators and Homebrew YOU played
on the Original Xbox”

[https://youtu.be/x7FmelyC70Y](https://youtu.be/x7FmelyC70Y)

Don’t get wrong, I love MVG’s content, and I’m not a big gamer or even much of
a YouTube viewer.

------
rcthompson
I remember playing the Bleem demo as a kid, and then a decade later thinking
back and wondering "wait a minute, how was that emulation performance possible
in 1999?"

~~~
AtlasBarfed
Q1 2000 was the 1Ghz intel release. The PS1 had a 33MHz CPU.

Bleemcast on a 200MHz CPU is more impressive.

~~~
rcthompson
I mean, whatever PC I had in 1999 was definitely already several years old and
probably wasn't top of the line at the time of purchase. So it was probably
closer to 200 MHz than 1GHz.

~~~
AnIdiotOnTheNet
Pretty sure when Bleem came out I was still rocking the 166Mhz 64MB family
computer running windows 95 or 98. If memory serves, I was able to play Crash
Bandicoot at not-quite full speed.

I owned a laptop shortly after that which was somewhere in the 200mhz-400mhz
range that played PS games at full speed.

Yeah, I actually owned Bleem even though I had a PlayStation. I think I still
have the CD.

------
djmips
For a (long) and in depth and information packed video about this from the
original author (Randy Linden) in the form of an interview check out this
video.
[https://www.youtube.com/watch?v=P5PknJvplKg](https://www.youtube.com/watch?v=P5PknJvplKg)

------
dopeboy
Fantastic video. For those in the industry, how does a game get ported?

Do you figure out all the constraints of the target system, fork the original,
adjust, and compile? Is it an involved process? Do the original dev's (Carmack
in this case) get involved or is it "second tier" sort of work?

~~~
gambiting
I've been involved in some ports recently, from really old systems into modern
ones(like, PS1 games into current/next gen) - it's basically

1) import the whole thing into Visual Studio solution

2) Add the desired target platform

3) hit build

4) keep resolving compilation errors until the game builds.

5) keep resolving linking errors until the game links

6) try running the game until it starts on the target system and doesn't crash
immediately.

7) congrats, now you have something that most likely runs without any video,
sound or input

8) spend X amount of time re-writing the renderer for the target system, add
input support, add sound. This step can take any amount of time

9) congrats, now you have a game that "runs". It probably runs like absolute
garbage right now. Now spend time understanding how all subsystems work - how
is the data loaded? If it was a PS1 game, it was probably optimized for
loading from the disc - can we now change it to have a more straightforward
loading sequence. Can we just load the whole thing into ram on startup and be
done with it?

9) do as many tweaks and optimizations as the time and budget allow - make
sure it renders in 4K, supports 3D audio, rumble for controllers etc etc etc
etc.

Again, step 9 can take any amount of time, depends what your production
allows.

We were lucky in that the original programmers who worked on these games 20+
years ago still work at the same company - so it was quite fun for them to
revisit that old code. But yeah, don't expect people to remember the code they
wrote 20 years ago, you end up ripping out entire sections still marked as
"fixme before launch(date: 12/1998)".

As for porting between current platforms(like a game simultaneously launching
on Xbox and Playstation) - it's usually built for both from the start. In the
rare cases where a platform gets added later, it's basically the same process
as above - add the target, try building and running until it does. People who
have experience doing it can progress much faster than people who don't - same
as everything.

~~~
brazzy
From my (very limited) understanding of how really old systems often had very
unique hardware features and games that were full of intricate hacks to use
these to improve performance, it seems to me that steps 4 and 5 could already
take "any amount of time".

~~~
gambiting
Well, yes, but in most cases it was like "oh, it's using some exotic
library(and hardware) to do physics? cut this whole segment out then". Then
once you have something that builds you can figure out how to reproduce the
functionality in some other way.

------
bradford
Wow. I really thought of myself as a Super NES fan, but I learned two things
today:

1\. Doom was released on the Super NES. (I enjoyed the DOS version but never
played it on the SNES).

2\. the Super NES supported multiplayer for some games (including DOOM) via
the XBAND modem.

some more info:

[https://doomwiki.org/wiki/Super_NES#:~:text=Doom%20for%20the...](https://doomwiki.org/wiki/Super_NES#:~:text=Doom%20for%20the%20Super%20Nintendo%20Entertainment%20System%20was,NTSC%20version%20being%20available%20in%20a%20red%20casing).

[https://en.wikipedia.org/wiki/XBAND](https://en.wikipedia.org/wiki/XBAND)

~~~
aspenmayer
I remember seeing info about XBAND in hardcore (import) gaming magazines like
GameFan and Electronic Gaming Monthly, but hardly any info in more mainstream
mags like GamePro. Never heard much of anything in Nintendo Power, but it’s a
glorified first-party game ad vehicle.

[https://en.wikipedia.org/wiki/GameFan](https://en.wikipedia.org/wiki/GameFan)

[http://www.hardcoregaming101.net/gamefan/GameFAN.htm](http://www.hardcoregaming101.net/gamefan/GameFAN.htm)

[https://archive.org/search.php?query=GameFan](https://archive.org/search.php?query=GameFan)

[https://www.polygon.com/2014/9/29/6867993/egm-electronic-
gam...](https://www.polygon.com/2014/9/29/6867993/egm-electronic-gaming-
monthly-history-kunzelman)

[http://alifewellwasted.com/2009/01/23/episode-one-the-
death-...](http://alifewellwasted.com/2009/01/23/episode-one-the-death-of-
egm/)

~~~
dimator
There's an excellent retrospective on YouTube about the xband and how it was
built. It was a product ahead of its time.

For example, the way they got games that weren't built for laggy multiplayer
to work was unbelievable: they recognized the cartridge and patched the code.
Yes, that means every game that worked was a result of a custom built patching
of that game's code at run time!

[https://youtu.be/k_5M-z_RUKA](https://youtu.be/k_5M-z_RUKA)

~~~
aspenmayer
That’s a great video, thanks for posting it. I remember hearing it was similar
to how a Game Genie worked, but that’s a lot more work than expected. Very
impressive for 1993-1994.

------
caiobegotti
That was really nice to watch and I think I could watch a whole series on this
kind of source code analysis from the 16-bit era. I had the link opened next
to a dozen tabs during the whole day and I kind of lost track where it came
from so thanks for sharing it!

~~~
djmips
Check out Coding Secrets. There are probably a number of videos on this
channel that you might enjoy. Some of it is newer and in the 3D era but it
goes back into the 8 + 16 bit days as well.

[https://www.youtube.com/c/codingsecrets/videos](https://www.youtube.com/c/codingsecrets/videos)

And his original Game Hut channel.
[https://www.youtube.com/channel/UCfVFSjHQ57zyxajhhRc7i0g](https://www.youtube.com/channel/UCfVFSjHQ57zyxajhhRc7i0g)

And of course, even though this is Playstation the extended interview with
Andy Gavin is fascinating.
[https://www.youtube.com/watch?v=pSHj5UKSylk](https://www.youtube.com/watch?v=pSHj5UKSylk)

~~~
CrazedGeek
Another phenomenal channel is Retro Game Mechanics Explained:
[https://www.youtube.com/channel/UCwRqWnW5ZkVaP_lZF7caZ-g](https://www.youtube.com/channel/UCwRqWnW5ZkVaP_lZF7caZ-g)

------
bluedino
The most insane part to me, who’s not a hardware person, is hacking a Starfox
cartridge (because it had the SuperFX chip) as a dev system for the Doom port.

