Announcement

Collapse
No announcement yet.

i'm missing something to be able to make NES cheat

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • rimsky82
    replied
    Originally posted by Hybrid View Post
    Code:
    $AC70:C6 34     DEC $0034 = #$02
    $AC72:A9 00     LDA #$00
    $AC74:4C 25 AC  JMP $AC25
    $AC77:4C D6 A0  JMP $A0D6
    $AC7A:A6 31     LDX $0031 = #$01
    $AC7C:D0 74     BNE $ACF2
    $AC7E:A9 23     LDA #$23
    Let me attempt to explain. Look at the first line.
    Code:
    $AC70:C6 34     DEC $0034 = #$02
    • $AC70 - This is the address
    • C6 34 - Then you have the instruction in machine code. This particular instruction requires two bytes, the instruction itself (C6) and the address to manipulate (34).
    • DEC $0034 - Then you have the translation of the instruction in assembly. C6, which in assembly is DEC or decrease, decreases the value in the defined address by 1. $0034 is the address whose value it's going to decrease. Simply, DECrease the value in address $0034.
    • = #$02 Finally, you have the new value after the instruction. As you might have figured out, $ denotes an address and #$ denotes a value. This is a nice feature of the debugger to help out a little with the interpretation.


    A lot of GG codes reverse storing instructions. So when you see LDA, which is LoaD into register A (the accumulator), it is pulling a value from memory. And when you see STA, or STore register A into memory, it is taking what is in A and putting it into the address specified. What I mean by reversing storing, is that you change the STA to an LDA.

    So when dealing with lives or energy, generally a game pulls a value from memory, decreases it or something and stores it back. When you change the store to another load, the new value is never written and the old value stays the same. It's important when making codes to not interfere with any other aspect of the game, so loading the value again instead of writing it is usually safe.

    When you make a game genie code, you are manipulating the game's code to do what you want. You can become a great code maker by using a reference for the 6502's instruction set. Then you can start to see what the game is doing, and change it to your liking to make great codes.

    Leave a comment:


  • Hybrid
    replied
    FE2F:A5 0F LDA $000F = #$40



    FDB7:AD 03 20 LDA $2003 = #$00



    FDE3:B5 00 LDA $00,X @ $0000 = #$00

    FA4A:BD 00 02 LDA $0200.,X @$0204 = #$BF

    here are some various LDA's see how the DEC matches with the LDA
    AC70:C6 34 DEC $0034 = #$04
    FE2F:A5 0F LDA $000F = #$40

    it takes the same amount of code (ignore the different raw codes i'm only using this as an example)
    for example if we used AD

    Code:
    $AC70:C6 34     DEC $0034 = #$02
    $AC72:A9 00     LDA #$00
    $AC74:4C 25 AC  JMP $AC25
    $AC77:4C D6 A0  JMP $A0D6
    $AC7A:A6 31     LDX $0031 = #$01
    $AC7C:D0 74     BNE $ACF2
    $AC7E:A9 23     LDA #$23
    would become

    Code:
    $AC70:AD 34 A9  LDA $A934 = #$04
    $AC73:00        BRK
    $AC74:4C 25 AC  JMP $AC25
    $AC77:4C D6 A0  JMP $A0D6
    $AC7A:A6 31     LDX $0031 = #$01
    $AC7C:D0 74     BNE $ACF2
    $AC7E:A9 23     LDA #$23
    that change results in a game over after you die once its important that you use the proper LDA

    Leave a comment:


  • panda
    replied
    So the code is: Address: AC70 Value: A5 Compare: C6 Game Genie: SZNZEGVG
    I can find the Address and the Compare.
    >06:AC70:C6 34 DEC $0034 = #$04
    That mean i succeed to find the compare, but the thing i can't find is the how to find the (A5) value

    Leave a comment:


  • Hybrid
    replied
    Originally posted by panda View Post
    Since you said i was using the par address 34, it made me realise a mistake i was doing since the beginning. I used to think it was a different number, and i was not thinking it could be anything related to the RAW cheat. It makes me learn something more to the debugger.

    About this wrong code SGNZEGVG, it was took from this page http://gamehacking.org/game/29105 and because the code was similar to mine, that's why i was confident that i succeed to do it. But now i tried with A5, and you're right, it works perfectly. If i understand that the 34 was the par address (from the RAW code), that mean i only need to use AC70:A5, the code doesn't have a Compare. With this i have the Game Genie SZYZEG that is working fine.
    When i found this in the debugger: >06:AC70:C6 34 DEC $0034 = #$04
    My mistake was to think C6 was the compare, but i had to do some more things to get the A5. I will practice on this to be able to do it, to change the write so i can get A5.
    c6 was the compare for the game genie code you had that right .
    the compare i was referring was the command CMP which stands for compare

    Leave a comment:


  • panda
    replied
    Since you said i was using the par address 34, it made me realise a mistake i was doing since the beginning. I used to think it was a different number, and i was not thinking it could be anything related to the RAW cheat. It makes me learn something more to the debugger.

    About this wrong code SGNZEGVG, it was took from this page http://gamehacking.org/game/29105 and because the code was similar to mine, that's why i was confident that i succeed to do it. But now i tried with A5, and you're right, it works perfectly. If i understand that the 34 was the par address (from the RAW code), that mean i only need to use AC70:A5, the code doesn't have a Compare. With this i have the Game Genie SZYZEG that is working fine.
    When i found this in the debugger: >06:AC70:C6 34 DEC $0034 = #$04
    My mistake was to think C6 was the compare, but i had to do some more things to get the A5. I will practice on this to be able to do it, to change the write so i can get A5.

    For the other code (level select), that was a lot more difficult than i would have expected. I'm surprised it is a 3 game genie codes. I knew that usually the level selector appear when controller 1 press A+up, and controller 2 press B+down, and pressing select with controller 1 while other buttons are still pressed. But once all these buttons are released, the level selector is still there, so i wouldn't have expected it to be a difficult code. I thought it looks more simple to just use the RAW code rather than 2 controllers to do all this. Since the RAW code was simple and worked, i think it was like an "on-off" switch that value from 00 to 01. And that why i was expecting the game genie code to be as simple to find as the RAW code was. But now it looks it was very hard. Thanks, many useful informations, and also for the bonus cheat IONXZZGP that add the level 7-3 to the level selector. I wanted to have this level added in the level selector, but since i couldn't find how to add this with RAW codes, i was thinking it may not be possible. I do really appreciate your help.

    I wasn't able to do my first game genie code yet, but it's good to know my RAW code was useful, and even added to the site. I will practice and try to make a new cheat, i want to learn to be able to do Game Genie codes.

    Leave a comment:


  • Hybrid
    replied
    Originally posted by panda View Post
    Good news: i tried with a couple of games to make Game Genie code, and i finally succeed in making my very first Game Genie code
    With the game Bio Miracle Bokutte Upa, i wanted to make a cheat that would make infinite life.
    I found Address: 0034 Value: 04 would give permanently 4 life, so it's basically infinite life.
    I added a write breakpoint, and lost a life in the game, and it brings me to:
    >06:AC70:C6 34 DEC $0034 = #$04
    So i had my address: AC70, my Compare C6, and my value 34.
    I tried my cheat and it seem to work in both Easy&Normal difficulty mode (permanent 2 life in Normal mode and permanent 4 in Easy mode). However i'm still unsure about the fact there's already a cheat on gamehacking that is SGNZEGVG very similar to my cheat, but it contain a different value C5 instead of my 34 value.
    ok i don't know why you try to use the par address as a value there is no opcode 34
    that results in this
    Code:
    $AC70:34        UNDEFINED
    $AC71:34        UNDEFINED
    the given code is also wrong but c5 changes it to a compare
    Code:
    $AC70:C5 34     CMP $0034 = #$02
    the correct value is A5
    Code:
    $AC70:A5 34     LDA $0034 = #$02
    the important thing is to change the write in the case a DEC (c6) to the correct load

    Originally posted by panda View Post
    Very glad of finally made a working Game Genie code, i think there's still some things i may not understand, because using the same method to make other cheats doesn't always work. I think it may have something to do with the things like BEQ, STA, JSR, BNE, LSR, etc... since i don't really understand what they're used for, or if they're even something important when it comes to make Genie Code. And i also never know what to write in the breakpoint condition, things like K==#00 i just always erase them before adding a breakpoint. I think these things may be responsible of my mistakes when the cheat i'm trying to do doesn't works. The debugger is still confusing for these few things, but i think it's almost there, as i succeed in making a cheat.

    In the same game, there's a cheat code you can do using both controllers, to unlock a level selector to appear on the main menu screen. I found that 001D:00 becomes 001D:01 when the level select option is activated. So i've done the same method to try to find the Game Genie code. The level select was not activated, i added a breakpoint to 001D, and i activated the level selector with the controllers, it brings me to:
    >04:8540:85 1D STA $001D = #$00
    So i tried many possibilities but none of them worked to activate the level selector. Address: 8540 Compare: 85 Value: 1D Failed, And Compare: 1D Value: 85 also failed, Cmp: 85 Val: 01 failed too, and also tried other combinations using these 4 numbers i had 85,1D,00,01 but all failed, i couldn't do it.
    the main reason why changing the area of memory you did doesn't work is because its only acessable when the buttons are pressed
    this code was a bit of a pain but it was hacked by using a read breakpoint and is in fact three codes long using a read break point on 1D results in two breaks from the title screen.
    Code:
    $8542:A5 1D     LDA $001D = #$00
    $8544:F0 25     BEQ $856B
    changing the BEQ (branch if equal to) to its opposite BNE (branch if not equal to)EIKAGIEY
    Code:
    $8542:A5 1D     LDA $001D = #$00
    $8544:D0 25     BNE $856B
    makes it break on another point
    Code:
    $8554:A5 1D     LDA $001D = #$00
    $8556:F0 13     BEQ $856B
    doing the same EISATIEY
    Code:
    $8554:A5 1D     LDA $001D = #$00
    $8556:D0 13     BNE $856B
    now these two will constantly break on the debugger i was able to find the other one by turning on the Par code 01D:01 (with the two other codes off)
    and getting the level section modifier which is 022 and using a write breakpoint on that which broke here

    $A2F7:E6 22 INC $0022 = #$05
    scrolling up just a bit from that point
    Code:
    $A2EC:F0 14     BEQ $A302
    $A2EE:A5 1D     LDA $001D = #$01
    $A2F0:F0 10     BEQ $A302
    $A2F2:A9 0C     LDA #$0C
    $A2F4:20 1D F8  JSR $F81D
    $A2F7:E6 22     INC $0022 = #$06
    $A2F9:A9 14     LDA #$14
    theres our last read point for 01D
    and once again change the BEQ below the 01D to BNE ESNZAZEY
    Code:
    $A2EE:A5 1D     LDA $001D = #$01
    $A2F0:D0 10     BNE $A302

    heres a bonus it opens up the last level on the level select screen
    IONXZZGP

    I added the Raw code you came up with to the page
    http://gamehacking.org/game/29105

    Leave a comment:


  • panda
    replied
    Good news: i tried with a couple of games to make Game Genie code, and i finally succeed in making my very first Game Genie code
    With the game Bio Miracle Bokutte Upa, i wanted to make a cheat that would make infinite life.
    I found Address: 0034 Value: 04 would give permanently 4 life, so it's basically infinite life.
    I added a write breakpoint, and lost a life in the game, and it brings me to:
    >06:AC70:C6 34 DEC $0034 = #$04
    So i had my address: AC70, my Compare C6, and my value 34.
    I tried my cheat and it seem to work in both Easy&Normal difficulty mode (permanent 2 life in Normal mode and permanent 4 in Easy mode). However i'm still unsure about the fact there's already a cheat on gamehacking that is SGNZEGVG very similar to my cheat, but it contain a different value C5 instead of my 34 value.

    Very glad of finally made a working Game Genie code, i think there's still some things i may not understand, because using the same method to make other cheats doesn't always work. I think it may have something to do with the things like BEQ, STA, JSR, BNE, LSR, etc... since i don't really understand what they're used for, or if they're even something important when it comes to make Genie Code. And i also never know what to write in the breakpoint condition, things like K==#00 i just always erase them before adding a breakpoint. I think these things may be responsible of my mistakes when the cheat i'm trying to do doesn't works. The debugger is still confusing for these few things, but i think it's almost there, as i succeed in making a cheat.

    In the same game, there's a cheat code you can do using both controllers, to unlock a level selector to appear on the main menu screen. I found that 001D:00 becomes 001D:01 when the level select option is activated. So i've done the same method to try to find the Game Genie code. The level select was not activated, i added a breakpoint to 001D, and i activated the level selector with the controllers, it brings me to:
    >04:8540:85 1D STA $001D = #$00
    So i tried many possibilities but none of them worked to activate the level selector. Address: 8540 Compare: 85 Value: 1D Failed, And Compare: 1D Value: 85 also failed, Cmp: 85 Val: 01 failed too, and also tried other combinations using these 4 numbers i had 85,1D,00,01 but all failed, i couldn't do it.
    Last edited by panda; 07-02-2016, 02:09:29 PM.

    Leave a comment:


  • Hybrid
    replied
    your compare ...
    E207:9D 38 07 STA $0738,X @ $0739 = #$D0 E207
    $985F:E9 01 SBC #$01 9860
    can be right next to the address or it can be further away using gauntlet as an example it all depends on what you want to change all the compare does
    is say when the value at the address is equal to what ever change it to the value

    as for which value to use it all depends on what you are doing in the above examples
    changing E207 from 9D to BD changes
    E207:9D 38 07 STA $0738,X @ $0739 = #$D0
    to
    E207:BD 38 07 LDA $0738,X @ $0738 = #$00

    changing 9860 from 01 to 00 changes
    $985F:E9 01 SBC #$01
    to
    $985F:E9 00 SBC #$00

    Leave a comment:


  • panda
    replied
    Thanks, both cheats works perfectly for Gauntlet. I tried to find the one for Gauntlet 2.
    I found on http://gamehacking.org/game/29678 that SLETYXSO E207?BD:9D is the cheat for Gauntlet 2
    But i have to understand how this result was found if i want to be able to do cheats by myself.
    With a write breakpoint on 739, i found this:
    >07:E207:9D 38 07 STA $0738,X @ $0739 = #$D0
    And it is where i get stuck. The Address seem to be obvious as these seem to always be the first 4 numbers (in this case E207). Next to it, there's the Compare, but i'm not sure the compare is always next to the address. And about the value, i don't know how the value was found.

    Leave a comment:


  • Hybrid
    replied
    for the gauntlet the RAM code you are looking for is

    00B2

    now setting a breakpoint write on 00B2 breaks on this set of commands
    $985F:E9 01 SBC #$01
    $9861:95 B2 STA $B2,X @ $00B2 = #$F9
    $9863:B5 B4 LDA $B4,X @ $00B4 = #$02

    there's two ways you can handle this

    AAVPEAPA
    9860?01:00
    this one changes the subtract value to 00
    or
    SLVPOASP
    9861?95:B5
    which changes the write to a load


    739 is correct for the RAM of gauntlet II

    Leave a comment:


  • panda
    replied
    I'm not sure if i'm able to do it, maybe i need to learn another thing before learning how to convert cheat code to Game Genie, because i think there's some things i didn't properly learned about the debugger. I say this only because it looks more difficult, so that probably mean i miss some basic.

    Anyway, for now i tried to make more cheats (not Game Genie, but only using address and value), and while i'm able to do cheats for many games, i found there's some cheats i just can't manage to do. For instance, in the game "Gremlins 2 the new batch", i tried to make a cheat that make the player to always have the extra power (the one you can buy in stores, like the one on sale in level 2-1). I found the address that was changing value according to "if i have or not the extra power". When i don't have the extra power, the address:value is 00CC:00, and as soon as i buy the extra power, it change for 00CC:E0. But the cheat doesn't work, because even if i activate the cheat 00CC:E0, the game still have 00CC:00 until i buy the extra power. I was expecting my cheat to force the game to use the value E0, but the game ignore my cheat, just like this: http://img15.hostingpics.net/pics/86...tgremlins2.jpg

    So i searched to see if i could find another address that was changing it's value accordingly, but i couldn't find. So now i'm wondering if this is really impossible to make this cheat, or if i simply make a mistake.

    Another example of cheat i couldn't do; it's in both Gauntlet games. I'm so bad at playing these games, because the timer always decrease by itself, not only when you're hit by enemies but it decrease non-stop, as a result i always get game over at about level 20. I wanted to make a cheat that makes the time to stop decreasing by itself, and only decrease when hit by ennemy. So i started with Gauntlet 2, i found 0739 : D0 freeze the timer to 2000. But the problem with that cheat is that you are also invincible when you get hit by ennemies. Strangely, the timer is not really stuck at 2000, because it increase when you take food (health items). Since there is a cheat OTXSSYSV to make the player invincible against the ennemies but the timer still decrease, i thought that mean the address that makes the timer to decrease all the time is a different address than the one that makes you lose time when an ennemy hit you. But since the time always decrease in each level of the game, i don't know how i could find an address that it's value is never changing, and even if i find it, would it be possible to change the value in a way that would makes the timer to no longer decrease? I tried to find a value that was different in the screen between the levels than the one in the levels, because the timer can't really decrease between 2 levels. But none of them worked to stop the timer, maybe i found the address but the same problem than in the game Gremlins 2 occured, it's a possibility.

    Other than these cheats i couldn't succeed to do, i've done a couple of working cheats for few games

    Leave a comment:


  • Hybrid
    replied
    heres a quick tip
    http://gamehacking.org/game/116295

    Infinite Lives

    hybrid

    GENIE

    SXEVIIVG E58D?C6:A5
    SZKTZIVG E542?C6:A5

    you want to use the proper load command when dealing with a write
    $E542:A5 0A LDA $000A = #$01
    vs
    $E542:0A ASL
    $E543:0A ASL

    here ya go as long as you don't get the techniques you should be fine with this code
    ESEIZPEY

    Leave a comment:


  • panda
    replied
    Since a couple of days, i tried to make Game Genie codes with your advises, and also by searching a little more, and trying to learn more about the debugger. I tried to make an easy codes with a simple game too (for infinite hit points). As a result, i was able to make my very first Game Genie code
    So, i tried to use the same method to create another code in River City Ransom, but it didn't work...

    For the new cheat i was able to do, this is how i've done:
    For the game Happily Ever After, i found that to be invincible, the cheat was Address:000A Value:05
    So i searched for 000A and i added a Write Breakpoint: http://img15.hostingpics.net/pics/498207Step01.jpg

    Then, in the game i lost a hit point and the debugger bring me to that line: 07:E542:C6 0A
    http://img15.hostingpics.net/pics/579576Step02.jpg

    I just guessed that E542 was the address, C6 was the Compare, and 0A was the Value. I tried it and i got the code ZAKTZIVK
    http://img15.hostingpics.net/pics/315397Step03.jpg

    That new code worked!!! that was the first time i could do a Game Genie code.

    So i wanted to practice this and make more codes, then i use the same technique with River City Ransom to create a code that would allow the player 1 to have all special techniques. I found Address: 04DF Value: 3F was the code for it. So i just added a Write breakpoint for 04DF (exactly the same way i did with Happily Ever After game). Then, in the game i removed a technique. And the debugger bring me to a new line 02:BF89:99 DF 04
    http://img15.hostingpics.net/pics/162384Step04.jpg
    So i thought the Address was: BF89, Compare: 99, and Value: DF. I tried it, but it didn't worked this time.

    It is strange that i was able to make a cheat, and that i can't make another one by using the same method. It's a good thing that i was able to make my first Game Genie code, it's an improvement, but i don't understand why i can't do another code with this method.

    Leave a comment:


  • rimsky82
    replied
    Debugger tip- In your second picture, the add breakpoint screen, you put a 00 in the range thinking it was for a value. It's required if you want the breakpoint to break on an address between a range, like 064C-064F.

    Also, your K==#00 condition is another thing that will cause it to never break. IIRC, K is PC, which is the current address being executed. So you told the breakpoint to break when PC is 0, which won't happen since in the NES execution starts at $8000 and is rarely, if ever, less than $7000.

    You don't need the Execute box ticked either, because 064C is RAM and won't be executed.

    Keep playing with it though, you'll start to understand more as you go along.

    Leave a comment:


  • Hybrid
    replied
    your best bet to learning how to make codes is start with the easier codes. get used to how to use the debugger and what it's pointing to . as for getting to the
    the text show up thats a bit beyond me too but now they are at least available.

    as for my code it happened like this setting a write breakpoint on 0544 and pressing down lead me here
    Code:
    $F5A5:EE 44 05  INC $0544 = #$00
    $F5A8:AD 44 05  LDA $0544 = #$00
    $F5AB:C9 02     CMP #$02
    by changing the CMP value from 02 03 i was able to make it reach beyond the normal place where it stopped
    (changing F5AC from 02 to 03)

    as i said earlier start out with some easier codes first get a hang on how to use the debugger

    Leave a comment:

Working...
X