Jump to content

matix2267

Innovator
  • Content Count

    21
  • Joined

  • Last visited

Community Reputation

10 Good

About matix2267

  • Rank
    Researcher - Game Save
  • Birthday 09/10/1993

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. When I've been researching this part for some reason I thought this value only represents the number of stackable items (gravelerocks, sticks etc.). I will change it with next update (no ETA at the moment, and I'm not really sure what will that change be). I was hoping to some day work on supporting other game versions but that would be really a lot of work and I don't have that much time right now. It's good to hear that you find the program useful The cap can't be INT_MAX because this value has only 11 bits available in the save so maximal value would be 511 (this means that you can't have seen it at 2 billion ). I should perhaps make the GUI change so that when one is editing a box the number spinner should change to some drop-down list of all items.
  2. Shameless plug: If you only want to edit PMD Sky saves and it's European version then I recommend my own tool It has a few more features but unfortunately only supports that single game version (I might work on supporting other versions if I have time). Wait, do you really expect Evandixon to fix your save? You should always MAKE BACKUPS before editing, this can't be stressed enough, mistakes happen and can easily break your save. If you don't have your own backup then that's your own fault not dev's.
  3. I have the same indices as you for the pokemon IDs so we read data from the same place Since Ditto's transform changes attacks there should be a second place where attack data is stored (one for Ditto and the other for transformed pokemon), but I don't have much time to test it right now. As you might have already noticed there's actually three sets of held items 50 items each: main story, special episodes, and friend rescue (no padding between them and right after those starts kangaskhan storage). Similar thing for the active pokemon data although there are 81 bit padding between those since they are 2265 bits apart and pokemon data is only 4*546 = 2184 bits long, I have no idea what that padding is. For the money it is even weirder since there's no padding between main story held money and special episode held money, but between special ep. and friend rescue held money there's 14 bits of padding (it's not another money thing since that is 17 bits long) and then there's another 7 bits padding before stored money. One thing I noticed is that the last part of save (the very short one that starts after quicksave data) is changed when you start friend rescue and is cleared when you finish it (when Pelipper says "I must save your game").
  4. New version Changelog: v0.8j: can now edit egg in Chansey's Care (i forgot to upload this version, sorry for that) v0.8k: - implement friend rescue request parsing (no GUI yet) - implement friend rescue team, items and money editing (can be used to edit quicksaved rescue progress) download in main post
  5. I'm using gradle now to manage dependencies (currently only one). Side effect of this change is different way of launching SkyJEd: Windows: double-click on bin/SkyJEd.bat. Unix: run: './bin/SkyJEd' from your favorite shell. New GUI (DesignGridLayout) should be much more usable and have less bugs. Most windows are now resizable and I can once again use native look&feel. There is still one issue with buttons not sticking to the bottom. If I broke anything or you have any suggestions, please tell me. Changelog: v0.8g: use gradle for distributions (this is so that I can easily add dependencies to project) v0.8h: use DesignGridLayout for GUI (much simpler and better overall, windows are now resizable and do not get jumbled on different platforms) v0.8i: restore native look&feel (removed in v0.2c due to GUI bugs)
  6. v0.7e: - huge refactoring (use actions and .properties files) - preserve trash bytes (not editable yet) - preliminary support for better character encoding (currently characters are not 1:1 mapped between Unicode and PMD) v0.8: - researched some unknowns in pokemon data (evolution level & tactics) - better character encoding & editing of trash bytes (with colors) Please tell me if I broke anything.
  7. It's been over a year since I started this project and I have been very busy lately so this project wasn't updated for quite some time, but I'm back to tell you that throughout the last few months I have been checking this thread often to see if there are any questions, problems or feature requests. New version v0.7d: - updated resources (some location & IQ skill names) - added Croagunk swap shop stock editing Also I'd like to know if there's any feature you guys would like to see, please post about it. Things from the top of my head that might be interesting: - GUI improvements: - edit streamlining (drag&drop, hot-keys, sort/auto manage) - graphics for pokemon/items, possibly overview mode (like in PC storage in main pokemon series) - satus bar to show non-important messages (like "saved" after clicking to save (currently there's no confirmation that it was successful)) - notification about unsaved changes when closing program - notification/tooltip/color/anything when editing stored pokemon that is actually active (possibly link edits) - more editing options for quicksave data: - restore resumed quicksave - dungeon tile editing - reverse engineering all the unknown values in quicksaved pokemon - more editing options for main data: - taken jobs, bulletin boars, bottle, Spinda cafe client, friend rescue requests - storyline data (new game+?) - others? - different versions (these would be huge undertaking): - Time/Darkness - Red/Blue rescue team - auto update
  8. You can remove your partner from active pokemon using my editor (open file, click "Active Pokemon", right click your partner and "clear"). You can do this even without having Chimecho assembly yet. Didn't test if there are any drawbacks, the only things I can think of is that you might be unable to add your partner back until you beat the game and it's also possible that the first pokemon you recruit might be misinterpreted as your partner (I think those have very low probability because this game has good error checking).
  9. So apparently DeSmuME 0.9.10 has broken raw save file loading (the ones without extra 122 bytes at the end), and since SkyJEd doesn't add those extra bytes DeSmuME has trouble loading edited saves. You may need to revert to 0.9.9 or use "File->Import Backup Memory" to properly load it. I'm working on a quick-fix for this EDIT: implemented in v0.6b, can't attach it for now because something is buggy with forums EDIT2: attached finally, see main post. More info here: http://forums.desmume.org/viewtopic.php?id=9896
  10. I don't have TD to test, but in Sky it is this bit that marks removed pokemon (the game always moves everything after released pokemon back one place and the last pokemon gets duped but has that one bit reset (level stays the same)). I also checked that zeroing this bit anywhere in the middle of Chimecho assembly works fine -- the pokemon gets removed (which is not true for items, mixing valid and invalid items would screw things up), it is also possible to have valid lvl 0 pokemon.
  11. I think it's actually 0x1c188-0x1c189 (remember that the game stores everything in little endian) and it should be 10 bits long (like the other hp fields), it's only that it starts at byte boundary. I'll investigate that a bit more. You're right that hp1 is current hp (updated when entering the floor) but hp2 is actually base hp (without bonuses like Brick-Tough IQ skill). Thanks for info about those 50 items. It's funny because you can't enter dungeons if you have more than 48 items, though the game gives no error about it. Quicksave data starts at 102400 bytes and is 22528 bytes long. First four bytes are checksum (standard format), the next few bytes (8?) look like magic number (it repeats a few times throughout the data). EDIT: Starting at 0x1C170 bytes there are 20 pkmn each 429 bytes(!) long. First 4 pokemon is party, the next 16 slots are for enemies. Bytes 0-1 are always 0xAA, 0x55; bytes 10-11 species id, 12-13 again species id (why is it duplicated?), 18 is lvl, 24-25 current hp, 26-27 base hp, 28-29 seems to be hp boost (it's 10 with Brick-Tough IQ skill), 32-35 stats (atk, spa, def, spd -- standard order), 36-39 current exp. Bytes 337-360 are attacks, each 6 bytes long: flags (1 byte same as in SkyAttack/SkyAttackEx class), unknown (1 byte), id (2 bytes), pp (1 byte), ginseng (1 byte). Bytes 69-76 might be current position but IDK why it's duplicated 4 times. EDIT2: New version v0.5c: - you can now edit number of adventures had - added editing active pokemon to GUI (codebase was ready from v0.2c) - added loading/storing of quicksave data, no features yet except fixing checksum EDIT3: New version v0.6: - huge GUI refactoring - implemented editing pokémon from quicksave
  12. Thank you for sticking this thread Evandixon, it almost died since no one was actually using my editor but once you stickied this thread the download count skyrocketed. I have a new small update in v0.5b: - Held items in special episodes can now be modified - Fixed an exception when you click 'paste' but clipboard contents change and there's no pokemon/item in it anymore. There are many inconsistencies in how the game stores data, e.g. there are three different layouts for item data: held items have extended 33 bit format, shop contents use shorter 22 bit and Kangaskhan storage uses same 22 bit format but split into two 11 bit parts each in their own region (interleaved vs. planar). I still have not figured out where exactly is your current hp stored (probably in quicksave slot -- the one starting at 102400 (0x0400) bytes), the ones in PkmnEx are current max hp (after applying all bonuses from items/IQ) and base hp (same as in normal Pkmn structure). OTOH PkmnEx seems to store information about current leader. Another thing is that there are sometimes trash bytes after pokemon name (after '\0' so they are ignored). I have only been able to get them with special episode pokemon (slots 3-5). I hope they are unused, if you have those, they'll be cleaned by SkyJEd when you load&save your file (also you'll get a nice warning message about it). There's also question about how exactly does the game recompute those read-only values in adventure log (pokemon joined, kinds of pokemon battled, moves learned) and why does the game store those if they are ignored on file load (are they?). Also, could you check the map of seen pokemon that I mentioned in this post?
  13. I'm back and with another version. Changelog for v0.5: - Updated pokemon species list with special forms (thanks to WhatHappenedToStairs) - Huge usability bump: can now cut/copy/paste items and pokemon - App will now close when main window is closed
  14. Thanks, I have updated the special formes info based on this (didn't bother to check myself LOL) Try 228 for Primal Dialga (228 hex = 552 dec which is Primal Dialga's id). I'll be offline (or just lurking online) until September. I hope to see some new info when I return.
  15. Thank you WhatHappenedToStairs and Evandixon for that list of moves. Changelog for v0.4: - Added combo box for selecting attacks instead of choosing attack id. - Added adventure log read/write (not hooked into GUI). Some of values there seem to be read-only (the game recomputes them on start, need to find out how to actually change it) - Fixed a bug where empty name would not get saved. Internal changes: - Added LICENSE file to explicitly make this program open source. - Changed the way character conversion works. - Removed hackish way of forcing the unknown list in ManagePokemonWindow to wrap, instead I'm just splitting that list at some arbitrary point (it will need to be changed when we get to understand what those values are) ----- It seems that at 0x8A3F + 2bits begins a map of seen pokemon, next one starts at 0x8A8A + 2bits (exactly 600 bits after previous) and is 553 bits long but does not include all the pokemon from first map (mostly legendary pokemon are excluded but also for example Magnezone). My guess is that this is actually one list divided into male/female groups (adding 600 to id is how females are tracked in pokemon data too) but that doesn't explain why when you meet a pokemon both gender's flags are set at the same time (but only if that particular pokemon has genders). Can someone confirm that / shed some more light on that matter?
×
×
  • Create New...