Posts by Sturmvogel

    Heyho, first things first welcome to our community. Please note that it is not allowed to post content that violates our terms of use (Who would have thought...) and especially content that violates copyright laws. I have adapted your post somewhat accordingly, please take this as a warning and use caution next time. (For your own safety as much as ours...)


    As to your problem: Gamecube Hacking is a pretty unusual topic around here, so it might be the case that not many people around here are able to help you. If you could provide the actual file (or some other examples) you are trying to reverse engineer, we might be able to have a look at it, and just figure out what sort of algorithm it is. Since it is a Nintendo Devkits we are talking about, they were using some forms of LZ compression in the past, and chances are that they also used them on the gamecube. The GBA for example uses mostly LZ77 for compression, the Nintendo DS uses mostly LZW (as I recall) and so on. Chances are the gamecube might use something very similar.


    Is this a file common among other game cube images as well, or is it specific to Harvest Moon? If it is a common file, it is possible that someone already figured out what it is, and how it works. If it's not, it's an oddity, but figuring it out should still be feasable :)


    Also: Sidenote: If you did not notice, we are a german community, most of our members will probably speak german, so don't expect everyone to understand you :)


    ~Sturmvogel

    Heyho, just stating that we are, as you might or might not have seen, a german board, so it might be the case that not everyone understands what you are saying, anyways...


    You should probably check out the `checkgender` command, which lets you branch your script according to your own gender. If you want your rival's gender you just have to think the other way round.


    ~Sturmvogel

    We on the other hand don't speak english natively, thus our resources are all in german :D


    Tutorial wise, I would suggest just learning by doing. If you know how to program already, programming for the gba is not different (like at all) - The respective GCC can translate your C Code in almost any assembly language you desire. As for examples I suggest looking at the projects already out there, the big ones like SotS or Violet:


    https://github.com/SBird1337/source_of_the_sovereign
    https://github.com/WodkaRHR/Violet_Sources



    Or on the other side of the big sea I know FBI's battle engine:



    https://github.com/EternalCode/battle_engine



    If you have any questions feel free to ask. I don't really think it is possible to learn programming, just from reading a book, or a tutorial online. Sure you have to study the hardware manuals of the devices you are working on (http://problemkaputt.de/gbatek.htm) - But you also have to actively *do* something to progress.



    ~Sturmvogel

    I dont use tools, yet for the majority of the RH community it would be helpful to have those available for their local rom versions - however, if you want to support many versions you could always just use some sort of configurable interface, e.g. an INI, JSON, XML, ... file to specify the required information on any local platform.


    As for LZ77, especially the decompression algorithm is fairly easy to implement, because it's basically step by step reforming pseudo code into real code (whatever language you are using), and with the help of some data structures (especially lists) the code should be just about 50'ish lines long. Compression is a bit more in-depth, as I recall, and you won't find many (good) examples especially on agb stuff. If you are looking for a decompression example you can eighter look at those provided, or if you are more confident in C-Type languages I have an implementation in C#: https://hastebin.com/atuyipiqac.cs Feel free to use or adapt with respects of the GPLv3.


    Have fun programming!


    ~Sturmvogel