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

Author Topic: Hack ideas: for those without the skill but with all the ideas.  (Read 2525969 times)

mz

  • Sr. Member
  • ****
  • Posts: 447
  • Whore
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5300 on: November 05, 2018, 07:18:52 pm »
Finding a way to disable random battles is the first thing I do when I have to translate a JRPG (the other being finding a way to kill bosses in just one turn). Here's what I usually do:

0. Start BizHawk and open its RAM Search.
1. Get into a place where there are no random battles (a house or a town, maybe) and start a new search.
2. Repeat search with "equal to previous value" many times while you stand still. Several thousand possible addresses should disappear.
3. Get into a place with random battles (a forest or a cave, maybe) and do a "not equal to previous value" then stand still and do the same thing as step 2.
4. Go to other places and repeat all these steps until you can't remove more addresses like this.
5. Mark 25% of your address list, right click on it and select "Freeze Address". If random battles haven't stopped, unfreeze them and do the same with another 25%, etc.
6. After finding that battles have stopped, do a simple process of elimination until you're left with just 1 or 2 address.
7. Put a read/write breakpoint there and see what code handles random battles.
8. Modify it to remove them completely or just to reduce them.

If you know that the game has more random battles the more you walk (or it has any other action that can change the RNG), you can use this information to find these addresses much faster.

Obviously, this doesn't always work, but with a little creativity and luck you can quickly find something similar in any game...
There has to be a better life.

kdubmods

  • Jr. Member
  • **
  • Posts: 5
    • View Profile
    • Moltenite
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5301 on: November 06, 2018, 05:00:55 am »
One idea I had was to change the team names in NES Double Dribble, as indicated from this thread...
http://www.romhacking.net/forum/index.php?topic=27259.0

Does anyone know how do this because I new to rom hacking?

Q

  • RHDN Patreon Supporter!
  • Full Member
  • *****
  • Posts: 115
  • Meow, busy hackers!
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5302 on: November 07, 2018, 09:48:37 pm »
The SNES game Batman Forever is known for being insanely awful, probably one of the worst games on the system. The Angry Video Game Nerd did a rant about how terrible the game is here (start at 5:22). Interestingly, the game was published by Acclaim and uses the same engine as Mortal Kombat, so it has the same graphical style, and Batman and Robin have the same moves as MK characters. It would be awesome if someone could use the sprites from Batman Forever to add Batman and Robin to the SNES version of Ultimate Mortal Kombat 3 as a nod to Mortal Kombat vs. DC Universe. (Yes, I know this would require a lot of work and is unlikely to happen, but it's fun to dream.)
Sneko, the Super Nintendo Entertainment Kitty, wishes you luck.

SCD

  • RHDN Patreon Supporter!
  • Hero Member
  • *****
  • Posts: 710
  • SPOOOOON!
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5303 on: November 09, 2018, 03:14:28 am »
Game & Watch Gallery 4 (Game Boy Advance): A hack that would restore the original uncensored sprites for classic mode Fire Attack.

The main sprites are located in the offsets 39f298 and 3a1aa4.

Gorganzola

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5304 on: November 09, 2018, 05:51:36 am »
Hi mz, thank you for your reply. I was able to find this with BizHawk:
In address 0690 when you are in an area with no random battles the value is 0 and once you go outside, it is set to 1
In address 0695 when you're in a battle area the value quickly goes from 01 to 18, then resets back to 01 and continues the same behavior (It is set to 0 when you are in houses). Do I understand correctly that this is what influences the random battles?
When I froze the value on 18, the game became much more enjoyable because the random battles aren't as commmon as they were. What can I do next to make 18 a constant value?
Does read/write breakpoint have something to do with this and I'm very sorry for the silly question but where do I find this read/write breakpoint? In BizHawk? :angel:

Melissa

  • Jr. Member
  • **
  • Posts: 3
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5305 on: November 09, 2018, 10:23:49 am »
[SNes]Chrono trigger - Disabling XP for inactive characters


As u should know inactive characters get 75% XP. Does anyone have patch to disable it?
« Last Edit: November 09, 2018, 11:33:46 am by Melissa »

mamertos

  • Jr. Member
  • **
  • Posts: 73
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5306 on: November 09, 2018, 01:26:45 pm »
Super Bomberman 3 (SNES): you need enter 3 different passwords for enabling new battle stages (30 stages in total). Also (how I said here recently) there are others 2 special hidden levels which you need push down x button a lot of times and very quicky in the title screen for enabling them (it's impossible to do without the autofire feature). My idea is unlock all battle levels from the beginning without passwords or that insane cheat for the special levels.

mz

  • Sr. Member
  • ****
  • Posts: 447
  • Whore
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5307 on: November 09, 2018, 02:19:24 pm »
Hi mz, thank you for your reply. I was able to find this with BizHawk:
In address 0690 when you are in an area with no random battles the value is 0 and once you go outside, it is set to 1
In address 0695 when you're in a battle area the value quickly goes from 01 to 18, then resets back to 01 and continues the same behavior (It is set to 0 when you are in houses). Do I understand correctly that this is what influences the random battles?
When I froze the value on 18, the game became much more enjoyable because the random battles aren't as commmon as they were. What can I do next to make 18 a constant value?
Does read/write breakpoint have something to do with this and I'm very sorry for the silly question but where do I find this read/write breakpoint? In BizHawk? :angel:
Great job! I just tested setting 0690 to 0 and the random battles were gone. :D

To make 18 (or anything else) a constant value, you can freeze it like you already did or use a cheat manager ("Tools" -> "Cheats" in BizHawk.)

To use read/write breakpoints you'll need to learn assembly (~Z80) language and how to use a debugger. ("Tools" -> "Debugger" in BizHawk, although BGB's debugger is recommended for this.)

EDIT: Ah, I just realized that you probably want to patch the ROM so 0695 is always 18 or something. You'll need to learn ~Z80 assembly for that, as you'll need to manually edit the code that changes that byte in RAM while the game is running (or much better, change the code that reads and process it).
« Last Edit: November 09, 2018, 02:35:43 pm by mz »
There has to be a better life.

Psyklax

  • Hero Member
  • *****
  • Posts: 1112
    • View Profile
    • Psyklax Translations
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5308 on: November 09, 2018, 03:40:17 pm »
In address 0690 when you are in an area with no random battles the value is 0 and once you go outside, it is set to 1
In address 0695 when you're in a battle area the value quickly goes from 01 to 18, then resets back to 01 and continues the same behavior (It is set to 0 when you are in houses). Do I understand correctly that this is what influences the random battles?

Good find there. I took a look at the game in BGB's debugger and if you just want to have random battles disabled permanently, change $2339 in the ROM from 7E to 79. This instruction is used when you move from one screen to another and changes $690 in RAM to whatever that screen requires. With this change, instead of loading $690 with the correct value, it loads it with what's in the C register - that is, zero. Different areas have different numbers, so this presumably affects what kind of enemies you encounter.

As for reducing the rate instead of turning off battles completely, I'm not so sure that $695 is connected: it rolls around every frame or so and you still get random battles regardless of what number it lands on. That will take a little more investigation.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 7133
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5309 on: November 09, 2018, 07:31:04 pm »
I thought $0690 was a ROM address on GB/GBC?
"My watch says 30 chickens" Google, 2018

mz

  • Sr. Member
  • ****
  • Posts: 447
  • Whore
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5310 on: November 09, 2018, 07:34:43 pm »
I thought $0690 was a ROM address on GB/GBC?
It is. We're talking about $690 in the WRAM domain ($C000-$CFFF), so $C690 in normal system bus terms.

(Blame the BizHawk devs for that confusion. :P)



Something really quick I noticed in the RAM viewer: there's this byte at $06b5 (aka $c6b5) that goes up every step or so... It seems if you keep it really low (like 1), random encounters appear much more rarely. Maybe the game uses this number as a % of probability (ie, if there's a 20 there, a battle can come up 20 out 100 times). Also, if set to 0, it seems there are no random battles at all.

Maybe someone with more time and skills can take a look at the code handling that address. :P
« Last Edit: November 09, 2018, 10:25:14 pm by mz »
There has to be a better life.

Gorganzola

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5311 on: November 10, 2018, 08:23:08 am »
EDIT: Ah, I just realized that you probably want to patch the ROM so 0695 is always 18 or something. You'll need to learn ~Z80 assembly for that, as you'll need to manually edit the code that changes that byte in RAM while the game is running (or much better, change the code that reads and process it).
Yes, that was exactly what I wanted to do. The game is tough as it is, but without random encounters you can't level up and enjoy it. Can you suggest any not too technical tutorial to get started with that? I googled Z80 assembly but maybe they have too much new information or I'm too stupid to understand a lot of the terms in them. If nobody is interested in this game, I hope I could fix it's main problem :-[

As for reducing the rate instead of turning off battles completely, I'm not so sure that $695 is connected: it rolls around every frame or so and you still get random battles regardless of what number it lands on. That will take a little more investigation.
I don't mind investigating, what software should I use for that and what do you suggest I should look at? (Thanks again for your answers, guys, and to mz for sparking my curiosity!) :)

Something really quick I noticed in the RAM viewer: there's this byte at $06b5 (aka $c6b5) that goes up every step or so... It seems if you keep it really low (like 1), random encounters appear much more rarely. Maybe the game uses this number as a % of probability (ie, if there's a 20 there, a battle can come up 20 out 100 times). Also, if set to 0, it seems there are no random battles at all.
Sir, that's an amazing find! So not only 0695 is responsible for the battle rate? Did you find this value in BizHawk?

Maybe someone with more time and skills can take a look at the code handling that address. :P
That would be cool but what if I am the only one who thinks this game is interesting? ::)

mz

  • Sr. Member
  • ****
  • Posts: 447
  • Whore
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5312 on: November 10, 2018, 09:44:44 am »
That would be cool but what if I am the only one who thinks this game is interesting? ::)
Sorry, I didn't mean that to sound like "I hope someone better than you comes up and gets this done". I just meant "I don't have enough skills or time to do this right now".

Yes, I found that address just by looking in BizHawk around the area you had found (with its hex editor).

I guess you could read any Z80 book or Game Boy tutorial you may find around, but I have no idea how easy or hard they are. I've personally never read one... All I've really learned was just by playing around with debuggers, having the CPU's instruction set on another window and googling specific things (what's a CPU register, what's a routine, etc.)
There has to be a better life.

Gorganzola

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5313 on: November 10, 2018, 01:22:11 pm »
Sorry, I didn't mean that to sound like "I hope someone better than you comes up and gets this done". I just meant "I don't have enough skills or time to do this right now".
I didn't take your message that way. I thought that nobody would want to look into this game at all and your suggestions really helped me even if this only applies to one emulator! :)

I guess you could read any Z80 book or Game Boy tutorial you may find around, but I have no idea how easy or hard they are. I've personally never read one... All I've really learned was just by playing around with debuggers, having the CPU's instruction set on another window and googling specific things (what's a CPU register, what's a routine, etc.)

Got it, I will try looking into this further. Thanks again!

Mauron

  • Submission Reviewer
  • Hero Member
  • *****
  • Posts: 551
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5314 on: November 10, 2018, 10:55:38 pm »
[SNes]Chrono trigger - Disabling XP for inactive characters


As u should know inactive characters get 75% XP. Does anyone have patch to disable it?
In an unheadered US ROM, change 0x1FA44 to 80 04.
Mauron wuz here.

Psyklax

  • Hero Member
  • *****
  • Posts: 1112
    • View Profile
    • Psyklax Translations
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5315 on: November 11, 2018, 03:09:42 am »
Something really quick I noticed in the RAM viewer: there's this byte at $06b5 (aka $c6b5) that goes up every step or so... It seems if you keep it really low (like 1), random encounters appear much more rarely. Maybe the game uses this number as a % of probability (ie, if there's a 20 there, a battle can come up 20 out 100 times). Also, if set to 0, it seems there are no random battles at all.

Well, you're right that it's a step counter, good job. It increments every step, unless it reaches $10, in which case it stays at that. After it checks this step counter it calls a routine which I assume is an RNG routine, but I'm not familiar enough with such things to know. Suffice to say that freezing it at $01 means that encounters are very rare, and freezing it at $10 means encounters occur very quickly.

So, what is obviously happening is the game sees how many steps you've taken and makes a 'dice roll' to see if you have an encounter or not. To use a board game analogy, it's a bit like rolling 2D6 and having to get 13, but adding 1 to your roll for every step you've taken. Thus, zero steps means no encounter, and the more steps you make, the more likely it becomes. At least, that's how it seems to me.

I'll make a routine to only increment every other step, and see what happens. :)

EDIT: and I'm done. :) Just patch the ROM with this and it adds a little routine, which I shall now explain.
s346165667.websitehome.co.uk/psyktrans/metalwalker-encounter.ips
Quite simply, the patch breaks out of the regular program to check a (hopefully) unused RAM address, $C6FF, to see if it's zero. If it is, it increments it and loads the step counter as normal. If it's not zero, it decrements it (bringing it back to zero) and decrements the step counter. Then when the step counter is incremented as normal, it basically means it doesn't change. Therefore, your step count only increases on each alternate step. As far as I can see there are no problems with this, and I assume the encounter rate appears much less - but you'll have to test that yourself. :)

Hat tip to KingMike for suggesting the 'spare RAM address' idea in his DTE tutorial that taught me a lot about assembly. :D
« Last Edit: November 11, 2018, 04:03:51 am by Psyklax »

Melissa

  • Jr. Member
  • **
  • Posts: 3
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5316 on: November 11, 2018, 06:57:40 am »
In an unheadered US ROM, change 0x1FA44 to 80 04.
Already got it. Thanks again. Had to unheader rom first. ^ ^
« Last Edit: November 11, 2018, 09:33:52 am by Melissa »

Gorganzola

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5317 on: November 11, 2018, 07:09:29 am »
So, what is obviously happening is the game sees how many steps you've taken and makes a 'dice roll' to see if you have an encounter or not. To use a board game analogy, it's a bit like rolling 2D6 and having to get 13, but adding 1 to your roll for every step you've taken. Thus, zero steps means no encounter, and the more steps you make, the more likely it becomes. At least, that's how it seems to me.
I think you are right about the dice roll mechanic, otherwise, why would the 0695 value keep bouncing from 0 to 18? :)

Quite simply, the patch breaks out of the regular program to check a (hopefully) unused RAM address, $C6FF, to see if it's zero. If it is, it increments it and loads the step counter as normal. If it's not zero, it decrements it (bringing it back to zero) and decrements the step counter. Then when the step counter is incremented as normal, it basically means it doesn't change. Therefore, your step count only increases on each alternate step. As far as I can see there are no problems with this, and I assume the encounter rate appears much less - but you'll have to test that yourself. :)
Yes, indeed, now I can go to the next map area and have 1 encounter instead of 3-4 that I've had before but, from time to time, I get 2 encounters in one area, I guess this is the dice roll effect. This is so awesome! Thank you, Sir! :thumbsup:

Hat tip to KingMike for suggesting the 'spare RAM address' idea in his DTE tutorial that taught me a lot about assembly. :D
Are you referring to this document, Sir? I will look into it. Thank you for the reference! :)

mz

  • Sr. Member
  • ****
  • Posts: 447
  • Whore
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5318 on: November 11, 2018, 12:20:56 pm »
s346165667.websitehome.co.uk/psyktrans/metalwalker-encounter.ips
Great job! But you both seem to have much more patience for random battles than me. :P

If I were to play this game, I would probably change that routine to make it believe it's always reading a 1 from memory. :D (Or something similar...) Although then I'd need to change more stuff so I don't get killed after the second battle...
There has to be a better life.

jackic

  • Jr. Member
  • **
  • Posts: 38
    • View Profile
Re: Hack ideas: for those without the skill but with all the ideas.
« Reply #5319 on: November 11, 2018, 04:40:12 pm »
Contra III / Super Probotector: Full Final Boss Battle and ending while playing on any difficulty level.

I really love this game but I find the hard mode to be, well, too hard to be ejoyable and I think this would make a great addition to it.