Just copy pasta error. I copied the beginning of another code condition and removed the wrong lineThat's very interesting! I understood the if condition 80000200 (ZR is being hold) and 20000000 exits the if condition. So in your shiny code if you hold ZL (80000100) it activates shiny, but your exit condition is holding ZR, instead of 20000000? Is that it? Also, how does it work in-game? You have to keep holding the buttons while you walk, battle and all? And do you have to hold it, enter a city or building, or simply wander to a different region for it to activate? And when you stop pressing, it goes back to normal spawns?
Fantastic. I will try right now.Just copy pasta error. I copied the beginning of another code condition and removed the wrong line
20000000 should be there instead of 80000200.
And how does it work, you hold your button and as long as you are holding it, every pokemon which spawns, will be shiny.
So I can freely walk around and don't need to enter a house or anything.
i need help with step 4?I'm not sure what you're asking, if you're wondering how to make the OHK a toggle. for my specific code..
Code:[#03. OHK (HOLD L3 DOWN)] 040E0000 03075FF8 00000000 80000010 040E0000 03075FF8 00000001 20000000
Just put Button Conditions on that.. to set to 1 (on) and 0(off)
Code:[#03. OHK (HOLD L3 DOWN)] 040E0000 03075FF8 00000000 ;; always write 0 (off) 80000010 ;; if holding/pressing L3 (Left Stick Button) 040E0000 03075FF8 00000001 ;; always write 1 (on) 20000000 ;; end if holding L3
If you're asking how to make the code in general.. here's the break down.
1) Find Health Value in Memory
2) Set BP on Address of Health
3) Find Function that Loads or Writes to our health -- this one is writing..
4) If you want to break out Enemy/Player since this is a shared function, you have to dissect the memory of our values and enemy values, and find something that you can use to see if its player or enemy..
This takes time, and experience, usually there's something.. it helps to.. test multiple locations.. i had to do this about 3-4 times until i found the right one.. since things change depending on how many pokemon you have, or they have things shift.
Code:ORIGINAL FUNCTION .text:00000000029764D8 08 B4 40 79 LDRH W8, [X0,#0x5A] ; Load Current Health .text:00000000029764DC 1F 21 21 6B CMP W8, W1,UXTH ; Compare Health & Dmg .text:00000000029764E0 89 00 00 54 B.LS loc_29764F0 ; If Current Health Less Than or Same kill unit .text:00000000029764E4 08 01 01 4B SUB W8, W8, W1 ; Subtract Health and Dmg .text:00000000029764E8 08 B4 00 79 STRH W8, [X0,#0x5A] ; Write new Health to address// .text:00000000029764EC C0 03 5F D6 RET CODE CAVE/HACK 029764D8 : B9 FE 1B 14 : B #0x3075FBC ; go to our code cave from original instruction 03075FBC : 07 C4 41 39 : LDRB W7, [X0, #0x71] ; load player value 03075FC0 : FF 04 00 71 : CMP W7, #1 ; check if it is player or enemy 03075FC4 : 81 00 00 54 : B.NE #0x3075FD4 ; if not player.. go to enemy code 03075FC8 : A7 01 00 18 : LDR W7, #0x3075FFC ; load and check if inf health is enabled (on) 03075FCC : 47 00 00 34 : CBZ W7, #0x3075FD4 03075FD0 : C0 03 5F D6 : RET ; return to original instruction (bypass dmg) 03075FD4 : 07 01 00 18 : LDR W7, #0x3075FF4 ; check if dmg multiplier is enabled/on 03075FD8 : 47 00 00 34 : CBZ W7, #0x3075FE0 03075FDC : 21 7C 07 1B : MUL W1, W1, W7 ; do dmg multiplier math 03075FE0 : C7 00 00 18 : LDR W7, #0x3075FF8 ; check if ohk is enabled or on 03075FE4 : 47 00 00 34 : CBZ W7, #0x3075FEC 03075FE8 : 42 01 E4 17 : B #0x29764F0 ; return to original instruction (where it kills unit) 03075FEC : 08 B4 40 79 : LDRH W8, [X0, #0x5A] ; original code (restore if no options are enabled) 03075FF0 : 3B 01 E4 17 : B #0x29764DC ; go back to original instruction +4 03075FF4 : 00 00 00 00 : .BYTE 0x00, 0x00, 0x00, 0x00 ; inf health variable 03075FF8 : 00 00 00 00 : .BYTE 0x00, 0x00, 0x00, 0x00 ; dmg multi variable 03075FFC : 00 00 00 00 : .BYTE 0x00, 0x00, 0x00, 0x00 ; ohk variable B #0x3075FBC LDRB W7, [X0, #0x71] CMP W7, #1 B.NE #0x3075FD4 LDR W7, #0x3075FFC CBZ W7, #0x3075FD4 RET LDR W7, #0x3075FF4 CBZ W7, #0x3075FE0 MUL W1, W1, W7 LDR W7, #0x3075FF8 CBZ W7, #0x3075FEC B #0x29764F0 LDRH W8, [X0, #0x5A] B #0x29764DC .BYTE 0x00, 0x00, 0x00, 0x00 .BYTE 0x00, 0x00, 0x00, 0x00 .BYTE 0x00, 0x00, 0x00, 0x00
i need help with step 4?
where do you place you second break point to find something that the player have but not the ennemy? do you put the first break point then you nop what you get then try another break point ? i understand how you did your code but i dont understand what are you looking for when you try to find the distinction between player and ennemy?
so what im asking:
1 )where do you put you break point to find the different between the player and ennemy?
2) what difference are you looking for ? can you be more accurate?
Player
0000000649D4B960 80 B6 D4 49 06 00 00 00 11 44 00 00 02 00 00 00 .........D......
0000000649D4B970 30 15 D1 48 06 00 00 00 00 BA D4 49 06 00 00 00 0...............
0000000649D4B980 45 44 00 00 00 00 00 00 D0 FD 6E 48 06 00 00 00 ED........nH....
0000000649D4B990 80 B6 D4 49 06 00 00 00 01 44 00 00 00 00 00 00 .........D......
0000000649D4B9A0 60 15 D1 48 06 00 00 00 XX 00 00 00 00 00 00 00 `.......2.......
0000000649D4B9B0 03 44 00 00 00 00 00 00 00 35 89 48 06 00 00 00 .D.......5.H....
0000000649D4B9C0 01 00 00 00 00 00 00 00 03 44 00 00 FB FF FF FF .........D......
0000000649D4B9D0 A0 34 89 48 06 00 00 00 0C 00 00 00 00 00 00 00 .4.H............
0000000649D4B9E0 03 44 00 00 FE FF FF FF 70 34 89 48 06 00 00 00 .D......p4.H....
Enemy
0000000649D4A2E0 00 00 00 00 00 00 00 00 01 44 00 00 02 00 00 00 .........D......
0000000649D4A2F0 30 15 D1 48 06 00 00 00 80 A3 D4 49 06 00 00 00 0...............
0000000649D4A300 45 44 00 00 00 00 00 00 D0 FD 6E 48 06 00 00 00 ED........nH....
0000000649D4A310 00 A0 D4 49 06 00 00 00 01 44 00 00 00 00 00 00 .........D......
0000000649D4A320 60 15 D1 48 06 00 00 00 XX 00 00 00 00 00 00 00 `.......2.......
0000000649D4A330 03 44 00 00 00 00 00 00 00 35 89 48 06 00 00 00 .D.......5.H....
0000000649D4A340 01 00 00 00 00 00 00 00 03 44 00 00 FB FF FF FF .........D......
0000000649D4A350 A0 34 89 48 06 00 00 00 03 00 00 00 00 00 00 00 .4.H............
0000000649D4A360 03 44 00 00 FE FF FF FF 70 34 89 48 06 00 00 00 .D......p4.H....
how to do get acces of that? with ida? which plugin or program do you use?Most modern games won't have a separate function for enemy/player.. just not efficient.. you literally have to look through the memory of player and enemy, and find an offset that works for only the player... for this one.. 0x71 is 01 for player, and next byte is which pokemon is out..1-6
Example.. not real.. i'd dump the player data, and enemy data, and look for similarities and differences, and after doing this multiple times, i'd find something (usually) that could help..
Takes time and practice if i take another look at this game, i'll dump the player/and enemy data so you can see what i mean.
Code:Player 0000000649D4B960 80 B6 D4 49 06 00 00 00 11 44 00 00 02 00 00 00 .........D...... 0000000649D4B970 30 15 D1 48 06 00 00 00 00 BA D4 49 06 00 00 00 0............... 0000000649D4B980 45 44 00 00 00 00 00 00 D0 FD 6E 48 06 00 00 00 ED........nH.... 0000000649D4B990 80 B6 D4 49 06 00 00 00 01 44 00 00 00 00 00 00 .........D...... 0000000649D4B9A0 60 15 D1 48 06 00 00 00 XX 00 00 00 00 00 00 00 `.......2....... 0000000649D4B9B0 03 44 00 00 00 00 00 00 00 35 89 48 06 00 00 00 .D.......5.H.... 0000000649D4B9C0 01 00 00 00 00 00 00 00 03 44 00 00 FB FF FF FF .........D...... 0000000649D4B9D0 A0 34 89 48 06 00 00 00 0C 00 00 00 00 00 00 00 .4.H............ 0000000649D4B9E0 03 44 00 00 FE FF FF FF 70 34 89 48 06 00 00 00 .D......p4.H.... Enemy 0000000649D4A2E0 00 00 00 00 00 00 00 00 01 44 00 00 02 00 00 00 .........D...... 0000000649D4A2F0 30 15 D1 48 06 00 00 00 80 A3 D4 49 06 00 00 00 0............... 0000000649D4A300 45 44 00 00 00 00 00 00 D0 FD 6E 48 06 00 00 00 ED........nH.... 0000000649D4A310 00 A0 D4 49 06 00 00 00 01 44 00 00 00 00 00 00 .........D...... 0000000649D4A320 60 15 D1 48 06 00 00 00 XX 00 00 00 00 00 00 00 `.......2....... 0000000649D4A330 03 44 00 00 00 00 00 00 00 35 89 48 06 00 00 00 .D.......5.H.... 0000000649D4A340 01 00 00 00 00 00 00 00 03 44 00 00 FB FF FF FF .........D...... 0000000649D4A350 A0 34 89 48 06 00 00 00 03 00 00 00 00 00 00 00 .4.H............ 0000000649D4A360 03 44 00 00 FE FF FF FF 70 34 89 48 06 00 00 00 .D......p4.H....
[Encounter 146# Galar Moltres]I updated the list with some forms it should now be complete. The update contains: Alolan Raichu, Alolan Dugtrio, Alolan Meowth, Alolan Persian, Alolan Grimer, Alolan Muk, Dark Tauros, Dark Fire Tauros, Galarian Articuno, Galarian Zapdos.
Tried Galarian Moltres but i couldnt find it, i guess its not in the game which is kinda weird considering the others are in it.
Yes.Can I have Master Ball Encounter and Shiny Encounter on at the same time?
Thanks will try it again and see if i can get it to work for emulator.[Encounter 146# Galar Moltres]
08000000 03075530 00000001 00000092
I got Galarian Moltres to work in Edizon with this code here hope it helps!
also how do you know that this adress is the ennemy and the other one is the player?how to do get acces of that? with ida? which plugin or program do you use?
edit: how do you dump player and ennemy data?