Homebrew PKMN-NTR: Real-time memory editing program for Pokémon games [WIP]

Bjnido35

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
157
Trophies
0
Age
30
XP
107
Country
United States
First wanted to say I LOVE your program. Just started using it yesterday and and in love with it and am quite surprised how well this actually works.

I have a question for you. Sorry if you already stated this somewhere and didn't see it, but are you going to be eventually making a Soft Reset bot for Sun/Moon? I am currently using the one on Y for my backlog of event Pokémon and love it. I haven't caught the Ultra Beasts yet on my Moon and it would be really useful for those. :P

Thanks for your work on this amazing tool!
 

Real.96

Well-Known Member
Member
Joined
Sep 14, 2015
Messages
1,055
Trophies
0
Age
28
XP
965
Country
Italy
First wanted to say I LOVE your program. Just started using it yesterday and and in love with it and am quite surprised how well this actually works.

I have a question for you. Sorry if you already stated this somewhere and didn't see it, but are you going to be eventually making a Soft Reset bot for Sun/Moon? I am currently using the one on Y for my backlog of event Pokémon and love it. I haven't gotten the Ultra Beasts yet on my Moon and it would be really useful for those. :P

Thanks for your work on this amazing tool!

He doesn't know at the moment how to find the addresses, so we have to wait for this until him or someone else find a way to check them
 

Bjnido35

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
157
Trophies
0
Age
30
XP
107
Country
United States
He doesn't know at the moment how to find the addresses, so we have to wait for this until him or someone else find a way to check them

Oh, I knew about that issue, but I didn't realize that was necessary for the Soft Reset bot. I haven't used it yet on the Pokémon you catch in Gen VI, just the received events. I suppose now that I think about it that that would be the easiest way rather than the bot somehow catching the Pokémon.
 

Stoned

Well-Known Member
Member
Joined
Mar 26, 2014
Messages
2,764
Trophies
2
Age
45
XP
4,411
Country
Germany
Any more info? (Gen, detailed settings, log?), just happened once, or every time you get 18 eggs?



The grayed features aren't available yet, more RAM research is needed, jackmax fork of the program added trade dumping, and is merged into my fork, it should be added on next release.

Here is the Log

Error detected
Reconnect
Von der Übertragungsverbindung können keine Daten gelesen werden: Ein Blockierungsvorgang wurde durch einen Aufruf von WSACancelBlockingCall unterbrochen.
Server disconnected.
Server connected.
rtRecvSocket failed: 00000000pid: 0x00000000, pname: fs, tid: 0000000000000000, kpobj: fff75c30
pid: 0x00000001, pname: loader, tid: 0000000000000000, kpobj: fff75ea0
pid: 0x00000002, pname: pm, tid: 0000000000000000, kpobj: fff76110
pid: 0x00000003, pname: sm, tid: 0000000000000000, kpobj: fff76380
pid: 0x00000004, pname: pxi, tid: 0000000000000000, kpobj: fff765f0
pid: 0x00000005, pname: ns, tid: 0004013000008002, kpobj: fff76860
pid: 0x00000006, pname: ptm, tid: 0004013000002202, kpobj: fff76ad0
pid: 0x00000007, pname: cfg, tid: 0004013000001702, kpobj: fff76d40
pid: 0x00000008, pname: gpio, tid: 0004013000001b02, kpobj: fff76fb0
pid: 0x00000009, pname: i2c, tid: 0004013000001e02, kpobj: fff77220
pid: 0x0000000a, pname: mcu, tid: 0004013000001f02, kpobj: fff77490
pid: 0x0000000b, pname: pdn, tid: 0004013000002102, kpobj: fff77700
pid: 0x0000000c, pname: spi, tid: 0004013000002302, kpobj: fff77970
pid: 0x0000000d, pname: ps, tid: 0004013000003102, kpobj: fff77be0
pid: 0x0000000e, pname: ErrDisp, tid: 0004003000008a02, kpobj: fff77e50
pid: 0x0000000f, pname: menu, tid: 0004003000009802, kpobj: fff780c0
pid: 0x00000010, pname: hid, tid: 0004013000001d02, kpobj: fff78330
pid: 0x00000011, pname: codec, tid: 0004013000001802, kpobj: fff785a0
pid: 0x00000012, pname: dsp, tid: 0004013000001a02, kpobj: fff78810
pid: 0x00000013, pname: am, tid: 0004013000001502, kpobj: fff78a80
pid: 0x00000014, pname: gsp, tid: 0004013000001c02, kpobj: fff78cf0
pid: 0x00000015, pname: qtm, tid: 0004013000004202, kpobj: fff78f60
pid: 0x00000016, pname: camera, tid: 0004013000001602, kpobj: fff791d0
pid: 0x00000017, pname: csnd, tid: 0004013000002702, kpobj: fff79440
pid: 0x00000018, pname: mic, tid: 0004013000002002, kpobj: fff796b0
pid: 0x00000019, pname: ir, tid: 0004013000003302, kpobj: fff79920
pid: 0x0000001a, pname: nwm, tid: 0004013000002d02, kpobj: fff79b90
pid: 0x0000001b, pname: socket, tid: 0004013000002e02, kpobj: fff79e00
pid: 0x0000001c, pname: http, tid: 0004013000002902, kpobj: fff7a070
pid: 0x0000001d, pname: ssl, tid: 0004013000002f02, kpobj: fff7a2e0
pid: 0x0000001e, pname: cecd, tid: 0004013000002602, kpobj: fff7a550
pid: 0x0000001f, pname: friends, tid: 0004013000003202, kpobj: fff7a7c0
pid: 0x00000020, pname: ac, tid: 0004013000002402, kpobj: fff7aa30
pid: 0x00000021, pname: boss, tid: 0004013000003402, kpobj: fff7aca0
pid: 0x00000022, pname: act, tid: 0004013000003802, kpobj: fff7af10
pid: 0x00000023, pname: news, tid: 0004013000003502, kpobj: fff7b180
pid: 0x00000024, pname: ndm, tid: 0004013000002b02, kpobj: fff7b3f0
pid: 0x00000025, pname: nim, tid: 0004013000002c02, kpobj: fff7b660
pid: 0x00000026, pname: dlp, tid: 0004013000002802, kpobj: fff7b8d0
pid: 0x0000002b, pname: niji_loc, tid: 0004000000175e00, kpobj: fff7bb40
pid: 0x0000002c, pname: nfc, tid: 0004013000004002, kpobj: fff7bdb0
pid: 0x0000002d, pname: ro, tid: 0004013000003702, kpobj: fff7c020
end of process list.
finished
Start dialog
finished
finished
Test if dialog has started
packet: cmd = 9, dataLen = 4
finished
Continue dialog
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Egg received
Exit dialog
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Dialog finished
finished
Start dialog
finished
finished
Test if dialog has started
packet: cmd = 9, dataLen = 4
finished
Continue dialog
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Egg received
Exit dialog
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Dialog finished
finished
Start dialog
finished
finished
Test if dialog has started
packet: cmd = 9, dataLen = 4
finished
Continue dialog
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Egg received
Exit dialog
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Dialog finished
finished
Start dialog
finished
finished
Test if dialog has started
packet: cmd = 9, dataLen = 4
finished
Continue dialog
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Egg received
Exit dialog
finished
finished
finished
finished
packet: cmd = 9, dataLen = 4
finished
Dialog finished
Walk to Nursery
finished
packet: cmd = 9, dataLen = 4
finishedfinished
Current position X: 5825,976
Walk to door
finished
packet: cmd = 9, dataLen = 4
finishedfinished
Current position Y: 3160,337
finished
finished
packet: cmd = 9, dataLen = 4
finished
Current position Y: 2275
Walk to desk
finished
finished
packet: cmd = 9, dataLen = 4
finished
Current position Y: 2037,732
Walk to computer
finishedfinished
Current position X: 0
Move right
packet: cmd = 9, dataLen = 4
packet: cmd = 9, dataLen = 4
finishedfinishedfinishedfinished
Current position X: 2303,026
Move left
Move up
finishedfinishedfinishedfinished
packet: cmd = 9, dataLen = 4
finished
Current position X: 2255,785
Move left
Move up
finishedfinishedfinished
packet: cmd = 9, dataLen = 4
finishedfinished
Current position X: 2192,726
Turn on computer
finished
finished
Test if computer is on
packet: cmd = 9, dataLen = 4
finished
Read pokémon from box 2, slot 14
packet: cmd = 9, dataLen = 232
finished
Select Egg
finished
Move Egg
finished
Release Egg
finished
Read pokémon from box 2, slot 15
packet: cmd = 9, dataLen = 232
finished
Select Egg
finished
Move Egg
finished
Release Egg
finished
Read pokémon from box 2, slot 16
packet: cmd = 9, dataLen = 232
finished
Select Egg
finished
Move Egg
finished
Release Egg
finished
Read pokémon from box 2, slot 17
packet: cmd = 9, dataLen = 232
finished
Select Egg
finished
Move Egg
finished
Release Egg
finished
Read pokémon from box 2, slot 18
packet: cmd = 9, dataLen = 232
finished
Select Egg
finished
Move Egg
finished
Release Egg
finished
Exit from PC
finished
finished
Test if out from PC
packet: cmd = 9, dataLen = 4
finished
Reading egg located at box 2 slot 14
packet: cmd = 9, dataLen = 232
finished
Analyze pokémon using filter # 1
Shiny: FAIL
Nature: PASS
Ability: PASS
Hidden Power: PASS
Gender: PASS
Hit Points IV: PASS
Attack IV: PASS
Defense IV: PASS
Special Attack IV: PASS
Special Defense IV: PASS
Speed IV: PASS
Perfect IVs: PASS
Reading egg located at box 2 slot 15
packet: cmd = 9, dataLen = 232
finished
Analyze pokémon using filter # 1
Shiny: FAIL
Nature: PASS
Ability: PASS
Hidden Power: PASS
Gender: PASS
Hit Points IV: PASS
Attack IV: PASS
Defense IV: PASS
Special Attack IV: PASS
Special Defense IV: PASS
Speed IV: PASS
Perfect IVs: PASS
Reading egg located at box 2 slot 16
packet: cmd = 9, dataLen = 232
finished
Analyze pokémon using filter # 1
Shiny: FAIL
Nature: PASS
Ability: PASS
Hidden Power: PASS
Gender: PASS
Hit Points IV: PASS
Attack IV: PASS
Defense IV: PASS
Special Attack IV: PASS
Special Defense IV: PASS
Speed IV: PASS
Perfect IVs: PASS
Reading egg located at box 2 slot 17
packet: cmd = 9, dataLen = 232
finished
Analyze pokémon using filter # 1
Shiny: FAIL
Nature: PASS
Ability: PASS
Hidden Power: PASS
Gender: PASS
Hit Points IV: PASS
Attack IV: PASS
Defense IV: PASS
Special Attack IV: PASS
Special Defense IV: PASS
Speed IV: PASS
Perfect IVs: PASS
Reading egg located at box 2 slot 18
packet: cmd = 9, dataLen = 232
finished
Analyze pokémon using filter # 1
Shiny: FAIL
Nature: PASS
Ability: PASS
Hidden Power: PASS
Gender: PASS
Hit Points IV: PASS
Attack IV: PASS
Defense IV: PASS
Special Attack IV: PASS
Special Defense IV: PASS
Speed IV: PASS
Perfect IVs: PASS
Retire from computer
finishedfinished
Current position X: 0
Move right
packet: cmd = 9, dataLen = 4
packet: cmd = 9, dataLen = 4
finishedfinishedfinishedfinished
Current position X: 2097,805
Retire from desk
finished
finished
packet: cmd = 9, dataLen = 4
finished
Current position X: 5841,401
Retire from Nursery
finishedfinished
packet: cmd = 9, dataLen = 4
finished
Current position Y: 3442,899
Walk to Nursery Lady
finishedfinished
packet: cmd = 9, dataLen = 4
finished
Current position X: 6005,834
finished
Error detected
Bot stop
 

Real.96

Well-Known Member
Member
Joined
Sep 14, 2015
Messages
1,055
Trophies
0
Age
28
XP
965
Country
Italy
Hey @drgoku282 look at this:

I have an idea on how to find the addresses for Alola forme and gender but don't know when I'll have the time to do it.

Essentially it boils down to getting into a battle with a wild Alola forme Pokémon, dumping the RAM, then catching the Pokémon and saving its data as an PK7 file via PKhex, then search for that Pokémon's data in the RAM dump to find the offsets for all the other data. I'll try this out when I have time if someone does not beat me to it.

In that way we can find also IVs addresses of opponent pokemon!
 

Dasfilth

Active Member
Newcomer
Joined
Nov 20, 2016
Messages
27
Trophies
0
Age
33
XP
155
Country
United States
Are there any plans to make this have 100% programmable input? I'm interested in using the bot features to do a TAS.
 

drgoku282

Well-Known Member
OP
Member
Joined
Oct 16, 2014
Messages
427
Trophies
0
Age
31
XP
724
Country
Mexico
In RAM as well? How are we able to manipulate the species and level of a met Pokémon if it's encrypted? How about the other games like XY and ORAS?

Yes, all pokémon data is encrypted in RAM using the same method as if they were in the boxes, so it can be decrypted in the same way, the problem is finding the offset. I have no idea how species manipulation works.

In Gen 6 when you press the dump button for trade or opponent dump, it searches for a common pattern in a region of memory of 0x1FFFF bytes, after it finds the pattern, the program takes the encrypted pokemon data from a relative offset after the pattern.

It seems in Gen 7 trade data dump is a bit easier because it is located in a fixed position, haven't tested it yet.

Are there any plans to make this have 100% programmable input? I'm interested in using the bot features to do a TAS.

If you want any kind of reliable movement, then this won't work, remote control has a terrible amount of lag and it can even ignore commands sometimes, that's why I need to read the player's position or whatever is shown on screen every time I send a command. Try the gen 7 breeding bot to see the problem, all control stick commands are sent in a fixed interval but the result is different every time.
 

Dasfilth

Active Member
Newcomer
Joined
Nov 20, 2016
Messages
27
Trophies
0
Age
33
XP
155
Country
United States
If you want any kind of reliable movement, then this won't work, remote control has a terrible amount of lag and it can even ignore commands sometimes, that's why I need to read the player's position or whatever is shown on screen every time I send a command. Try the gen 7 breeding bot to see the problem, all control stick commands are sent in a fixed interval but the result is different every time.

Ah, okay. I'll likely launch a project on github soon for a general TAS bot soon, then. I'm actually interested in the general functions to do a Zelda MM TAS on console. Thanks for the answer, and good luck with this project. I'm trying it out right now, I love it.
 
Last edited by Dasfilth,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • RedColoredStars @ RedColoredStars:
    There is zero instacart delivery to here. No door dash. No Uber. Notta. Its a small farming community
    +1
  • Sicklyboy @ Sicklyboy:
    eagerly awaiting 4x 8TB HDDs to get delivered today
  • RedColoredStars @ RedColoredStars:
    So I drive the 30 miles there, spend $100-$150 on groceries, and drive back home. Still saved $$$ after gas over shopping locally.
    +1
  • K3Nv2 @ K3Nv2:
    You'd think you could make deals with local farmers
  • AncientBoi @ AncientBoi:
    :unsure::unsure::unsure: I could make a killing there doing instcart there :D @RedColoredStars
  • RedColoredStars @ RedColoredStars:
    It makes the trip even more worth it if I'm out of my medication and need to stop by the medical dispensary. I try to line the two up to avoid extra trips.
    +1
  • RedColoredStars @ RedColoredStars:
    @AncientBoi, Except the town is pretty MAGA infested. People still flying TRUMP 2016 flags all over. They didnt get the memo the year changed since then. lol.
    +1
  • RedColoredStars @ RedColoredStars:
    They passed a city ordinance last month. No smoking cannabis in public. Not even eating gummies. $300 fine and misdemeanor charge if caught. People can walk down the street smoking cigs and tossing the butts all over, but God forbit someone take a couple puffs of their medication.
    +1
  • RedColoredStars @ RedColoredStars:
    First off, it's recreationally legal here. Secondly, I have a prescription from my doctor and approved by the state. But still a fucking criminal.
    +1
  • RedColoredStars @ RedColoredStars:
    Like at bars. Cant sit outside even in the smoking section and take a few puffs. Yet I have to breath the cig smoke from 20 people chain smoking all night in every direction around me.
  • K3Nv2 @ K3Nv2:
    Honestly I feel like Trump is going to crush Biden just because of the trial
  • RedColoredStars @ RedColoredStars:
    They cite
    public health and safety concerns" LMAO!!! Yet they do nothing about the poison drinking water quality.
  • K3Nv2 @ K3Nv2:
    The look at how they treated me card is powerful within dumb voters
  • RedColoredStars @ RedColoredStars:
    A Trump win is certainly a possibility. If he's reelected, 4 more years then no one has to worry about him being president ever again. I survived last time, I'll survive it if there's a next time. Don't know how anyone could vote for the guy, but I'm also not anyone else but me.
    +1
  • K3Nv2 @ K3Nv2:
    Honestly things were cheaper with Trump but that's tounge and cheek could be exactly the same outcome if he won reelection
  • RedColoredStars @ RedColoredStars:
    All of the fake "Christians" vote for him even though he's broken like 8 of the 10 commandments... that we know of. Maybe all 10. LOL
    +1
  • K3Nv2 @ K3Nv2:
    A president is just a public figure within America
  • K3Nv2 @ K3Nv2:
    South park put it will there's always a bite between a turd sandwhich or a giant douce
    +1
  • RedColoredStars @ RedColoredStars:
    I like when he says stuff like "They are preventing me from talking!!!" Wait. What? You mean the person that is literally talking right now.. is being prevented from talking? LOL! Gag order also does not apply to taking the stand. He's free to say whatever he'd like. lolol
    +1
  • NinStar @ NinStar:
    holy fuck this discsussion sucks, where are my sisters
  • K3Nv2 @ K3Nv2:
    Well if it sucks stop blowing turd sandwhich
    +1
  • Xdqwerty @ Xdqwerty:
    @NinStar, convince your parents to make a sister for you
  • NinStar @ NinStar:
    parents? what parents?
  • K3Nv2 @ K3Nv2:
    People who screwed each other to make you
    +1
    K3Nv2 @ K3Nv2: People who screwed each other to make you +1