Announcement

Collapse
No announcement yet.

CL-LiveDebug v4 Beta

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    I can't seem to edit that post again... Anyway scratch that last part. The engine had gotten too big and was interfering with some settings. So I just moved it.
    Last edited by dnawrkshp; 03-25-2013, 05:52:22 PM.

    Comment


    • #32
      Updated. The executable is in the attachments.

      Added 4 images of the GUI and Debugger in the spoiler.

      Updates:
      - Added Process Register Dumper. This allows you to inject a jump to the register dumper at any place in the EE (just be conscious of jumps and branches). You can replace jumps (not branches) but you can not install the reg dumper right before or right after a jump. The register dumper is set up so that it stores all the registers and then executes the line it replaced. In case that line is a jump, it has the addiu sp, sp, $0030 right after that. In case it isn't a jump, it will the jump back to the address that you installed the reg dumper (jump) + 8.

      - Added offset option for AddToCodes menu.
      Since the patches system only stores 32 bit value, you must set whether you want an 8/16/32 bit value. But if you do a 8 or 16 bit value, then there may be an offset from the original address. So the offset allows you to add to the the original address. If the offset is not compatible with the bit selected, the address will be not be modified.

      - Added jokers for Need For Speed Carbon NTSC and Need For Speed: Most Wanted NTSC U/C (Greatest Hits)
      Last edited by dnawrkshp; 03-26-2013, 02:52:30 AM.

      Comment


      • #33
        I like seeing this creativity of utilizing tools for more than just their intended purpose. Too bad we don't have a fully functional remote debugger, because it would be nice to have all the features I wrote for a SOCOM: Combined Assault mod. I had a break-point register dumper, you inject a break point anywhere on RAM and when the processor hit that line, it instantly dumped the registers to the computer, reverted the memory back to normal and relaunched the code so it would never fail on the game no matter where you placed it. For now, we have to stick with what works best. On-screen debugging

        Comment


        • #34
          Originally posted by dnawrkshp View Post
          Updated. The executable is in the attachments.

          Added 4 images of the GUI and Debugger in the spoiler.

          Updates:
          - Added Process Register Dumper. This allows you to inject a jump to the register dumper at any place in the EE (just be conscious of jumps and branches). You can replace jumps (not branches) but you can not install the reg dumper right before or right after a jump. The register dumper is set up so that it stores all the registers and then executes the line it replaced. In case that line is a jump, it has the addiu sp, sp, $0030 right after that. In case it isn't a jump, it will the jump back to the address that you installed the reg dumper (jump) + 8.

          - Added offset option for AddToCodes menu.
          Since the patches system only stores 32 bit value, you must set whether you want an 8/16/32 bit value. But if you do a 8 or 16 bit value, then there may be an offset from the original address. So the offset allows you to add to the the original address. If the offset is not compatible with the bit selected, the address will be not be modified.

          - Added jokers for Need For Speed Carbon NTSC and Need For Speed: Most Wanted NTSC U/C (Greatest Hits)
          Got the new ELF, thanks.

          Comment


          • #35
            Originally posted by Gtlcpimp View Post
            I like seeing this creativity of utilizing tools for more than just their intended purpose. Too bad we don't have a fully functional remote debugger, because it would be nice to have all the features I wrote for a SOCOM: Combined Assault mod. I had a break-point register dumper, you inject a break point anywhere on RAM and when the processor hit that line, it instantly dumped the registers to the computer, reverted the memory back to normal and relaunched the code so it would never fail on the game no matter where you placed it. For now, we have to stick with what works best. On-screen debugging
            I know Lazy Bastard has this dream of having PS2RD combined with some screen printing debugger. If that happens, there may be a way to connect PS2RD's net capabilities with the debugger. Not referring to LiveDebug though. I think this thing is way to big to fit in with PS2RD.

            Last night I read through the LDv3 thread for ideas and I came across one of your own. You had said you wanted an 'in-line' debugger for minimal tasks like watching values change and whatnot. Maybe a week ago I tried to do this with a simple block of white being outputted on the screen. That lagged significantly. I had thought to filter out certain syscalls so that it only printed on a few commonly called syscalls. But of course I have no idea what syscall is called frequently.

            Did you have a plan in mind for achieving that? I am not sure I could implement it into LiveDebug, but I most certainly can make another elf for this. As I already have actually. I just would replace the existing printing engine and what not.

            I also have a request.. Can you add a new menu to load a cds, compile it, then export to a c array all in one? It would be nice to just have another window with a CDS Input textbox with a browse next to it, then a .C Output textbox with a browse next to it, then a Array name textbox and then an export button.
            I recently swapped over to Linux (I love low-level linux distros to death) and I have plans to write a PS2Dis/CD style MIPS colorizing plugin for Gedit (standard gnome text editor). But out of laziness, I don't want to keep copying that text into the main RTB, going to Export .C, selecting the file, then the array name and clicking export. If you don't want to do it, you don't have to. If your willing to share the source, I can do it myself.

            Comment


            • #36
              Yet another update! This time with Gtlcpimp's Exception Handler (figured it out finally). I had to install it in the EE (0x0008A000) in order for it to work properly. But now that it does work I have to say wow good job!

              I also changed the booting stuff a bit. It now uses uLE's SYSTEM.CNF parser strictly because I trust its reliability more than what I had previously. Also, if you boot a disc and it fails then, instead of directly going to the OSDSYS, the elf attempts to load uLaunchELF from the following locations: mc0:/BOOT/BOOT.ELF, mc1:/BOOT/BOOT.ELF, mass:/BOOT/BOOT.ELF, and mass:/BOOT.ELF. Then if that fails it will launch OSDSYS.

              The joker for Ty the Tasmanian Tiger (love that game) has been added to the array. If you want me to add a joker address to the array, just post a reply with the game's executable (SCUS_???.??, SLUS_???.??, ect.) and a joker address corresponding to that game right next to it.

              Comment


              • #37
                Just excellent! Tomb Raider Anniversary wouldn't boot before, & just like you said it went to uLE, I was able to boot it & the debugger came up, it works perfect, been wanting to hack this game for a while.(Just gotta love watching Lara walk)

                Comment


                • #38
                  Originally posted by 47iscool View Post
                  Just excellent! Tomb Raider Anniversary wouldn't boot before, & just like you said it went to uLE, I was able to boot it & the debugger came up, it works perfect, been wanting to hack this game for a while.(Just gotta love watching Lara walk)
                  I was thinking that would add to the compatibility. Although I wonder why it won't boot..

                  If you can't set a pre-set joker for it (because for whatever reason it can't figure out the game's ELF), then a bit of a trick is to go to the address 8007E7FC in the memory browser. Change that value to anything but zero (that is the switch whether you have a pre-set joker or not) and then you are good. That will stop calling the joker scanner and most likely stop lagging the game. Which will in turn make the game have a lesser chance of freezing.

                  Comment


                  • #39
                    Not an update but something that may be important to others. ESR is compatible with CL-LiveDebug to a limit. I haven't looked at it's source code but I think it is located somewhere in the EE around 0x00080000. That is just a guess because the install handler gets installed at 0x0008A000 and it is broken with ESR. In fact it is broken with multiple games because they write in that region. Never knew games wrote so low...

                    Anyway not very useful because CL-LiveDebug can boot backups. But if you have ESR discs, and you don't want to waste another disc, then it works. In order to do this you must boot the GUI version by Berion and then press X on Load App. That should then boot uLaunchELF. From there you may boot LiveDebug and hack away!

                    I have tried OPL and it does boot games, but when you enter the debugger it freezes. It probably stores data where LiveDebug does and they conflict. In any case, there isn't a way to have them compatible. Mainly because I don't want to move everything around to get it working and also I don't think there is a way to fit the two together. But if there is that would be a pretty cool combination.
                    Last edited by dnawrkshp; 03-29-2013, 11:28:18 PM.

                    Comment


                    • #40
                      Stickied this thread, as it's an important project.
                      I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

                      Comment


                      • #41
                        Originally posted by Lazy Bastard View Post
                        Stickied this thread, as it's an important project.
                        Thanks. I am finishing up everything right now. Simplifying and condensing some code and moving everything but the register dumper and the packet out of the EE ram and into the kernel. Hopefully by using a smaller amount of the EE there will more games that don't freeze. Just finished up adding misfire's port of libconfig so that the config is much easier to understand and use.

                        Todo: Add music and/or sound, finish patches menu in GUI, move the LDJoker.txt into the config file, move as much EE stuff as I can into the kernel, document (eh...), and simplify code. From there I am going to move this out of Beta.

                        Then if I feel up to it, finish Berion's Artemis GUI. I just had a thought last night regarding this actually. What if there was an online option to connect to both the gamehacking.org and the codemasters-project.net databases and choose cheats from there? Artemis is already a full-blown cheat device and it is compatible with both OPL and ESR. Definitely would be a worthwhile thing to have.
                        A couple problems though. One being that the DB isn't set up for this feature. Implementing it may take a lot of tedious work. The other being I know nothing of web/net stuff in C. I have already attempted it and I failed pretty bad. I could hardly send stuff between my PC and my PS2 because of how poorly written the code was. Another developer may have to write that.. If anyone is out there.

                        EDIT: I can't find any simple example of playing a sound. I found one for SMS but it isn't what I want. I just want a short sound to be played when you move between options and when you select an option.
                        Last edited by dnawrkshp; 03-31-2013, 03:17:45 PM.

                        Comment


                        • #42
                          Gtlcpimp can you explain your Tiny font format entirely? I understand it has been converted to binary and that (in CourierNew.raw) the 0xFF are represented as a binary 0 and the 0x01 are represented as a binary 1. This is what confuses me:

                          The normal font has 0xFF as transparent and 0x01 as white. Each character consists 18 pixels x 18 pixels. That amounts to 324 bytes per pixel. Of course each pixel is one byte and your Tiny font decompresses each pixel to 4 bits. So cut that in half and there is 162 bytes per pixel. When I decompress your Tiny font, I do not get 162 bytes of data. I did an equivalent memset(addr, 0x22, 162) and only 44 bytes were changed.

                          I need to understand this because of a program I wrote in conjunction with a friend called 'PS2FontCreator'. I am adding the option to export the custom font (in Tiny font format) as a C array. The exe is on the SVN here: http://gamehacking.org/websvn/filede...ontCreator.exe. It's a direct link and will download automatically.

                          EDIT: I just looked at it right after I published this post and the 1's shape into an A (I decompressed A). So it looks like you are using an 8 x 11 grid... That complicates everything. Maybe I can change your FontChar_DrawString to work with 18 x 18 again.
                          Last edited by dnawrkshp; 04-15-2013, 01:29:45 AM.

                          Comment


                          • #43
                            Complete

                            The Unofficial CL-LiveDebug v4 is complete. A new rar has been attached and I'd suggest that everyone re-read the main post as it has been significantly modified.

                            Also, a wiki will be coming soon. I just have a lot of games to compile into wiki format.

                            I'd like to thank bungholio for his help beta testing and giving me thoughts to improve LiveDebug.

                            Here is all I have done from 3.0.4b to 4.1.1 (straight from the UPDATE file):
                            Code:
                            Bug fixes:
                            
                            - Uses uLE's SYSTEM.CNF parser. Just more reliable.
                            
                            
                            - Now tries to boot uLE if booting from disc fails (purple screen)
                            
                            
                            - Fixed a TON of compiler warnings. There are now 0 :D.
                            
                            
                            - Fixed immense lag when reading at least 4 words worth of bytes that are greater than 0x7F. The drawString function had trouble printing those so I replaced them in a function with 0x01 (which shows a square).
                            
                            
                            - Fixed a bug that causes you to freeze when you open the memory browser (from the results menu) to an address that doesn't end with 0, 4, 8, or C. Now it opens to the closest lowest increment of 4 (example: D = C, 3 = 0, 6 = 4).
                            
                            
                            - No longer randomly freezes when booting a game. I didn't know to DI when entering kernel mode and EI after exiting kernel mode.
                            
                            
                            What's new:
                            
                            
                            6/13/13: 4.1.1 Unofficial
                            
                            
                            - Added ability to change the joker combo to enter the debugger
                            
                            
                            - Added a found jokers list at the main menu of the debugger
                            
                            
                            - Added ver option to the preset joker list. If you do not enter one it will not check for the number
                            
                            
                            4/02/13: 4.1.0 Beta
                            
                            
                            - Added dynamic allocation for both the register dumper and the packet
                            
                            
                            - Removed Gtlcpimp's exception handler
                            
                            
                            - Added ability to add preset joker from the GUI
                            
                            
                            - Added a keyboard to the GUI
                            
                            
                            - Added ability to set boot path to uLE from the GUI
                            
                            
                            - When booting SifLoadElf is attempted before trying to load and boot the elf itself
                            
                            
                            3/25/13: 4.0.1 Beta
                            
                            
                            - Added Gtlcpimp's Exception Handler
                            
                            
                            - Added joker address for Ty the Tasmanian Tiger
                            
                            
                            - Added Process Register Dumper
                            
                            
                            - Added offset option for AddToCodes menu. Since the patches system only stores 32 bit value, you must set whether you want an 8/16/32 bit value. But if you do a 8 or 16 bit value, then there may be an offset from the original address. So the offset allows you to add to the the original address. If the offset is not compatible with the bit selected, the address will be unmodified.
                            
                            
                            - Added jokers for Need For Speed Carbon NTSC and Need For Speed: Most Wanted NTSC U/C (Greatest Hits)
                            
                            
                            - Added spacing for font created by PS2FontCreator (which means the spacing has been created using math and not my eye)
                            
                            
                            - Added a program called PS2FontCreator made by Dnawrkshp and ORCXodus
                            
                            
                            3/10/13: 4.0.0 Beta
                            
                            
                            - Finished BETA GUI
                            
                            
                            - Added pre-set jokers option, look at LDJokers.txt for correct format
                            
                            
                            - Added boot uLaunchELF option
                            
                            
                            12/15/12: Mod Update
                            
                            
                            - Applied spacing for individual characters. The strings look a lot nicer. A new argument is now passed to _drawString as register t6. If you want a constant spacing between characters, set t6 equal to that space. Otherwise, set t6 equal to zero and it will use my non-constant spacing system.
                            
                            
                            12/12/12: Update
                            
                            
                            - Implemented searching for changed values and searching for unchanged values (next search only). Only works with 8, 16, and 32 bit change/unchange searches)
                            
                            
                            - Implemented Add to patch to Codes menu
                            
                            
                            - Implemented delete code from Codes menu
                            
                            
                            - Optimized the cheat engine so that it doesn't run through all 512 possible codes. It now stops looping through the codes when it hits an address of 0. This, as far as I know, means there are no more valid codes after it.
                            
                            
                            
                            
                            12/09/12: Update
                            
                            
                            - Implemented a 'Next Search' function that I give Gtlcpimp 98% credit because I copy pasted his search function and made it search through the results instead of the memory.
                            
                            
                            - Implemented search operators. Now you can search for Equal to (=), Not Equal to (!=), Less Than (<), Greater Than (>), Less Than or Equal to (<=), Greater Than or Equal to (>=).
                            
                            
                            - The Start, Stop, Value, and Operator values don't reset when you leave then menu. Press the Start button to reset them.
                            
                            
                            - The Select button (when in the search menu) will put you at the last possible marker. For instance, on the Value there are 32 marker places. Annoyingly you have to press you right button 31 times to get to the last one. Pressing Select will do that for you. Works with Start, Stop, and Value.
                            
                            
                            - Implemented ASCII window in the memory browser. The character corresponds to the byte, so you have to read backwards. I can change it if that is more desirable.
                            
                            
                            - Implemented live ASCII window in memory browser when editing a value
                            
                            
                            Enjoy!

                            Comment


                            • #44
                              Hey man, have you thought about adding a option when running the game to stop the disc? I know it may sound silly but sometimes when I am searching through memory it takes a while. I am just being cautious because we all know that some PS2's laser's wear out a lot quicker than others, mine hasn't had any problem though.
                              Last edited by 47iscool; 06-17-2013, 12:31:06 AM.

                              Comment


                              • #45
                                Originally posted by 47iscool View Post
                                Hey man, have you thought about adding a option when running the game to stop the disc? I know it may sound silly but sometimes when I am searching through memory it takes a while. I am just being cautious because we all know that some PS2's laser's wear out a lot quicker than others, mine hasn't had any problem though.
                                Sorry but that can't be done yet. Since this thing is written in assembly (and it would be a LOT of work to rewrite it in C), there is no ready-to-go method to load IRX modules into the IOP in assembly. It can be done, but it would take time. However if I ever get it done I will definitely add that feature (if it works properly).

                                Comment

                                Working...
                                X