logo
 drop

Main

Community

Submissions

Help

71216046 visitors

Author Topic: The Difficulty Settings Project  (Read 9517 times)

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
The Difficulty Settings Project
« on: July 09, 2012, 01:48:38 pm »
Hello,

I've been contemplating this for a quite a while now, and feel I should finally check this.
 
As most of you know, the difficulty of many NES games can be very high sometimes.  It is extremely difficult to enjoy many games that would otherwise be enjoyable simply because of the difficulty of them.  Oftentimes, it is next to impossible to get modern gamers to enjoy these games because of that.
 
So, here is my question.  Would anyone be interested in working on a project adding difficulty settings to games?  Or, at least slightly modifying games and releasing the hacks?
 
This does not need to be an in-depth, complex project at all.  Simply modifying a few formulas could give wondrous results.
 
Here are some simple examples of what could be done:
 
For the following series, modify a couple of formulas so, in easy mode, you do double damage to enemies and only take half damage from enemies.  In medium mode, have the amounts changed by 50%.  This could be done in the Double Dragon series, the Ninja Gaiden series, the Castlevania series, and the TMNT series.
 
Rad Racer-double the racing time you are given in easy mode and increase it by 50% in medium mode.
 
The general idea would be to have a difficulty level similar to Super Mario Brothers 3, where the game starts off easy and becomes more challenging as the game progresses on, but never becomes so difficult as to become frustrating.
 
Is there any interest in working on such a project?  How could something like this get started?

Thank you.

snarfblam

  • Submission Reviewer
  • Sr. Member
  • *****
  • Posts: 425
  • Location: romhacking.net
  • Personal Text
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #1 on: July 09, 2012, 06:45:04 pm »
It sounds like and interesting idea, and probably easy to pull off. Do you have any asm hacking experience?

tc

  • Hero Member
  • *****
  • Posts: 887
  • Lum Fan
    • View Profile
    • Eon Blog
Re: The Difficulty Settings Project
« Reply #2 on: July 09, 2012, 11:23:47 pm »
Goodness. Awful difficulty balance was huge then. I try to not even bother with TMNT 1 or Megaman 1 more than necessary. So much potential marred by frustration.

Yet Megaman 3 got broken in the other way. All sorts of tricks to become too easy. Jumping to avoid Rush Jet energy usage. Menu glitch letting you unlock some powers when it shouldn't be possible. One hit kill final boss(!). Overpowered Shadow Blade in places. Controller two codes...
I have a blog, forums, wiki, etc. Ask me for details. Contributors are welcome and highly encouraged!

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: The Difficulty Settings Project
« Reply #3 on: July 10, 2012, 01:17:07 pm »
snarfblam,

No, I do not have any experience in this area.  This is entirely new to me.  Is anyone able to help out with this?  Like I mentioned in my initial post, I don't think this would be too complicated since we are just tweaking a few formulas or changing a few values in each game.

tc,

Yes, I completely agree with you there.  That is the exact idea behind this project.  Let's balance the difficulty so games that are too frustrating could become enjoyable.  Imagine if these otherwise great games could become playable!

Trax

  • Full Member
  • ***
  • Posts: 249
  • Location: Québec
    • View Profile
    • Trax ROM Hacking
Re: The Difficulty Settings Project
« Reply #4 on: July 11, 2012, 01:15:42 am »
The complexity comes from the fact that you have to FIND these values and tweak them in a coherent way. Again, it's a good idea, but I doubt the logistics of the concept would be more than a grouping of IPS files for various games, that focus on changing the difficulty of games through ASM hacking. If there was a piece of software for that, it would be the ASM equivalent of a tile editor. And even then, I'm stretching quite a bit, since a tile editor has some universality to it, whereas changing the difficulty in a game (without changing anything else) is game-specific in an absolute way. No two games have the same code and variables...

In other words, if you want to change the difficulty in a game, you need to know the game quite well, something that a program cannot do by itself...

I already worked on some difficulty settings in a few games, and they are all games of which I have good knowledge because I hacked into them a lot. This includes Zelda II (see this video) and Contra (see my last demo). I'm working on including many difficulty settings in a single ROM. Each time you complete the game, it becomes increasingly difficult...

Finding variables in hundreds of bytes of code is substantially more complex than finding graphics, which are often neatly placed in banks without any need to search...

tc

  • Hero Member
  • *****
  • Posts: 887
  • Lum Fan
    • View Profile
    • Eon Blog
Re: The Difficulty Settings Project
« Reply #5 on: July 11, 2012, 06:30:27 am »
What. Zelda II, HARDER??  :o

I guess to each his own...
I have a blog, forums, wiki, etc. Ask me for details. Contributors are welcome and highly encouraged!

Garoth Moulinoski

  • Hero Member
  • *****
  • Posts: 6756
  • Location: アメリカの背中に。
  • Disliking that smoke.
    • View Profile
    • My Stuff including Super Smash Karts.
Re: The Difficulty Settings Project
« Reply #6 on: July 11, 2012, 08:41:22 am »
What. Zelda II, HARDER??  :o

I guess to each his own...

Zelda II wasn't all that hard, actually. It starts off a little overwhelming, but once you get the hang of it, and once you realize that it is an RPG masked as a platformer, you'll realize that level grinding helps you out a lot. I know that doesn't sound too good, and it would be one of my criticisms of the game (but then again, just what RPG didn't rely on level grinding back in those days?), but it's really only hard in the beginning, when you're still trying learn the ropes and grind for a level or two.

I actually can beat Zelda II nowadays, using no guide and without freaking out- A stark contrast from when I first tried my hand at it, where I was just dying all the time, and I had to keep peeking at a map because I kept getting lost.

I don't really know what I'm trying to prove here...

Anyway, project sounds like a good idea! Some games really are quite difficult for the average player (that includes me), but a lot of those are also hailed as classics.
Who will quote me next?
Disclaimer: If it sounds wrong, I may have been posting while asleep.

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: The Difficulty Settings Project
« Reply #7 on: July 11, 2012, 01:24:55 pm »
Trax,

A large part of your explanation was kind of what I was thinking:  how to find these values?  But, that isn't necessarily the only way to do this.  What if the formulas could be changed?  For instance, change the damage calculation to double the damage you do to enemies and cut in half the damage enemies do to you?  Again, this is completely new to me.  How can this be done?

Does anyone know where I can find this information for the games I mentioned in my original post?

If actually adding difficulty settings to the games is too much work, that is okay.  Let's just release an ips file for each game that balances the difficulty.  That would still work well.
« Last Edit: July 11, 2012, 02:14:53 pm by tog »

Bregalad

  • Hero Member
  • *****
  • Posts: 1585
  • Location: Jongny VD, Switzerland
    • View Profile
Re: The Difficulty Settings Project
« Reply #8 on: July 11, 2012, 02:35:45 pm »
Quote
I try to not even bother with TMNT 1 or Megaman 1 more than necessary. So much potential marred by frustration.

Yet Megaman 3 got broken in the other way. All sorts of tricks to become too easy. Jumping to avoid Rush Jet energy usage. Menu glitch letting you unlock some powers when it shouldn't be possible. One hit kill final boss(!). Overpowered Shadow Blade in places. Controller two codes...
Yet I found Mega Man 3 harder than MM1. MM3 is easy at first but then you have to beat MM2's ghost bosses, and welcome to hell. To each their own I guess....

snarfblam

  • Submission Reviewer
  • Sr. Member
  • *****
  • Posts: 425
  • Location: romhacking.net
  • Personal Text
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #9 on: July 11, 2012, 05:38:48 pm »
Does anyone know where I can find this information for the games I mentioned in my original post?

If actually adding difficulty settings to the games is too much work, that is okay.  Let's just release an ips file for each game that balances the difficulty.  That would still work well.
The only way you're likely to find this info for most games is by hacking them with a debugger, which requires experience. How hard that will be depends on the game. Some will be simple, some will be hard.

Creating a separate IPS for each difficulty level would be the easiest way to go about it. If you want to add difficulty options to a game, you have to muck around in the game's menu or title screen code and add the options. Certainly not trivial. Then you need to modify code for when the player gets hurt or hurts enemies (or whatever the case may be) to behave dependent upon the chosen difficulty setting, also not trivial.

So at any rate, each game would be a project in and of itself. If you want to cover a decent number of games, you would probably need to form a group with at least two or three hackers willing to commit to a long term venture.

Trax

  • Full Member
  • ***
  • Posts: 249
  • Location: Québec
    • View Profile
    • Trax ROM Hacking
Re: The Difficulty Settings Project
« Reply #10 on: July 11, 2012, 11:22:03 pm »
What. Zelda II, HARDER??  :o

With my video demo, I demonstrated the potential of ASM hacking to make a game more difficult and more random. But, it also means that the variables I tweaked and the code I added to the original game can be used to make the game easier. It works both ways...

Quote
Does anyone know where I can find this information for the games I mentioned in my original post?

First, you can check Data Crystal, which is certainly the best centralized hacking information source for video games. If you can't find the info you are looking for, then you have to do it yourself, with debuggers and patience. That's actually the essence of hacking. Hacking is about searching...

Quote
If actually adding difficulty settings to the games is too much work, that is okay. Let's just release an ips file for each game that balances the difficulty. That would still work well.

That would be a good start. A "difficulty settings" database could be very interesting...

As for the data mining itself, the very first thing to learn is ASM for the console you want to hack. That's a must, and it's not negociable. I suggest NES for starters, because it's not too complicated. Unless you want to do everything by trial and error, which would be a waste of time, in my opinion. Here's a few pointers for what someone would be looking for when it comes to difficulty:

- Number of lives you start with
- Score needed for extra life
- If there's a time limit, change it or remove it completely
- Enemy movement speed
- Enemy attack power
- Enemy attack rate
- Enemy attack range
- Enemy Hit Points
- Player Hit Points
- Player attack range

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: The Difficulty Settings Project
« Reply #11 on: July 13, 2012, 01:41:51 pm »
Trax,

Thank you for your explanation.  It is quite helpful.

Before I look over things this weekend, I have a couple more questions.  If I know what specific values I am searching for, would I be able to search for those specific values in the game?  Most of the information I am looking for is not in Data Crystal, so I would have to find all of this myself.

And, lastly, what about formulas?  It seems like it would be better to modify those in some cases.  How likely is it to be able to do that?

Tony H

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
    • The Code Hut
Re: The Difficulty Settings Project
« Reply #12 on: July 13, 2012, 09:13:58 pm »
A quick note on finding data in the ROM.  Game Genie codes would be a gold mine for some of the stuff you would be looking for.  For example, a Game Genie code that lets you start with 9 lives, can show you exactly where the value for starting lives is in the ROM. 

Some other examples of useful Game Genie code types:

Start with more or less time
Start with more or less ammo
Start with more or less energy
Start with better/worse weapons
Jump higher/lower
etc.

The only minor problem you would encounter is that when most NES Game Genie codes are decrypted, they won't directly tell you the correct ROM address. However, there is at least one NES emulator out there (fceuxd sp) that will show you the correct ROM address for Game Genie codes.  Very simple process.
The Code Hut: http://www.angelfire.com/games2/codehut/

Game Genie codes and ROM hacking guides

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 4724
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: The Difficulty Settings Project
« Reply #13 on: July 13, 2012, 11:19:04 pm »
The only minor problem you would encounter is that when most NES Game Genie codes are decrypted, they won't directly tell you the correct ROM address.
I'd suspect Game Boy and Game Gear have that issue as well, since they only had a 64KB CPU address range. (which is why they put in a "compare" value to try to detect if the right bank was mapped in.
In that case you'd have to do a little examination of the hex data. Take the decoded address, modulus 16K (I think ROM banks on both systems are always 16KB), then look at each ROM bank (such as if the decoded address mod 0x4000 was 0x1000, then you'd look at ROM address 0x5000, 0x9000, 0xD000, etc.). If you get more than one match searching the ROM, then it would affect all such occurrences (a problem the real unit would have).

SNES and Genesis had a large CPU address range so a compare code wasn't included as it (most of the time) wasn't needed.
Quote
Sir Howard Stringer, chief executive of Sony, on Christmas sales of the PS3:
"It's a little fortuitous that the Wii is running out of hardware."

Dizzy9

  • Newbie
  • *
  • Posts: 38
    • View Profile
Re: The Difficulty Settings Project
« Reply #14 on: July 14, 2012, 07:26:20 am »
An interesting project indeed.
I can join it(NES only). I have no problem with making a in-game difficulty menu(if there's enough empty PRG space left).
I can also make more advanced things like changing  size of hitboxes and such(If needed).

Trax

  • Full Member
  • ***
  • Posts: 249
  • Location: Québec
    • View Profile
    • Trax ROM Hacking
Re: The Difficulty Settings Project
« Reply #15 on: July 14, 2012, 03:53:08 pm »
Quote
Before I look over things this weekend, I have a couple more questions.  If I know what specific values I am searching for, would I be able to search for those specific values in the game?  Most of the information I am looking for is not in Data Crystal, so I would have to find all of this myself.

It seems you answered your own question. To find useful data, you always have to analayse the code directly into the ROM and tweak values until you get the desired result. If you poke into the RAM using a debugger, you have to check how and where the code accesses this RAM location...

Quote
And, lastly, what about formulas?  It seems like it would be better to modify those in some cases.  How likely is it to be able to do that?

I'm not sure what you mean exactly by "formulas". If it's about algorithms, then the same answer applies. Most programs have functions that are reused multiple times, and you need to understand these functions to understand what's going on during the game...

Below is a future candidate for the project, a "Hard Mode" version of Contra. I say "future" because it's not complete, only 5 out of 8 levels have been modified so far. It's basically all the settings I use in my Contra Demo, but the remaining features (graphics, levels, colors) are the same as the original...

Try it if you think the original Contra is too easy for you...

Contra - Hard Mode
To be used with the US version of Contra...

Hiei-

  • Full Member
  • ***
  • Posts: 232
    • View Profile
Re: The Difficulty Settings Project
« Reply #16 on: July 15, 2012, 06:32:43 pm »
Zelda II wasn't all that hard, actually. It starts off a little overwhelming, but once you get the hang of it, and once you realize that it is an RPG masked as a platformer, you'll realize that level grinding helps you out a lot. I know that doesn't sound too good, and it would be one of my criticisms of the game (but then again, just what RPG didn't rely on level grinding back in those days?), but it's really only hard in the beginning, when you're still trying learn the ropes and grind for a level or two.

I actually can beat Zelda II nowadays, using no guide and without freaking out- A stark contrast from when I first tried my hand at it, where I was just dying all the time, and I had to keep peeking at a map because I kept getting lost.

I don't really know what I'm trying to prove here...

Anyway, project sounds like a good idea! Some games really are quite difficult for the average player (that includes me), but a lot of those are also hailed as classics.

Yeah, it's not that hard once you are used to it, but I think it's still the hardest Zelda and far before the others (the jumps you have to do make the game harder than the other zeldas. If you miss your jump in 3D Zelda games, most of the time you won't die, but miss a jump in Zelda 2 and most of the time, you'll lost a life).

Anyway, Zelda 2 is still my favorite Zelda game.

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: The Difficulty Settings Project
« Reply #17 on: July 16, 2012, 04:00:01 pm »
Everyone,

Thank you all for your help and input with this.  I really need some more time to analyze this before I can comment on too much.

I have a couple of more questions, though.  I hope I'm not asking too many of these.  This is just all new to me and there is a lot to learn.

What do you recommend using to analyze the ROM for the data I am looking for?

How do I go about creating the ips file to modify these values once I analyze and find them, in addition to any other tweaking I may do?

Once again, I appreciate your willingness to help and answer questions.  Thank you again.



Dizzy9,

That is great that you are willing to work on this.  I am primarily interested in NES as well, since that is the system with the worst difficulty balancing.  But, like I mentioned above, I really need to have a little more time before I can say too much. 

snarfblam

  • Submission Reviewer
  • Sr. Member
  • *****
  • Posts: 425
  • Location: romhacking.net
  • Personal Text
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #18 on: July 16, 2012, 06:19:40 pm »
I have a couple of more questions, though.  I hope I'm not asking too many of these.
Not at all. I'd much rather see somebody thoroughly research a project, plan it out, and make something great.


What do you recommend using to analyze the ROM for the data I am looking for?
For me the tool is usually the debugger in FCEUX. A good hex editor might be handy from time to time. (FCEUX's is decent, but I prefer one that can do relative searches with wildcards.) There's a lot to learn as far as FCEUX goes: ASM, the debugger itself, and how NES games tend to work in general. I didn't know much 6502 ASM when I started playing with FCUEX. I found having an opcode chart to be vital. Other than that it was all learning from experience.


How do I go about creating the ips file to modify these values once I analyze and find them, in addition to any other tweaking I may do?
There are a couple ways to do this. I have an assembler that outputs IPS patches, which seems to be the easiest way to keep my projects organized. Others use the inline assembler and hex editor in FCEUX to modify the ROM, then save the modified copy, and use an IPS utility to create a patch from the original to the newly modified ROM.


If this project does end up taking off, I'd also be glad to help from time to time, reverse-engineering or writing code.

tog

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: The Difficulty Settings Project
« Reply #19 on: July 23, 2012, 01:23:54 pm »
It's been a week now, so I thought I would give a status update on this.

I've been using FCEUX, which has been extremely helpful.  The Trace Logger and Hex Editor have been great, especially the Hex Editor's ability to make changes immediate while the ROM is already loaded.  The opcode chart that snarfblam provided has been helpful, as was the Game Genie suggestion that Tony H made earlier on.

However, I am having an extremely hard time figuring a lot out.  Much of what I have been finding makes no sense, especially with the values that are used in determining your defense.  I've been having a difficult time finding where this code is used and how it is used with the addresses I've been checking.

I haven't made much progress yet, except for a couple of games that weren't too difficult to process.

Are there any other suggestions on how I might proceed here?  If you need specific examples of where I am running into confusion, I would be able to give some.  I don't know where to turn at this point.