Announcement

Collapse
No announcement yet.

68000 Assembly Info

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

  • #16
    00:0A10 41 F9 LEA ($0000114A),A0

    Means to move 0000114A (which is a ROM address) to register A0. Not the value at that ROM address, but just the address itself goes to register A0. So register A0 becomes 0000114A.

    LEA = Load Effective Address.
    The Code Hut: http://codehut.gshi.org/

    Comment


    • #17
      That last post is very informative,I was looking into the MESS emulator and with it its possible to see/edit all the addresses from 000000-FFFFFF. so I will probably mess around with that one to see if custom routines are possible in the E00000 range.
      Spoiler Alert! Click to view...

      THE BAD GUY!!!!!!

      Comment


      • #18
        Cool helder. Let me know the results.
        The Code Hut: http://codehut.gshi.org/

        Comment


        • #19
          00:0A16 33 F0 MOVE.w $00(A0,D0),($00FF005A) A0=0000114A A1=00FF135C A2=00FF14FC A3=00000000 A4=00000000 A5=00000000 A6=00FF1240 A7=00FFFFFC D0=00000000

          Means add the value from ROM address $114A (register A0) to the value from register D0, then move that total to RAM address FF005A.
          The Code Hut: http://codehut.gshi.org/

          Comment


          • #20
            Just wanted to encourage you on.
            I'm sure to learn quite a good deal from the info you've already posted.
            Maybe for now you should also link to that thread you helped me in.
            http://OldGameHacking.com/
            http://www.youtube.com/user/DreamcastVideos

            Comment


            • #21
              When I do custom routines for the Genesis I use the space around 0x200000.

              Comment


              • #22
                Ah thanks for the info Nolberto, any other helpful info like the emulator you use to help in the process? or a good hook to the custom area? I know timer are usually the best hooks but just want to get your input on it.
                Spoiler Alert! Click to view...

                THE BAD GUY!!!!!!

                Comment


                • #23
                  I use MESS and on occasions Regen. The joypad routine would be an ideal hook.
                  Last edited by nolberto82; 02-10-2011, 07:48:51 AM.

                  Comment


                  • #24
                    05:8154 37 58 MOVE.w (A0)+,$0080(A3) A0=000567CA A1=0004F270 A2=0006F9C0 A3=00FF0300

                    Means move the value at ROM address 000567CA (register A0) to RAM address FF0380 ($0080 + register A3), then add 2 (see note) to register A0 (so register A0 becomes 000567CC).

                    NOTE: if it's MOVE.b then you add 1, MOVE.w then add 2, MOVE.l then add 4. This is in reference to the "+" in (A0)+,$0080(A3) from above.

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

                    Some basic info on the format of the assembly I've been posting...

                    05:8154 37 58 MOVE.w (A0)+,$0080(A3) A0=000567CA A1=0004F270 A2=0006F9C0 A3=00FF0300 etc...

                    The "05:8154" is the ROM address.
                    The "37 58" is the instruction. If you were to look in a hex editor (with this particular game) at ROM address 058154, you would see 3758.
                    The "MOVE.w" tells you what the instruction is going to do. The "w" tells you how many bytes: B = 1 Byte, W = Word (2 bytes), L = Long Word (4 Bytes).
                    "(A0)+,$0080(A3)" shows you specifically what is being done.
                    "A0=000567CA" is the start of the 16 registers: A0 thru A7 are the Address registers (for addresses), and D0 thru D7 are the Data registers (for data/values).

                    Last edited by Tony H; 02-11-2011, 04:40:34 PM.
                    The Code Hut: http://codehut.gshi.org/

                    Comment


                    • #25
                      00:6DF4 4E BB JSR $0C(PC,D0) A0=00FFF3E0 A1=00FFF3DA A2=00FF03A8 A3=00FFF800 A4=00000000 A5=00FFC500 A6=00FF8000 A7=00FFFDEC D0=00000010

                      Means remember current position and jump to 00:6E12. $0C + PC (6DF6) + register D0 (10) = 6E12.

                      NOTE: Anytime you have a JSR (Jump to SubRoutine), it will remember it's current position and return to it when it sees an "RTS" (Return from Subroutine). When it returns, it will return to the next instruction after the JSR.

                      An RTS instruction (4E75) can be a very useful replacement instruction for Game Genie codes. If you have a short subroutine for whatever you're trying to make a code for (master codes, energy, regional bypass codes, etc), you can sometimes use a 4E75 (RTS) instead of NOPing or branching over the instruction you're trying to kill. And in some cases, you can just branch over the JSR to completely bypass that subroutine altogether.
                      Last edited by Tony H; 02-13-2011, 01:26:05 PM.
                      The Code Hut: http://codehut.gshi.org/

                      Comment


                      • #26
                        this is proving quite useful as my calculator is also 68K based. thank you Tony H
                        Cant stand the 32 bit and above gaming.
                        Gamers for the return of 2d sprite filled games!

                        Comment


                        • #27
                          00:9D4C 2C 76 MOVE.l $00(A6,D0),A6 A0=FFFFE000 A1=FFFFDF60 A2=0001B1A2 A3=000537C9 A4=00FF0B18 A5=00FF0A98 A6=00053702 A7=00FFFEF2 D0=00000004

                          Means add 4 (value from register D0) to ROM address in register A6 ($053702 + 4 = $053706), then put value from ROM addresses $053706 & $053708 into register A6 (2 ROM addresses because MOVE.l means Move 4 bytes).

                          Just a quick note about "A" registers. As most of you know by now, the "A" registers are for addresses. If the number begins with FFxxxx), then it's a RAM address. Most other numbers are ROM addresses. These ROM addresses can be real gold mines for making Game Genie codes. Many times, those ROM addresses are for things like jump height, running/walking speed, weapon power, acceleration rates (racing games), etc. Usually for things whose values don't change, and can't easily be found using RAM searching programs.
                          Last edited by Tony H; 02-14-2011, 11:00:38 PM.
                          The Code Hut: http://codehut.gshi.org/

                          Comment


                          • #28
                            00:1218 41 FA LEA $0038(PC),A0

                            Means move ROM address $1252 to A0. 0038 + PC (121A) = 1252. So register A0 would be A0=00001252.
                            The Code Hut: http://codehut.gshi.org/

                            Comment


                            • #29
                              00:39CA 30 38 MOVE.w ($74A4),D0

                              Means move value at ROM address $74A4 to register D0.

                              Well, that's all I have from my notes. I'll put together some of the more common ones (Branches, etc) and post those.
                              The Code Hut: http://codehut.gshi.org/

                              Comment


                              • #30
                                Your notes are very helpful, Tony! I have not used the info in any way as of yet, but just saying when/if I do start making Game Genie codes.

                                Comment

                                Working...
                                X