• Our software update is now concluded. You will need to reset your password to log in.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
G
Reaction score
15

Profile posts Latest activity Postings About

  • I'm currently away from my main source of discord.
    But I shall join when I return to that source!

    And fan, is a very large understatement for how fanatic I am about Golden Sun!
    Well, it does, but it assumes you implemented the setword command and the battle loader string hack. Look at the second page of the thread, there should be some explanantion
    You really shouldn't for few reasons:
    -Emerald is a far more stable base, I can't explain why exactly as I'm not experienced enough, but all the great hackers know that.
    -Emerald has all the features of Ruby + more
    -Ruby code is messy and not convenient to use (perhaps that's why Emerald is more stable)
    -Emerald has more hack-features added

    Though I'm gonna answer you : There's a table for the battlescripts. That table contains all the pointers of the command used in the battlescripts, there's some documentation about the said commands in JPAN's and Jambo51's thread.
    The command "0x00" is the "attackcanceler". That command allows the move to fail : because you pokemon is asleep, confused, or because you use a ground move against levitate, because you don't have PP anymore or whatever else. Note that sometimes that a move is stopped outside of the attackcanceler, look at my routine for desolate land for exemple.
    MrDollSteak adviced me to put the check for protean in the attackcanceler and it's indeed the good way to do it after reading how Protean works.

    For the "BattleData", I saw it once in some routine and then used it. It contains many information on the pokemon in battle : Boost, stats, number of ability, number index, etc etc.
    You can find pointer by using debugger (VBA-SDL-H)
    The curmove index has been also used in some routine, but you can also find it by doing the following steps : Use a move, pause your emulator, dump the RAM memory, looking for the index numbers reversed (hex) of your move with an hex editor. Doing this 3 - 4 times to ensure you have the good address
    The type buffer has been used by Tlatchli (maybe I'm mispelling) in his Protean routine (which inspired me), I don't know how he found this though, I didn't really paid attention to that address.
    Same for the "checktypeloc", Chaos Rushed used it so I reused it, but you can find this one by reading some routines in IDA
    You can also find BankUser the same way.

    Oh and yeah speaking of IDA, there's no online IDA DataBase for Ruby while FireRed and Emerald have one.

    So, again : That's a good exercise to find pointer, but please don't do this with Ruby, use fire red or Emerald (which is better IMO) as it'd could help instead of wasting time on Ruby
    T
    Well, I don't own these games so I can't say, but IMO it should tranform at the first turn itself.
    I don't have gen6 game so I can't say how it "officially" works. But changing type at the first turn makes sense to me as I said, that's what the routine does
    I don't know how X/Y and ORAS handle that but I think my routine make the change at the first turn. Imo it makes sense since a ground type pokemon is more able to dig a hole
    My bad, there was a stupid mistake. Can you try it out again ? And what was the bug ?

    Thanks to report btw :)

    Now it should be ok
    It's not I don't know, I wrote the code month ago, and I don't have it on the top in my head right now. I'm sure this is the good place
    01 78 00 92 02 20 00 22 are some code, don't remember exactly what it does.

    We ovewritting it because it's a good place to do so.

    But really, read the tutorial, it'll me more clear to you
    ANyway, it doesn't change anything, just change the byte at 08046074 with the bytes mentioned in my code

    btw I'll update the routine later to fix a minor thing that KDS mentioned
    In vanilla Emerald ROM, at 08046074 there's these bytes : 01 78 00 92 02 20 00 22

    Replaces the 8 bytes above with "00 48 00 47 ZZ+1 YY XX 08" (I said 00 49 08 47 because I didn't re-read my code).
    The following bytes : 00 49 08 47 XX XX XX 08 actually ARE the "goto" command. In ASM we call that "hook" rather than goto as we alter the existing code rather than creating a totally new one
    those byte are actually THUMB code compiled. 00 49 08 47 (if I remember well) say "take the following address, place it in the first register, and follow that register with the address being ZZ+1 YY XX 08 (the pointer to your routine +1)
    callasm makes actually the engine interprets data differently, it'll read as THUMB code instead of script/battlescript/animation script or whatever code. The routine we're altering is already THUMB so it's more a "goto", but yeah it's pretty much the same.

    We're "hooking", that is to say making the code go somehere read our routine, and go back properly
  • Loading…
  • Loading…
  • Loading…
Back
Top