Jump to content

Can someone with a real SNES and a copy of Doom verify something for me?


Recommended Posts

Can someone with a real SNES and a copy of Doom (preferably a real cart, not a flashcart) verify something for me?

SNES Doom is infamous for ending abruptly after the Episode 3 text screen with no bunny ending or credits (even though the latter is in the game), rather kicking you back to the title screen instead. However, for various reasons, both relating to gameplay footage, the source code, and developments in emulation, I suspect that this could possibly be a bug, that always occurs on emulation and usually occurs on real hardware too, to do with the SNES's semi-random RAM state on power-up, and how it varies between SNES models. It would be helpful if a few people who own Doom on SNES could beat the final boss and tell me what the results are, did you get the credits screen or not?

 

This video, recorded from real hardware, shows the credits screen appearing after the text screen:

But in this video, the game just kicks the player back to the normal title screen. However, I did notice that they are playing on a SNES model 2, which as I understand was heavily "cloned" (rather, counterfeited, a normal clone wouldn't pretend to be the real thing), so much that the fakes are more common than the real thing. SNES clone chipsets are not particularly accurate to the original Ricoh chips (and share some common quirks with early SNES emulators), so that is something to keep in mind. But of course I have no way of telling if this is a legitimate SNES or not, this is just a hunch:

This video also shows the title screen, but is it just me or does the palette look like the one used for the credits? It's probably just the camera recording, but the rest of the video looks mostly fine. This does not sound like an original SNES though, this sounds like a very early emulator being played on a PC, the music is completely off. Why they'd do a camera recording instead of just screen-recording it I don't know:

The Cutting Room Floor says that the Japanese version shows the credits after beating the game. However, the first video couldn't have been taken on the Japanese version as it has the original story screen text. It might be worth testing the different region cartridges just in case.

EDIT: First video was taken on European version. It's possible that the credits not showing up is a bug exclusive to the North American version.

Edited by Individualised

Share this post


Link to post

I'm in NA. I've completed E3 in SNES Doom multiple times on real hardware in the past. I remember seeing an end credits screen. Mine's not a model 2, but it's the revision which is slightly smaller than the original and where game genie codes can't be used anymore (hangs on a black screen when trying to the start the game after entering codes).

Share this post


Link to post

What about the difficulty setting? I don't remember if there are any differences for completing E3 between HMP, UV and Nightmare. I know that beating E1 on the lowest, or E2 on HMP skips the episode end text and just goes back to the regular title screen. Not the same, but maybe in the same vein.

Share this post


Link to post

I'll check the source, though I wasn't able to make much sense of the parts that handled all the intermission/fluff stuff last time. Weird that it doesn't even show the text screen on lower difficulties, I would have expected it to at least show you that (considering it literally tells you to play the next episode to continue playing) before kicking you. Then again I don't understand why they locked the episodes to skill levels in the first place. I wonder if anyone way back thought their game was busted because of that, imagine buying Doom only to get what seems to be the shareware version because the game just abruptly ends after E1M8.

Edited by Individualised

Share this post


Link to post

Aha, I found something.

 

I was looking for the code that handles stopping the game on lower difficulties to see if it could give me any hints and it turns out that it's just part of the game ending in general; the game just sets a "stop at map ID" variable to do it. But furthermore, in the same piece of code is what handles the credits showing! Not only is it supposed to show at the end of the game but it's supposed to show after the game stops on lower difficulties too... yet, seemingly it doesn't. I think I've figured out what is going on, and while I'm not too familiar with 65816 assembly (I thought the game mostly ran on the GSU, but the fluff stuff is all done on the 5A22 at least it seems?), so I could be entirely wrong about this, yes, it appears to be a bug. It looks like this is the culprit;

;
;	>>>   NEXT LEVEL VALID?   <<<
;
RAGE7800
	tay					; New Level#
	asl	a				; Level Valid?
	tax
	lda	>EMNUMVERTEXESTable,x
	beq	RAGE7500			; NO!  SKIP IT!
	sty	Level				; Save Level#

	ife	useIMAGINEER
	lda	_SkillLevel			; Player's Skill Level
	cmp	#2				; Hurt Me Plent/Ultra-Violence/Nightmare?
	bcs	RAGE7900			; Yes
	cpy	#18				; Stop at end of Episode 2 for Skill 2
	beq	RAGE9200 ;RAGE7820	; RAGE9200
	dec	a
	beq	RAGE7900
	cpy	#9				; Stop at end of Episode 1 for Skill 1
RAGE7820
	beq	RAGE9200
	endif


;
;	* * * * * * *       SCORE SCREEN       * * * * * * *
;
RAGE8000
	ifn	useSCORE
	jsl	Score				; Score Screen
	endif
	mode	'A!'
	lda	Level				; Current Level
	cmp	#27				; GAME OVER?
	beq	RAGE9000			; YES!
	cmp	#9				; E2M1?
	beq	RAGE8500
	cmp	#18				; E3M1?
	beq	RAGE8500
	jmp	RAGE5000			; Next Level
RAGE8500
	jmp	RAGE4100			; Next Episode

;
;	* * * * * * *       GAME OVER       * * * * * * *
;
RAGE9000
	ifn	usePAL
	mode	'A!'
	lda	#4				; Display Credits Page 1
	sta	_TitleCount
	jsl	Title
	mode	'A!'
	lda	#8				; Display Credits Page 2
	sta	_TitleCount
	jsl	Title
	endif
RAGE9200
	mode	'A!'
	stz	_ResetCount			; Force Credits Display
	jsl	CheckSumVars
	jmp	RAGE2000

This is the code that handles what is supposed to happen after the player beats a level, if the intermission screen is shown, if they're sent to the next level, etc. As you can see, in RAGE7800, which also handles skipping the missing levels, is the code to handle whether the game should abruptly stop if the player is on a lower difficulty. If the player is on a lower difficulty, it jumps to 9200 which sets up the credits screen (by setting the reset count; remember the credits screen can also be triggered by resetting the console a few times, and it has been thought so far that this was the only way to access it).

 

RAGE8000 is related to the intermission screen (this is how the text screen always shows on Episode 3 even though the game ends there, I guess), and as you can see it will make the game end after E3M8. But notice something? It jumps to 9000, not 9200. Therefore, the credits screen is not set to appear. It will only appear if you beat an earlier episode on one of the low difficulties, then afterwards, beat the game.

 

There seems to be a bit more to it though, if you notice there is a compiler flag for the PAL version, so as I suspected the region of the game does play a part in this too. But apart from that, this seems like an easy fix, I'm surprised this has went unnoticed for this long. If I got anything wrong here please correct me though.

Edited by Individualised

Share this post


Link to post

Nice. I think it's gone unnoticed for so long because SNES Doom in general is not documented much. Part of it is probably the low interest.

 

Tangentially related, but everywhere I read online that game genie codes are not supposed to work on SNES Doom when playing on real hardware, only in emulation. This baffled me because, way back, while the GG codes never worked on my SNES for any game, I tested it at a buddy's and they did work; including Doom. I used the color blind visual effect code as well as the high ammo count code. I think it comes down to the model of snes again.

Share this post


Link to post

While we're on the topic something else I noticed while looking through is that the missing levels still have their blood splatter/"YOU ARE HERE" positions, even in the compiled ROM. In fact pretty much everything for the missing levels are still there except for the levels themselves, and the level names too (are replaced with a Randy Linden developer credit, in the source code you can see they used to be there but were commented out). Things like the music definitions and data pointers are still there.

Share this post


Link to post

Yeah, like 95% sure they made and implemented the cut levels at some stage before the final game. Something was playable for them in an earlier build.

Share this post


Link to post

I don't have SNES Doom now, but I did as a kid. It's definitely the difficulty settings (Which AFAIK applied only to the NA/EU versions - the JP version let you play any episode on any difficulty, but also rewrote the texts to be easier on non-English readers).

  • ITYTD: Kicked you back abruptly after E1M8.
  • HNTR: Could play E2 if you cleared E1 first, but stopped after E2M8.
  • HMP: Could start at E2; could play E3 if you cleared E2 first. AFAIK the first difficulty in which you could actually clear the game, but not sure if it showed the credits.
  • UV/NM: Could start at E3. Presumably showed the ending (as well as the credits?).

As for the levels, they got cut because there was simply no more ROM. Randy's tools did a bunch of mass conversions of the PC WAD file to his data formats, but the SuperFX2 could only address up to 16 Mbit/2 MB of ROM. Presumably as things got closer to the end, the final list was compiled, and since time was so short, rather than remove the data (and risk something screwing up), it was simply left inside as dummy data.

Edited by Dark Pulse

Share this post


Link to post
35 minutes ago, Dark Pulse said:

I don't have SNES Doom now, but I did as a kid. It's definitely the difficulty settings (Which AFAIK applied only to the NA/EU versions - the JP version let you play any episode on any difficulty, but also rewrote the texts to be easier on non-English readers).

  • ITYTD: Kicked you back abruptly after E1M8. 
  • HNTR: Could play E2 if you cleared E1 first, but stopped after E2M8. 
  • HMP: Could start at E2; could play E3 if you cleared E2 first. AFAIK the first difficulty in which you could actually clear the game, but not sure if it showed the credits.
  • UV/NM: Could start at E3. Presumably showed the ending (as well as the credits?). 

As for the levels, they got cut because there was simply no more ROM. Randy's tools did a bunch of mass conversions of the PC WAD file to his data formats, but the SuperFX2 could only address up to 16 Mbit/2 MB of ROM. Presumably as things got closer to the end, the final list was compiled, and since time was so short, rather than remove the data (and risk something screwing up), it was simply left inside as dummy data.

As far as I can tell from the source there's no difference whether you beat the game on Hurt Me Plenty or Ultra Violence/Nightmare. It seems the credits not showing up is a simple bug and can be fixed by changing that one line so that it jumps to the correct piece of code. Maybe I'll try and set up an Amiga environment for assembling SNES Doom in the future so I can test this out.

Edited by Individualised

Share this post


Link to post

Interesting discovery! Randy Linden hasn't been so active as of recently, so any discussion on the SNES port source code, moreso with at least a technical part like this,

2 hours ago, Individualised said:

Aha, I found something.

 

...


; code snippet

...

is bound to keep awareness on it, and I'm all for it.

Share this post


Link to post
1 minute ago, taufan99 said:

Interesting discovery! Randy Linden hasn't been so active as of recently, so any discussion on the SNES port source code, moreso with at least a technical part like this,

is bound to keep awareness on it, and I'm all for it.

Might be worth making a "SNES Doom Oddities" thread. There's lots of interesting stuff in SNES Doom that no one has brought up before.

Share this post


Link to post
1 minute ago, Individualised said:

Might be worth making a "SNES Doom Oddities" thread. There's lots of interesting stuff in SNES Doom that no one has brought up before.

Mind telling me which ones exactly, other than this? Some of them may have already been covered in the Doom Wiki page, hence why I'm asking you.

Share this post


Link to post
4 minutes ago, taufan99 said:

Mind telling me which ones exactly, other than this? Some of them may have already been covered in the Doom Wiki page, hence why I'm asking you.

I'll have to think, but off the top of my head I know that Doom SNES has some level of demo playback support but it's not used presumably because there wasn't enough space on the cartridge to include attract demos.

 

Something else I haven't seen people point out is that Episode 3 uses the Episode 2 sky, even though it's in plain sight.

 

Spectres are mentioned in the source code but unlike Jaguar based ports they're not placed in levels as far as I can tell.

Edited by Individualised

Share this post


Link to post
8 minutes ago, Individualised said:

I'll have to think, but off the top of my head I know that Doom SNES has some level of demo playback support but it's not used presumably because there wasn't enough space on the cartridge to include attract demos.

 

Something else I haven't seen people point out is that Episode 3 uses the Episode 2 sky, even though it's in plain sight.

 

Spectres are mentioned in the source code but unlike Jaguar based ports they're not placed in levels as far as I can tell.

Thanks for the reply! I'll add the second factoid to the Wiki while waiting for your thread on the rest of all the SNES port's unique stuff, having just recently noticed why my memory with the SNES port's E3 just feels different from the OG PC version.

Share this post


Link to post

There is a whole lot of quirks and intricacies to the SNES Doom. Lots of things that can be documented from just gameplay observations/experiences alone, not even looking into the code for more technical stuff yet.

Share this post


Link to post
  • 3 weeks later...
On 2/11/2023 at 9:13 PM, taufan99 said:

Thanks for the reply! I'll add the second factoid to the Wiki while waiting for your thread on the rest of all the SNES port's unique stuff, having just recently noticed why my memory with the SNES port's E3 just feels different from the OG PC version.

Forgot about this until now, here it is:

 

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...