| |||
Views: 88,481,786 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 04-25-24 12:51 PM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 1 guest | 1 bot |
Main - ROM Hacking - 6 to 8 lettered game genie codes | New thread | New reply |
born2party |
| ||
Level: 15 Posts: 34/35 EXP: 15857 Next: 527 Since: 04-04-08 Last post: 5253 days Last view: 4851 days |
Does anyone know of a program that can easily convert 6 lettered game genie codes to 8?
I've googled and found only complicated tutorials. I still don't get it. Theres got to be an easier way. |
Parasyte |
| ||
Red Goomba Level: 18 Posts: 28/48 EXP: 24784 Next: 5113 Since: 02-09-09 From: Flagstaff, AZ Last post: 5209 days Last view: 5187 days |
Perhaps the question you should be asking is, why?
The only difference between a 6-digit Game Genie code and an 8-digit code is that the latter includes a data checking (condition) parameter. The data check helps to ensure the code output is only sent to the console when the proper ROM bank is loaded. So ... If you have a 6-digit code that is working, why bother turning it into an 8-digit code? It's not like its a dumb processes (able to be done by a simple program/algorithm) anyway; you still need to know the correct input byte from the original ROM bank. If you are already aware of all this, you should have also known that any Game Genie encoder/decoder is just the tool you need; Paste the 6-digit code, you'll be given the raw (address ? condition : data) format. The (condition) will be blank, of course, so fill it with the input byte from the proper ROM bank, and convert it back to a Game Genie code. Simple, no? |
Jigglysaint |
| ||
Red Paragoomba Level: 20 Posts: 48/62 EXP: 38537 Next: 3902 Since: 04-04-07 Last post: 4616 days Last view: 2353 days |
Para, I thought the compare value only checks the individual value, not the rom bank. If there's no compare, then all addresses in the game are affect, but with the compare, only bytes that match the compare value will be altered. Correct me if I'm wrong though.
Edit: Found a document on it: http://tuxnes.sourceforge.net/gamegenie.html |
born2party |
| ||
Level: 15 Posts: 35/35 EXP: 15857 Next: 527 Since: 04-04-08 Last post: 5253 days Last view: 4851 days |
Posted by Parasyte |
Parasyte |
| ||
Red Goomba Level: 18 Posts: 29/48 EXP: 24784 Next: 5113 Since: 02-09-09 From: Flagstaff, AZ Last post: 5209 days Last view: 5187 days |
Posted by Jigglysaint Uh yeah, that's what I said. Didn't mean to make it sound like the comparison was for ROM bank numbers (since there is no general [easy] way to get that information in hardware). Sorry for any confusion. Posted by born2partyPosted by Parasyte I don't understand that; possible ROM addresses? There are two ways to look at ROM in a bank-switching computer (like NES): 1) As a complete ROM chip; just one large file. 2) The same way a CPU with limited address space sees it; in smaller pieces, usually only 1 or 2 banks at a time. In the former interpretation of "ROM addresses", each address references only a single byte. This is simple; you see files in this light all the time. In the latter interpretation, you realize that a CPU address of something like $8000 can be remapped in hardware to point to different banks within the ROM. On the other hand, address $E000 [likely] cannot be remapped at all, and so it can only reference a single byte in a single bank. This was a short lesson, and much important information was left out. But the gist is simple: the lack of the comparison parameter in a Game Genie code does not inherently make the game less stable or cause more crashes. There is a high probability that they will be less stable, yes. But do not take this as canon. How do you know if you need the comparison parameter? Well, that depends on the mapper used in the game you're working with. Some mappers have 16KB of ROM space "hard wired" at $C000-$FFFF; any Game Genies address that falls within that range do not require the comparison parameter. Other mappers have 8KB "hard wired" at $E000-$FFFF. And yet others have the full 32KB of ROM space "hard wired" ($8000-$FFFF). As for how you actually use the comparison parameter after it's determined to be necessary... well, I assume you know the data byte you're intending to replace with the code; that data byte is what you put into the comparison parameter. Here is an example: Assume, for a moment, that you just debugged your favorite game and found an "LDA" instruction (opcode: $A9,$xx) that loads the number of lives you start with. In this case, the $xx might be $03... Anyway, you want to replace the $03 with something a little more fun, like $32 to start with 50 lives. Now assume the address of this instruction is at address $D5F3, and that the mapper uses an 8KB "hard wired" bank (at $E000-$FFFF). Since the address does not fall within the "hard wired" bank, using the comparison parameter is a good idea. The opcode at $D5F3 is $A9, so the $03 must be at $D5F4; you will use that address for your Game Genie code. Six-digit format = D5F4 : 32 Eight-digit format = D5F4 ? 03 : 32 Does that make sense? The only difference is the "? 03" -- which came from the original instruction:
|
Main - ROM Hacking - 6 to 8 lettered game genie codes | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 47, rows: 72/72, time: 0.015 seconds. |