Announcement

Collapse
No announcement yet.

Memory breakpoint problem with No$PSX 1.5

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

  • Memory breakpoint problem with No$PSX 1.5

    I see people here have used No$PSX to create various gameshark codes, so you should be familiar with this issue.
    When I'm hacking Azure Dreams with No$PSX, sometimes memory breakpoints don't work.

    It works several times with different memory breakpoint, but the fact that sometimes it doesn't work worried me.
    So, if anyone can test and reproduce this problem in his No$PSX it would be nice, or pinpoint any of my mistake.

    OS : Windows 7 64 bit
    Emulator : No$PSX 1.5
    Game : Azure Dreams for PSX
    Item Needed : Harash Herb (weakens current attack power by 1).

    Step 01 :
    Get a Harash Herb (weakens current attack power by 1).
    You can do it by manually throw anything to your Baron monster until you get it, or hack the safe in your house and put it somewhere, or change your inventory directly.

    This is the main character in the tower, with 5 Attack Power.
    The address for attack power is stored in 0x800834DE, as 1 byte.


    Step 02 :
    I changed the address 0x800834DE to 0x15, and it works, his attack power is changed to 21.
    So the address is correct.



    Step 03 :
    I put the memory breakpoint on [800834DE]!! to monitor any write access.
    I eat the Harash herb.


    Step 04 :
    My attack power is lowered, the value of address 0x800834DE is changed to 04, so the game should freeze and show me the asm code that's responsible to write to that memory address, but nothing happened.


    Step 05
    I checked this issue with pSX 1.13 and didn't have any problem with memory breakpoint.
    With pSX 1.13 and same memory breakpoint, 0x800834DE it break on 0x00041e70 with addiu r29,r29, 0xffe8.


    Keep in mind that I'm quite new to this hacking stuff, so if something is wrong please correct me.

  • #2
    Try [800834DE]! or [800834DE]!? to check reads also. Sometimes what I do is make a save state (Write Snap) and then shut down emulator and load the save again, I notice that this sometimes happens and this fixes the issue.
    Spoiler Alert! Click to view...

    THE BAD GUY!!!!!!

    Comment


    • #3
      One thing that I know from experiment is that No$PSX doesn't like memory without 800 prefix, so if I only put [834DE]? (this works in pSX), the memory breakpoint won't function at all in No$PSX.

      Originally posted by helder View Post
      Try [800834DE]! or [800834DE]!? to check reads also. Sometimes what I do is make a save state (Write Snap) and then shut down emulator and load the save again
      I've tried that also, even its variants :
      [800834DE]?
      [800834DE]!!
      [800834DE]?!
      [800834DE]?!!
      Nothing works when I eat the harash herb.
      I've also made several save states, shut down emulator, load it again, still doesn't work.
      Already doing this more than 15 times

      Memory breakpoint of [800834DE]? works when I press rectangle - [] on my joystick to check the status of my character.
      But it doesn't work when I eat the Harash herb, which is strange.
      I shouldn't see Koh's attacking power has weakened! text since the debugger should freeze because of memory breakpoint read.


      As usual, memory breakpoint on pSX 1.13 works without any problem :
      I put memory breakpoint read on 0x800834DE (pSX converts this to 834DE automatically).
      When I'm about to eat the Harash Herb, it breaks on 0xc3744 (count = 1), and the next code - sltiu r2,r2, 0x0002 check if my attack power < 2, if yes, then don't reduce attack power, otherwise continue reducing attack power, which is correct.


      Originally posted by helder View Post
      I notice that this sometimes happens and this fixes the issue.
      Looks like I'm not alone with this problem, it's good to know that other people sometimes have similar issue.

      I already emailed the developer about this issue and linking him to this thread, but still get no reply.

      Besides No$PSX and pSX, which PSX debugger works on Win 7 64-bit without any problem ?
      pSX is good, but it can't assemble mips r3000 instruction on the fly like No$PSX.

      Comment


      • #4
        I use the same 2 emulators but I sometimes use MESS but that can be slow as shit on some systems with debugger on, but it has a great tracing feature so if its a specific hack that needs tracing it go that route.
        Spoiler Alert! Click to view...

        THE BAD GUY!!!!!!

        Comment


        • #5
          I'll check MESS later.
          What is tracing ? Sorry, I'm really new.

          Comment


          • #6
            Tracing will make a log file with all the instructions run before you hit the break point, this is a great tool to find many advanced hacks as well as any hack in general since you see where thing might be changing and inspect that area. I use these traced to make Walk Through Walls codes as well as Hit Anywhere codes and anything that is of a complex nature but like I said you can use it to hack simpler codes like Health or Items or Jump Codes.
            Spoiler Alert! Click to view...

            THE BAD GUY!!!!!!

            Comment


            • #7
              Since there's no reply to my email from No$PSX developer, I'll just publish it here :

              No wonder why No$PSX's memory break on 0x8008 34DE isn't working.

              In PCSX Debugger 1.5 (I use 0xA008 34DE as memory breakpoint)
              s0 = A00834B8
              800c3744: LBU v0, 0026(s0)


              In pSX 1.13 (I use 0x0008 34DE as memory breakpoint)
              r16 = a00834b8
              000c3744: lbu r2, 0x0026(r16)


              In No$PSX 1.5 ( I use execute breakpoint on 800c3740 and 800c375c as breakpoint)
              s0 = A00834B8
              800c3740: lbu v0, $26(s0)



              So, the game is trying to load memory address 0xA00834B8 + 0x26 = 0xA008 34DE instead of 0x8008 34DE.


              According to
              http://daifukkat.su/wiki/index.php/PSX/Memory

              The PSX has four 512KB SRAM chips creating a total of 2MB of system memory. The RAM is configured so that $00xxxxxx, $80xxxxxx, and $A0xxxxxx all point to the same physical memory. The PSX uses Coprocessor 0 to handle memory management.
              RAM at $80xxxxxx is a cached version of the physical memory, and RAM at $A0xxxxxx is an uncached version. They are both otherwise direct mirrors of the physical memory.
              Unfortunately, if I put 0xA008 34DE as memory breakpoint address, No$PSX complains with "Huh ?"
              PCSX Debugger is working without problem with 0xA008 34DE as memory breakpoint.

              So, this is a bug.
              Either :
              a. Treat A008 34DE, 8008 34DE and 0008 34DE as the same memory address for memory breakpoint (like pSX 1.13) or
              b. Treat A008 34DE as different address for breakpoint than 8008 34DE but allows No$PSX to accept A008 34DE for memory breakpoint range (like PCSX)

              a is more elegant and preferred, but b is easier to implement.

              Comment

              Working...
              X