Jump to content

Doom SNES Hacking Guide/Documentation


Recommended Posts

13 hours ago, Job said:

Is Cacodemontube a forum user? This is nuts. 

Yeah, but he hasn't been active since around September 2019 here. Heck, he only made a comeback on his CacodemonTube channel about 2 days ago.

Also, just to remind everybody else; the music does not play in the game. It was edited into the video.

Edited by InDOOMnesia

Share this post


Link to post

Oh god ... We need the SNES source code to be released so that some guru can optimise it. That is atrocious :D

Share this post


Link to post

I'm glad PSX Doom is getting attention, but SNES Doom sourcing has been withering on the vine for years. I feel as though we're really close, but progress remains elusive. 

Share this post


Link to post
On 4/14/2020 at 12:19 PM, Job said:

Is Cacodemontube a forum user? This is nuts. 

He appears to have connections to a guy named mopoz90 on the romhacking forums. I used to be in contact with mopoz, and he showed me quite a bit of a level editor he was working on for SNES doom, he never gave me the editor, but it seems he and this guy were much closer. Mopoz does not want his level editor public for some reason, and Cacodemon has always refused people asking him for releases. Ultimately, I think the best idea is to just wait for the source code and toolkit to release, which is what I've been doing. However, I'm not sure how usable the tools will be, we all know how fun ancient dev tools are under DOS.

 

EDIT: Remembered Randy's development environment was on an Amiga, not a DOS machine. However, ancient tools are ancient tools etc, I've never had a fun time with them.

Edited by lunaark

Share this post


Link to post
2 hours ago, lunaark said:

He appears to have connections to a guy named mopoz90 on the romhacking forums. I used to be in contact with mopoz, and he showed me quite a bit of a level editor he was working on for SNES doom, he never gave me the editor, but it seems he and this guy were much closer. Mopoz does not want his level editor public for some reason, and Cacodemon has always refused people asking him for releases. Ultimately, I think the best idea is to just wait for the source code and toolkit to release, which is what I've been doing. However, I'm not sure how usable the tools will be, we all know how fun ancient dev tools are under DOS.

 

EDIT: Remembered Randy's development environment was on an Amiga, not a DOS machine. However, ancient tools are ancient tools etc, I've never had a fun time with them.

Based on what you're saying, you're probably right, holding out for the source code is our best bet. I'm not sure why those two would be so unwilling to share their findings, but that's their prerogative, I suppose. What I'm trying to figure out is whether we've been waiting so long for the source code because of tight fingers or due to lack of interest. I believe @intacowetrustcreated a source port for PSX Doom via reverse engineering the necessary code, though I could be mistaken. Maybe that's an option here? 

Edited by Job

Share this post


Link to post
9 hours ago, Job said:

What I'm trying to figure out is whether we've been waiting so long for the source code because of tight fingers or due to lack of interest. I believe @intacowetrustcreated a source port for PSX Doom via reverse engineering the necessary code, though I could be mistaken. Maybe that's an option here? 

 

The approach I took with PsyDoom was inspired by what this project attempted, and could be applied to any reverse engineering effort:

https://github.com/ughman/c2c
 

Essentially I used the original machine code to generate C++ to execute the exact same work or MIPS instructions, using the RAM and CPU registers available in a PlayStation emulator (Avocado in my case). Unlike C2C though, I spent some time identifying functions in the machine code so I could split the code up and not just get one massive chunk of instructions - which would have been extremely difficult to work with. I then used the PlayStation emulator to handle bios calls and other hardware specific functions like SPU and GPU. There were a few hacks here and there I had to add to get the emulator syncing to real time, sound to work etc. but for the most part I was able to get the game up and running surprisingly quickly.

 

The key thing about this approach is getting to a working (or mostly working!) build quickly and then once you have that, gradually transition over piece by piece. If something breaks then you can do a git bisect and go back to the commit where the problem starts appearing - it can be a powerful tool to quickly resolve problems.

 

Having that said though I did have some huge factors in my favor for PsyDoom which you would not have for SNES Doom. The main one being of course that the Jaguar Doom source code had already been released and was known to be basis for PSX Doom. Hence I wasn't coming into this completely in the dark... Later on of course, @Erick194 kindly shared his own (completed) reverse engineering efforts with PSXDOOM-RE, so at that point I more or less had all the code - minus the internals of the PsyQ libraries. My work now mainly consists of verifying @Erick194's work, spotting differences between the PSX Doom Editions (original vs greatest hits) and gradually transitioning everything to running natively on PC.

 

9 hours ago, Job said:

Based on what you're saying, you're probably right, holding out for the source code is our best bet.

 

Yeah I would advise that, it sounds like Randy was fully intending to make this available.

 

9 hours ago, Job said:

I'm not sure why those two would be so unwilling to share their findings, but that's their prerogative, I suppose.

 

Maybe they eventually wanted to but their work wasn't really at a point where they felt comfortable doing that? It is a shame though when such hard earned knowledge fades away into obscurity...

Share this post


Link to post

I don't have much knowledge in the SNES format, but it does not mean that I have not dug a bit inside the Doom SNES cartridge, what really caught my attention with the modified @MopoZ rom that it ever gave, and why doesn't the level finish, perform some hacking and change the action of a line to put the action (exit level) and the game froze, so note that there are no specific paths of the files in the rom "at least not visible", I also saw some sprite graphics, all on the front side, but the player has more sides for their angles, I also checked that the intermission graphics are in 4-bit (16 colors) and divided into 4 graphics, all are compressed in RLE format , but it has something more, since the sprites do not manage to decompress them well at all.

Edited by Erick194

Share this post


Link to post

Thanks for the great insights, everyone! 

 

...also, I have no words, only feels, regarding that beautiful footage @Deⓧiaz

Share this post


Link to post

Poor Spidies and Cybies. They want to chill outside but can't!

@Deⓧiaz @Job @lunaark Mopoz90 has since changed their stance. Far before going dormant, they finally allowed CacodemonTube to get a few beta testers for those. According to CacodemonTube, people who wish to test the beta tools may contact him to obtain them. (He will also tell you how to exactly use them.)

Edited by InDOOMnesia

Share this post


Link to post
25 minutes ago, Job said:

@InDOOMnesia, that's fantastic, I'm certainly interested. What's the best way to make contact? 

If you use Discord, hit him up on TubeWave#5288 (his another channel is a YTP channel named TubeWave).

Share this post


Link to post

Embarrassingly, I don't use Discord, but I might now, just to reach out. This is pretty big, IMO. 

Share this post


Link to post

Thanks for the info! I'll PM him in discord.

 

P.S.: Uninteresting and sudden offtopic opinion: I can't be sure for 100%, but I think that nickname "Mopoz" (well, 90 can mean 1990 or just random numbers) must be read as "MoRoz" ("Frost" on russian). Just caught myself thinking that I'm reading "p" as "r", because he's russian (as far as I know) and he means this.

Share this post


Link to post

Ok, I've tried mapping tools:

LTQ0L1m.jpg

 

xiF7GLg.jpg

 

mUS91BU.jpg

 

WdAalBb.jpg

 

uJhVI45.jpg

 

The mapping rules are the same as for Jaguar/PSX/GBA Doom (mostly GBA Doom). Video with monsters will be later.

Edited by Deⓧiaz

Share this post


Link to post

By any chance could you tell me how close I got the vertices (especially the exit sign) and thing placement in recreating Episode 2 (M2 on SNES, M3 on PC) Refinery's SNES secret exit?   It's in the top right beyond the soul sphere.  An added switch in another secret opens it up.   I think recreated the texture alignment pretty exact.

Map03 (SNES+Alpha stuff) or 63 (just SNES secret exit added) in this.

or E2M3 (SNES+Alpha stuff but not Alpha things, fixed tons of texture alignment in base map) in this.

Edited by Gokuma

Share this post


Link to post

Sorry, Gokuma, I don't get it.

 

Anyway, here goes the video of my TNT hack:

 

My thoughts so far on mapping process:

1) While floor/ceiling textures are not available, I do like the color variations. I can imitate "colored lighting" here.

2) The engine totally ignores the playerstart direction. So you need to...erm...rotate THE MAP ITSELF to fit the direction.

3) Elevators doesn't work. It uses "Lift UP then DOWN" instead of "Lift DOWN then UP" action, so I can't do anything with this. Building stairs doesn't work too.

4) If you'll place Playerstarts 2/3/4 you'll be scared for a second...

DrJ_VHQXhmA.jpg

It doesn't move, it's not animated, it blocking you, but do nothing at all. The another one became Doomimp. I didn't check the last one.

 

5) SUPER EXPLOIT IMPOSSIBLE IN CLASSIC DOOM ENGINE

 

The Impassable flag works in ONE WAY. I mean, it blocks only FRONT side, not the BACK side. You can create situations when you can cross the line to get into new area, but you'll never go back, because it's blocking you.

 

I can do this in GZDoom via ACS, but THIS game is Alternate Vanilla. Kinda sick effect, for custom maps would be cool.

Edited by Deⓧiaz

Share this post


Link to post

That is badass, @Deⓧiaz! Maybe my memory is going, but I don't recall that track in SNES Doom. Is that custom/converted? 

Share this post


Link to post
On 4/20/2020 at 8:50 AM, InDOOMnesia said:

If you use Discord, hit him up on TubeWave#5288 (his another channel is a YTP channel named TubeWave).

 

52 minutes ago, Erick194 said:

That is exciting @Deⓧiaz, to what extent you have authorization to share the tools.

 

4 minutes ago, DynamiteKaitorn said:

I hope you can release the tools... you KNOW I'm going to mess around with them (and if custom sprites/textures are a thing then TMoD SNES maaaay happen ;) )

You need to contact the author via Discord. I'd love to see more folks involved, but it's up to them. 

Share this post


Link to post
8 hours ago, Deⓧiaz said:

Sorry, Gokuma, I don't get it.

 

 

E2M5 was cut from SNES Doom so a secret exit was put in Refinery (E2M2 on SNES, E2M3 on PC), to take you to E2M9.

 

Using the Ultimate Doom version of E2M3 as a base, I tried to replicate the SNES secret exit as closely as possible, while playing my cart on an actual SNES, watching people's youtube videos, and emulating the Japanese version which doesn't limit episodes available on lower skill settings to see thing placement for each skill.  But then I also added Alpha and PSX stuff to some copies, and improved the look of that newer switch to open the secret exit in an old secret.

Edited by Gokuma

Share this post


Link to post
7 hours ago, Job said:

but I don't recall that track in SNES Doom. Is that custom/converted? 

Yeah, that's TNT music converted.

 

1 hour ago, Gokuma said:

E2M5 was cut from SNES Doom so a secret exit was put in Refinery (E2M2 on SNES, E2M3 on PC), to take you to E2M9.

 

 

And? You want me to test it? Because I can't say without playing this on real SNES engine. This is not stable videogame for hacking, so I don't know how it's going.

Share this post


Link to post
2 hours ago, Deⓧiaz said:

Yeah, that's TNT music converted. 

Did you get it to play inside the hack or did you just convert the MIDI with SNES DOOM soundfont and edit it to the video, like what CacodemonTube usually does?

Share this post


Link to post

If this gets off the ground, i would want to state in advance - Please consider making a list of RomHacks with a description of what they do. I see TNT Evilution being ported over with SNES specific changes to the Reality Engine that makes up SNES Doom, It might be worthwhile to document what the tools do and what limitations are imposed plus differences in behavior over the actual Doom engine.

 

I can imagine that several PWADS could be ported over aswell in a similar concept as to what Bethesda is now doing with its PWAD support for Doom Unity, as in, it needs to be Vanilla and several other (SNES Doom specific) restrictions.

 

Such would do well with a proper thread, i feel. :)

Share this post


Link to post
2 hours ago, InDOOMnesia said:

Did you get it to play inside the hack or did you just convert the MIDI with SNES DOOM soundfont and edit it to the video, like what CacodemonTube usually does?

Unfortunately, the second one. While it's impossible to do it for real, I have no more options here :(

 

But when Mopoz or somebody else will discover how to change music (even for PSX Doom this task is hard), I'd love to import actual music ;)

 

1 hour ago, Redneckerz said:

It might be worthwhile to document what the tools do and what limitations are imposed plus differences in behavior over the actual Doom engine

 

That's a good idea, but I'm too lazy for doing this. Even more, I'm just a beta tester of tools, not their creator. So, Mopoz can do this better, because he does know how it's working.

 

The main tool which I'm making the new map - is modified Doom Builder 2 (you can use GZDoom Builder too, but few SNES textures are bugged here, so it's not recommended). After doing the map I'm compiling the rom via special executable. But I don't know exactly what's going on while process running (eh).

 

Engine Limitations are kinda unknown (for me), but I'm targeting "Jaguar" Doom mapping rules. Since it worked fine, I think it's the right direction.

Edited by Deⓧiaz

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...