psy_commando Posted September 18, 2015 Author Posted September 18, 2015 So, the PSMD dump is out, but as expected they dumped it encrypted, because it works better on some flashcarts. So yeah... Anyways, Idk if SciresM is going to answer my post + pm, but in the meantime, I stumbled on this a while ago on the forums : http://projectpokemon.org/forums/showthread.php?43617-Gates-to-Infinity-From-IMG-file-to-PNG Which would probably come in handy. I've also been taking apart the game text, but the annoying thing about those is that, they're stored using unique hashes to refer to them.. Oddly enough, those appear to be language independent since they're placed directly into the script files to refer to particular strings. But the thing is, Idk how those hashes are computed, or if they're just GUID, and not actual hashes.. But I have very little experience with custom hash maps, so its a bit hard for me to figure this out. If anyone with experience on those would want to take a look it would be appreciated! Here are my notes on the format: https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/PMD_GTI/FileFormats/string_database.txt Those files are found under the /message/ directory, they all have the .bin extension, as they're just SIR0 containers meant to be loaded in memory directly. They're loaded in scripts by filenames via the MENU:LoadMenuTextPool function, and then they're referred to by number in a variety of function. The decompiler doesn't seem to differentiate between what's a GUID/hash or not, so the values are represented as very large, signed, decimal numbers and are easy to spot really.
Megadrifter Posted September 19, 2015 Posted September 19, 2015 (edited) Hi there. I see you noticed my post about IMG format. So I thought that was the good time to give you some more research I made on GTI. /pokemon/ contains data about Pokémon. It contains 7 files which are : experience.bin, experience.ent, grade.bin, grade.ent, pokemon_data_info.bin, type_data_info.bin and waza_data_info.bin. ENT files contains pointers for their namesake. experience.bin is the experience table for each level of each Pokémon. There are 100 levels per Pokémon (quite obvious, I know...). Each Pokémon table is 0x4C0 bytes long, with an empty padding of 16 bytes (only 0x00). There are some dummed entries, which contains nonsense experience table. I don't know what to think about them. PokemonEntry [ LevelEntry Starts at level 0. 100 entries per Pokémon. [ 0x00 experience 4 uint32 Amount of maximum experience in the current level (Little Endian). Add 1 to get the experience needed to level up. 0x04 addedhp 1 uint8 Added HP when leveling up. 0x05 addedatk 1 uint8 Added Attack when leveling up. 0x06 addeddef 1 uint8 Added Defense when leveling up. 0x07 addedspeatk 1 uint8 Added Special Attack when leveling up. 0x08 addedspedef 1 uint8 Added Special Defense when leveling up. 0x09 lvlpadding 3 - Padding between level. Always 0x00. ] ... 0x4B0 pkmpadding 16 - Padding between Pokémon. Always 0x00. ] ... experience.ent contains pointers to each Pokémon experience table. Each pointer is 4 bytes long. Don't know what is grade.bin about, but according to grade.ent, there's only 3 entries. First one is 0xA0 bytes long, second one go straight to the end. The last value in grade.ent equals the length of grade.bin. pokemon_data_info.bin contains Pokémon informations (wouhou, that's obvious). It has a first empty entry of 0xE0 bytes, so we could think each Pokémon entry is that long. I didn't understand well the structure but I know, thanks to common.bin in /message/ that the Pokémon order is the following (with some unused one between) : Pikachu Raichu Starmie Eevee Vaporeon Jolteon Flareon Chinchou Pichu Marill Azumarill Sunkern Wooper Quagsire Espeon Umbreon Dunsparce Swinub Piloswine Lugia Ho-Oh Wingull Pelipper Azurill Kecleon Bagon Shelgon Salamence Cranidos Rampardos Glameow Purugly Croagunk Toxicroak Leafeon Glaceon Mamoswine Victini Snivy Servine Serperior Tepig Pignite Emboar Oshawott Dewott Samurott Patrat Watchog Lillipup Herdier Stoutland Pansage Simisage Pansear Simisear Panpour Simipour Munna Musharna Blitzle Zebstrika Roggenrola Boldore Gigalith Woobat Swoobat Drilbur Excadrill Audino Timburr Gurdurr Conkeldurr Tympole Palpitoad Seismitoad Sewaddle Swadloon Leavanny Venipede Whirlipede Scolipede Cottonee Whimsicott Petilil Lilligant Sandile Krokorok Krookodile Dwebble Crustle Scraggy Scrafty Yamask Cofagrigus Tirtouga Carracosta Archen Archeops Trubbish Garbodor Zorua Zoroark Minccino Cinccino Gothita Gothorita Gothitelle Ducklett Swanna Emolga Foongus Amoonguss Joltik Galvantula Klink Klang Klinklang Litwick Lampent Chandelure Axew Fraxure Haxorus Cubchoo Beartic Cryogonal Mienfoo Mienshao Druddigon Golett Golurk Pawniard Bisharp Rufflet Braviary Vullaby Mandibuzz Deino Zweilous Hydreigon Larvesta Volcarona Cobalion Terrakion Virizion Tornadus Thundurus Reshiram Zekrom Landorus Kyurem Keldeo Meloetta Meloetta Kyurem Kyurem Pikachu type_data_info.bin contains some Types informations, but I don't know how it works. waza_data_info.bin contains Moves data. There's a first empty entry 0x1E bytes, so again, I could confirm that each one is that long. Didn't took the time to study those, but here's the supposed list of Moves to use (it may contain some French names because that was quickly translate) : Pound Karate Chop Double Slap Comet Punch Mega Punch Pay Day Fire Punch Poinglace Thunder Punch Scratch Vice Grip Guillotine Razor Wind Swords Dance Cut Gust Wing Attack Whirlwind Flying Bind Slam Vine Whip Stomp Double Kick Mega Kick Jump Kick Rolling Kick Sand Attack Headbutt Horn Attack Fury Attack Horn Drill Tackle Body Slam Wrap Take Down Thrash Double-Edge Tail Whip Poison Sting Twineedle Pin Missile Leer Bite Growl Roar Sing Supersonic Sonic Boom Disable Acid Ember Lance-Flamme Mist Water Gun Hydro Pump Surf Ice Beam Blizzard Psybeam Bubble Beam Aurora Beam Hyper Beam Peck Drill Peck Submission Low Kick Counter Seismic Toss Strength Absorb Mega Drain Leech Seed Growth Razor Leaf Solar Beam Poison Powder Stun Spore Sleep Powder Petal Dance String Shot Dragon Rage Danseflamme Thunder Shock Thunderbolt Thunder Wave Thunder Rock Throw Earthquake Fissure Dig Toxic Confusion Psychic Hypnosis Meditate Agility Quick Attack Rage Teleport Dark Mimic Screech Double Team Recover Harden Minimize Smokescreen Confuse Ray Withdraw Defense Curl Barrier Light Screen Haze Reflect Focus Energy Bide Metronome Mirror Move Self-Destruct Bomb'Ruf Lick Smog Sludge Bone Club Fire Blast Waterfall Clamp Swift Skull Bash Spike Cannon Constrict Amnesia Kinesis Soft-Boiled High Jump Kick Intimidate Dream Eater Poison Gas Block Leech Life Lovely Kiss Pique Transform Bubble Dizzy Punch Spore Flash Psywave Splash Acid Armor Crabhammer Explosion Fury Swipes Bonemerang Rest Rock Slide Hyper Fang Sharpen Adaptation Tri Attack Super Fang Slash Substitute Struggle Sketch Triple Kick Thief Spider Web Mind Reader Nightmare Flame Wheel Snore Curse Flail Adaptation Aeroblast Cotton Spore Reversal Spite Powder Snow Protect Mach Punch Scary Face Feint Attack Sweet Kiss Belly Drum Sludge Bomb Mud-Slap Octazooka Spikes Zap Cannon Foresight Prlvt Destin Perish Song Icy Wind Detect Bone Rush Lock-On Outrage Tempêtesable Giga Drain Endure Charm Rollout False Swipe Swagger Milk Drink Spark Fury Cutter Steel Wing Mean Look Attract Sleep Talk Heal Bell Return Present Frustration Safeguard Pain Split Sacred Fire Magnitude Dynamic Punch Megahorn Dragon Breath Baton Pass Encore Pursuit Rapid Spin Sweet Scent Iron Tail Metal Claw Vital Throw Morning Sun Synthesis Moonlight Puis. Cachée Cross Chop Twister Rain Dance Sunny Day Crunch Mirror Coat Psych Up Vit. Extrême Pouv. Antique Shadow Ball Future Sight Rock Smash Whirlpool Beat Up Fake Out Uproar Stockpile Spit Up Swallow Heat Wave Hail Torment Flatter Will-O-Wisp Memento Facade Focus Punch Smelling Salts Follow Me Nature Power Tackle Taunt Helping Hand Trick Role Play VSu Assist Ingrain Superpower Magic Coat Recycle Revenge Brick Break Yawn Knock Off Endeavor Eruption Skill Swap Imprison Refresh Grudge Snatch Secret Power Dive Arm Thrust Camouflage Tail Glow Luster Purge Mist Ball Feather Dance Teeter Dance Blaze Kick Mud Sport Ice Ball Needle Arm Slack Off Hyper Voice Crochetvenin Éclategriffe Blast Burn Hydro Cannon Meteor Mash Astonish Weather Ball Aromathérapi Fake Tears Air Cutter Overheat Odor Sleuth Rock Tomb Silver Wind Metal Sound Grass Whistle Tickle Cosmic Power Water Spout Signal Beam Shadow Punch Extrasensory Sky Dizzy Punch Sand Tomb Sheer Cold Muddy Water Bullet Seed Aerial Ace Icicle Spear Iron Defense Block Howl Dragon Claw Frenzy Plant Bulk Up Bounce Mud Shot Poison Tail Covet Volt Tackle Feuillemagik Water Sport Calm Mind Leaf Blade Dragon Dance Rock Blast Shock Wave Water Pulse Doom Desire Psycho Boost Roost Gravity Ril Miracle Wake-Up Slap Hammer Arm Gyro Ball VSu Recover Brine Natural Gift Feint Pluck Tailwind Acupressure Metal Burst U-turn Close Combat Payback Assurance Embargo Fling Psycho Shift Trump Card Heal Block Wring Out Power Trick Gastro Acid Lucky Chant Me First Copycat Power Swap Guard Swap Punishment Dernierecour Worry Seed Sucker Punch Toxic Spikes Heart Swap Aqua Ring Magnet Rise Flare Blitz Strength Palm Aura Sphere Rock Polish Poison Jab Dark Pulse Night Slash Aqua Tail Seed Bomb Air Slash X-Scissor Bug Buzz Dragon Pulse Dragon Rush Power Gem Drain Punch Vacuum Wave Focus Blast Energy Ball Brave Bird Earth Power Switcheroo Giga Impact Nasty Plot Bullet Punch Avalanche Ice Shard Shadow Claw Thunder Fang Ice Fang Fire Fang Shadow Sneak Mud Bomb Psycho Cut Zen Headbutt Mirror Shot Flash Cannon Rock Climb Defog Trick Room Dragonair Meteor Discharge Lava Plume Tempêteverte Power Whip Rock Wrecker Cross Poison Gunk Shot Iron Head Magnet Bomb Stone Edge Captivate Stealth Rock NSud Herbe Chatter Judgment Bug Bite Tackle Beam Wood Hammer Aqua Jet Attack Order Defend Order Heal Order Head Smash Double Hit Roar of Time Spacial Rend Lunar Dance Crush Grip Magma Storm Dark Void Seed Flare Ominous Wind Shadow Strength Hone Claws Wide Guard Guard Split Power Split Wonder Room Psyshock Venoshock Autotomize PoudreFureur Telekinesis Magic Room Smack Down Storm Throw Flame Burst Sludge Wave Quiver Dance Heavy Slam Synchronoise Electro Ball Soak Flame Tackle Coil Low Sweep Acid Spray Foul Play Simple Beam Entrainment After You Round Echoed Voice Chip Away Clear Smog Stored Power Quick Guard Ally Switch Scald Shell Smash Heal Pulse Hex Sky Drop Shift Gear Circle Throw Incinerate Quash Acrobatics Reflect Type Retaliate Final Gambit Bestow Inferno Water Pledge Fire Pledge Grass Pledge Volt Switch Struggle Bug Bulldoze Frost Breath Dragon Tail Work Up Electroweb Wild Tackle Drill Run Dual Chop Crèvecœur Horn Leech Sacred Sword Razor Shell Heat Crash Leaf Tornado Steamroller Cotton Guard Night Daze Psystrike Tail Slap Hurricane Head Tackle Gear Grind Searing Shot Techno Blast ChantAntique Secret Sword ÈreGlaciaire ChargeFoudre Blue Flare Fiery Dance Freeze Shock Ice Burn Snarl Icicle Crash CoupVictoire Fusion Flare Fusion Bolt Weather Ball Weather Ball Weather Ball Weather Ball Dig Razor Wind Focus Punch Pique Solar Beam Flying Dive Bounce Skull Bash Curse Snore Sleep Talk Bide Revenge Avalanche Fusion Flare Fusion Bolt Sky Drop #N/A #N/A #N/A Future Sight Attaque #N/A #N/A #N/A #N/A Slash Dragon Claw Dragon Tail Dragon Breath Dragon Breath Flying Ice Beam Ice Beam Glaciate Glaciate Flying Blizzard Thunder Fusion Bolt Bolt Strike Bolt Strike Lance-Flamme Lance-Flamme Fusion Flare Fusion Flare Blue Flare Blue Flare Freeze Shock Freeze Shock Ice Burn Ice Burn Pouv. Antique Extrasensory Light Screen Reflect Dragon Rush Aeroblast Aeroblast Hydro Pump Hydro Pump Brave Bird Lance-Flamme Lance-Flamme Sacred Fire Sacred Fire Flying Struggle Struggle Slash Dragon Claw Flying UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED At the root of the RomFS, there's a file called item_data.bin. That one contains Items data. Each entry looks to be 0x1C bytes long, with an strange ending one of 0x0C bytes. Don't know the whole structure, but for each entry I know that : 0x00 (uint16) seems to be the "category" of item. Throwable, wears, prices, apples, seeds, donuts, devices, vitamins, secrets, orbs, evolve items, keys, lottery tickets, money, treasures, TM's, gifts, rewards (material for Pokémon Paradise buildings), traps and quest items. Maybe not that precise... 0x02 (uint16) is their Price in Poké or Gold Ingot. You can find their order by refering to their names in common.bin text file in your /message_ln/ folder. There's many UNUSED and some dev-only items. TM's don't have any number, so refer to their corresponding move name to know which item it is. You can seek for Stick as the first item, followed by Iron Thorn and Silver Spike. Good luck guys, and thanks for working on those games. EDIT: Just remenber that I made a tool to view the experience table (I may have done some mistakes but it works). Here it is: My code is shitty so I don't think that's a good idea to share it, but you can ask for. GTI_Experience_Viewer.zip Edited September 19, 2015 by Megadrifter Add a old tool to view experience table.
psy_commando Posted September 19, 2015 Author Posted September 19, 2015 Hi there. I see you noticed my post about IMG format. So I thought that was the good time to give you some more research I made on GTI. I'd have posted the link to your post sooner if I knew you'd come and post here But seriously, that really helpful! thanks ! /pokemon/ contains data about Pokémon. It contains 7 files which are : experience.bin, experience.ent, grade.bin, grade.ent, pokemon_data_info.bin, type_data_info.bin and waza_data_info.bin. ENT files contains pointers for their namesake. experience.bin is the experience table for each level of each Pokémon. There are 100 levels per Pokémon (quite obvious, I know...). Each Pokémon table is 0x4C0 bytes long, with an empty padding of 16 bytes (only 0x00). There are some dummed entries, which contains nonsense experience table. I don't know what to think about them. PokemonEntry [ LevelEntry Starts at level 0. 100 entries per Pokémon. [ 0x00 experience 4 uint32 Amount of maximum experience in the current level (Little Endian). Add 1 to get the experience needed to level up. 0x04 addedhp 1 uint8 Added HP when leveling up. 0x05 addedatk 1 uint8 Added Attack when leveling up. 0x06 addeddef 1 uint8 Added Defense when leveling up. 0x07 addedspeatk 1 uint8 Added Special Attack when leveling up. 0x08 addedspedef 1 uint8 Added Special Defense when leveling up. 0x09 lvlpadding 3 - Padding between level. Always 0x00. ] ... 0x4B0 pkmpadding 16 - Padding between Pokémon. Always 0x00. ] ... experience.ent contains pointers to each Pokémon experience table. Each pointer is 4 bytes long. That looks like its very similar to how it was in Explorers of Sky! Though, the data was encoded/shortened in EoS. Don't know what is grade.bin about, but according to grade.ent, there's only 3 entries. First one is 0xA0 bytes long, second one go straight to the end. The last value in grade.ent equals the length of grade.bin. pokemon_data_info.bin contains Pokémon informations (wouhou, that's obvious). It has a first empty entry of 0xE0 bytes, so we could think each Pokémon entry is that long. I didn't understand well the structure but I know, thanks to common.bin in /message/ that the Pokémon order is the following (with some unused one between) : Pikachu Raichu Starmie Eevee Vaporeon Jolteon Flareon Chinchou Pichu Marill Azumarill Sunkern Wooper Quagsire Espeon Umbreon Dunsparce Swinub Piloswine Lugia Ho-Oh Wingull Pelipper Azurill Kecleon Bagon Shelgon Salamence Cranidos Rampardos Glameow Purugly Croagunk Toxicroak Leafeon Glaceon Mamoswine Victini Snivy Servine Serperior Tepig Pignite Emboar Oshawott Dewott Samurott Patrat Watchog Lillipup Herdier Stoutland Pansage Simisage Pansear Simisear Panpour Simipour Munna Musharna Blitzle Zebstrika Roggenrola Boldore Gigalith Woobat Swoobat Drilbur Excadrill Audino Timburr Gurdurr Conkeldurr Tympole Palpitoad Seismitoad Sewaddle Swadloon Leavanny Venipede Whirlipede Scolipede Cottonee Whimsicott Petilil Lilligant Sandile Krokorok Krookodile Dwebble Crustle Scraggy Scrafty Yamask Cofagrigus Tirtouga Carracosta Archen Archeops Trubbish Garbodor Zorua Zoroark Minccino Cinccino Gothita Gothorita Gothitelle Ducklett Swanna Emolga Foongus Amoonguss Joltik Galvantula Klink Klang Klinklang Litwick Lampent Chandelure Axew Fraxure Haxorus Cubchoo Beartic Cryogonal Mienfoo Mienshao Druddigon Golett Golurk Pawniard Bisharp Rufflet Braviary Vullaby Mandibuzz Deino Zweilous Hydreigon Larvesta Volcarona Cobalion Terrakion Virizion Tornadus Thundurus Reshiram Zekrom Landorus Kyurem Keldeo Meloetta Meloetta Kyurem Kyurem Pikachu Nice! I've been looking for where they were storing the pokemon names for a while! Also, its possible that grade.bin is for the paradise ranks. There's a lot of engrish used in the game files (The scripts are particularly filled with engrish ) type_data_info.bin contains some Types informations, but I don't know how it works. waza_data_info.bin contains Moves data. There's a first empty entry 0x1E bytes, so again, I could confirm that each one is that long. Didn't took the time to study those, but here's the supposed list of Moves to use (it may contain some French names because that was quickly translate) : Pound Karate Chop Double Slap Comet Punch Mega Punch Pay Day Fire Punch Poinglace Thunder Punch Scratch Vice Grip Guillotine Razor Wind Swords Dance Cut Gust Wing Attack Whirlwind Flying Bind Slam Vine Whip Stomp Double Kick Mega Kick Jump Kick Rolling Kick Sand Attack Headbutt Horn Attack Fury Attack Horn Drill Tackle Body Slam Wrap Take Down Thrash Double-Edge Tail Whip Poison Sting Twineedle Pin Missile Leer Bite Growl Roar Sing Supersonic Sonic Boom Disable Acid Ember Lance-Flamme Mist Water Gun Hydro Pump Surf Ice Beam Blizzard Psybeam Bubble Beam Aurora Beam Hyper Beam Peck Drill Peck Submission Low Kick Counter Seismic Toss Strength Absorb Mega Drain Leech Seed Growth Razor Leaf Solar Beam Poison Powder Stun Spore Sleep Powder Petal Dance String Shot Dragon Rage Danseflamme Thunder Shock Thunderbolt Thunder Wave Thunder Rock Throw Earthquake Fissure Dig Toxic Confusion Psychic Hypnosis Meditate Agility Quick Attack Rage Teleport Dark Mimic Screech Double Team Recover Harden Minimize Smokescreen Confuse Ray Withdraw Defense Curl Barrier Light Screen Haze Reflect Focus Energy Bide Metronome Mirror Move Self-Destruct Bomb'Ruf Lick Smog Sludge Bone Club Fire Blast Waterfall Clamp Swift Skull Bash Spike Cannon Constrict Amnesia Kinesis Soft-Boiled High Jump Kick Intimidate Dream Eater Poison Gas Block Leech Life Lovely Kiss Pique Transform Bubble Dizzy Punch Spore Flash Psywave Splash Acid Armor Crabhammer Explosion Fury Swipes Bonemerang Rest Rock Slide Hyper Fang Sharpen Adaptation Tri Attack Super Fang Slash Substitute Struggle Sketch Triple Kick Thief Spider Web Mind Reader Nightmare Flame Wheel Snore Curse Flail Adaptation Aeroblast Cotton Spore Reversal Spite Powder Snow Protect Mach Punch Scary Face Feint Attack Sweet Kiss Belly Drum Sludge Bomb Mud-Slap Octazooka Spikes Zap Cannon Foresight Prlvt Destin Perish Song Icy Wind Detect Bone Rush Lock-On Outrage Tempêtesable Giga Drain Endure Charm Rollout False Swipe Swagger Milk Drink Spark Fury Cutter Steel Wing Mean Look Attract Sleep Talk Heal Bell Return Present Frustration Safeguard Pain Split Sacred Fire Magnitude Dynamic Punch Megahorn Dragon Breath Baton Pass Encore Pursuit Rapid Spin Sweet Scent Iron Tail Metal Claw Vital Throw Morning Sun Synthesis Moonlight Puis. Cachée Cross Chop Twister Rain Dance Sunny Day Crunch Mirror Coat Psych Up Vit. Extrême Pouv. Antique Shadow Ball Future Sight Rock Smash Whirlpool Beat Up Fake Out Uproar Stockpile Spit Up Swallow Heat Wave Hail Torment Flatter Will-O-Wisp Memento Facade Focus Punch Smelling Salts Follow Me Nature Power Tackle Taunt Helping Hand Trick Role Play VSu Assist Ingrain Superpower Magic Coat Recycle Revenge Brick Break Yawn Knock Off Endeavor Eruption Skill Swap Imprison Refresh Grudge Snatch Secret Power Dive Arm Thrust Camouflage Tail Glow Luster Purge Mist Ball Feather Dance Teeter Dance Blaze Kick Mud Sport Ice Ball Needle Arm Slack Off Hyper Voice Crochetvenin Éclategriffe Blast Burn Hydro Cannon Meteor Mash Astonish Weather Ball Aromathérapi Fake Tears Air Cutter Overheat Odor Sleuth Rock Tomb Silver Wind Metal Sound Grass Whistle Tickle Cosmic Power Water Spout Signal Beam Shadow Punch Extrasensory Sky Dizzy Punch Sand Tomb Sheer Cold Muddy Water Bullet Seed Aerial Ace Icicle Spear Iron Defense Block Howl Dragon Claw Frenzy Plant Bulk Up Bounce Mud Shot Poison Tail Covet Volt Tackle Feuillemagik Water Sport Calm Mind Leaf Blade Dragon Dance Rock Blast Shock Wave Water Pulse Doom Desire Psycho Boost Roost Gravity Ril Miracle Wake-Up Slap Hammer Arm Gyro Ball VSu Recover Brine Natural Gift Feint Pluck Tailwind Acupressure Metal Burst U-turn Close Combat Payback Assurance Embargo Fling Psycho Shift Trump Card Heal Block Wring Out Power Trick Gastro Acid Lucky Chant Me First Copycat Power Swap Guard Swap Punishment Dernierecour Worry Seed Sucker Punch Toxic Spikes Heart Swap Aqua Ring Magnet Rise Flare Blitz Strength Palm Aura Sphere Rock Polish Poison Jab Dark Pulse Night Slash Aqua Tail Seed Bomb Air Slash X-Scissor Bug Buzz Dragon Pulse Dragon Rush Power Gem Drain Punch Vacuum Wave Focus Blast Energy Ball Brave Bird Earth Power Switcheroo Giga Impact Nasty Plot Bullet Punch Avalanche Ice Shard Shadow Claw Thunder Fang Ice Fang Fire Fang Shadow Sneak Mud Bomb Psycho Cut Zen Headbutt Mirror Shot Flash Cannon Rock Climb Defog Trick Room Dragonair Meteor Discharge Lava Plume Tempêteverte Power Whip Rock Wrecker Cross Poison Gunk Shot Iron Head Magnet Bomb Stone Edge Captivate Stealth Rock NSud Herbe Chatter Judgment Bug Bite Tackle Beam Wood Hammer Aqua Jet Attack Order Defend Order Heal Order Head Smash Double Hit Roar of Time Spacial Rend Lunar Dance Crush Grip Magma Storm Dark Void Seed Flare Ominous Wind Shadow Strength Hone Claws Wide Guard Guard Split Power Split Wonder Room Psyshock Venoshock Autotomize PoudreFureur Telekinesis Magic Room Smack Down Storm Throw Flame Burst Sludge Wave Quiver Dance Heavy Slam Synchronoise Electro Ball Soak Flame Tackle Coil Low Sweep Acid Spray Foul Play Simple Beam Entrainment After You Round Echoed Voice Chip Away Clear Smog Stored Power Quick Guard Ally Switch Scald Shell Smash Heal Pulse Hex Sky Drop Shift Gear Circle Throw Incinerate Quash Acrobatics Reflect Type Retaliate Final Gambit Bestow Inferno Water Pledge Fire Pledge Grass Pledge Volt Switch Struggle Bug Bulldoze Frost Breath Dragon Tail Work Up Electroweb Wild Tackle Drill Run Dual Chop Crèvecœur Horn Leech Sacred Sword Razor Shell Heat Crash Leaf Tornado Steamroller Cotton Guard Night Daze Psystrike Tail Slap Hurricane Head Tackle Gear Grind Searing Shot Techno Blast ChantAntique Secret Sword ÈreGlaciaire ChargeFoudre Blue Flare Fiery Dance Freeze Shock Ice Burn Snarl Icicle Crash CoupVictoire Fusion Flare Fusion Bolt Weather Ball Weather Ball Weather Ball Weather Ball Dig Razor Wind Focus Punch Pique Solar Beam Flying Dive Bounce Skull Bash Curse Snore Sleep Talk Bide Revenge Avalanche Fusion Flare Fusion Bolt Sky Drop #N/A #N/A #N/A Future Sight Attaque #N/A #N/A #N/A #N/A Slash Dragon Claw Dragon Tail Dragon Breath Dragon Breath Flying Ice Beam Ice Beam Glaciate Glaciate Flying Blizzard Thunder Fusion Bolt Bolt Strike Bolt Strike Lance-Flamme Lance-Flamme Fusion Flare Fusion Flare Blue Flare Blue Flare Freeze Shock Freeze Shock Ice Burn Ice Burn Pouv. Antique Extrasensory Light Screen Reflect Dragon Rush Aeroblast Aeroblast Hydro Pump Hydro Pump Brave Bird Lance-Flamme Lance-Flamme Sacred Fire Sacred Fire Flying Struggle Struggle Slash Dragon Claw Flying UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED UNUSED That sounds also very similar to EoS's waza_p.bin file. And its all good, French is my first language so I didn't have too much issues, even though some names are just completely different in French. (I usually play the games in english though) At the root of the RomFS, there's a file called item_data.bin. That one contains Items data. Each entry looks to be 0x1C bytes long, with an strange ending one of 0x0C bytes. Don't know the whole structure, but for each entry I know that : 0x00 (uint16) seems to be the "category" of item. Throwable, wears, prices, apples, seeds, donuts, devices, vitamins, secrets, orbs, evolve items, keys, lottery tickets, money, treasures, TM's, gifts, rewards (material for Pokémon Paradise buildings), traps and quest items. Maybe not that precise... 0x02 (uint16) is their Price in Poké or Gold Ingot. You can find their order by refering to their names in common.bin text file in your /message_ln/ folder. There's many UNUSED and some dev-only items. TM's don't have any number, so refer to their corresponding move name to know which item it is. You can seek for Stick as the first item, followed by Iron Thorn and Silver Spike. Good luck guys, and thanks for working on those games. EDIT: Just remenber that I made a tool to view the experience table (I may have done some mistakes but it works). Here it is: [ATTACH]12591[/ATTACH] My code is shitty so I don't think that's a good idea to share it, but you can ask for. Alright. And my code is terrible too, but I post it anyways You never know, it might be helpful to some people.
SciresM Posted September 20, 2015 Posted September 20, 2015 Right, I should probably pay attention to this Anyway, .img is the same as in previous games, FARC struct is update (no more file name tables ) so my extractor doesn't work for all files. A hack got it working, but the files aren't in any meaningful order...needs some work. I still need to update CGSE before I can seriously take a look at this stuff (and I'm kind of swamped with work...it might be a week or two), but in the mean-time:
Megadrifter Posted September 20, 2015 Posted September 20, 2015 Well done ! I arleady like that Debug icon.
psy_commando Posted September 20, 2015 Author Posted September 20, 2015 Right, I should probably pay attention to this Anyway, .img is the same as in previous games, FARC struct is update (no more file name tables ) so my extractor doesn't work for all files. A hack got it working, but the files aren't in any meaningful order...needs some work. Well, that's good to hear that some formats are similar! But, what about the rest, is it still mostly the same? I don't think the filenames were part of the FARC format though. They were in a SIR0 container on their own. It probably just means that they're using something different than filenames to refer to game resources now. Possibly by GUIDs? I mean, considering the game text is stored in text databases and each entries are referred to by GUID. Its funny though, because EMD still has that SIR0 with the filenames. They might have changed things a bit.. But, I don't have the PSMD game files yet, so I can't take a look.. (No decrypted rom anywhere to be found.. I'm considering getting my 3ds hard modded with a microSD adapter, to make a forced firmware downgrade..) I still need to update CGSE before I can seriously take a look at this stuff (and I'm kind of swamped with work...it might be a week or two), but in the mean-time: That's all good. And, that brings up something I completely forgot about ^^; I'd better add a notice telling people to hide PSMD spoilers in this thread!
evandixon Posted September 20, 2015 Posted September 20, 2015 I'm considering getting my 3ds hard modded with a microSD adapter, to make a forced firmware downgrade..) I thought a hard mod was only useful to restore NAND backups that were made by the same console at an earlier version, since NAND backups are console-specific. Unless you have an backup from the same console, your only options are to buy a 3ds at a lower firmware, or wait for another exploit to be found. Keep in mind that I haven't extensively researched hard mods, so I could be wrong.
psy_commando Posted September 21, 2015 Author Posted September 21, 2015 You know, I wouldn't even be surprised.. Everything on this damn thing is encrypted.. My main source of info is GBATemp/reddit/random rom website and between threads people either keep contradicting eachothers, or just don't talk about those things. It seems to me that all the info on the 3DS online is really unreliable, outdated, or incomplete. Though, lower firmware 3ds aren't on sale anymore AFAIK. I've been looking around for one, and I can't find anything that isn't outrageously expensive.(factory sealed stuff..) And trying to get one used with a specific firmware is asking to get scammed. I might just give up looking for PSMD's decrypted data at this point. I've been wasting way too much time on that. And I'll probably have to wait until citra can run things better to do anything in-depth with GTI.. EDIT: In other news, I think I finally got the basics of the FARC format figured out, in comparison to my original post on page1 : https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/PMD_GTI/FileFormats/FARC_archive.txt
mid-kid Posted September 22, 2015 Posted September 22, 2015 (edited) To add to the info psy_commando posted above, some FARC files contain two SIR files (ex. message.bin). One is kind of an info file, which gives the offsets and size of the SIR files inside the second file. It differs a tiny bit from the usual SIR file. Here's the format: Header: Magic 4 "SIR0" Subheaderptr 4 Pointer to the subheader Offsetlistptr 4 Pointer to the offset list Null 4 Always zero Filelist (array): Unknown 4 Some random value. Probably some ID Offset 4 The offset of the file Size 4 The size of the file Subheader: Filelistptr 4 Pointer to the file list Filecount 4 Amount of files Unknown 4 Value: 1 Padding zero bytes to align to 16 bytes. Offsetlist: http://www.projectpokemon.org/wiki/Pmd2_SIR0#Pointer_Offsets_List Padding zero bytes to align to 16 bytes. Edited September 23, 2015 by mid-kid
psy_commando Posted September 22, 2015 Author Posted September 22, 2015 To add to the info psy_commando posted above, some FARC files contain two SIR files (ex. message.bin). One is kind of an info file, which gives the offsets and size of the SIR files inside the second file. It differs a tiny bit from the usual SIR file. Here's the format: http://chunk.io/f/1b5d738fe1eb4eb3bbce51444ffe0040?lang=text That's pretty much the usual SIR0 format. The part below that begins with 0x04 0x04 is not another header, its the encoded pointer list. SIR0 is just a wrapper around data, the content itself is what differ. Its used on stuff that gets loaded directly to memory as a data structure to translate pointers from relative to the file, to relative to the system memory. http://www.projectpokemon.org/wiki/Pmd2_SIR0 I forgot to link my notes on it in this thread. But in GTI its exactly the same thing as it was in Rescue Team, and Explorers.
mid-kid Posted September 26, 2015 Posted September 26, 2015 Thanks to the info above, I was able to make a tool to unpack the message.bin. I won't be working on it anymore, so I'll leave messagetool.py here: https://gist.github.com/mid-kid/8279635ee8dc57560e96 It unpacks the message.bin to readable, plain text files. It mostly works, but there's some rough edges here and there. I hope somebody can do something with it. Usage: Unpacking: python3 messagetool.py extract message.bin messages_extracted Packing: python3 messagetool.py pack messages_extracted new_message.bin
psy_commando Posted September 26, 2015 Author Posted September 26, 2015 (edited) Thanks to the info above, I was able to make a tool to unpack the message.bin. I won't be working on it anymore, so I'll leave messagetool.py here: https://gist.github.com/mid-kid/8279635ee8dc57560e96 It unpacks the message.bin to readable, plain text files. It mostly works, but there's some rough edges here and there. I hope somebody can do something with it. Usage: Unpacking: python3 messagetool.py extract message.bin messages_extracted Packing: python3 messagetool.py pack messages_extracted new_message.bin That looks pretty nice! And any reasons you're giving up on it? I've had something similar in the work, that also handles the string UUID and the extra unknown values from the table, but issues with utf-8/utf-16 handling on windows and the fact that the MSVC C++ stdlib is broken are holding me back. (That, and I also keep messing up my git branches by editing things unrelated to the current "topic" of the branch all the time.. I can't github flow ^^; ) I've also looked at using the stdlib's codecvt header, but thing is, MSVC doesn't support specialized string literals.. And the examples won't build.. And its all pretty unclear how it works. (And for some reasons my Codelite install can't use clang or gcc to compile..) I've been looking at using ICU, but the build requirements are ridiculous.. I'd need to ship a full cygwin environment with it just to build on windows(or a script that setups said environment), and the library is huge.. http://source.icu-project.org/repos/icu/icu/trunk/readme.html#HowToBuildWindows I might just use POCO's utf-8 utf-16 handling tools instead.. But they recommend using ICU instead.. Long story short, if anyone is ever looking at handling utf encoded text, don't use C++.. At least, until they add proper support in the few next revisions hopefully.. EDIT: Also, have you checked your PMs? Edited September 26, 2015 by psy_commando
mid-kid Posted September 27, 2015 Posted September 27, 2015 And any reasons you're giving up on it? None. Just went on working on something else at the moment. The UTF-16 that's contained in the messages.bin is a bit weird in some places. Python can't completely decode it correctly either. I assume most of the characters that can't be decoded are formatting things the game uses. Some of the formatting characters can be decoded to UTF-8, however (finding out which and what they do is the hard part). In my script I just replace every character that can't be decoded with "{{unk:<hex>}}" (see decode_ninty_utf). EDIT: Also, have you checked your PMs? Yes, haven't gotten anything.
psy_commando Posted September 27, 2015 Author Posted September 27, 2015 None. Just went on working on something else at the moment. The UTF-16 that's contained in the messages.bin is a bit weird in some places. Python can't completely decode it correctly either. I assume most of the characters that can't be decoded are formatting things the game uses. Some of the formatting characters can be decoded to UTF-8, however (finding out which and what they do is the hard part). In my script I just replace every character that can't be decoded with "{{unk:<hex>}}" (see decode_ninty_utf). Alright, sorry for asking. I just feel like I might have sent the wrong message to people in the past, and I just wanted to make sure it wasn't the case here. ^^; Hmm.. Maybe its not utf-16 then.. From what I've read around the web, 16 bits characters may also contain utf-8. Mainly because people tend to not follow a standard implementation. Have you tried parsing everything as utf-8? Also, you might want to just write escaped characters, for those you can't parse. It might make things easier when parsing it back. I mean, writing it as a number prefixed with a "\u" or "\U" and etc, instead of using your own syntax. https://docs.python.org/2/howto/unicode.html#unicode-literals-in-python-source-code There are more chances that it would be compatible with other software and python itself, as its a pretty common way to escape unicode characters. Also, now that you bring that up, its possible PMD2 is actually encoded in unicode too, which would explain some of the multi-byte symbols.. http://unicode.org/faq/utf_bom.html
mid-kid Posted September 27, 2015 Posted September 27, 2015 Also, you might want to just write escaped characters, for those you can't parse. It might make things easier when parsing it back. I mean, writing it as a number prefixed with a "\u" or "\U" and etc, instead of using your own syntax. https://docs.python.org/2/howto/unicode.html#unicode-literals-in-python-source-code There are more chances that it would be compatible with other software and python itself, as its a pretty common way to escape unicode characters. Now that you mention it, that is indeed the correct™ way. I just didn't think of it at the time. I might fix it someday.
psy_commando Posted September 27, 2015 Author Posted September 27, 2015 Now that you mention it, that is indeed the correct™ way. I just didn't think of it at the time. I might fix it someday. That's all good. I just mentioned it because I keep forgetting things like that, and I wish people would remind me
psy_commando Posted September 28, 2015 Author Posted September 28, 2015 Yes, haven't gotten anything. Sorry, I missed your reply.. >_< I sent you 3 PMs, so you should have received at least one of them. That's odd You might want to check in your profile options if you have PMs on, or if you allow receiving PMs from others: http://projectpokemon.org/forums/profile.php?do=editoptions
Megadrifter Posted October 28, 2015 Posted October 28, 2015 Just saying, if you missed it: using HANS and braindump through *hax 2.5, you can patch the game and test your modifications using your own ExeFS and RomFS files on the SD card. Hope you got everything to install *hax 2.5 though.
psy_commando Posted October 28, 2015 Author Posted October 28, 2015 Yeah I saw it.. But I'm really unlucky/stupid, and now ironhax won't launch at all.. ;_; I don't even know why. And I can't reinstall it because browserhax and youtubehax are dead. Something wrong with the savegame maybe.. I suspect I might have somehow forgotten to update the ironhax install, and made a firmware update. But, I remember it working on this firmware a while ago.. I'm considering skipping on fallout 4 to get enough to buy cubic ninja for $60 at this point..
psy_commando Posted October 29, 2015 Author Posted October 29, 2015 Buy a Sky3DS and put CN on it ? Well, the sky3ds is twice the price of cubic ninja, $120. Its on sale at $88 right now though. But still that's much more expensive, and I don't really play backup game so much, so it would be mostly useless to me..
Tux Posted October 29, 2015 Posted October 29, 2015 I assumed you wanted to play backup games, sorry . But, still, $60 for a single game you may not play much is a lot ... Have you got a friend having an exploited 3DS and a cartridge of OOT ? If so, you can install the corresponding exploit (although it's a bit tricky ...)
psy_commando Posted October 30, 2015 Author Posted October 30, 2015 (edited) I assumed you wanted to play backup games, sorry . But, still, $60 for a single game you may not play much is a lot ... Have you got a friend having an exploited 3DS and a cartridge of OOT ? If so, you can install the corresponding exploit (although it's a bit tricky ...) ( I know, "backup games" sounds really cheesy, but I can't bring myself to use the term "piracy" because it makes me facepalm too hard and gives me a headache ) Yeah, but I'm getting really sick of screwing up everytimes some new exploit comes out. This is pretty much the 3-4th time I lock myself out of homebrew. Twice because I updated my firmware too soon. Then something else happened, and now I thought I finally took all precautions, but nope, I locked myself out again.. So something like cubic ninja might be ideal for me. But then, I really don't have $60 dollar to spend on that cubic ninja game without cutting in my budget somewhere else. The most annoying part is that a bunch of people have been artificially raising prices for CN on ebay, buying a lot of them at gamestop and etc for peanuts, and selling them for 50+ dollars on auction sites and amazon. And well, maybe in a week or two someone will find another entry point/fix the old ones, and I'd have spent $60 for nothing. And nope, there isn't anyone I know with an unlocked 3ds living close-by EDIT: Welp, buying Cubic Ninja just isn't an option anymore.. Only the most expensive cartridges are left for sale now. I definitely can't pay $130 for that ^^; I guess I could try to look around local pawn shops.. But I got the feeling that it will probably be a waster of time.. Edited November 1, 2015 by psy_commando
psy_commando Posted November 4, 2015 Author Posted November 4, 2015 Good news ! I managed to find a PSMD cia release that was decrypted! (after downloading about 1500 PSMD rom releases.. ) So, I can confirm that, internally everything is mostly the same as GTI! The game has still a lot of files named "paradise", and those are from GTI. Even the rom's "name" is still Paradise apparently. The scripts are organized in a similar fashion, and they're also simply compiled, not encrypted or anything else, I was able to decompile them the same way I did with GTI. Interestingly, there's a file named "shiren_arts_data_info.bin" that was added to the "pokemon" folder, maybe this could have to do with IQs skills possibly? Since they were originally from shiren, and this file looks like it has been ripped from a shiren game judging from the name.. (I'll try looking up EMD to see if that was also in there ) Anyways, I won't be digging too deep into this until I've played the game, but I'll try to get some research going in the meantime. I'd like to at least get a tool for extracting/repacking the faces along with FARC archives going, with source code and everything before PSMD is out in north america. Though with Fallout 4 coming out soon, that might get a bit delayed ^^; Not to mention, I'm making some progress with the tiles format in PMD2, and it would be awkward to drop everything to work on PSMD/GTI instead.
psy_commando Posted November 22, 2015 Author Posted November 22, 2015 PSMD is out in north america ! I got my copy and I'm now around chapter 12. Its an awesome game, and a worthy successor to Explorers of Sky in almost every ways, for those wondering! Its nothing like GTI, even though it re-uses the same engine ironically. So whenever I finish this game, I should be ready to take it all apart without fearing for spoilers! Also, I think evandixon has been working on some pretty nice stuff for handling eventual romhacks. But he'll probably drop by to talk about those himself eventually. And I completely didn't meet my objective of getting a portrait utility out. But, at least now I mostly fixed my repository, and the PMD3 projects. I'll also drop compilation to DLL for pmd3 projects for now, because it was a dumb idea to begin with, and most of our research notes aren't set in stone yet, soo.. I'm also still looking for a way to document the game's Lua scripts. So if anyone has an idea for a way to do this with a tool or something, feel free to suggest! Still couldn't find a cubic ninja copy, and now all cubic ninja games are around $100 CAD. So I'm considering getting a sky3ds instead, since its cheaper.. ( If only I could get MGS5 refunded ^^; )
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now