Thanx, that did the trick! Someone should make a cheat that just makes all 3 starters shiny by default, cause that hold L cheat loves to lock up the system if you don't time it right. lolYou have to press L (or whatever activation key you're using for the shiny code) almost immediately after you press yes on the starter you want to select.
It's just the scripting on the starter encounter that the shiny code seems to not get along with. Everywhere else seems to be unaffected.Thanx, that did the trick! Someone should make a cheat that just makes all 3 starters shiny by default, cause that hold L cheat loves to lock up the system if you don't time it right. lol
@ThePerplexedOne Would you be able to explain what first 5 lines of the activation code are doing?Invincibility code:
Pokemon Brilliant Diamond 1.1.2
Code:[Invincible (on)] 04000000 02CCD3D0 3940F801 04000000 02CCD3D4 34000041 04000000 02CCD3D8 52800015 04000000 02CCD3DC 2A1503E1 04000000 02CCD3E0 17DA2B76 04000000 023581B4 1425D487 [Invincible (off)] 04000000 023581B4 2A1503E1
Pkhex is able to do both of those functions.Has a code for 999x battle points and 999x mysterious shards been uploaded and/or created yet?
It's my code cave. Essentially, I am writing my own functions in "empty space" in the binary (first 5 lines) and calling it from the existing function. (final line)@ThePerplexedOne Would you be able to explain what first 5 lines of the activation code are doing?
I've started learning how to make ASM codes and I don't think I'm understanding your code correctly. To me it looks like you're writing over a debug line drawing subroutine with some instructions (that I can't figure out what they do). So I'm just wondering if I'm entirely out of the ball park on this, since I just don't know.
Can we have a x2 and x3 versions for this? Thanks!
[2x Exp (on)]
04000000 02CCD2F0 52800042
04000000 02CCD2F4 1B027F7B
04000000 02CCD2F8 2A1B03E2
04000000 02CCD2FC B90012E2
04000000 02CCD300 D65F03C0
04000000 02CCD304 52800042
04000000 02CCD308 1B027F5A
04000000 02CCD30C 2A1A03E2
04000000 02CCD310 B9001302
04000000 02CCD314 D65F03C0
04000000 023E8384 942393DB
04000000 023E856C 94239366
[3x Exp (on)]
04000000 02CCD2F0 52800062
04000000 02CCD2F4 1B027F7B
04000000 02CCD2F8 2A1B03E2
04000000 02CCD2FC B90012E2
04000000 02CCD300 D65F03C0
04000000 02CCD304 52800062
04000000 02CCD308 1B027F5A
04000000 02CCD30C 2A1A03E2
04000000 02CCD310 B9001302
04000000 02CCD314 D65F03C0
04000000 023E8384 942393DB
04000000 023E856C 94239366
Okay cool, I'm glad I was understanding that you were writing you're own instructions.It's my code cave. Essentially, I am writing my own functions in "empty space" in the binary (first 5 lines) and calling it from the existing function. (final line)
The empty space will typically just be a bunch of nops and returns, so I'm free to write whatever I want in there.
Okay cool, I'm glad I was understanding that you were writing you're own instructions.
If you don't mind, would you be able to explain what the instructions were that you put in the "code cave"?
I see you're altering the instruction so that it alters how HpMinus runs when it's branched to, but I don't know how to work back from you're hex codes to understand the instructions yet.
Also thank you for explaining, It's very much appreciated. I haven't come across many specific examples to learn from for BDSP.
ldrb w1, [x0, #0x3e] // Loads the value of x0 (as a byte) (first parameter passed) + offset 0x3e (which is m_friendship in BTL_POKEPARAM) into w1
cbz w1, #0xc // Checks if this value is 0, if it isn't, it will execute the next instruction, otherwise skip it.
mov w21, #0 // Loads the value 0 into w21
mov w1, w21 // Puts value of w21 back into w1 (this is the original instruction that we're overwriting in the final line)
b #0xffffffffff68ade8 // Go back to our original instruction, but the instruction after it (so we ain't looping)
b #0x975230 // This just brings us to our function
Thank you so much, that was perfect ♥Okay so let's take a look at our code and what that translates to in ARM:
Code:ldrb w1, [x0, #0x3e] // Loads the value of x0 (first parameter passed) + offset 0x3e (which is m_friendship in BTL_POKEPARAM) into w1 cbz w1, #0xc // Checks if this value is 0, if it is, it will execute the next instruction, otherwise skip it. mov w21, #0 // Loads the value 0 into w21 mov w1, w21 // Puts value of w21 back into w1 (this is the original instruction) b #0xffffffffff68ade8 // Go back to our original instruction, but the instruction after it (so we ain't looping) b #0x975230 // This just brings us to our function
The first 5 lines are our function, and again, the final line is what takes us there.
To translate to and from HEX/ARM, you can use this: https://armconverter.com/
Also, it's worth noting that the bytes in our instructions in the code need to be reversed so that we can translate it.
E.g. the instruction `52800042` will become `42008052`. Don't just reverse it completely, only each block of 2 bytes.
Thank you so much, that was perfect ♥
That helps out so much. Also thank you for the reverse reminder, I sometimes find myself trying out codes, only to realise the big endian button isn't toggled on armconverter
I didn't know about these groups. This is awesome, thank you so much!I found these tutorials really helpful (join the group if you haven't already):
https://gbatemp.net/threads/tutorial-1-making-a-multiplier-cheat.603417/
https://gbatemp.net/threads/tutorial-2-making-code-cave.603446/
I picked up some things I didn't know I could do with IDA before. Very useful
That's true, but the code you provided with the button activation works like a charm. I get 99 with my first encounter and the chain count keeps on going up to 100+, which is what I was looking for. And once I'm done with that chain, I press R to restart the chain count and now I can encounter a new pokemon and start a new chain with no issue at all. Perfectly done, thank you.Are the button activated codes working for you on ryujinx?
The way the code works is it sets the value to 99, however, with emulators having the codes permanently activated from launch, it means it's always setting it to 99, so for emulators you can't, since you have to restart to make changes to what cheats are active (as far as I'm aware, granted I've not used the emus, just been reading other peoples posts).
It acts like the original game. When a gba cartrige of a pokemon game is inserted in slot 2, you get newer pokemons that you couldn't encounter in the wildCan someone tell me what do the GBA cheat codes do?
PKHeX will flag them as illegal, but I don't think they will have any issues with online trading or battling (as long as they aren't further modified) since Nintendo's legality checks are far more lenient than PKHeX's.It acts like the original game. When a gba cartrige of a pokemon game is inserted in slot 2, you get newer pokemons that you couldn't encounter in the wild
https://www.serebii.net/diamondpearl/gbapokemon.shtml
I don't think these pokemon are legal for online since there's no way of inserting a gba cartridge to the switch
She was recently in an accident and is currently recovering, so things are a little slower here in terms of updates (She's is also a prominent in the ACNH cheat & reverse engineering scene, so spend time there as well).So I noticed the main cheat file was last updated in november, is the person that started this even around anymore? and if so, why's it not been updated? XD