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

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

snarfblam

  • Submission Reviewer
  • Hero Member
  • *****
  • Posts: 589
  • CANT HACK METROID
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #60 on: October 11, 2012, 05:36:15 pm »
E-mail should work. My GMail address is same as my user name.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6885
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: The Difficulty Settings Project
« Reply #61 on: October 11, 2012, 07:39:35 pm »
snarfblam,

If you wouldn't mind, would that be all right?  How do I submit these files to you?  I tried sending a private message, but don't seem to be able to include attachments there either.  What would work best for you?

Attachments are disabled for security as well as storage space limitations.
"My watch says 30 chickens" Google, 2018

darkanx

  • Jr. Member
  • **
  • Posts: 29
    • View Profile
Re: The Difficulty Settings Project
« Reply #62 on: October 11, 2012, 11:00:24 pm »
Once you get your current projects squared away, I have a request for a game to work on; Mr.Gimmick. A super awesome game that is of course, quite hard.

Suggested fixes:
Increased/Unlimited lives vs Infinite continues: If you continue the game at all, you can't get the good ending. So increasing the starting lives would be nice so it is much more unlikely you got to continue.

2 hits per dot (8 max health) vs 1 hit per dot (4 max health): This would be trickier, but definitely nice to be able to take more hits. Maybe have the first hit make the dot flash, the second hit makes it disappear, but that would probably be more programming trickery then you aim to do with this project.

Thats really all that needs to be tweaked with this one. Platforming can still be deadly, not much can be done about that. Its a great game, probably one of the most advanced on the nes, that could use a little love if your up to it.

Hope the file hosting situation gets worked out. Box.net works well for me.

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #63 on: October 12, 2012, 01:27:10 pm »
darkanx,

All right.  I've just sent the files to snarfblam, so hopefully we will be able to get these up for you.  Thank you for your patience.

I used LunarIPS to create these files, so you could presumably use the same program to patch the games.

Anyway, these three games are pretty much done.  I've adjusted starting life, either enemy life or damage values, starting lives, etc.  I don't have a complete changelog handy with me right now, so I can't state everything I've done at the moment.  The only thing that doesn't look quite right is that the life bar displaying on the screen is completely full if you have any more life than the game defaults.  This is because I don't know how to adjust how the bar displays.  But, rest assured, you do start with more life than what shows.

Anyway, I hope you enjoy these.  I am in full agreement with what you said earlier about the difficulty of these games.  That is what I've been working on with this project.  This series should be much more manageable now.

snarfblam

  • Submission Reviewer
  • Hero Member
  • *****
  • Posts: 589
  • CANT HACK METROID
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #64 on: October 15, 2012, 05:35:11 pm »

Vague Rant

  • Jr. Member
  • **
  • Posts: 47
  • Deceptively cute
    • View Profile
    • Vague Rant
Re: The Difficulty Settings Project
« Reply #65 on: October 19, 2012, 11:13:23 pm »
This is a fantastic idea, so many old games seem like they're being frustrating on purpose, or else intended to play like an arcade game and take in another quarter every time you die. I grew up playing games like this, but if I don't have the benefit of nostalgia for a particular title, the difficulty is the thing to turn me off so many of them, even games which are otherwise excellent. I know I'm essentially restating the entire purpose of this project, I just agree strongly. So thanks for these efforts, I hope for more games to become playable; e.g. Popful Mail for Sega CD is a game defined by its horrible rebalancing for the American market, it's just horribly un-fun. They scaled up enemy damage by almost ten times and stripped back the period of invincibility after the player takes damage. It powerfully demonstrates how a couple of minor changes make the difference between a great game and a waste of time and effort.
I've got nothing to say, but it's OK.
Vague Rant

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #66 on: October 22, 2012, 01:37:16 pm »
This is a fantastic idea, so many old games seem like they're being frustrating on purpose, or else intended to play like an arcade game and take in another quarter every time you die. I grew up playing games like this, but if I don't have the benefit of nostalgia for a particular title, the difficulty is the thing to turn me off so many of them, even games which are otherwise excellent. I know I'm essentially restating the entire purpose of this project, I just agree strongly. So thanks for these efforts, I hope for more games to become playable; e.g. Popful Mail for Sega CD is a game defined by its horrible rebalancing for the American market, it's just horribly un-fun. They scaled up enemy damage by almost ten times and stripped back the period of invincibility after the player takes damage. It powerfully demonstrates how a couple of minor changes make the difference between a great game and a waste of time and effort.

I'm glad to hear that you're as interested in this as I am.  What you've stated above is exactly how I feel-there are many games that have been completely ruined by their unreasonable difficulty level.  And, making a few changes can make a huge difference and make an unplayable game playable.

Anyway, I haven't heard any comments on the Double Dragon hacks I released.  In other news, Shadow of the Ninja and Journey to Silius are pretty much finished.  Just another quick update.

darkanx

  • Jr. Member
  • **
  • Posts: 29
    • View Profile
Re: The Difficulty Settings Project
« Reply #67 on: October 24, 2012, 09:38:46 pm »
Awesome. I just got back from vacation and will try these out asap and give you some feedback real soon. Been eager to try them.

October 30, 2012, 07:54:14 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Sorry its taking me a while to get back with proper feedback. I have been trying to bait my roommate into playing 2 player with me so we can really feel it out properly. I did test out the first stage of DD1 myself on both the unaltered rom and easymode rom and I think the changes seem great. Survivability is definitely up on the easy mode. I can't say much about long term balance, but so far it seems to be pretty great. By myself I nearly ran out of lives on the first stage, but had just lost one on easymode, which seems reasonable considering I went into it unpracticed.

I would say these are already ready to go for submission on the site. You can always tweak and squash bugs as people give you more feedback. I will give you more feedback when I get a proper play with my roomie.
« Last Edit: October 30, 2012, 07:54:14 am by darkanx »

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #68 on: November 06, 2012, 09:17:28 am »
Thank you for letting me know how it's going so far with your testing.  I'm sorry it took me so long to respond.  If you reply to your own posting in less than a week, the system merely edits your previous post, which is why I didn't see it until now.  That is why I've oftentimes waited an entire week to post something that could have been posted much sooner-otherwise, no one would know that I made one since the topic edit date wouldn't have been updated.

I think I'll wait a bit longer before officially submitting any of this onto the main site.  I was hoping someone would be able to help out with the life bars since that is something I am entirely unfamiliar with.  If I could just see how one of them works, I could probably do the others.

I have been working on Zelda II and am almost finished with it.  It took me a while to figure this one out because of all the different variables involved, but I took a different strategy that I think has worked.  However, that game will need quite a bit of testing before I feel it's ready due to its size.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6885
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: The Difficulty Settings Project
« Reply #69 on: November 06, 2012, 01:59:30 pm »
Edited posts will have a NEW icon for everyone except the poster.
"My watch says 30 chickens" Google, 2018

neige

  • Jr. Member
  • **
  • Posts: 36
    • View Profile
Re: The Difficulty Settings Project
« Reply #70 on: November 14, 2012, 08:37:03 am »
About the life bars, I may have an idea about how to make it display relative to the increased amount of life.

First of all, I haven't looked at the games themselves so may be talking nonsense here, if it is the case then please disregard this message.

I assume that the game needs to load the number of life points to display the bar so if you can find out the code location from where it's loaded and if you can add some code, you can try to add these 2 instructions just after the value is loaded.

Code: [Select]
; tranfer to A register if needed
LSR
ADC #0
; put it back if needed

The LSR will essentially divide the value by 2 and it will also put the lowest bit in the carry flag. The ADC will then add 1 if the value was odd (carry flag is set), with this it will look like you need 2 hits to lose 1 bar and the bar will not appear empty when you still have 1 point left.

Hope this helps.

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #71 on: November 15, 2012, 05:01:32 pm »
neige,

Thank you for your suggestion.  What you stated makes perfect sense; however, I'm unsure on how to find the code where the lifebars are displayed.  This is something completely different from anything I've done so far, which is more on the "calculation" side, if that makes any sense.  How does the code work on the "visual" side?  I think that would be very helpful-knowing how that part works.

If I could see just one example on one game, that may be all I need to work on this last part.

Thanks for your help again.

snarfblam

  • Submission Reviewer
  • Hero Member
  • *****
  • Posts: 589
  • CANT HACK METROID
    • View Profile
    • snarfblam
Re: The Difficulty Settings Project
« Reply #72 on: November 15, 2012, 05:32:17 pm »
Code that draws a HUD (lifebar, score, etc.) is often pretty straightforward. The game can either draw it on the background and use split scrolling the keep the HUD in view, in which case a nametable viewer helps with debugging, or it can draw it with sprites, in which case you can use a memory viewer the monitor the sprite data in system RAM (a sprite viewer can help too). Usually it's a matter of setting a breakpoint when a known memory location is written or when a known value is written to a certain memory range (the latter would require a conditional breakpoint).

Double Dragon uses a background-based HUD. If you pull up a nametable viewer and check it out, you'll see the life bar appears four times. The game seems to maintain two copies of the HUD (not 100% sure why), the other two on the right are mirrors and can generally be ignored. If you hover the mouse over a tile in the nametable viewer (I'm using FCEUX) it shows the PPU address of that tile. The address of the first tile in the lower life bar 2B45.

If you set a breakpoint for a write to 2B45 in PPU memory, the debugger will break when the life meter is being drawn. From there you make your way through the code to find where and how it determines how many bars to draw.

It is important to understand how video memory is accessed, though. NesDev has good reference on what the registers are and what they do. In the case of drawing tiles to the background, a game makes writes to the $2007 register. Multiple writes to $2007 make successive writes to video memory. So the first write to $2007 goes to $2B45 in the PPU, the second write to $2007 goes to $2B46 in the PPU, and so on.

The game uses an unrolled loop to draw the life bar...
Code: [Select]
07:CC5C:8D 07 20  STA $2007 = #$00
07:CC5F:E8        INX
07:CC60:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC63:8D 07 20  STA $2007 = #$00
07:CC66:E8        INX
07:CC67:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC6A:8D 07 20  STA $2007 = #$00
07:CC6D:E8        INX
07:CC6E:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC71:8D 07 20  STA $2007 = #$00
07:CC74:E8        INX
07:CC75:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC78:8D 07 20  STA $2007 = #$00
07:CC7B:E8        INX
07:CC7C:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC7F:8D 07 20  STA $2007 = #$00
07:CC82:E8        INX
07:CC83:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC86:8D 07 20  STA $2007 = #$00
07:CC89:E8        INX
07:CC8A:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC8D:8D 07 20  STA $2007 = #$00
07:CC90:E8        INX
07:CC91:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC94:8D 07 20  STA $2007 = #$00
07:CC97:E8        INX
07:CC98:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CC9B:8D 07 20  STA $2007 = #$00
07:CC9E:E8        INX
07:CC9F:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CCA2:8D 07 20  STA $2007 = #$00
07:CCA5:E8        INX
07:CCA6:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CCA9:8D 07 20  STA $2007 = #$00
07:CCAC:E8        INX
07:CCAD:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CCB0:8D 07 20  STA $2007 = #$00
07:CCB3:E8        INX
07:CCB4:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CCB7:8D 07 20  STA $2007 = #$00
07:CCBA:E8        INX
07:CCBB:BD 28 05  LDA $0528,X @ $0594 = #$FD
07:CCBE:8D 07 20  STA $2007 = #$00
07:CCC1:E8        INX

You can see that it is just copying from a buffer located at $0528 directly to the PPU. So the next thing to do would be to find the code that writes the buffer at $0528.
« Last Edit: November 15, 2012, 05:37:48 pm by snarfblam »

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #73 on: November 16, 2012, 03:39:43 pm »
snarfblam,

Thank you very much for that detailed explanation.  I will look into this over the next several days and see what I can figure out.  That helps a lot.

tog

  • Jr. Member
  • **
  • Posts: 37
    • View Profile
Re: The Difficulty Settings Project
« Reply #74 on: December 10, 2012, 11:37:30 am »
I apologize that it has been so long since I've replied to this.  I am all finished with Zelda 2, so it is ready to go.  My being unable to figure out the life bars does not affect this game at all since I did not adjust how much life you have.  So, if anyone wants it, I can either submit this onto the site or on this forum.

I also think Journey to Silius can be submitted too, since having the lifebars extended on this game doesn't look messed up or have any issues.  Again, if anyone wants it, just let me know.

MathUser2929

  • Hero Member
  • *****
  • Posts: 1535
    • View Profile
Re: The Difficulty Settings Project
« Reply #75 on: December 10, 2012, 11:51:40 am »
I don't see why you shouldn't submit the patch to the site. Submit it and it will probably be approved. It sounds like a good idea for a hack. I never got too far in Zelda 2 so having a easy difficulty could help with that.

Garoth Moulinoski

  • Hero Member
  • *****
  • Posts: 6290
  • Disliking that smoke.
    • View Profile
    • My Stuff including Super Smash Karts.
Re: The Difficulty Settings Project
« Reply #76 on: December 10, 2012, 12:00:22 pm »
I don't see why you shouldn't submit the patch to the site. Submit it and it will probably be approved. It sounds like a good idea for a hack. I never got too far in Zelda 2 so having a easy difficulty could help with that.

You could "level grind" by abusing the respawning Red Iron Knuckle that's in the statue at the front of some palaces. They give you 100 XP or a Red Potion each. Those statues will sometimes drop a Red Potion, too. So, it's incredibly easy (but boring) to grind the Iron Knuckles for XP and heal with the potion. If you're low on health, just run away if a Iron Knuckle pops up. When you have your Attack at around the third or fourth level, it should take only two hits to kill it anyway.

The octoroks in the swamp are also pretty good for level grinding, since they're easy and predictable. Before that, you'll probably need to grind with the slimes in the field, but the first palace is very easy anyway, so it really shouldn't give you too much trouble.
Who will quote me next?
Disclaimer: If it sounds wrong, I may have been posting while asleep.

MathUser2929

  • Hero Member
  • *****
  • Posts: 1535
    • View Profile
Re: The Difficulty Settings Project
« Reply #77 on: December 10, 2012, 12:02:46 pm »
Good suggestions. The double dragon easy patches should also be submitted to RHDN. I don't think they are on there now.

Trax

  • Sr. Member
  • ****
  • Posts: 497
    • View Profile
    • Trax ROM Hacking
Re: The Difficulty Settings Project
« Reply #78 on: December 10, 2012, 07:10:42 pm »
I know almost everything about Zelda II. Feel free to ask any question related to data tables or enemy AI...

charbatgoula

  • Guest
Re: The Difficulty Settings Project
« Reply #79 on: December 20, 2012, 08:37:48 am »
Hi all,
i would like to upgrade difficulty of some opponents in SNES ROM : Jimmy Connors Pro Tennis Tour.
And maybe create a new player if i find some tips.
Could some guys here recommand me a software to watch inside the ROM ?
Regards,