Go Back   Project64 Forums > Public Version > Project 64 - v2.x - Cheats

Reply
 
Thread Tools Display Modes
  #171  
Old 9th August 2015, 01:11 AM
theboy181's Avatar
theboy181 theboy181 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2014
Location: Prince Rupert,British Columbia Canada
Posts: 426
Default

Quote:
Originally Posted by Marcelo_20xx View Post
Thanks for the advice...

@HatCat
I know for a fact that this is possible, depending on the code...HyperHacker injected its code into the rom directly for his "Hookshot mod" code, it involved decompressing the rom first, inject the code and recompress it again. The decompress part was easy because someone wrote already a tool for that called zdec but the recompression was harder until Zoinkity made a tool that not only worked for the debug rom but for the retail ones too...
I think that you can find the locked values, convert them, and then edit the ROM via HEX editor.
__________________
Book recommendation!
https://www.amazon.com/All-Cats-Have.../dp/1843104814
Reply With Quote
  #172  
Old 9th August 2015, 03:12 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,255
Default

Quote:
Originally Posted by theboy181 View Post
I think that you can find the locked values, convert them, and then edit the ROM via HEX editor.
Please explain to the class how a 4-MB RAM address can be converted into a 32-MB ROM address.

Quote:
Originally Posted by Marcelo_20xx View Post
@HatCat
I know for a fact that this is possible, depending on the code... HyperHacker injected its code into the rom directly for his "Hookshot mod" code, it involved decompressing the rom first, inject the code and recompress it again.
Unfortunately, you don't.

There's no such thing as "injecting a GameShark code into a ROM". What you're describing is ROM hacking--that's a mod that achieves the desired effect of a GameShark code. But there is no such thing as making a GameShark code active permanently just by editing the ROM.

Besides, GameShark cheats typically have a repeated, constant effect, where the byte or halfword is written repeatedly by the GameShark engine. There's no such thing as a ROM edit that can induce that.
Reply With Quote
  #173  
Old 9th August 2015, 03:57 AM
theboy181's Avatar
theboy181 theboy181 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2014
Location: Prince Rupert,British Columbia Canada
Posts: 426
Default

Quote:
Originally Posted by HatCat View Post
Please explain to the class how a 4-MB RAM address can be converted into a 32-MB ROM address.



Unfortunately, you don't.

There's no such thing as "injecting a GameShark code into a ROM". What you're describing is ROM hacking--that's a mod that achieves the desired effect of a GameShark code. But there is no such thing as making a GameShark code active permanently just by editing the ROM.

Besides, GameShark cheats typically have a repeated, constant effect, where the byte or halfword is written repeatedly by the GameShark engine. There's no such thing as a ROM edit that can induce that.
Conversed with RPGMaster a while ago and he informed me that it is possible. We used nemu and HEX editor to implement a cheat to a rom. So this was a cheat code to ROM hack. Nemu was used to find the location that was needed to be changed.

If I understand what your saying is that you can't just inject the gameshark codes, that is correct you can't.
__________________
Book recommendation!
https://www.amazon.com/All-Cats-Have.../dp/1843104814
Reply With Quote
  #174  
Old 9th August 2015, 04:03 AM
theboy181's Avatar
theboy181 theboy181 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2014
Location: Prince Rupert,British Columbia Canada
Posts: 426
Default

I take it back. RPGmaster says your right. Sorry for the confusion.
__________________
Book recommendation!
https://www.amazon.com/All-Cats-Have.../dp/1843104814
Reply With Quote
  #175  
Old 9th August 2015, 04:34 AM
Marcelo_20xx's Avatar
Marcelo_20xx Marcelo_20xx is offline
Senior Member
 
Join Date: Oct 2013
Posts: 165
Default

Ok, I dont know about N64 roms but on SNES roms I can make permanent the effect of Game Genie (Galoop) codes since they modify "constant" values. The difference on the AR codes (action Replay, Game Shark codes) are that they also modify variable values that are put on the RAM area on the fly, for this kind of code you cant do a permanent version of it unless you mess with asm or the platform native language (N64 uses MIPS code)...

Yes I know this is more like a romhacking thing, but I used the decoded offset address from a Game Shark code to hex edit a SNES rom...But I haven't investigated if the same thing can be done on N64 roms or I am just wasting my time and everybody's else and need to live with the cheats put on the rdb and be done with it...

Last edited by Marcelo_20xx; 9th August 2015 at 04:39 AM.
Reply With Quote
  #176  
Old 9th August 2015, 07:28 AM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 681
Default

You actually can inject Gameshark codes into at least SM64,it has that program for it.
Only some codes work,and the offset is different from Gameshark/RDRAM locations.
So for others,you can't directly inject the code as is because of address differences.
Reply With Quote
  #177  
Old 9th August 2015, 03:46 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,255
Default

Let's explain the difference between RAM and ROM.

An 8-MB ROM, like Mario, would have either 4 or 8 MB RAM, likely.
A GameShark address is a RAM address.

So how is it possible to come up with a static rule that works everywhere, even for one single game, from GS codes modifying 7FFFFF, to those modifying 000000? Even if the developers tried to purposely design the ROM to allow instant conversion of a GS offset into a ROM offset, for a game like that you would still run out of ROM space or go out of bounds.

Quote:
Originally Posted by retroben View Post
You actually can inject Gameshark codes into at least SM64,it has that program for it.
Only some codes work,and the offset is different from Gameshark/RDRAM locations.
No because that again is a ROM hack.

That's the only way to make something like that possible--
  • create a function using your own injected MIPS code that gets called after Mario finishes booting,
  • make the game call that function at an opportune time,
  • and have it copy a list of bytes or halfwords to a list of addresses compiled by the person using the ROM hacking tool you just mentioned.

What I just said is a ROM hack--you can hack the ROM to schedule custom functions you wrote up to write GameShark code effects to RAM space while the ROM is running, but you can't convert GameShark RAM addresses to ROM addresses using any algorithm or universal rule.

And even then, like you said it doesn't work all the time, because 80* codes are set up to constantly write the data over a fixed interval of time that something more low-level like an emulator would have access to. You also have to both prevent the function from being called at conflicting times, while making sure the effects of the code are initialized at the opportune times.
Reply With Quote
  #178  
Old 9th August 2015, 05:00 PM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 681
Default

Some parts of RDRAM are execution (found out it was asm) code.
Some SM64 running speed codes are that type,and were placed at a position matching the gameshark code.
Edit: Yeah,Gameshark uses 80* but we say F*** that and only use the following numbers after 80.
You have to use the M64 rom expander first,obviously.

I oughta know,I made a hacked copy of SM64 with infinite run speed and I think no sliding on slopes so I could endlessly accelerate and not slide down any slopes.
It was awesome,too bad I forgot what I did with that copy.
Gameshark,romhack,WHATEVER! It still is taking Gameshark codes and finding the rom's matching source address and modifying it to get the same desired effect.
The limit is that only SM64 has the program to patch/hack in Gameshark codes easily.

It is loads easier to do this to NES,SNES,and Sega Genesis games patching in Game Genie codes because of matching address locations.

I know so much about this,yet I suck at ASM,though i've noticed text bits matching the asm command style.

Banjo-Kazooie can be expanded via BB,so maybe execution asm related address can be changed in it as well.

Last edited by retroben; 9th August 2015 at 05:06 PM.
Reply With Quote
  #179  
Old 9th August 2015, 06:43 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,255
Default

Quote:
Originally Posted by retroben View Post
Gameshark,romhack,WHATEVER! It still is taking Gameshark codes and finding the rom's matching source address
No it isn't.

There is no such thing as a "matching source address" for RAM inside of ROM.

You can create that scenario virtually if you developed the game, but that again requires said function earlier of initializing RAM with ROM and doesn't really exist as a matter of concept, but just per the feature of single hacks in games.

Quote:
Originally Posted by retroben View Post
The limit is that only SM64 has the program to patch/hack in Gameshark codes easily.
No it isn't. The limit is that no such program can exist for any game, unless the developers totally wasted half of the ROM's 8 MB to hold the 4 MB RDRAM just to load it all into CPU RAM when the game starts.

The limit, also in addition to that, is that the game is only able to waste 4 MB of ROM space to buffer what you wrote to it with this little program of yours, on a single read. It can't keep updating the value in case other functions in the game overwrote it.

So if you patch a code into the ROM that way, the game is only able to load that static data into RAM, which can be overwritten by other functions the game needs to work, unless you're using a GameShark 8?###### code to constantly write the data to RAM, not to the ROM.

Look, you know what Project64.exe is, right? Say it loads at 000000C000400000 into your own computer's RAM and dynamically allocates a random starting address for a buffer this time at 000000C020400000. Take that and convert it into a "ROM" address into the pj64 EXE file for me, then you have a point. But until you can do that, this whole observation of yours about a Mario ROM-hacking utility being able to "convert GameShark cheats into ROM offsets" is nothing but a pseudo-concept that only exists, to you, because Nintendo tried to make it that way for maybe one game.
Reply With Quote
  #180  
Old 9th August 2015, 07:14 PM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 681
Default


It's not the entire RDRAM! Only the bits that are "asm" and never change normally.

The video proves stuff,the game is not even expanded,but an 8MB sized original.
A slight chance Banjo-Kazooie and Banjo-Tooie could each also have certain things depending on how it is.
In the video,you can spot rom data values of 3C05 3F80 which matches the RDRAM postion value perfectly.

Maybe I can take a powerful enough code,do a search for bytes in the rom for an identical match and test modifications after fixing the checksum.
For instance,the universal size mod for Banjo and Kazooie on Banjo-Tooie,provided I can see a nearby 3C01 80xx value or get the correct 3C0x 3F80 values in the rom offsets.
If this works,it will be undeniable proof,as I could share the exact rom offset that does it if I find said offset.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 05:17 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.