News:

11 March 2016 - Forum Rules

Main Menu

romhacking question

Started by az202301, February 01, 2023, 05:50:04 PM

Previous topic - Next topic

az202301

very new to romhacking and looking to see if i can maker a randomizer for Harvest Moon GBC... started digging around for values..
ran into sort of intersting issue when I tried searching the memory address for Gold.

the issue is as follows
1. If you are not in a shop and try to do a search for the 16bit value of Gold, the memory addresses shows a value of 0000 and returns no results...
2. In a shop while it does end up with the one address and if you change the value it seems to be work.. but according to a search on the net for gameshark codes that change the gold value, it seems to point to a complete different addres
what i meant is the addresses i found are CCCA and CCCB respectfully, the gameshark codes floating around on the Internet shows 01FFEFB8
01FFF0B8 which points to addresses EFB8 and F0B8 respectuflly... huh?

not sure if i done goofed somewhere trying to find this address. or what

Jorpho

I don't know why you couldn't put "Harvest Moon GBC" or something in your subject line instead of "romhacking question". Everyone here has a "romhacking quesiton".

Anyway, have you tried using the Gameshark code? (If I'm not mistaken, there are some emulators that let you do that.) Does it function as expected?
This signature is an illusion and is a trap devisut by Satan. Go ahead dauntlessly! Make rapid progres!

FAST6191

Specific values might not do much if the value is encoded in some other manner (split between values -- 8 bit system and all that so might not be 16 bits straight number), might be signed (granted negative money is a rare thing outside of things with a serious financial simulation, same for fractional values which are also a resource drain), encrypted (anti cheat is rare on the GB/GBC but not unheard of, and exists going way back in console world, and if it is something as simple as inverted value then that is less of a thing).

As far as differences between apparent existing codes and that then three broad scenarios.

Different region or version. Existing codes tend to largely be for North American releases so if there is a European, Japanese or whatever one then maybe not that. Different versions did also happen for the GB/GBC and in the time since if this is ripped from a virtual console version or something.

Encrypted/anti cheat. The value you found might be something like the value on the display where the value used for internal logic (or in some particular tricky cases internal logic where it matters*) is in a different location entirely.
https://web.archive.org/web/20080309104350/http://etk.scener.org/?op=tutorial covers a bit more there.

Mirrored value. For various reasons usually on older systems (relative jump, bank switching and such, both of which could be in play on the GBC) then the values could be replicated at various points in the memory. Whoever made the gameshark codes might have picked those particular mirrors and it is rare that many games see codes replicated by others unless there is a problem with them.


*I had a final fantasy game on the GBA I think it was that had health on screen and found a cheat for that. Internally it had another counter for the actual health and you would still die as per normal gameplay rules, but the on screen one was used for detecting whether/how much a potion healed you. What you have here might be something like that, or might be closer to a situational value where for memory reasons the value only exists in the scenes it is needed (such memory management is rare and probably pointless for this, it being the default for music, text, levels and graphics though).

az202301

well i did find the actual gameshark code referenced address by searching the hexadecimal equivalent of the value of money at the time... tried putting that into simple randomizer maker which is what im using to make the randomizer for now.. generated a seed.. except it doesnt randomize money... starting money would still be 500...

mkwong98

It is possible that the number is stored in a way that is easier to display. For example one byte may hold the decimal 2 digits 0-99 instead of fully utilized with 0-255. Then it is converted to proper form in shops for calculation.