• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Other] How to make Rom Hacking Tools?

27
Posts
13
Years
    • Seen Nov 6, 2017
    Hello everybody! I've been learning and practicing some programming ( Java and a little Swift) and was wondering how to go about making tools. Like how to access the ROM and modify it or whatnot. Is there any tutorials or guidance that could help me? Thanks for any help!
     
    81
    Posts
    9
    Years
    • UK
    • Seen May 9, 2019
    It's nice to see another swift programmer :). I really like swift and I'm making apps for hacking pokemon colosseum and XD. The only issue is that it's less accessible to the general public. Java is pretty universal though.

    My advice to you would be to make sure you don't hard code too much. With the amount of hacking knowledge out there, people are doing really fancy things with roms. You want to make sure your tool is compatible with all the potential modifications.

    Good luck!
     
    3,830
    Posts
    14
    Years
    • Age 27
    • OH
    • Seen May 10, 2024
    All you need to know to program a ROM hacking tool is how to read/write binary data with the language of your choice. Obviously, some languages are more suited to this than others, but it's usually rather easy to find articles documenting various programming techniques for this. Anything else is just a bonus for potential users.

    For Swift, I think you should look into NSData and NSStream as starting points, if I remember it correctly.
     

    Alexander Nicholi

    what do you know about computing?
    5,500
    Posts
    14
    Years


  • I would recommend using C++, D, JavaScript, Lisp, GTK+, and OpenGL to work with. Try to avoid working with .NET as they're only designed to work on Windows, and the major developers around here are trying to collectively motion for cross-platform capabilities.

    Try to use OOP with your code as it's a truly powerful programming paradigm. Simple things would be easiest to implement in Bash or C.

    If you use a compiled language (other than VM langs like Java), mind that your code is either totally cross-platform, or at least really easy to port between Windows and Linux. GLib, GIO, GTK+, and other libs like that help ensure that without having to go interpreted or managed.
     
    27
    Posts
    13
    Years
    • Seen Nov 6, 2017
    Thanks for all the suggestions guys! I'll look into more and see what I can come up with.
     

    Splash

    But nothing happened.
    658
    Posts
    14
    Years
  • All you need to know to program a ROM hacking tool is how to read/write binary data with the language of your choice. Obviously, some languages are more suited to this than others, but it's usually rather easy to find articles documenting various programming techniques for this. Anything else is just a bonus for potential users.

    For Swift, I think you should look into NSData and NSStream as starting points, if I remember it correctly.

    If you know the way to insert png into gba using c# i'd be your bestfriend :D
     
    3,830
    Posts
    14
    Years
    • Age 27
    • OH
    • Seen May 10, 2024
    If you know the way to insert png into gba using c# i'd be your bestfriend :D

    It's really not that hard. Just look at the source of either NSE 2.X or GBA Graphics Editor for their LZ77 compression routines. Other than that it's simply a matter of making sure you have the image data the way you want it.

    Basically:
    1. Load image
    2. Create array of indexes to the palette data from the original image (this is how you store images in the GBA)
    3. Compress
    4. Save
     
    Back
    Top