News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: SNES Doom Cheats  (Read 628 times)

Pr3tty F1y

  • Newbie
  • *
  • Posts: 1
    • View Profile
SNES Doom Cheats
« on: October 23, 2019, 04:09:02 pm »
This isn't going to be a traditional hack, per se, as I'm not really a fan of those "all this IPS does is apply game genie codes to your rom" hacks.

However, I want to start off by professing my love of SNES Doom. It is not a great version of Doom, but I don't believe that makes it a bad game. At the time of it's release, I did not have a PC capable of playing Doom. The SNES was the only way I was able to get my hands on Doom at the time and, not knowing about how Doom played on more powerful machines, SNES Doom was an amazing experience for me as there is nothing else that matches it on the SNES.

Of course, SNES Doom sucks if you're used to playing Doom on a PC because if you try to play SNES Doom as if you were playing on the PC, you will become immediately frustrated. The graphics are grainy and pixelated. There's a slight delay to the sound effects (particularly when firing). The walls behave like they're made of honey and you get stuck up against them. And then there is the framerate which is barely playable at best.

However, I think the soundtrack for SNES Doom exceeds the vast majority of PC sound card MIDI of the time and, at least as far as ports, minus the ceiling/floor textures (which I never really missed), the texturing and geometry better match the PC original than pretty much any other ports sans modern "ports" which pretty much are just the PC release repackaged.

So with all of that said, SNES Doom is a tough son of a bitch because you can't just flick your wrist with a mouse and turn around. It's definitely still Doom, but to appreciate it you need to play it more as a game of memorization and strategy than just a FPS. Many games rely on memorization of enemy patterns and repeatedly practicing precision (e.g., shumps), but I would argue that approaching SNES Doom the same way makes it a better game to appreciate. You can't turn around quick or fire quickly. However, if you know where enemies are located and you go in to each area/room with a plan it is definitely a significantly more enjoyable experience rather than just expecting to play like PC Doom (i.e., for those of you who are not picking up on my SNES Doom apologist slant - I mean fast or at least reasonably quick :P).

Anyway, with that out of the way, SNES Doom is difficult due to it's design limitation and those limitations definitely make the game harder than the original. One of the things that always disappointed me about SNES Doom was the lack of cheats as practically every other version of Doom had cheats and, in my opinion, cheats would enhance SNES Doom by allowing you to focus on the amazing technical achievement of the port and exploring the environments rather than strategically planning how you will get from one area to the next given the general sluggishness of controls and framerate.

There have been a handful of Game Genie codes for SNES Doom out there for years, but I have found them to generally suck. For example, with the "Infinite Health" code out there, your health jumps around every time you move, which means it may drop really low just before you're attacked and you'll still die. Then again, you may pick up a med kit and it will also kill you. Definitely not a game enhancing code.

That's why I've done a little bit of work that I wanted to share with the community for any other SNES Doom lovers as I can't find any similar codes out there.

I've come up with two sets of PAR codes using BSNES v0.112 and Cheat Engine that, in my testing, provide infinite ammo for all weapons (provided you picked up the weapon already) and true infinite health:

INFINITE AMMO
00605c5e
00605d00
00605eff

INFINITE HEALTH
705aaeff
715aaeff
7e0700ff

One weird quirk is that they seem to operate best if they are on from the beginning (i.e., already selected and enabled so that they are automatically applied when the rom is loaded). If they're not on immediately, I found turning them off then back on can fix them. I also entered them in ZSNES as a test and they work there too.

I don't have an original copy of SNES Doom, a PAR, or even a physical SNES, but I would be interested to hear from anyone if these codes work there too.

Now (as described above), it's obvious that my "hacking" ability is quite limited, but I'm going to continue to plug along as I have time to try to tackle codes to give you weapons without the need to pick up and maybe the ability to select your starting episode/mission. I'm not sure if I'll have any luck, but if I find anything useful, I'll share it here.

Psyklax

  • Hero Member
  • *****
  • Posts: 1073
    • View Profile
    • Psyklax Translations
Re: SNES Doom Cheats
« Reply #1 on: October 24, 2019, 03:27:28 am »
So, in short... you want cheats for SNES Doom. Okay. :)

PAR codes are all well and good, but they're not really hacking: all the PAR does is replace a RAM value with another one. The Game Genie goes into the ROM and changes the game code itself.

Having said that, I also didn't understand why the "infinite health" code doesn't give you infinite health. Sounds like someone really didn't understand assembly, and nobody corrected them (though I could be wrong, as I haven't looked inside the code myself).

If I have a chance later today, I'll do a bit of hacking and see if I can make a true infinite health cheat, and maybe some other cheats you might suggest. :)

EDIT: Right, I've made some progress, but I might need some help.

The game keeps your current health in cartridge SRAM, and transfers it every frame to the SNES RAM.

It starts at $5AAE in cartridge RAM, and changing that in bsnes will change your health (the same happens to your ammo when changing $5E in SRAM). It's loaded into $1D2, also on cartridge RAM, and it, along with your other stats, is then loaded into regular RAM. It goes from $1D0 (SRAM) to $6FE (work RAM). It uses the register $2181, which I can't see documentation for but is presumably a special register to do a DMA from SRAM rather than regular RAM.

Problem I have is: how does $1D2 get updated with what's at $5AAE? I can't make a breakpoint because it's cartridge RAM, and therefore there's no bus to deal with it. I've tried reading a trace log but nothing sticks out. What I want to do, obviously, is find the instruction that loads your new health into $5AAE, and NOP it, but I just don't see it. I'm sure that somewhere, there HAS to be an instruction to change $5AAE in SRAM to your new health after being shot, but I'm stuck. Frustrating.
« Last Edit: October 25, 2019, 04:31:10 am by Psyklax »