Jump to content

Noirfasui

New Member
  • Posts

    5
  • Joined

  • Last visited

Posts posted by Noirfasui

  1. On 3/30/2024 at 11:00 PM, Noirfasui said:

    From 0x4E80 to 0x5DCA, there appear to be sequences that can be broken down to 4-byte units (though I am unsure if the data they encode is limited to 4 bytes). The first byte appears to increment by 0x0C from one sequence to the next. The second byte appears to increment by 1 every ~0x16 bytes. The third and fourth bytes appear to always be 0.

    I just figured out what this part is yesterday without testing. I should've tried to see if this was some sort of pattern earlier, but this section is for specifying the Wild Pokémon stat offsets above. The sequences can actually vary in size too, from 0x0C, to being 0x18 bytes (Maybe 0x24 bytes long actually???) long. For example, for Rough Tunnel, Venusaur has two sets of stats assigned to it, (how the game knows which set to use is determined elsewhere, see below) which makes its entry 0x18 bytes in length. However, for Pokémon not assigned Wild Pokémon stats (such as Ivysaur and Bulbasaur above Venusaur's entry) will have their entries empty as usual, only being 0x0C bytes long. (as far as I know) So for certain dungeons, not only do some entries range in size, but this makes the entire Pokémon Stats section vary in size across dungeons. It's unfortunately all inconsistent, but at least we know this stuff isn't entirely vague.

    The specified offsets start at the very beginning of the SIR0 file.

    Hex.thumb.png.bcd15a7fa694b1f18c1d86d4853cee1f.png

    And make their way through 981 entries it seems.

    Hex2.png.c69548376d5c898c1af8f1e5ea1d4fdf.png

    Looking at these images again...it seems like Venusaur's entry might be 0x24 bytes long, but with unused blank stats...because making a selection both at and after the SIR0 header at various points isn't adding up.

    As for how the game determines which set of stats to use, the byte after the Pokémon's level specifies which set to use.

    Hex3.thumb.png.4deae9a98c75ea1df5417609c3026205.png

    Notice how there's a 01 there rather than 00. Basically the reason multiple stats are used is because in high difficulty dungeons, the levels of Pokémon gradually increase. So, that needs to be accommodated by having their stats match that of what they would be at their current level.

  2. On 3/28/2024 at 5:17 PM, Altissimo said:

    Based on this, and based on some investigation of the file with the help of a friend, it appears to be the case that every floor has a listing of all 600 or 700 whatever Pokémon that are in the game, and then assigns each mon a spawn weight and a level. If the mon has 0 as a spawn weight, it won't be included in the floor. Am I correct in my understanding?

    Yes, not all Pokémon listed for a floor will be able to spawn. They need to have a spawn weight higher than 0.

     

    On 3/28/2024 at 5:17 PM, Altissimo said:

    There are 44/45 or something FF x12 strings, which means data for that many floors. Revelation Mountain doesn't have that many floors. How can I tell where the real floors are? (The same goes for the first SIR0 file, which has like 80-something floors in this file.)

    Floor progression is lined up and linear. The part you should pay most attention to is the dungeon data, since that ends up aligning with everything else. The excess data for Pokemon spawn data may be there for mission floors (which start at 1,000+ floors) or for unused floors in the dungeon that were never used for some reason. Dungeons never jump around to random floors, as far as I know right now. Even when accounting for Mysteriosity, dungeon progression is still linear and doesn't drop you back on a completely random floor in the original dungeon because the game keeps track of your progression.

    On 3/28/2024 at 5:17 PM, Altissimo said:

    From 0x4E80 to 0x5DCA, there appear to be sequences that can be broken down to 4-byte units (though I am unsure if the data they encode is limited to 4 bytes). The first byte appears to increment by 0x0C from one sequence to the next. The second byte appears to increment by 1 every ~0x16 bytes. The third and fourth bytes appear to always be 0.

    Yeah I have no idea what this part is.

     

    On 3/28/2024 at 5:17 PM, Altissimo said:

    Entries are 0x0B or 0x0C bytes long?

    They're 0x0C bytes long. Since this section is so empty it was hard to tell how long the entries were.

     

    On 3/28/2024 at 5:17 PM, Altissimo said:

    Is it the case that the 0x2000-0x4E7A section consists of 12-byte sections that contain stats for every pokemon, not identifying them by index number, but in the correct ordering of indices, and this is perhaps why the section is mostly 0's - stats are only provided for some Pokémon (those that appear in the dungeon)? If this is the case, are you aware of what the 0x4E80-0x5DCA section represents, by any chance? If I'm wrong, are you able to correct me as to how this data is organized?

    Finally, I needed that word, "Indices". I'm an amateur at this, so I don't know of the terminology when it comes to this file format, lol.

    Yes, this section contains stats for every Pokémon, which unfortunately assigns Pokémon stats via 12-byte Pokémon ID (https://projectpokemon.org/home/pokedex/pokemon/psmd/index-r13458/) indices (in order), not direct identification like the Pokémon spawn data does at 0x02 for each entry. It makes it super tedious to create custom dungeons, heh. At least this allows for more versatility. Since not every Pokémon exists in a dungeon, there's not going to be stat data for every one of them of course. (Maybe consider looking at dungeon_balance_198.bin since this dungeon contains a ton of floors and Pokémon data) I don't know what the 0x4E80-0x5DCA section represents yet. Needs testing.

    Pokémon without custom stats can still be added to the dungeon and spawn, but they give 9999+ EXP and may feel kind of weak since usually enemy Pokémon everywhere have hyper-inflated HP values.

     

    Also I've been thinking about trying to brute-force understand the item_arrange.bin manually, but also by making Kecleon Shops generate in certain dungeons they're not supposed to, because they can easily show me what items are capable of generating in a dungeon I think. Smoking Mountain for example has Fire Devices in it, but I've never seen one and it's one of my favorite post-game dungeons I like playing through.

  3. On 3/16/2024 at 11:24 AM, Altissimo said:

    In your Super Mystery Dungeon Balance.txt doc, in the Pokemon section, you note that FF (times 12) signifies the end of the "entire table entry". Does this refer to the end of the floor, or the end of some sort of subsection (like the Pokemon data)?

    Sorry for the poor wording. It signifies the end of the pokemon table for that floor, not the entire Pokemon section.

     

    On 3/16/2024 at 11:24 AM, Altissimo said:

    Is the ordering of the data in this document (dungeon metadata, Pokemon, Traps) the same as the ordering in a dungeon's file, and is there data between the end of one section and the start of another?

    Yes the ordering is mostly the same. But PSMD dungeons have an extra SIR0 file in them that's between the Pokemon data section and the Traps section.

    The order goes like:

    Dungeon Data

    Wild Pokemon Stats AND Pokemon Spawns, spawn rate, level, etc

    Unknown SIR0 file

    Traps Data

    So it's a total of 4 SIR0 files

    On 3/16/2024 at 11:24 AM, Altissimo said:

    Is this ordering consistently repeated for every floor in the dungeon within the same file? Is there data between the end of one floor's entry and the beginning of the next?

    There is data after @END but that part's for missions, like the ones from Gates to Infinity. It's unused in PSMD of course. But for Gates to Infinity there is random data after the Pokemon section and I'm not sure what it does. Same with PSMD.

    On 3/16/2024 at 11:24 AM, Altissimo said:

    What is the offset at which the dungeon floor data starts after the file's header?

    0x10

    On 3/16/2024 at 11:24 AM, Altissimo said:

    Do you know if item spawn information, for regular items, Monster Houses, or Kecleon shops, is contained within this file as well?

    Regular items spawns match that of Monster Houses. For Kecleon Shops, I have edited the items they could have but that only happened when I edited the compiled uncompressed dungeon_balance.bin directly. But I don't really know how items are determined for Kecleon Shops. As far as I know, items spawns are handled by the item_arrange.bin, which is a mess and hard to figure out.

    EditedItems.png.53b1a1f18f299ae904798cb942d3dd27.png

    The questions aren't stupid, these notes, especially the Dungeon Balance one, are super unfinished, and need more refinement overall.

  4. I intended to come back sooner to release more notes, but here I am before 6 months later at least! I have many more notes to share for Pokemon Super Mystery Dungeon, some of which were made easier to make due to (and based off of) the contributions of the people in this thread, thanks to Blue587 and Andibad! Some of their notes were used as a baseline for anticipation and fleshing out things further. I will go through each file with some explanations...

     

    This file was made without actually testing changes in-game and was mainly deciphered through extrapolation, and Abilities are largely not editable. However, ability_data_info.bin manipulates some aspects of Abilities thankfully, leading to softly modifying abilities being possible but very limited. Ability Data Info Notes.txt

    For information on the general rules for Dungeons, changing their info on the dungeon selection screen, and altering how they'll operate inside, these (incomplete) notes provide that. Dungeon Data Info Notes.txt

    This next one was a big undertaking. It took forever (like 2 weeks?) to get all the Map IDs named and carefully ordered. dungeon_map_data_info.bin handles dungeon scenery, music, environment types, dungeon layouts, etc. Basically the in-dungeon stuff, handling the generation and atmosphere, but not items or traps, I'll get to that in a moment. This file has 533 map ID entries, some of which are left over from Gates to Infinity. The other stuff besides the map ID entries are still somewhat unknown and incomplete. Dungeon Map Data Info Notes.txt

    Next file is the experience.bin, which of course handles Pokémon Experience and stats gained via leveling up. A guide is inside on where to find specific levels. Experience Notes.txt

    As for Move leveling, grade.bin handles this. Grade Notes.txt

    With the help of Andibad's notes, I made some notes for PSMD's act_data_info.bin. It's very incomplete unfortunately and needs a lot more testing and documentation of certain IDs. Act Data Info Notes.txt

    But finally, I can now get to the real deal. Huge thanks to Blue587 for me with this and making this possible, I finally have notes for PSMD dungeon_balance.bin. The file handles the meat of what's in and occurs in dungeons such as items, dungeon status, traps, water and lack thereof, Kecleon Shops, Monster Houses, Pokémon, etc, etc. This is pretty incomplete (and has some things that are actually untested, not unknown) but not so much so that you can't make substantial changes. The special generation, chance, and frequency of things in dungeons can be easily edited. But for Pokémon, adding them in and modifying their attributes can be challenging and tedious. To zoom out a bit, these notes DO NOT document the raw dungeon_balance.bin. The dungeons inside must be extracted and decompressed. If you know how to do that, these notes will be usable. Super Mystery Dungeon Balance.txt

    Lastly, this an unrelated but a hopefully helpful consolidation of the additional effects moves can have since the chances can be different compared to the main Pokémon series. Bulbapedia doesn't provide info on chances for additional effects for Mystery Dungeon Games.  This lists the usual status conditions damaging moves can inflict, either to a foe or yourself, along with their chance (ordered by chance not alphabetically), including critical hits, and interactions with additional effects. This does not include Abilities. This information for the chances was gathered with the help of DreamNexus. Additional Effects.txt

     

    I of course have several other notes in the making, but due to limitations I can't complete certain ones right now. Hope these help!

  5. It's about finally time to make the latest post on this here thread a recent one. This thread has helped make it possible for me to mod GTI and PSMD more than I ever anticipated. I suppose it's about time to give back and help expand the documentation of these games even more.

    This all started will me desperately searching for the move data in PSMD, confused as to why waza_data_info.bin was so different from the same file in Gates to Infinity. (Turns out that was just for move IDs) I decided to finally study this thread more carefully (I've been lurking around here for months) and I came across Andibad's observations and it was actually act_data_info.bin that I was looking for. Anyways, recently I've been looking through more files, still using the information from here to understand them. At this point I have several notes on various files of interest. And since various links here are dead, I'll be giving up-to-date observations that will be refreshed as I gather new info. And although this data may be obvious to some, you might have your own notes, posted here or otherwise, I'll still leave them here for any newcomers, and perhaps we can compare notes.

    For my first addition, based off Blue587's txt files, are notes for the pokemon_data_info.bin for PSMD. Pokemon Data Notes.txt

    The only significant file I cannot understand even when using Blue587's notes is dungeon_balance.bin. I've made two whole attempts to understand it but I just can't.

    • Like 1
×
×
  • Create New...