Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
lunaark

Doom SNES Hacking Guide/Documentation

Recommended Posts

I was impressed with what SNES Doom was able to pull off, especially when compared to the JagDoom based ports of its time. Can't say much for its display, but I've gotten used to the sticky controls and gameplay quirks so it's still pretty accessible to me.

Share this post


Link to post
MopoZ said:

https://yadi.sk/d/yhS_K_M_uZhKG

If you are interested, here is the ROM, run the emulator and watch. Maybe someone will like, is small map(not that that on YouTube). Tomorrow I leave for a business trip for a month. So after a month only continue toolkit.

You're my hero. I will be sure try this out.

Based on what MopoZ is saying, it appears that maps can only be exported as a free standing ROM because it has to inherently contain whatever resources needed to play it. I could be wrong of course.

Share this post


Link to post

Hello, what happened with this project?. now sd2snes can play fx chip games, so is posible load maps without solder a pcb, I have try the map posted and works very well in real snes. 

 

https://sd2snes.de

Edited by Tic

Share this post


Link to post

It's been forever since this was last discussed, but...

 

...has anyone ever heard of the MSU-1 that supports several features, including (but not limited) to improved music and increased ROM size (dubious claim, but judging by Super Road Blaster, I think this makes sense)? I've seen Star Fox with MSU-1 improvement, but have yet to see somebody use the MSU-1 to further improve the SNES DOOM port.

 

Fun fact: Randy Linden wishes to have all 27 levels inside the game, but according to an interview, there was not enough space anymore and he recalls there being roughly only 16 bytes remaining (it also got Super Scope and XBAND supports).

Share this post


Link to post

Considerably less advanced than reverse-engineering or porting...

Something that occurred to me is that it MIGHT be feasible with some console ports to make a version of Dehacked work on them, or achieving kinda the same but more slowly hacking with a hex editor as long as it has similar data tables.   Now the SNES Doom is a different engine made to mimic the Doom engine, but I wouldn't be surprised if Randy used Dehacked to see loads of information to replicate.   When I started out hacking Strife, I first looked at dehacked.ini for the locations of data in the doom.exe.   I opened doom.exe in a hex editor and saw what the different areas of info generally looked like.   Then I opened strife1.exe in the hex editor and just browsed scrolling through til I saw some resemblance, like some looking at The Matrix in encoded form stuff.   I found a lot of the main stuff.   Some people helped me narrow down a few things and I credited them in my strife hacking guide and sehacked txt files.   Before I got sehacked working, I first hacked with a hex editor to turn the poison arrow crossbow into a grappling hook and then made an IPS patch using SNEStool of all things, so people could apply my changes without distributing an exe.   Then eventually I got Sehacked working, then on all versions of Strife, including two different earlier demo versions.   I just didn't get code pointer editing working so Sehacked while based on Dehacked 3.0a is functionally between 2.4 and 3.0a.   It can edit cheat codes which 2.4 can't and while it seems like you can edit code pointers, it does nothing, seemingly just like 2.4 acts, while in 3.0a it actually works.   And I couldn't find misc stuff like Dehacked 3.0a can edit such as starting health, enemy infighting, etc.   I don't remember much more about what I did in getting Sehacked to work.   I just know, that anywhere I modified the source code, I put

// Changed this

 

Share this post


Link to post

@Gokuma That's an impressive achievement!

Speaking of which, a good news is about to come from well, no other than Mr. Linden himself!

Notice the DOOM-FX and ACCESS repositories in his Github page I linked above? Those are still blank, as he is currently finalizing the license for both these sources (he's looking at GNU GPL3), but he has promised that they will come in the near future. I messaged him on his Twitter account, so I can confirm this.

(ACCESS is a toolchain (assembler, linker, debugger, etc.) that [Mr. Linden] used to create DOOM/FX. The ACCESS toolchain requires an Amiga (or an Amiga Emulator) in order to run.)

Share this post


Link to post

Thank you!

 

That's awesome news!   It's pretty great how programmers or software engineers appreciate people's interest in their past work.  The Doom Renaissance continues...

 

I totally want to get a Super Scope to see how it functions with SNES Doom.   One of my friends has one in his game shop but it's still in the box which jacks its value way up to $100.   And another used game store had one on display with a note that it's broken.

Share this post


Link to post
25 minutes ago, InDOOMnesia said:

Speaking of which, a good news is about to come from well, no other than Mr. Linden himself!

Notice the DOOM-FX and ACCESS repositories in his Github page I linked above? Those are still blank, as he is currently finalizing the license for both these sources (he's looking at GNU GPL3), but he has promised that they will come in the near future. I messaged him on his Twitter account, so I can confirm this.

Dude, that's awesome! What a legend.

Share this post


Link to post
6 hours ago, Gokuma said:

I totally want to get a Super Scope to see how it functions with SNES Doom.   One of my friends has one in his game shop but it's still in the box which jacks its value way up to $100.   And another used game store had one on display with a note that it's broken.

Forgot to tell you (and others), it also supports the Super NES Mouse, just like the PSX port does the PSX Mouse! Make sure to grab it as well while you're at it.

Share this post


Link to post
8 hours ago, InDOOMnesia said:

@Gokuma That's an impressive achievement!

Speaking of which, a good news is about to come from well, no other than Mr. Linden himself!

Notice the DOOM-FX and ACCESS repositories in his Github page I linked above? Those are still blank, as he is currently finalizing the license for both these sources (he's looking at GNU GPL3), but he has promised that they will come in the near future. I messaged him on his Twitter account, so I can confirm this.

(ACCESS is a toolchain (assembler, linker, debugger, etc.) that [Mr. Linden] used to create DOOM/FX. The ACCESS toolchain requires an Amiga (or an Amiga Emulator) in order to run.)

So he is going to make his custom engine open source, or is this a new port called Doom/FX? PRobably the former, but still.

 

Regardless, i can already imagine someone is going to port that to PC... because SNES.

 

Very, very impressive. SNES Doom Builder when? ;)

Share this post


Link to post

@InDOOMnesia

I thought this thread was pretty much dead until your post last week. Still didn't think much about it until your post yesterday. That's huge, fantastic news! I am excited to see what comes of it!. :) 

Share this post


Link to post
4 hours ago, Redneckerz said:

So he is going to make his custom engine open source, or is this a new port called Doom/FX? PRobably the former, but still.

 

Regardless, i can already imagine someone is going to port that to PC... because SNES.

 

Very, very impressive. SNES Doom Builder when? ;)

It's his own custom engine!

Share this post


Link to post
13 minutes ago, InDOOMnesia said:

It's his own custom engine!

Ah, Vrage/Reality it is then! Impressive, impressive!

Share this post


Link to post

Oh, nice, I hope someone starts a fork of it to add Password functionality and optimise it. And I would like to see how well the Jaguar versions of the maps work on that engine, it's weird that they ported the DOS versions so closely, it runs badly.

Share this post


Link to post

@VGA Seconded the password/save system one. Though, judging by how the original PC DOOM allows you to save anywhere, I can see more people opting for those instead of a password system like the PSX port.

Share this post


Link to post
8 hours ago, VGA said:

Oh, nice, I hope someone starts a fork of it to add Password functionality and optimise it. And I would like to see how well the Jaguar versions of the maps work on that engine, it's weird that they ported the DOS versions so closely, it runs badly.

noooo not the gross Jag/existing console versions, there would be much classier ways to simplify the Doom maps than making them all have the same brown walls everywhere!

Share this post


Link to post
19 hours ago, InDOOMnesia said:

@VGA Seconded the password/save system one. Though, judging by how the original PC DOOM allows you to save anywhere, I can see more people opting for those instead of a password system like the PSX port.

I am talking about a fork of the SNES engine running on SNES! Not a PC port of that :D

Share this post


Link to post
13 hours ago, VGA said:

I am talking about a fork of the SNES engine running on SNES! Not a PC port of that :D

Hopefully when it's out, somebody will share it to the SNES romhacking scene. And I just can't wait any longer for the source codes! 😆

Share this post


Link to post
5 hours ago, InDOOMnesia said:

Hopefully when it's out, somebody will share it to the SNES romhacking scene. And I just can't wait any longer for the source codes! 😆

I have some connections in the bigger scene that may find this stuff interesting. Say, an ARM based port of this stuff, so it can run on the SNES Classic. ;)

3 hours ago, Gez said:

It'd be fun to get it backported to the PC, too.

That would be the primary interest, indeed. One could expand Doom Builder with a SNES Doom mapping format if this can be figured out, for one.

Share this post


Link to post
On 3/2/2020 at 8:37 PM, InDOOMnesia said:

@Gokuma That's an impressive achievement!

Speaking of which, a good news is about to come from well, no other than Mr. Linden himself!

Notice the DOOM-FX and ACCESS repositories in his Github page I linked above? Those are still blank, as he is currently finalizing the license for both these sources (he's looking at GNU GPL3), but he has promised that they will come in the near future. I messaged him on his Twitter account, so I can confirm this.

(ACCESS is a toolchain (assembler, linker, debugger, etc.) that [Mr. Linden] used to create DOOM/FX. The ACCESS toolchain requires an Amiga (or an Amiga Emulator) in order to run.)

Any new info on this? I've just come back after a 4 yearish hiatus from Doomworld and SNES Doom rom hacking, got interested in it again recently so well, I logged in today. I've not spent much time chipping away at it, but my skills are much better than when I left off. To hold us all over until that sweet, sweet source code release, I've identified and labelled some key functions, namely, the boot code, the initialization code, and what I presume to be the game loop.

 

Boot code, located at $00:8010 (the JML is a jump to the game initializer)

unknown.png

 

The game initialization code, located at $4E:FFBB

unknown.png

 

What I presume to be the game loop, located at 7E:205C

unknown.png

 

I suspect this is the game loop because it runs on every hblank, and appears to branch out into many functions through the functions called.

I hope to label all of the functions in the initializer, but I think I may know one functions name.

Share this post


Link to post
16 minutes ago, TheLoneSurvivor said:

Any new info on this? I've just come back after a 4 yearish hiatus from Doomworld and SNES Doom rom hacking, got interested in it again recently so well, I logged in today.

No, not yet. In fact, it's been a long while since I last heard any news from him.

Anyway, welcome back!

Share this post


Link to post
9 minutes ago, InDOOMnesia said:

No, not yet. In fact, it's been a long while since I last heard any news from him.

Anyway, welcome back!

Regardless, I'm sure he'll deliver. I've only been dreaming of this for like, 5 years now. It's almost surreal really, especially considering the vast majority of games don't get this treatment.

Share this post


Link to post

Also, while investigating some of my earlier discoveries more in depth, I found really strange code that I believe to be responsible for the status bar face.

 

The code is as follows.

 

unknown.png

 

I don't even know where to begin with this. From a cursory glance and analysis, this is what it appears to do.

 

The value at address $0704, where the value representing current status bar face is stored, is loaded into register X.

Register X is compared to a value at $06E5, which appears to be the "target face", probably itself determined by a basic timer or pattern or PRNG algorithm.

If the comparison is equal, the 65816 will call the function at $23da, which appears to be very similar, but I can't quite determine the function of it.

X will then be stored in $06E5.

 

I wonder though, I always noticed that the 2 values seemed the same, perhaps I have them switched? I'm also unsure if the beq operation will cause the CPU to step out of the function, hence blocking the stx operation. I feel like it wouldn't though, that seems unnecessary. I also noticed that $06E5 is impossible to change without freezing, presumably because this function gets called all the time and X gets stored there. I haven't taken too deep a look at this, and I'm still not really a 65816 expert, but I feel that regardless, the status bar face has weird behaviour and my interest is piqued.

Share this post


Link to post

Ohohoh shit. If we get our hands on that source code, we can seamlessly integrate C with it (maybe?). I just remembered. WDC released tools for valid WDC processors (including the SNES' 65816!) including a compiler, linker, debugger, and whatnot. The source code to Super Noah's Ark 3D leaked a while ago, and my search led me to those tools, as they are the direct descendants of the compiler (zardoz) used in Wolfenstein 3D and SNA3D on the SNES (yes, they were written in mostly C, even some graphics stuff). The tools are called WDCTools, and they work natively under Windows 10, and should work under Wine in linux (I use linux but haven't tried it yet, however I have heard mentions of it working flawlessly).

 

The best part? The tools built a fully operational, full performance ROM that worked in bsnes. There's no specific library for the SNES with it, but you can just call and adapt existing ASM functions from the engine (the wonders of C) and the tools also have a fully functional and refined implementation of the standard library. They were last updated in 2006, but WDC actively supports it, they only started offering it for free relatively recently actually. However, this is all just theoretical, but it is 100% a thing I will look into.

Share this post


Link to post
52 minutes ago, Deⓧiaz said:

 

Is Cacodemontube a forum user? This is nuts. 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×