Announcement

Collapse
No announcement yet.

axelnieves2012 [GENESIS] codes

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

  • axelnieves2012 [GENESIS] codes

    Hello, I am new in Genesis Hacking world. I have read a good basic M68K tutorial before I started hacking Genesis ROMs, this helped me a lot.
    I was posting my codes in wrong forum, so I will post them here from now...

    Admins, tell me ifI am posting according to correct format.
    0
    Bug detected (post below please)
    0%
    0
    All codes I tested seems to work
    0%
    0
    Last edited by axelnieves2012; 09-22-2015, 09:24:02 PM.

  • #2
    VECTORMAN 2 (USA)

    Improved infinite rockets boots jump
    00EF8C:6004
    015F3E:6008

    Get always "Pacifist" bonus.
    00D13A:6002

    Get always "All photons collected" bonus.
    00B728:E9B6

    Get always "All photons collected" bonus (Alternate).
    00B72A:4E71

    Get always "All powersacks" bonus.
    00B604:E9CE

    Get always "All powersacks" bonus (Alternate).
    00B606:4E71

    ================================================== ==============================

    I was working on improving "infinite rocket jump".
    Current codes lets Vectorman use multiple rocket boots but it takes a while (or you have to shoot in air quickly to be able to jump again).
    My code deletes that waiting time so you can use infinite rocket boots quickly, without shooting and without waiting.
    I am submiting some other codes I have found.

    FFE4CA is RAM address for some Vectorman's stats.
    After using rocket boots it is 10 (binary 10000)

    Code:
    00:EF8C  08 EC  BSET    #4,$0062(A4)
    Above opcode sets 5th bit. I branch it so Vectorman can use multiple rocket boots jump. We have the fisrt code 00EF8C:6004.
    But why are we not able to use them quickly if we branched that opcode? Maybe another RAM is changing when we are using them.
    Now we are at 00:EF8C. This program block ends few lines ahead and a new one starts at 01:6110 aprox.

    If you scroll down, you'll see:

    Code:
    01:5F3E  29 7C  MOVE.L  #$000160A2,$004E(A4) 	A4=FFFFE468
    That means another RAM address(A4=FFE468; FFE468+4E=FFE4B6) is being MOVED. It is Long-word(4 bytes search) Thats the wanted one!
    015F3E:6008 is the other code.
    For some reason, rockets sound is not played, Im not sure how Z80 works. I will work on it again. At the moment it works fine for our purpose.

    -------------------------------------------------------------------------------------------------------------------------------------------------
    I will explain how did I find those codes...

    RAM address for current collected photons is FFE9B6.
    RAM address for amount of photons in level is FFE9B8.

    If you make a gens trace a while before you complete a stage, you will see something like this:


    Code:
    00:B722  30 38  MOVE.W  ($E9B6),D0
    00:B726  B0 78  CMP.W   ($E9B8),D0
    00:B72A  66 52  BNE     #$52 [00:B77E]
    00:B77E  4A 40  TST.W   D0

    00:B722 30 38 MOVE.W ($E9B6),D0
    MOVE.W sets D0 to FFE9B6's value (photons collected by you). Now D0 is the amount of collected photons.
    .W means that FFE9B6 is treated as WORD (2 bytes), so if you collected 6 photons (for example), FFE9B6 will be 0006 instead 06.

    00:B726 B0 78 CMP.W ($E9B8),D0
    CMP.W compares FFE9B8 to D0. Remember D0 is FFE9B6. This means that the amount of collected photons is compared to amount of level photons.

    00:B72A 66 52 BNE #$52 [00:B77E]
    BNE is a conditional BRANCH (Branch if Not Equal).
    #$52 is amount of bytes PC will branch.
    $ Dollar sign means 52 is a hexadecimal number (hex 52 = decimal 82).
    [00:B77E] is the result of 00B72A+52 (you have to add 2 bytes of BNE opcode).
    This means that Program Counter (PC) will branch $52 bytes if collected photons is NOT EQUAL to level's photons.

    00:B77E 4A 40 TST.W D0
    Nothing interesting... I just included so you can see where branches previous instruction. This is executed if you collect less photons than FFE9B8.

    METHOD 1:
    My first code (00B728:E9B6), forces comparing D0 to FFE9B6 instead FFE9B8. Remember D0 is FFE9B6, so it is comparing to itself.
    This results on BNE is never executed. You will notice I used 00B728 instead 00B726. This is because 00B726 is opcode address (2 bytes). 00B728 is opcode's value.

    METHOD 2:
    You can force BNE is never executed overriding this opcode. Just use NOP opcode (NOP = No operation).
    4E71 is hexadecimal opcode of NOP. In this case, we do not have to add 2 to desired address because we want to patch that instruction, not RAM address it is working.
    00B72A:4E71 is the second method.

    I apllied both methods to all bonus types (except for pacifist bonus which doesnt need to count items. It is true or false.).
    Pacifist bonus RAM address is FFE9D0. It starts worthing 0 until you use your weapon (it MOVES to FF).
    Sometimes, FF worths 255 but sometimes it worths -1, this depends on what opcode is reading/writing it.
    Bytes from 00 to 7F are always positive numbers.
    Bytes from FF to 80 may be negative numbers (FF= -1, FE=-2, FD=-3, etc) but not always will be negative.

    Comment


    • #3
      Looks good. Keep up the good work.

      Comment


      • #4
        Tiny Toons Adventures: Buster's Hidden Treasure (Europe).
        This code was not added to database yet. I'm posting it again.

        instant acceleration modifier (0004=higher recommended value, 0000=default value)
        0033A4:000?
        Last edited by axelnieves2012; 09-23-2015, 05:28:19 PM.

        Comment


        • #5
          You can add the codes yourself now which is why I added you to the Hacker UserGroup. The button under the post that says "Added" is used to let us Admins and Chroniclers know that you added the codes to the DB. Simply go to the game page and at the top near the Search bar you will see options to add codes.
          Spoiler Alert! Click to view...

          THE BAD GUY!!!!!!

          Comment


          • #6
            Originally posted by axelnieves2012 View Post
            Tiny Toons Adventures: Buster's Hidden Treasure (Europe).
            This code was not added to database yet. I'm posting it again.

            instant acceleration modifier (0004=higher recommended value, 0000=default value)
            0033A4:000?
            I checked the database and this code doesn't seem to be there. Same for the Vectorman 2 codes. They aren't on the database, yet you marked it as added.

            Remember that button to mark the code as added is only to let you know you already added that code. But you actually have to enter the codes into the database yourself. Just go to the code page of the game you want, and click on Add -> Code (on the top-right).

            The codes on these threads you made are also not added to the database:
            http://gamehacking.org/vb/threads/13...Hedgehog-1-2-3
            http://gamehacking.org/vb/threads/13...e-%28Europe%29

            It is also recommended to add your notes to the modifier codes so that people know what values to add. For example:

            Maximum speed modifier (0012=higher recommended speed, 0007=default speed)
            006ADA:0012

            The code is in the database, but the note is not. The note mentioning the value is extremely important, or else people will have to start entering random numbers until they find the number they need, which is not really productive.
            Last edited by ReyVGM; 09-23-2015, 10:41:57 PM.

            Comment


            • #7
              Any chance you'll do more codes for TTA? I know I'm not completely alone in wanting some of the features I requested.

              Comment

              Working...
              X