<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>doom &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/doom/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Wed, 19 Mar 2025 20:05:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>DooM, GCC &#038; AI</title>
		<link>https://virtuallyfun.com/2024/05/30/doom-gcc-ai/</link>
					<comments>https://virtuallyfun.com/2024/05/30/doom-gcc-ai/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 30 May 2024 10:01:27 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[gcc]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14461</guid>

					<description><![CDATA[Using AI to get a working fixed point math routine that was far too hard for my small brain. <a href="https://virtuallyfun.com/2024/05/30/doom-gcc-ai/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">One of the things that always annoyed me about DooM is the fixed point math.  It relies on a 64bit data type, which many 32bit platform just lack.  Namely the <a href="https://github.com/neozeed/doomnew-for-dos/blob/b3f75f29d4911d6ee51facfa7a10f4ef6ea92942/m_fixed.c#L44" target="_blank" rel="noreferrer noopener">FixedMul</a> &amp; <a href="https://github.com/neozeed/doomnew-for-dos/blob/b3f75f29d4911d6ee51facfa7a10f4ef6ea92942/m_fixed.c#L58" target="_blank" rel="noreferrer noopener">FixedDiv</a>. </p>



<pre class="wp-block-code"><code>fixed_t FixedMul
( fixed_t a,
fixed_t b )
{
return ((long long) a * (long long) b) &gt;&gt; FRACBITS;
}</code></pre>



<p class="wp-block-paragraph"> They are generally re-written into assembly, at least for the i386 getting around the whole 64bit on a 32bit platform.</p>



<pre class="wp-block-code"><code>FixedMul:	
	pushl %ebp
	movl %esp,%ebp
	movl 8(%ebp),%eax
	imull 12(%ebp)
	shrdl $16,%edx,%eax
	popl %ebp
	ret

FixedDiv2:
	pushl %ebp
	movl %esp,%ebp
	movl 8(%ebp),%eax
	cdq
	shldl $16,%eax,%edx
	sall	$16,%eax
	idivl	12(%ebp)
	popl %ebp
	ret</code></pre>



<p class="wp-block-paragraph">So that&#8217;d always been the &#8216;catch&#8217; when porting Doom is that you either need a &#8216;long long&#8217; data type, or the custom assembly or you basically are out of luck. </p>



<p class="wp-block-paragraph">I know I&#8217;m a weird person, but I do like going backwards in terms of software, while most people want latest GCC 14 targeting old machines or some other hack, I prefer the opposite, trying to get the oldest stuff running on something new(er).  In this case, it&#8217;s GCC 1.27.</p>



<p class="wp-block-paragraph">While much of the old GCC history is lost, I did my best to collect as many versions as I could find here, along with doing patches in reverse to &#8216;reconstruct&#8217; many old versions.  <a href="https://archive.org/download/oldgcc1x" target="_blank" rel="noreferrer noopener">The results are on archive.org</a>. And what is significant from this, is the first version of GCC with i386 support appears in version 1.27.</p>



<p class="wp-block-paragraph">From the internals-1 file we can find out that we all have William Schelter to thank for doing the bulk of the 386 port of GCC.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">William Schelter did most of the work on the Intel 80386 support.</p>
<cite>Internals-1 &#8211; gcc 1.27</cite></blockquote>



<p class="wp-block-paragraph">With the first commit being on May 29th, 1988:</p>



<pre class="wp-block-preformatted">Sun May 29 00:20:23 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)<br>...<br>	* tm-att386.h: New file.</pre>



<h2 class="wp-block-heading">GCC 1.25</h2>



<p class="wp-block-paragraph">The first GCC with i386 parts is 1.25, however it tends to emit the instruction movsbl, which GAS doesn&#8217;t like.  Comparing the output to GCC 1.40 reveals this:</p>



<pre class="wp-block-code"><code>-	movsbl -12(%ebp),%ax
+	movsbw -12(%ebp),%ax</code></pre>



<p class="wp-block-paragraph">It&#8217;s trivial enough to change to a movsbw, but there are some other issues going on, and even the Infocom &#8217;87 interpreter won&#8217;t fully build &amp; run.  The files input.c &amp; print.c have to be built with a later version of GCC, in this case I used GCC 1.40.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="577" src="https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125-1024x577.png" alt="" class="wp-image-14485" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125-1024x577.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125-300x169.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125-768x433.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125-500x282.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/06/infocom-87-mostly-built-with-gcc-125.png 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">8&amp;% compiled with GCC 1.25!</figcaption></figure>



<p class="wp-block-paragraph">However when using the old XenixNT build thing I did, I do get a runnable EXE! </p>



<figure class="wp-block-image size-large"><a href="https://archive.org/details/gcc-1.25-i386" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1024" height="577" src="https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2-1024x577.png" alt="" class="wp-image-14463" srcset="https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2-1024x577.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2-300x169.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2-768x433.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2-500x282.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/05/gcc-1.25-i386-v2.png 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">GCC 1.25 targeting DJGPP v1</figcaption></figure>



<p class="wp-block-paragraph">I added the BSD targeting files from 1.27 allowing it to generate the needed underscores in the right places, as 1.25 by default only supports AT&amp;T syntax.  I guess the best way to illustrate it is to compile the compiler twice, once as the AT&amp;T compiler, and the next being the BSD compiler, and compare their output:</p>



<pre class="wp-block-code"><code>cc1-att.exe hi.cpp -quiet -dumpbase hi.c -version -o hi-att.s
GNU C version 1.25 (80386, ATT syntax) compiled by GNU C version 4.8.1.

.text
.LC0:
        .byte 0x31,0x2e,0x32,0x35,0x0
.LC1:
        .byte 0x68,0x65,0x6c,0x6c,0x6f,0x20,0x66,0x72,0x6f,0x6d
        .byte 0x20,0x25,0x73,0xa,0x0
        .align 2
.globl main
main:
        pushl %ebp
        movl %esp,%ebp
        pushl $.LC0
        pushl $.LC1
        call printf
.L1:
        leave
        ret</code></pre>



<p class="wp-block-paragraph">And then looking at the BSD syntax:</p>



<pre class="wp-block-code"><code>cc1-bsd.exe hi.cpp -quiet -dumpbase hi.c -version -o hi-bsd.s
GNU C version 1.25 (80386, BSD syntax) compiled by GNU C version 4.8.1.

        .file   "hi.c"
.text
LC0:
        .byte 0x31,0x2e,0x32,0x35,0x0
LC1:
        .byte 0x68,0x65,0x6c,0x6c,0x6f,0x20,0x66,0x72,0x6f,0x6d
        .byte 0x20,0x25,0x73,0xa,0x0
        .align 1
.globl _main
_main:
        pushl %ebp
        movl %esp,%ebp
        pushl $LC0
        pushl $LC1
        call _printf
L1:
        leave
        ret</code></pre>



<p class="wp-block-paragraph">As you can see main: becomes _main:, just as labels (LC0/LC1) have a prepended, while in BSD they do not.  There are no doubt countless other nuanced differences, but for the assembler &amp; operating system to match you want these to align.  Thankfully calling conventions are mostly the same per processor so you can add the underscores to the AT&amp;T target and get something that&#8217;ll run, not only on DJGPP but also Win32, as MinGW32 uses BSD syntax at its heart!</p>



<pre class="wp-block-code"><code>C:\xdjgpp.v1\src\26&gt;gcc hi-bsd.s -o hi.exe

C:\xdjgpp.v1\src\26&gt;wsl file hi.exe
hi.exe: PE32 executable (console) Intel 80386, for MS Windows

C:\xdjgpp.v1\src\26&gt;hi
hello from 1.25</code></pre>



<p class="wp-block-paragraph">Not that we really need to go all the way and have GCC 1.25 running on anything much, although at the same time it&#8217;s kind of fun!</p>



<h2 class="wp-block-heading">Reaching out for help</h2>



<p class="wp-block-paragraph">The oldest &amp; most robust GCC is 1.27, and I&#8217;d been able to use that to build DooM before, but the caveat is of course the fixed point math.  I&#8217;d asked smarter people than I years ago about this problem, and basically was told to figure it out for myself.  After all its &#8216;trivial&#8217;.  But alas, I&#8217;m not smart.  What I would do is build the fixed point math with GCC and try to re-work that into other compilers, although again for platforms without GCC or the target CPU lacking the 64bit data type is well.. fatal.</p>



<p class="wp-block-paragraph">But AI, sadly for it, is compelled to help.  So I just went ahead and asked and got a surprising result!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point.png" target="_blank" rel="noreferrer noopener"><img decoding="async" width="787" height="711" src="https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point.png" alt="" class="wp-image-14465" srcset="https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point.png 787w, https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point-300x271.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point-768x694.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/05/sydney-long-long-fixed-point-332x300.png 332w" sizes="(max-width: 787px) 100vw, 787px" /></a><figcaption class="wp-element-caption">Sydney strikes back!</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s very C++ like but it&#8217;s trivial enough to make it into old C.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed.gif"><img loading="lazy" decoding="async" width="240" height="151" src="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed.gif" alt="" class="wp-image-14466" style="width:633px;height:auto"/></a><figcaption class="wp-element-caption">Sydney&#8217;s fixed-point guess</figcaption></figure>



<p class="wp-block-paragraph">Well on the one hand it does actually load up and play.  But the controls go wild and I&#8217;m pulled into the intersection of these boxes, and unable to move.  And as I rotate the floor and walls clip in and out.  It&#8217;s very weird.</p>



<p class="wp-block-paragraph">Not knowing anything about anything, I saw this &#8216;guard&#8217; on the fixed division and tried to add that to the multiply:</p>



<pre class="wp-block-code"><code>	if ( (abs(a)&gt;&gt;14) &gt;= abs(b))
		return (a^b)&lt;0 ? MININT : MAXINT;</code></pre>



<p class="wp-block-paragraph">And I got something even weirder!</p>



<figure class="wp-block-image size-full is-resized"><a href="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed-abs.gif"><img loading="lazy" decoding="async" width="240" height="151" src="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed-abs.gif" alt="" class="wp-image-14467" style="width:628px;height:auto"/></a><figcaption class="wp-element-caption">Now with absolute guards!</figcaption></figure>



<p class="wp-block-paragraph">Not only that but the engine crashes!  Not good.</p>



<p class="wp-block-paragraph">After thinking about it on and off, asking for more help and going nowhere, I just gave up.  It&#8217;s something beyond my skill, and apparently the AI as well.  Until I had one of those moments in a dream where I had somehow told myself I bet the integers are not unsigned, and obviously fixed-point math needs all the bits, and it&#8217;s such a trivial fix, that even I should have figured it out.</p>



<p class="wp-block-paragraph">I woke up at 4am and fired up the computer to see if it did anything.  I was surprised to see that yes, in fact the integers were signed.  I added the one key word, and recompiled using GCC 2.2:</p>



<figure class="wp-block-image size-full is-resized"><a href="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed_unsigned.gif"><img loading="lazy" decoding="async" width="240" height="151" src="https://virtuallyfun.com/wp-content/uploads/2024/05/doom-sydney-fixed_unsigned.gif" alt="" class="wp-image-14469" style="width:631px;height:auto"/></a><figcaption class="wp-element-caption">Now with unsigned integers</figcaption></figure>



<p class="wp-block-paragraph">And it RAN!  I tried GCC 1.39, and too ran!  I then made sure there was no assembly modules being called accidentally, and then re-built with GCC 1.27, and yeah, it <em>runs</em>!</p>



<p class="wp-block-paragraph">Armed with a simple port of DooM to Win32, I went ahead and put in the fixed-point solution, and used Visual C++ 1.10 aka Microsoft C/C++ 8.0 to build DooM, and yes it works there too!</p>



<p class="wp-block-paragraph">In the end I guarded it around a long long type, as I&#8217;m sure it&#8217;s much more faster, but for those without the types or any assembly skill, here is the solution:</p>



<pre class="wp-block-code"><code>/* Fixme. __USE_C_FIXED__ or something. */
fixed_t
FixedMul
        ( fixed_t a,
        fixed_t b )
{
#ifdef HAVE_LONG_LONG
    return ((long long) a * (long long) b) &gt;&gt; FRACBITS;
#else
    unsigned int ah,al,bh,bl,result;

    ah = (a &gt;&gt; FRACBITS);
    al = (a &amp; (FRACUNIT-1));
    bh = (b &gt;&gt; FRACBITS);
    bl = (b &amp; (FRACUNIT-1));

    /* Multiply the parts separately    */
    result = (ah * bh) &lt;&lt; FRACBITS;     /* High*High    */
    result += ah * bl;                  /* High*Low     */
    result += al * bh;                  /* Low*High     */
    /* Low*Low part doesn't need to be calculated because it doesn't contribute to the result after shifting

    // Shift right by FRACBITS to get the fixed-point result                                            */
    result += (al * bl) &gt;&gt; FRACBITS;

    return (fixed_t)result;
#endif
}

/* */
/* FixedDiv, C version. */
/* */
fixed_t
FixedDiv2
        ( fixed_t a,
        fixed_t b )
{
#ifdef HAVE_LONG_LONG
        long long c;
        c = ((long long)a&lt;&lt;16) / ((long long)b);
        return (fixed_t) c;
#else
        double c;

        c = ((double)a) / ((double)b) * FRACUNIT;

        if (c &gt;= 2147483648.0 || c &lt; -2147483648.0)
                I_Error("FixedDiv: divide by zero");
        return (fixed_t) c;
#endif
}

fixed_t
FixedDiv
        ( fixed_t a,
        fixed_t b )
{
        if ( (abs(a)&gt;&gt;14) &gt;= abs(b))
                return (a^b)&lt;0 ? MININT : MAXINT;
        return FixedDiv2 (a,b);
}</code></pre>



<p class="wp-block-paragraph">I haven&#8217;t tested it on Big Endian machines yet.  I&#8217;ve updated my <a href="https://sourceforge.net/p/crossdjgppv1/DooM/ci/master/tree/" target="_blank" rel="noreferrer noopener">terrible DooM engine port</a>, along with <a href="https://github.com/neozeed/doomnew-for-dos" target="_blank" rel="noreferrer noopener">Doom-New for DOS</a>.   Additionally, I&#8217;ve been able to confirm it works with Watcom 9-OpenWatcom 2.  It might even work with 7 &amp; 8 but I haven&#8217;t tried.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/05/30/doom-gcc-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adding the missing part of DoomNew &#8211; audio</title>
		<link>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/</link>
					<comments>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 18:11:57 +0000</pubDate>
				<category><![CDATA[audio]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[DPMI]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[Watcom C++]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14250</guid>

					<description><![CDATA[DoomNew, is a rather ambitious project by Maraakate, to attempt to revert the old linuxdoom-1.10 to something more akin to what shipped for DooM 1.9 using Hexen/Heretic source code to fill in many of the blanks in a very Jurassic &#8230; <a href="https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://doomwiki.org/wiki/DoomNew" target="_blank" rel="noreferrer noopener">DoomNew</a>, is a rather ambitious project by <em><a href="http://dk.toastednet.org/index.html" target="_blank" rel="noreferrer noopener">Maraakate</a></em>, to attempt to revert the old linuxdoom-1.10 to something more akin to what shipped for DooM 1.9 using Hexen/Heretic source code to fill in many of the blanks in a very Jurassic Park like manipulation of it&#8217;s DNA (source code).  It&#8217;s great and gives you a very cool MS-DOS based engine using the original Watcom tools.  But there is always the one catch, which is that it relies on the original sound library, <a href="https://doomwiki.org/wiki/DMX" target="_blank" rel="noreferrer noopener">DMX</a>.</p>



<p class="wp-block-paragraph">And unfortunately, nobody has been able to <a href="https://www.doomworld.com/forum/post/821608" target="_blank" rel="noreferrer noopener">get ahold of Paul Radek</a> to see if he&#8217;d be okay with any kind of open-source license.  So, sadly DMX has been a long-standing stumbling block for that &#8216;authentic&#8217; super vanilla DOS DooM.</p>



<h2 class="wp-block-heading">Enter the Raptor</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="149" src="/wp-content/uploads/2024/04/raptor-demo1.gif" alt="" class="wp-image-14251" style="width:612px;height:auto"/></a><figcaption class="wp-element-caption">Raptor: Call of the Shadows</figcaption></figure>
</div>


<p class="wp-block-paragraph">Fast forward to a few days ago, and I come across <a href="https://github.com/skynettx/dosraptor/tree/master">dosraptor</a> on github.  I had a copy of this back in the day, it was bundled on CD-ROM or something.  I am absolutely terrible at games like this, but I did remember this one being incredibly fluid, and fun despite me having no skill.  Raptor was written by <a href="https://www.mking.com/index.html" target="_blank" rel="noreferrer noopener">Scott Host</a>, and it&#8217;s still on sale over on <a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/" target="_blank" rel="noreferrer noopener">steam</a>!  The source had been cleaned up with help from <a href="https://github.com/skynettx" target="_blank" rel="noreferrer noopener">skynettx</a>, <a href="https://github.com/nukeykt" target="_blank" rel="noreferrer noopener">nukeykt </a>and <a href="https://github.com/NY00123" target="_blank" rel="noreferrer noopener">NY00123</a>.</p>



<p class="wp-block-paragraph">I went ahead and <a href="https://store.steampowered.com/app/358360/Raptor_Call_of_the_Shadows_1994_Classic_Edition/">built it from source</a>, and in no time I was up and running.  I found Watcom 9.5 was the best path to go with.  I even made a &#8216;<a href="https://github.com/neozeed/dosraptor/releases" target="_blank" rel="noreferrer noopener">release</a>&#8216; for those who don&#8217;t want the joy of building from source, and of course picked up a copy on both steam and his site.  While building the source code, and looking at the directory tree that&#8217;s when I noticed apodmx:</p>



<pre class="wp-block-preformatted">This is a DMX sound library wrapper, which is powered by the<br>Apogee Sound System, the latter being written by Jim Dose for<br>3D Realms. When used together, they form a replacement for DMX.<br><br>The DMX wrapper was written by <a href="https://github.com/nukeykt">Nuke.YKT</a> for <a href="https://github.com/nukeykt/pcdoom">PCDoom</a>, a DOS port<br>of id Software's Doom title from the 90s.<br><br>It also includes the mus2mid converter, contributed by <a href="http://benryves.com">Ben Ryves</a> for<br><a href="https://soulsphere.org/">Simon Howard</a>'s Chocolate Doom port, as well as the PC Speaker frequency table, dumped by Gez from a DOOM2.EXE file and later also added to Chocolate Doom.<br><br>A few years later, this wrapper was modified by <a href="https://github.com/NY00123">NY00123</a>; Mostly to be built as a standalone library, while removing dependencies on game code.</pre>



<p class="wp-block-paragraph">So it turns out that Raptor used DMX, just like DooM!</p>



<p class="wp-block-paragraph">Well, isn&#8217;t that incredible!</p>



<p class="wp-block-paragraph">Now the first question I had, was apodmx a direct drop-in replacement for DMX?  Well basically, yes!  Let&#8217;s check out the Adlib driver!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="682" height="529" src="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1.png" alt="" class="wp-image-15220" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1.png 682w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1-300x233.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-1-387x300.png 387w" sizes="auto, (max-width: 682px) 100vw, 682px" /><figcaption class="wp-element-caption">I think I legit got DMCA&#8217;d over the DooM intro</figcaption></figure>



<p class="wp-block-paragraph">The Apogee Sound System is softer, and not quite the same as DMX, but compared to nothing I&#8217;m more than happy with it.  The AdLib is kind of a weird card to drive, and I guess it&#8217;s not to surprising that there is such a variance.  </p>



<h2 class="wp-block-heading">How about a Roland Sound Canvas?</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://github.com/nukeykt/Nuked-SC55" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="87" src="/wp-content/uploads/2024/04/sound-canvas.gif" alt="" class="wp-image-14264" style="width:623px;height:auto"/></a><figcaption class="wp-element-caption">Nuked-SC55: Roland SC-55 emulation</figcaption></figure>
</div>


<p class="wp-block-paragraph">Sadly, mine is inaccessible, but thanks to <a href="https://github.com/nukeykt">nukeykt</a> there is <a href="https://github.com/nukeykt/Nuked-SC55" target="_blank" rel="noreferrer noopener">the Nuked-SC55: Roland SC-55 series emulation</a>.  I had to setup the MidiLoop as expected, and configure DosBox for the Loop and now I have a virtual Sound Canvas.  So let&#8217;s see how the two engines deal with a common instrument!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="645" height="232" src="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2.png" alt="" class="wp-image-15222" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2.png 645w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2-300x108.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/lack-of-audio-2-500x180.png 500w" sizes="auto, (max-width: 645px) 100vw, 645px" /><figcaption class="wp-element-caption">I think this got DMCA&#8217;d</figcaption></figure>



<p class="wp-block-paragraph">Pretty cool, if I do say so myself.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://github.com/neozeed/doomnew-for-dos/releases/tag/apogee_snd" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="240" height="149" src="/wp-content/uploads/2024/04/322240103-9c3eef88-466f-4a5e-b555-1d0b870bc946.gif" alt="" class="wp-image-14268" style="width:628px;height:auto"/></a><figcaption class="wp-element-caption">ZeeDooM</figcaption></figure>
</div>


<p class="wp-block-paragraph">I&#8217;ve uploaded my modifications to <a href="https://github.com/neozeed/doomnew-for-dos" target="_blank" rel="noreferrer noopener">github</a>, along with a <a href="https://github.com/neozeed/doomnew-for-dos/releases/tag/apogee_snd" target="_blank" rel="noreferrer noopener">copy of that old ZeeDooM</a> I had slapped together ages ago.  I&#8217;d taken the <a href="https://www.doomworld.com/forum/topic/72509-more-goodies-from-romero-doomed-source-maps-graphics/" target="_blank" rel="noreferrer noopener">map source code from Romero</a>, and the graphical/audio resources from <a href="https://github.com/freedoom" target="_blank" rel="noreferrer noopener">Freedoom</a> and slapped them together.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/15/adding-the-missing-part-of-doomnew-audio/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Both Johns reunite for a 30th anniversary celebration of DooM!</title>
		<link>https://virtuallyfun.com/2023/12/10/both-johns-reunite-for-a-30th-anniversary-celebration-of-doom/</link>
					<comments>https://virtuallyfun.com/2023/12/10/both-johns-reunite-for-a-30th-anniversary-celebration-of-doom/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 10 Dec 2023 22:22:42 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[videos]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=13550</guid>

					<description><![CDATA[I haven&#8217;t had a chance to watch it yet, but wow it&#8217;s been 30 years. I can remember having a really good GPA to basically being forced to drop out. I guess it&#8217;s just as well, DooM was great, even &#8230; <a href="https://virtuallyfun.com/2023/12/10/both-johns-reunite-for-a-30th-anniversary-celebration-of-doom/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="December 10 - DOOM&#039;s 30th Anniversary Stream with John Romero, John Carmack, and David L. Craddock" width="584" height="329" src="https://www.youtube.com/embed/QvAkaJsvAXs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">I haven&#8217;t had a chance to watch it yet, but wow it&#8217;s been 30 years.  I can remember having a really good GPA to basically being forced to drop out.  I guess it&#8217;s just as well, DooM was great, even to the point of having to get good at building LANs, and building them for fun &amp; profit.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2023/12/10/both-johns-reunite-for-a-30th-anniversary-celebration-of-doom/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DooM in DooM!</title>
		<link>https://virtuallyfun.com/2022/07/14/doom-in-doom/</link>
					<comments>https://virtuallyfun.com/2022/07/14/doom-in-doom/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 14 Jul 2022 20:31:34 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11965</guid>

					<description><![CDATA[This is super cool, kgsws has managed to use some buffer overflows, and code injections to get DooM to load DooM, and display to a texture. Watch the video for all the details! You can download the source and assets &#8230; <a href="https://virtuallyfun.com/2022/07/14/doom-in-doom/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="433" src="https://virtuallyfun.com/wp-content/uploads/2022/07/doom2-in-doom.png" alt="" class="wp-image-11966" srcset="https://virtuallyfun.com/wp-content/uploads/2022/07/doom2-in-doom.png 642w, https://virtuallyfun.com/wp-content/uploads/2022/07/doom2-in-doom-300x202.png 300w, https://virtuallyfun.com/wp-content/uploads/2022/07/doom2-in-doom-445x300.png 445w" sizes="auto, (max-width: 642px) 100vw, 642px" /><figcaption>DooMception! / &#8220;doom2 -file kgdid.wad&#8221;</figcaption></figure>



<p class="wp-block-paragraph">This is super cool, kgsws has managed to use some buffer overflows, and code injections to get DooM to load DooM, and display to a texture.</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/c6hnQ1RKhbo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>



<p class="wp-block-paragraph">Watch the video for all the details!</p>



<p class="wp-block-paragraph">You can download the source and assets from github</p>



<p class="wp-block-paragraph"><a href="https://github.com/kgsws/doom-in-doom">kgsws/doom-in-doom: Doom 2 code execution. With a Doom port. (github.com)</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2022/07/14/doom-in-doom/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>zeeDooM Xenix!</title>
		<link>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/</link>
					<comments>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 26 Oct 2021 06:02:47 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[Xenix]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11519</guid>

					<description><![CDATA[So a few months ago, gattilorenz had told me he managed to work out how to do direct video under Xenix, and was able to get DooM running! He made the source available, and I meant to do something back &#8230; <a href="https://virtuallyfun.com/2021/10/26/zeedoom-xenix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So a few months ago, <a href="https://github.com/gattilorenz">gattilorenz</a> had told me he managed to work out how to do direct video under Xenix, and was able to get DooM running!  He made <a href="https://github.com/gattilorenz/Xenix-doom" target="_blank" rel="noreferrer noopener">the source available</a>, and I meant to do something back then, but I must have gotten distracted.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="642" height="432" src="https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash.png" alt="" class="wp-image-11520" srcset="https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash.png 642w, https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash-300x202.png 300w, https://virtuallyfun.com/wp-content/uploads/2021/10/zeedoom-splash-446x300.png 446w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure></div>



<p class="wp-block-paragraph">So I went ahead and added the <a rel="noreferrer noopener" href="/wordpress/2018/01/02/zeedoom-updated-to-use-latest-freedoom-assets/" target="_blank">zeeDooM thing</a> I had been working on a while ago which is a combination of the <a rel="noreferrer noopener" href="/wordpress/2018/01/01/putting-the-2015-romero-doom-level-release-to-use/" target="_blank">John Romero released maps</a>, and the <a rel="noreferrer noopener" href="/wordpress/2018/01/02/zeedoom-updated-to-use-latest-freedoom-assets/" target="_blank">FreeDoom assets</a>.  So it&#8217;s not 100% the released version, it just looks that way.</p>



<p class="wp-block-paragraph">I&#8217;ve gone ahead and created a qemu disk image (if you convert it, it does run on VMware, so probably far more 386 capable emulators than I can imagine), along with an old Qemu exe for some <a rel="noreferrer noopener" href="https://archive.org/details/zeeDooM" target="_blank">stand alone fun on archive.org</a>.</p>



<p class="wp-block-paragraph">There is no sound, nor music.  I should look closer one day, and see if I can drive some direct music to an Adlib since it&#8217;s just IO ports, and maybe grab all the direct sound code from <a rel="noreferrer noopener" href="https://github.com/viti95/FastDoom" target="_blank">viti95&#8217;s FastDoom</a>?</p>



<p class="wp-block-paragraph">Anyways, it&#8217;s zeeDooM!.. on Xenix!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2021/10/26/zeedoom-xenix/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Amongst all the DooM and gloom, DooM 64 was released for PC!</title>
		<link>https://virtuallyfun.com/2020/03/24/amongst-all-the-doom-and-gloom-doom-64-was-released-for-pc/</link>
					<comments>https://virtuallyfun.com/2020/03/24/amongst-all-the-doom-and-gloom-doom-64-was-released-for-pc/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 24 Mar 2020 04:19:54 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[steam]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=10183</guid>

					<description><![CDATA[I guess I missed all the excitement of the new DooM whatever, but Bethesda decided to dig up that N64 &#8216;DooM 3&#8217; aka DooM 64. It&#8217;s a unique game unlike all the other console ports that were straight ports of &#8230; <a href="https://virtuallyfun.com/2020/03/24/amongst-all-the-doom-and-gloom-doom-64-was-released-for-pc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2020/03/doom64-50.jpg"><img loading="lazy" decoding="async" width="641" height="416" src="https://virtuallyfun.com/wp-content/uploads/2020/03/doom64-50.jpg" alt="" class="wp-image-10184" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/doom64-50.jpg 641w, https://virtuallyfun.com/wp-content/uploads/2020/03/doom64-50-300x195.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2020/03/doom64-50-462x300.jpg 462w" sizes="auto, (max-width: 641px) 100vw, 641px" /></a></figure></div>



<p class="wp-block-paragraph">I guess I missed all the excitement of the new DooM whatever, but Bethesda decided to dig up that N64 &#8216;DooM 3&#8217; aka DooM 64.  It&#8217;s a unique game unlike all the other console ports that were straight ports of the original DooM, although some like the 32x (Mars) or Jaguar versions that had a bunch of details removed from the levels to either spare the limited processors, and/or save precious cartridge space.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://steamcommunity.com/app/1148590"><img loading="lazy" decoding="async" width="951" height="210" src="https://virtuallyfun.com/wp-content/uploads/2020/03/DooM64-stema-tag.jpg" alt="" class="wp-image-10185" srcset="https://virtuallyfun.com/wp-content/uploads/2020/03/DooM64-stema-tag.jpg 951w, https://virtuallyfun.com/wp-content/uploads/2020/03/DooM64-stema-tag-300x66.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2020/03/DooM64-stema-tag-768x170.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2020/03/DooM64-stema-tag-500x110.jpg 500w" sizes="auto, (max-width: 951px) 100vw, 951px" /></a></figure></div>



<p class="wp-block-paragraph">At $39 HKD, it&#8217;s $4 USD, so it&#8217;s a bit &#8216;pricy&#8217; for something that is a 23 year old game, but at least I guess it&#8217;s out in the wild in a legal format.  No idea if it made it to Bethesda.net as that whole thing collapsed quicker than Fallout 76 became a meme riddled disappointment.</p>



<p class="wp-block-paragraph">Anyways I know I&#8217;m late to the party, but it&#8217;s all new to me.</p>



<p class="wp-block-paragraph"> <a href="https://steamcommunity.com/app/1148590">https://steamcommunity.com/app/1148590</a>  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2020/03/24/amongst-all-the-doom-and-gloom-doom-64-was-released-for-pc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How much DooM is there in the Doom 3: BFG Edition version?</title>
		<link>https://virtuallyfun.com/2019/11/30/how-much-doom-is-there-in-the-doom-3-bfg-edition-version/</link>
					<comments>https://virtuallyfun.com/2019/11/30/how-much-doom-is-there-in-the-doom-3-bfg-edition-version/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sat, 30 Nov 2019 08:05:15 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9923</guid>

					<description><![CDATA[Another follow up to my ages old &#8220;Just how â€˜originalâ€™ is the Ultimate Doom on steam?&#8220;, I thought I&#8217;d follow up with the DooM 3 BFG version. I already have DooM 3, but this is apparently remastered, and includes the &#8230; <a href="https://virtuallyfun.com/2019/11/30/how-much-doom-is-there-in-the-doom-3-bfg-edition-version/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Another follow up to my ages old &#8220;<a href="https://virtuallyfun.com/wordpress/2014/06/30/just-how-original-is-the-ultimate-doom-on-steam/">Just how â€˜originalâ€<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> is the Ultimate Doom on steam?</a>&#8220;, I thought I&#8217;d follow up with the DooM 3 BFG version.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="947" height="463" src="https://virtuallyfun.com/wp-content/uploads/2019/11/doom3.jpg" alt="" class="wp-image-9924" srcset="https://virtuallyfun.com/wp-content/uploads/2019/11/doom3.jpg 947w, https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-300x147.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-768x375.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-500x244.jpg 500w" sizes="auto, (max-width: 947px) 100vw, 947px" /></figure></div>



<p class="wp-block-paragraph">I already have DooM 3, but this is apparently remastered, and includes the previous versions!?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="636" height="149" src="https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-on-sale.jpg" alt="" class="wp-image-9925" srcset="https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-on-sale.jpg 636w, https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-on-sale-300x70.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2019/11/doom3-on-sale-500x117.jpg 500w" sizes="auto, (max-width: 636px) 100vw, 636px" /></figure>



<p class="wp-block-paragraph">It&#8217;s not like it really offers anything I don&#8217;t have, but it&#8217;s on sale so whatever let&#8217;s go.</p>



<p class="wp-block-paragraph">And in the base/wads directory there they are!</p>



<p class="wp-block-paragraph">fb35c4a5a9fd49ec29ab6e900572c524 DOOM.WAD<br>c3bea40570c23e511a7ed3ebcd9865f7 DOOM2.WAD</p>



<p class="wp-block-paragraph">And sure enough the are the latest versions of the game files to be found according to <a href="https://doom.fandom.com/wiki/Doom_files">doom.fandom.com</a>.  Great!  So to further the abuse I tried them under my mutilated DooM.</p>



<p class="wp-block-paragraph">Ultimate Doom seems to work just fine on it&#8217;s own  I tested it briefly warping to a few levels but yeah it just works!  Doom2 however bombs out that the resource TITLEPIC is missing from the wad.  How disappointing!</p>



<p class="wp-block-paragraph">Naturally I just took the easy way out, and basically checked for the resource, and load another if it&#8217;s missing.</p>



<pre class="wp-block-preformatted">@@ -477,7 +477,11 @@
  else
  pagetic = 170;
  gamestate = GS_DEMOSCREEN;
- pagename = "TITLEPIC";
+ /* the Doom 3 BFG EDITION version of Doom 2 is lacking the titlepic */
+ if(W_CheckNumForName("TITLEPIC")>0)
+ pagename = "TITLEPIC";
+ else
+ pagename = "DMENUPIC";
  if ( gamemode == commercial )
  S_StartMusic(mus_dm2ttl);
  else</pre>



<p class="wp-block-paragraph"><a href="https://sourceforge.net/p/crossdjgppv1/DooM/ci/c13a036ca93aa16b6c11b6008bdb189cb0658fba/">It&#8217;s a shamefully basic patch</a>.  But it works.</p>



<p class="wp-block-paragraph">Another interesting thing is that DooM 3 BFG also includes the gravis ultrasound bank data, so you could load them up into some other emulator and enjoy that gravis experience.  I don&#8217;t know if it&#8217;s licensed or what, but it&#8217;s a nice touch.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/11/30/how-much-doom-is-there-in-the-doom-3-bfg-edition-version/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AVGN reviews Chex Quest</title>
		<link>https://virtuallyfun.com/2019/08/23/avgn-reviews-chex-quest/</link>
					<comments>https://virtuallyfun.com/2019/08/23/avgn-reviews-chex-quest/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 23 Aug 2019 01:58:21 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[zeeDoom]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9750</guid>

					<description><![CDATA[Okay that was funny. I never thought of even trying Brutal DooM + Chex Quest. Sounds awesome. Although I&#8217;d played a little with Chex Quest before, I never tried it on the DooM source. Oddly enough it&#8217;s Ultimate DooM. In &#8230; <a href="https://virtuallyfun.com/2019/08/23/avgn-reviews-chex-quest/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Vg0y9i5E7nY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>



<p class="wp-block-paragraph">Okay that was funny.  I never thought of even trying Brutal DooM + Chex Quest.  Sounds awesome.</p>



<p class="wp-block-paragraph">Although I&#8217;d played a little with <a href="https://virtuallyfun.com/wordpress/2014/04/28/chex-quest/">Chex Quest before</a>, I never tried it on the DooM source.  Oddly enough it&#8217;s Ultimate DooM.  In d_main.c you can do some simple test for chex.wad and pass it off as the &#8216;retail&#8217; version.</p>



<pre>
	if ( !access (chex,R_OK) )
	{
		gamemode = retail;
		D_AddFile (chex);
		return;
	}
</pre>



<p class="wp-block-paragraph">Or you can simply just rename chex.wad to doom.wad or doomu.wad.  Many of the strings for DooM are compiled into the EXE, not taken from the WAD file (although it could have been, I guess it was to prevent people from making overtly cheeky mods?).</p>



<p class="wp-block-paragraph">So firing up <a href="https://www.wad-archive.com/wad/Chex-Quest">the wad</a> under <a href="https://sourceforge.net/p/crossdjgppv1/DooM/ci/master/tree/">my crappy DooM port</a> thing to MS-DOS (for the sane people just use some other Win64/OSX/Linux thing like zdoom), and when selecting an episode you&#8217;ll see the Ultimate DooM levels.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="642" height="401" src="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Ultimate-Edition.png" alt="" class="wp-image-9751" srcset="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Ultimate-Edition.png 642w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Ultimate-Edition-300x187.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Ultimate-Edition-480x300.png 480w" sizes="auto, (max-width: 642px) 100vw, 642px" /><figcaption>Chex Quest, Thy Flesh Consumed!</figcaption></figure></div>



<p class="wp-block-paragraph">Wait? What?  I though Chex Quest was a &#8216;total conversion&#8217; WAD.  Well it turns out that it is, and it isn&#8217;t.  They replaced a lot of the default stuff from a retail version of Ultimate DooM.  And what they didn&#8217;t replace, well it&#8217;s still there.  And yes that does mean everything outside of the first 5 levels are the original DooM levels.  And that includes the music as well!</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="642" height="401" src="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E2M2.png" alt="" class="wp-image-9752" srcset="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E2M2.png 642w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E2M2-300x187.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E2M2-480x300.png 480w" sizes="auto, (max-width: 642px) 100vw, 642px" /><figcaption>E2M2 from Chex Quest</figcaption></figure>



<p class="wp-block-paragraph">Well isn&#8217;t that surprising!  And yes that means that it&#8217;s possible to just replace the first 5 levels with the default DooM levels and have that reverse conversion.  In the same way the menu screens are very Chexy too:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="642" height="401" src="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Menu.png" alt="" class="wp-image-9753" srcset="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Menu.png 642w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Menu-300x187.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-Menu-480x300.png 480w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">It certainly gives that kid like feeling to it.  Although the replacement Barrons of Hell are a little too big so they do look kind of silly.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="642" height="401" src="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E1M8-Barrons-of-Hell.png" alt="" class="wp-image-9754" srcset="https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E1M8-Barrons-of-Hell.png 642w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E1M8-Barrons-of-Hell-300x187.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/08/Chex-Quest-E1M8-Barrons-of-Hell-480x300.png 480w" sizes="auto, (max-width: 642px) 100vw, 642px" /><figcaption>E1M8</figcaption></figure>



<p class="wp-block-paragraph">So as always I&#8217;m late to the party.  I&#8217;m sure someone out there didn&#8217;t have the retail version of DooM and instead used Chex Quest for those LAN games.  Although it does detect that the WAD has been modified so I don&#8217;t think it would just be all that fine.</p>



<p class="wp-block-paragraph">Not that finding the original WAD files, or source to the maps, and just compiling them yourself is all that difficult, but I guess it is something else to load up.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/08/23/avgn-reviews-chex-quest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bethesda DooM for the PC</title>
		<link>https://virtuallyfun.com/2019/07/28/bethesda-doom-for-the-pc/</link>
					<comments>https://virtuallyfun.com/2019/07/28/bethesda-doom-for-the-pc/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 28 Jul 2019 08:13:45 +0000</pubDate>
				<category><![CDATA[doom]]></category>
		<category><![CDATA[games]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9656</guid>

					<description><![CDATA[With all the excitement regarding the DRM, disapearing Xbox versions and the terrible music in the Unity port, I thought I&#8217;d check out the PC version that is thankfully on sale on Bethesda.net. I really have lost track the number &#8230; <a href="https://virtuallyfun.com/2019/07/28/bethesda-doom-for-the-pc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="1024" height="545" src="https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM-1024x545.jpg" alt="" class="wp-image-9657" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM-1024x545.jpg 1024w, https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM-300x160.jpg 300w, https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM-768x409.jpg 768w, https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM-1200x639.jpg 1200w, https://virtuallyfun.com/wp-content/uploads/2019/07/Bethesda-Ultimate-DooM.jpg 1433w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>$1.70 USD!</figcaption></figure></div>



<p class="wp-block-paragraph">With all the excitement regarding the DRM, disapearing Xbox versions and the terrible music in the Unity port, I thought I&#8217;d check out the PC version that is thankfully on sale on <a href="https://bethesda.net/en/games/DO1CCPPCBG01">Bethesda.net</a>.  I really have lost track the number of times I&#8217;ve bought this game, but here we go again.  The last time I went through this was back in 2014, with the aptly titled: &#8220;<a href="https://virtuallyfun.com/wordpress/2014/06/30/just-how-original-is-the-ultimate-doom-on-steam/">Just how â€˜originalâ€<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> is the Ultimate Doom on steam?</a>&#8221; story.</p>



<p class="wp-block-paragraph">And much to my surprise they use the same version of DOSBox, 0.71, and have the same AdLib pre-config, along with the missing <a href="http://vpsland.superglobalmegacorp.com/install/MS-DOS/doom/patches/doom1/doom-setup.7z">SETUP.EXE</a> to allow you to change it.</p>



<p class="wp-block-paragraph">HOWEVER, there is one big difference, the WAD file.</p>



<p class="wp-block-paragraph">The steam version includes this wad file:</p>



<p class="wp-block-paragraph">c4fe9fd920207691a9f493668e0a2083 doom.wad</p>



<p class="wp-block-paragraph">Where the Bethesda.net uses this wad file:</p>



<p class="wp-block-paragraph">e4f120eab6fb410a5b6e11c947832357 doom.wad</p>



<p class="wp-block-paragraph">And looking on the <a href="https://doomwiki.org/wiki/DOOM.WAD">DooM Wiki</a>, that means that the wad file is from the PlayStation Network version.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="320" height="200" src="https://virtuallyfun.com/wp-content/uploads/2019/07/dmenupic.png" alt="" class="wp-image-9658" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/dmenupic.png 320w, https://virtuallyfun.com/wp-content/uploads/2019/07/dmenupic-300x188.png 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /><figcaption>Now with extra hell!</figcaption></figure></div>



<p class="wp-block-paragraph">And it&#8217;s true they really did change the cross to a pill for the medical kit, per the red crosses request:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="670" height="248" src="https://virtuallyfun.com/wp-content/uploads/2019/07/DooM-Medical.png" alt="" class="wp-image-9659" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/DooM-Medical.png 670w, https://virtuallyfun.com/wp-content/uploads/2019/07/DooM-Medical-300x111.png 300w" sizes="auto, (max-width: 670px) 100vw, 670px" /><figcaption>iD DooM on the left, Bethesda DooM on the right.</figcaption></figure></div>



<p class="wp-block-paragraph">There is a few changes here and there but overall it looks pretty standard to me.  Am I missing anything else?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/07/28/bethesda-doom-for-the-pc/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>First steps.</title>
		<link>https://virtuallyfun.com/2019/05/02/first-steps/</link>
					<comments>https://virtuallyfun.com/2019/05/02/first-steps/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Thu, 02 May 2019 13:40:40 +0000</pubDate>
				<category><![CDATA[68000]]></category>
		<category><![CDATA[cross compiler]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[m68k]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9439</guid>

					<description><![CDATA[After going through some Endian hell, it started to load! And promptly crash. So far it&#8217;s just as painful as the x68000. Time to investigate GDB.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After going through some Endian hell, it started to load!</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="642" height="468" src="https://virtuallyfun.com/wp-content/uploads/2019/05/DooM-crash-on-ST.png" alt="" class="wp-image-9441" srcset="https://virtuallyfun.com/wp-content/uploads/2019/05/DooM-crash-on-ST.png 642w, https://virtuallyfun.com/wp-content/uploads/2019/05/DooM-crash-on-ST-300x219.png 300w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">And promptly crash. </p>



<p class="wp-block-paragraph">So far it&#8217;s just as painful as the x68000. </p>



<p class="wp-block-paragraph">Time to investigate GDB.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/05/02/first-steps/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
