Jump to content

Kaphotics

Helpful Member
  • Posts

    6897
  • Joined

  • Last visited

  • Days Won

    324

Everything posted by Kaphotics

  1. Getting to your question now that I have documented a lot of new stuff Map 319 corresponds to Route 2. Thus Line 319 of zonedata will contain the script reference at 0x3BD0 of the zonedata narc. "00 01 06 00 00 00 7E 02 7F 02 5F 01 0E 04 0F 04 10 04 11 04 4E 00 3F 01 3F 01 0F 04 40 00 00 EC 00 00 00 00 FA 02 00 00 00 00 00 00 91 02 00 00" As you can see, it's referencing scripts 027E and 027F (638 and 639). So, if you have an object on overworld_319, it would access the script index number of scriptfile_638. Answered! That's half the puzzle so far (what scripts an overworld map uses, thus where to edit); we still need to know HOW to edit the scripts! slightly related tangent: I'm sure that a lot more cool stuff can come from editing the zonedata!
  2. Oh, I just pasted the darmanitan data starting at it's dex #. the whole string was "78 01 2B 02 23 00 20 80 7B 01 23 80 09 00 23 80 08 00 01 00 11" From the overworld data I just searched for the nearest 2B 02, and ^ came up. Once I saw the 78 01 right before it, it hinted that it could be right, so I went with it and found that data in the ROM, and it ended up being in a/0/5/7-316. Just updated the post about 0x013C about how I couldn't find it in a/1/2/5... Copying the zonedata from the RAM as it contained the data for the script number, and look for it in the ROM/narcs. "00 10 16 00 67 00 3C 01 3D 01 A6 00 36 04 36 04 36 04 36 04 08 00 9E 00 9D 00 22 04 00 00 40 6D 67 00 00 00 05 00 00 00 00 00 00 00 04 00 00 00" is at 0x0225B92BE for a total size of 30 bytes. Andibad noted that "zonedata" is a/0/1/2 in this thread. This data I found is indeed at a/0/1/2, which is one large file. Looks like this controls the selection of data like scripts, pads, (encounter slots?) etc. a/0/1/2 IS A VERY IMPORTANT FILE. View as 48 bytes each, 427 lines. Remember that a/1/2/5 has 427 files? Each line corresponds to a certain overworld file! Back checking now, we have our Desert Resort data at 0x1DA0, which is line 158. Bingo. So now you can get a list of what map overworlds reference what scripts. lolol Now we know the meaning of the zonedata narc and part of it's structure; it determines what map uses what script! Now that's one structure that would be VERY useful to catalog and have an editor for!
  3. I'm not really keen on ROM editing; I tend to stick with sav/RAM editing myself. As such I try to edit these scripts in game -- the best (and only) time to apply these changes is when the overworld loads. The overworld won't re-load if you view the party screen, so you have to physically leave the map. I'll be taking a RAM editing approach instead of ROM editing, however it should be easy to apply the following to the ROM instead. Since I don't know how this stuff works at all I might as well catalog my learning process. setup & learning the ropes: I was able to find Drayano's example Desert Resort overworld at the offset 0x02250244 in my unmodified copy of English White. This area is right after eventdata_system.c, so we know this is the right place. (0x02250000). now, I just start toying with the scripts that are loaded, by applying a cheat code right before the game interprets the script to show what's on the overworld. I apply an internal code of 13631494 (dec, which is 00D00006) at 02250244 to change up the sprite that's loaded. shazam, I can edit the scripts without editing the ROM directly. Much quicker than editing the ROM in my opinion. So now that I've explained that, we can see that the overworld is present here and can be changed, but that stuff is already known. establishing that this is the a/1/2/5 overworld data file: now, by copying and searching, we see that the ROM mirrors the RAM: 0x02250114 (RAM) 0x083B4400 (ROM) - starting data - AC 04 00 00 04 1C 03 02 So, we now know that this data is loaded from the a/1/2/5 narc, but which file? 158, the map ID! duh... Ok, so the map event file is loaded into the memory, and it then calls for reference scripts. That's the ultimate goal. Script File and Memory Locations So, we know that Darmanitan is what you encounter from the statue. So, knowing that it has to call the Pokemon Index Hex (0x022B) to get one to appear and the memory has to have the Scripts loaded already, we look for Darmanitan's hex further in the memory. I find 2B 02 23 00 20 80 7B 01 23 80 09 00 23 80 08 00 01 00 11 later on, and search for that in a/0/5/7. Found a match in file 316. We find the 78 01 pokemonhex for each of them, so this is the right file. Note that the entire script file for the map is loaded at offset 0x0225CB44 (there's a pointer at 0x0225C614 that points here). However, this isn't what we're looking for. We instead look for 0x013C (the Script File number) after the overworld data. We find it at 0x022592C2. Change this on the fly, and you access different scripts! Ok, so that's pretty cool. But just for fun, what's around this area? "zonedata.c", cool. Lets corrupt some crap. Went into the ruins, and encountered a Pokemon. yeeeeeee. Changed up the pads of WILD POKEMON. Zone data! Back to our intentions: The overworld data has to point to the script file somehow. We know that overworld_158 must point to script_316. So we search for 3C 01 in the overworld file... not found. well fuck, gotta figure out wat do.
  4. better late than never on a response I used Pokesav which gave me the MXYZ coords of the save file, then searched for them in the memory when I entered the game. Moved around -> save -> get MXYZ -> search again. Ended up with the offsets I needed. Usually you can do "different by 1" for each step and you'll eventually get a list of locations to narrow down by hand. Finding other offsets is just a memory search on certain values you expect to be related to what you want... then you corrupt them and see what they do!
  5. this is pretty much untouched as people haven't really investigated like they've done in gen3/4. i'll help later today and over the weekend, I'm actually kinda interested in this drayano and others have done some work on 0/5/7, I think that understanding the format of the script narc first will help understand the overworld->script fetch http://projectpokemon.org/forums/showthread.php?21828-Moving-Stationary-Pokemon-B-W http://projectpokemon.org/forums/showthread.php?15806-NPCs-Giving-Multiple-Items http://projectpokemon.org/forums/showthread.php?17968-List-Hex-for-each-pok%E9mon-in-a-0-5-7&p=136085&viewfull=1#post136085 http://projectpokemon.org/forums/showthread.php?22329-Pok%E9mon-Black-and-White-Script-NARC as drayano said, using a Lua script to quickly fetch overworld position & map is verrry helpful. the script setup might be very similar to gen 4 as BW is essentially the same engine.
  6. transfer something to gen 4 or 5 and upload to pokecheck. we can't check with just that.
  7. pman1117, this thread is not to figure out why you can't pass the legality check -- it's to report things that are improperly reported illegal. To the two above posters with evolved Pokemon failing: A recent change in the LA is making it come up hacked. They are legal (and legitimate) encounters, and it should be eventually fixed. -- for the record, Zelen's pre-Evolved Haxorus as an Axew, which passes (currently private).
  8. quite the bump nick/xFFFF/0000.../xFFFF iirc
  9. The IV total is on the nidoran-m is very very close to flawless (5 stats >=30), however the female has a few imperfect stats. The "is likely edited or RNG abused" only appears when there are multiple flawless stats. There is no way to tell a lucky soft reset from a RNG/edit. "Likely" != what happened, which is the case for you
  10. Scyther has PIDIV of a wild Pokemon, thus it wasn't from an egg. Hack getting flagged as a hack; working as intended.
  11. this thread is about assigning different pre-existing music to a trainer, not assigning new music. there's a few guides on how to loop sseq's (I know pokecommunity has one), so look there; change the bpm in your midi editor (fl studio etc)
  12. <p><p><p><p><p><a href="<a href="<a href="<a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a>" rel="external nofollow"><a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a></a>" rel="external nofollow"><a href="<a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a>" rel="external nofollow"><a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a></a></a>" rel="external nofollow"><a href="<a href="<a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a>" rel="external nofollow"><a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a></a>" rel="external nofollow"><a href="<a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a>" rel="external nofollow"><a href="<a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a>" rel="external nofollow"><a href="<a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a>" rel="external nofollow"><a href="https://dl.dropbox.com/u/12206225/Woobat.pkm" rel="external nofollow">https://dl.dropbox.com/u/12206225/Woobat.pkm</a></a></a></a></a></a></p></p></p></p></p>

  13. In your case you have strain 1 with 2 days duration on your Drilbur -- when it is cured it turns to 1.0, default=strain1. Strain duration is determined as strain%4+1... 1%4+1=2, so it's a typical gen 5 infection, however strain 1 is just the default strain that AR codes/sav editors use. Light Orange messages are just cautions, not implying something is illegal.
  14. no. Legal.exe is for gen 4 only and can be usable offline; however it is very limited compared to Pokecheck.
  15. I downloaded the wondercard you contributed and checked this is the first card where 0x3C doesnt match 0x5B that isn't an egg looks like whoever made the card (official?) didn't match up the egglevel and metlevel. could be either a bad card or just an oversight on the event's side. right now we're figuring out why, because PokeGen and Pokecheck say it's @ level 100 when in actuality the level is used from 0x5B k Pokecheck is fixed
  16. edit: nevermind, we have some re-naming of hex meanings to do this is the first card where 0x3C doesnt match 0x5B that isn't an egg
  17. But why would you use the public computers to edit save files or generate AR codes? You can't install programs on them to get codes/saves transferred... slightly related to ibac's statement: In my university's engineering computer lab at they all run XP; the computer science facility used XP as well, but I last was there a year ago. I say you drop XP support but still have a (stable) version downloadable that works for XP -- just never updated kind of like what was done for vers 2.312 or whatever. If XP is holding you back, drop it!
  18. offset range: 0x76000-0x7C204, checksum at 0x7C208 unova starter .pds (pokedex skin) haven't done anything with it, just noting that when corrupting this region the dex skin is deleted if I transplant the data of an active dex skin to another with the data included afterwards, the save file deletes itself, so there's other stuff that has to be overwritten, just like the cgear skin; however I'm not really interested in pursuing this further ---- I should also mention that Musical data is in the 0x56000~0x76000 region of the save file. Pretty much all the DLC including battle videos is at the end of the save file. (so far I've seen it as mystery gift -> ??if anything?? -> battle videos -> cgear -> musical -> pdex -> ???) ---- not really dlc, but another observation battle competition (wifi/IR tournaments) are in the 0x20100(?)~0x209FF region it's easy to find this data in the RAM and re-register for a tournament if you un-register via a one byte AR code (not posting that for obvious reasons)
  19. Kaphotics

    PKM Conversion

    enciclopedia pokemon, pokebox gba, ciros pokemon maker etc
  20. Secret ID 12345 really now... egg pokemon when generated have trash bytes. make sure they have the right trash bytes; you didn't even terminate their name field anyways. http://projectpokemon.org/wiki/Trash_Bytes
  21. rng helper -- very old version. see first post for most up to date -- RNG location for current game (English White) local rng=0x02216244 -- setup terminology abbreviations local rshift=bit.rshift local mdword=memory.readdwordunsigned -- setup initial variables = 0, rest of script detection will take care of them local initl=0 local inith=0 local adv=0 local total=0 local last=0 local jump1=0 -- setup frame detection function function next(s) local a=0x6C07*(s%65536)+rshift(s,16)*0x8965 local b=0x8965*(s%65536)+(a%65536)*65536+0x00269EC3 local c=b%4294967296 return c end -- Lua script begin! while true do -- setup every loop seed2=mdword(rng+4) seed1=mdword(rng) adv=0 test=last -- display seeds every loop gui.text(1,10,string.format("Current: %08X%08X",seed2,seed1)) gui.text(1,180,string.format("Initial: %08X%08X",inith,initl)) gui.text(180,10,string.format("Delay: %d", mdword(0x023FFC3C))) gui.text(1,170, string.format("M: %d, X: %d, Y: %d, Z: %d", memory.readword(0x0224F92C), memory.readword(0x0224F932,2), memory.readword(0x0224F93A), memory.readword(0x0224F936))) -- copied from map coord Lua -- check to see if the RNG advanced from the last value while seed1~=0 and seed2~=0 do if adv>200 then -- RNG advanced a bunch. Reset script then stop loop. print(""..string.format("Detected a reset or massive advancement. Re-initializing.")) adv =0 total=0 jump1=0 initl=mdword(rng) inith=mdword(rng+4) print(""..string.format("Session Initial Seed: %08X%08X",inith,initl)) break elseif test~=seed1 then -- RNG advanced at least once. Lets advance once and repeat the loop. test=next(test) adv=adv+1 jump1=adv elseif test==seed1 then break -- last frame's advanced RNG value matches the current. Stop loop. end end -- advancement tracking total=adv+total gui.text(1,19,string.format("Frame: %d", total)) gui.text(1,28,string.format("Jump: %d", jump1)) last=seed1 emu.frameadvance() end main use is that it tracks RNG frames after keeping the seeds from the moment the script starts. it grabs the initial seed when the game is reset, or the first seed it can find and keeps it stored as long as the script runs. I may have it write the initial seeds it gets to somewhere so that upon loading a save state it can find and re-determine the frame (session preservation), but this was just for fun
  22. http://www.mediafire.com/?0gmiezri2d1 look harder [Edit by evandixon] I don't like MediaFire. It failed multiple times and pretended to be my virus scanner. So here's a mirror: http://www.uniquegeeks.net/Enciclopedia Pokemon - English.rar. I would have attached a mirror, but the forum won't allow anything larger than 1 MB (the file is 1.5 MB), and it also won't allow a 7zip file.
  23. beats me, make em really wide and just search the full value of the initial seed instead. Pause the game once the PRNG location is set, enter it correctly and you should get your parameters once the search ends. I've hardly RNG'd on an emu this gen -- almost all of my time emulator RNGing has been on gen 4.
×
×
  • Create New...