Hello nesdevvers,
I'm a starter at bending hardware and glitching out video/audio signals using whatever kind of way I can find without breaking my machines.
I started looking this stuff up for a schoolproject, where I want to create a bent NES that can still be played, but where they player can also play around with the world in which the game is set. (and thus choose to make his own setting)
So to get this working I had to start bending more than just Casio keyboards and start on a game console. I took my old NES off the shelve and got myself a _brand new_ game genie (it was still wrapped in the original plastic, only 2 years younger than myself), as I heard this allows you to change around code sent from game to CPU/PPU without having to mess with the hardware.
So where I am now, is I'm trying to figure out how this Game Genie thing works, exactly. I'm working this on an actual unmodded old NES, my equally old Super Mario Bros. 3 and a Game Genie, so all of this is on original hardware.
I have a reference table for the game genie to rework letters to binary/hex values, but I'm stuck with a couple of questions.
First off, am I calculating right? I'm using the reftable at http://nesdev.com/nesgg.txt to rework codes.
I have SMB3 in my slot atm, and using PEUZUGAA (start at lvl2) I reworked this to:
Is this the right Hex address for this code?
Because; my second question is concerning those addresses. Am I correct in thinking that an adress of $2CB3 would be a sub of Name Table 3? Or of Attribute Table 2? Or doesn't it work like that?
This is from ref file http://fms.komkon.org/EMUL8/NES.html#LABD which I read as saying $2C00 - $2FC0 constitutes Name Table 3.
And if I would input a different value in (for example) $2CB4 (or 0010110010110100) does that still fall under this same table? Will it also change something in the PPU's interpretation of the cartridge?
And so, can I rework a Hex value to binary and input something that makes sense into the NES? And to which Hex tables can I write?
I was under the impression that writing to attribute tables would make the NES output different things than usual, but if I try writing to $2C01 or anything else of the sort (or $2000, $2400, $2800 and higher) nothing really happens and mario just starts where he always does.
How do I know which attribute table to write to?
My third and last question for this topic is on reference bits.
First, the subject of bit 3-3, the reference bit for checking the length of the code (briefly touched in above mentioned ref file)
Does this value always have to be 1 for the Genie to do its magic? Or can it be 0? And why is it one or the other? I get that this bit won't actually change anything, I'm just curious on how it works.
And secondly, how do the reference bits in 8-char codes work? I've seen that the are all written 0 in most of the codes. Actually all 8-char codes in my game genie booklet for SMB3 end in AA, or 00000000 for all reference bits. I can write AE to it (or 00001000) which changes the value of '5', but if I write anything else it breaks my game. Anyone that can explain that one?
First post, long post. Thanks in advance for any and all ideas and help you guys can provide. Tho keep in mind that I'm not a coder, please keep it simple for a simple mind like mine ^^
Thanks,
JasonD
I'm a starter at bending hardware and glitching out video/audio signals using whatever kind of way I can find without breaking my machines.
I started looking this stuff up for a schoolproject, where I want to create a bent NES that can still be played, but where they player can also play around with the world in which the game is set. (and thus choose to make his own setting)
So to get this working I had to start bending more than just Casio keyboards and start on a game console. I took my old NES off the shelve and got myself a _brand new_ game genie (it was still wrapped in the original plastic, only 2 years younger than myself), as I heard this allows you to change around code sent from game to CPU/PPU without having to mess with the hardware.
So where I am now, is I'm trying to figure out how this Game Genie thing works, exactly. I'm working this on an actual unmodded old NES, my equally old Super Mario Bros. 3 and a Game Genie, so all of this is on original hardware.
I have a reference table for the game genie to rework letters to binary/hex values, but I'm stuck with a couple of questions.
First off, am I calculating right? I'm using the reftable at http://nesdev.com/nesgg.txt to rework codes.
I have SMB3 in my slot atm, and using PEUZUGAA (start at lvl2) I reworked this to:
Code:
cheat code = PEUZUGAA
ADDRESS 0010110010110011
ADDRESS HEX $2CB3
VALUE 00000001 (logically, changing this to 00000010 will send you to lvl3, that code would be ZEUZUGAA)
ADDRESS 0010110010110011
ADDRESS HEX $2CB3
VALUE 00000001 (logically, changing this to 00000010 will send you to lvl3, that code would be ZEUZUGAA)
Is this the right Hex address for this code?
Because; my second question is concerning those addresses. Am I correct in thinking that an adress of $2CB3 would be a sub of Name Table 3? Or of Attribute Table 2? Or doesn't it work like that?
This is from ref file http://fms.komkon.org/EMUL8/NES.html#LABD which I read as saying $2C00 - $2FC0 constitutes Name Table 3.
And if I would input a different value in (for example) $2CB4 (or 0010110010110100) does that still fall under this same table? Will it also change something in the PPU's interpretation of the cartridge?
And so, can I rework a Hex value to binary and input something that makes sense into the NES? And to which Hex tables can I write?
I was under the impression that writing to attribute tables would make the NES output different things than usual, but if I try writing to $2C01 or anything else of the sort (or $2000, $2400, $2800 and higher) nothing really happens and mario just starts where he always does.
How do I know which attribute table to write to?
My third and last question for this topic is on reference bits.
First, the subject of bit 3-3, the reference bit for checking the length of the code (briefly touched in above mentioned ref file)
Quote:
note char 3 bit 3 is used by the game genie to determine the length
of the code.
of the code.
Does this value always have to be 1 for the Genie to do its magic? Or can it be 0? And why is it one or the other? I get that this bit won't actually change anything, I'm just curious on how it works.
And secondly, how do the reference bits in 8-char codes work? I've seen that the are all written 0 in most of the codes. Actually all 8-char codes in my game genie booklet for SMB3 end in AA, or 00000000 for all reference bits. I can write AE to it (or 00001000) which changes the value of '5', but if I write anything else it breaks my game. Anyone that can explain that one?
First post, long post. Thanks in advance for any and all ideas and help you guys can provide. Tho keep in mind that I'm not a coder, please keep it simple for a simple mind like mine ^^
Thanks,
JasonD