From d868040458eb3338593b2e5167940784d36514a8 Mon Sep 17 00:00:00 2001 From: Torphedo Date: Tue, 19 Jul 2022 04:12:22 -0400 Subject: [PATCH] EsperReader initial commit --- EsperReader/.gitignore | 4 + EsperReader/EsperReader.cpp | 28 + EsperReader/EsperReader.sln | 31 + EsperReader/EsperReader.vcxproj | 152 +++ EsperReader/EsperReader.vcxproj.filters | 30 + EsperReader/EsperReader.vcxproj.user | 19 + EsperReader/deck.h | 34 + EsperReader/deckSkillNames.h | 1509 +++++++++++++++++++++++ EsperReader/readme.md | 12 + 9 files changed, 1819 insertions(+) create mode 100644 EsperReader/.gitignore create mode 100644 EsperReader/EsperReader.cpp create mode 100644 EsperReader/EsperReader.sln create mode 100644 EsperReader/EsperReader.vcxproj create mode 100644 EsperReader/EsperReader.vcxproj.filters create mode 100644 EsperReader/EsperReader.vcxproj.user create mode 100644 EsperReader/deck.h create mode 100644 EsperReader/deckSkillNames.h create mode 100644 EsperReader/readme.md diff --git a/EsperReader/.gitignore b/EsperReader/.gitignore new file mode 100644 index 0000000..201be80 --- /dev/null +++ b/EsperReader/.gitignore @@ -0,0 +1,4 @@ +.vs/ +decks/ +x64/ +*.exe diff --git a/EsperReader/EsperReader.cpp b/EsperReader/EsperReader.cpp new file mode 100644 index 0000000..4fb510f --- /dev/null +++ b/EsperReader/EsperReader.cpp @@ -0,0 +1,28 @@ +#include +#include +#include +#include "deck.h" +using namespace std; + +int main(int argc, char* argv[]) +{ + struct stat meta; + + if (argc != 2) + { + cout << "Please drag a Phantom Dust deck file onto the program.\nPress any key to exit.\n"; + _getch(); + return -1; + } + else + { + stat(argv[1], &meta); + cout << "The size of " << argv[1] << " is " << meta.st_size << " bytes." << endl; + // In the future, I plan to check file extension / magic, and + // call different parsers depending on the result. + ParseDeckFile(argv[1]); + cout << "\n\nPress any key to exit.\n"; + _getch(); + return 1; + } +} diff --git a/EsperReader/EsperReader.sln b/EsperReader/EsperReader.sln new file mode 100644 index 0000000..47e683a --- /dev/null +++ b/EsperReader/EsperReader.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EsperReader", "EsperReader.vcxproj", "{78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Debug|x64.ActiveCfg = Debug|x64 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Debug|x64.Build.0 = Debug|x64 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Debug|x86.ActiveCfg = Debug|Win32 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Debug|x86.Build.0 = Debug|Win32 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Release|x64.ActiveCfg = Release|x64 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Release|x64.Build.0 = Release|x64 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Release|x86.ActiveCfg = Release|Win32 + {78A10C1E-B9E0-4F66-B625-9AD5B43BF72F}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B1E38AF4-D95E-4F7E-8674-8D6CCE354748} + EndGlobalSection +EndGlobal diff --git a/EsperReader/EsperReader.vcxproj b/EsperReader/EsperReader.vcxproj new file mode 100644 index 0000000..4415037 --- /dev/null +++ b/EsperReader/EsperReader.vcxproj @@ -0,0 +1,152 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {78a10c1e-b9e0-4f66-b625-9ad5b43bf72f} + EsperDeck + 10.0 + EsperReader + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/EsperReader/EsperReader.vcxproj.filters b/EsperReader/EsperReader.vcxproj.filters new file mode 100644 index 0000000..e30865d --- /dev/null +++ b/EsperReader/EsperReader.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/EsperReader/EsperReader.vcxproj.user b/EsperReader/EsperReader.vcxproj.user new file mode 100644 index 0000000..841a344 --- /dev/null +++ b/EsperReader/EsperReader.vcxproj.user @@ -0,0 +1,19 @@ + + + + $(ProjectDir)decks\DECK_PLAYER_0 + WindowsLocalDebugger + + + $(ProjectDir)decks\DECK_PLAYER_0 + WindowsLocalDebugger + + + $(ProjectDir)decks\DECK_PLAYER_0 + WindowsLocalDebugger + + + $(ProjectDir)decks\DECK_PLAYER_0 + WindowsLocalDebugger + + \ No newline at end of file diff --git a/EsperReader/deck.h b/EsperReader/deck.h new file mode 100644 index 0000000..f880844 --- /dev/null +++ b/EsperReader/deck.h @@ -0,0 +1,34 @@ +#include +#include +#include "deckSkillNames.h" + +using namespace std; + +typedef struct Deck +{ + char Header[4]; + char Name[16]; + short CardData[30]; + short SchoolCount; + short Metadata; // Purpose unknown. + char pad[16]; +}deckbin; + +void ParseDeckFile(char* filename) +{ + fstream DeckBinary; + deckbin deck; + + DeckBinary.open(filename, ios::in | ios::binary); + DeckBinary.read((char*)&deck, (sizeof(deck))); + cout << "Name: " << deck.Name << "\nSchool Count: " << deck.SchoolCount << "\nUnknown Metadata: " << deck.Metadata << "\n"; + + for (int n = 0; n < 30; n++) + { + cout << "\nCard #" << (n + 1) << ": "; + printSkillNames(deck.CardData[n]); + } + + DeckBinary.close(); + return; +} \ No newline at end of file diff --git a/EsperReader/deckSkillNames.h b/EsperReader/deckSkillNames.h new file mode 100644 index 0000000..36eb0c9 --- /dev/null +++ b/EsperReader/deckSkillNames.h @@ -0,0 +1,1509 @@ +using namespace std; + +void printSkillNames(int ID) +{ + switch (ID) + { + case -1: + cout << "Aura Particle"; + break; + case 1: + cout << "Psycho Wave"; + break; + case 2: + cout << "Psycho Burst"; + break; + case 3: + cout << "Psycho Knife"; + break; + case 4: + cout << "Psycho Blade"; + break; + case 5: + cout << "Excalibur"; + break; + case 6: + cout << "Laser Blade"; + break; + case 7: + cout << "Mist Blade"; + break; + case 8: + cout << "Lightning Sword"; + break; + case 9: + cout << "Ice Sword"; + break; + case 10: + cout << "Flame Sword"; + break; + case 11: + cout << "Blazing Sword"; + break; + case 12: + cout << "Vacuum Slash"; + break; + case 13: + cout << "Empty Hand"; + break; + case 14: + cout << "High-speed Punch"; + break; + case 15: + cout << "Dragon Punch"; + break; + case 16: + cout << "Tiger Kick"; + break; + case 17: + cout << "Leg Throw"; + break; + case 18: + cout << "Hyperkick"; + break; + case 19: + cout << "Hyperpunch"; + break; + case 20: + cout << "Dance of Death"; + break; + case 21: + cout << "Sky Pursuit"; + break; + case 22: + cout << "Pursuit"; + break; + case 23: + cout << "Splashdown"; + break; + case 24: + cout << "Aura Leak"; + break; + case 25: + cout << "Aura Backflow"; + break; + case 26: + cout << "Dhampir Claw"; + break; + case 27: + cout << "Dhampir Fang"; + break; + case 28: + cout << "Song of Succubus"; + break; + case 29: + cout << "Succubus Tempt"; + break; + case 30: + cout << "Muramasa Blade"; + break; + case 31: + cout << "Bomb"; + break; + case 32: + cout << "Big Bomb"; + break; + case 33: + cout << "Cluster Bomb"; + break; + case 34: + cout << "Psycho Sniper"; + break; + case 35: + cout << "Debris Bullet"; + break; + case 36: + cout << "Throwing Stone"; + break; + case 37: + cout << "Stone Shot"; + break; + case 38: + cout << "Rock Shot"; + break; + case 39: + cout << "Rail Gun"; + break; + case 40: + cout << "Psycho Spear"; + break; + case 41: + cout << "Psycho Kinesis"; + break; + case 42: + cout << "Laser"; + break; + case 43: + cout << "Slide Laser"; + break; + case 44: + cout << "Mist Laser"; + break; + case 45: + cout << "Double Laser"; + break; + case 46: + cout << "Auto Shell"; + break; + case 47: + cout << "Mist Blaster"; + break; + case 48: + cout << "Rapid Cannon"; + break; + case 49: + cout << "Charged Particle"; + break; + case 50: + cout << "Ricochet Laser"; + break; + case 51: + cout << "Vibration Laser"; + break; + case 52: + cout << "Trench Mortar"; + break; + case 53: + cout << "Blaster"; + break; + case 54: + cout << "Vibration Blaster"; + break; + case 55: + cout << "Bundled Laser"; + break; + case 56: + cout << "Bundled Blaster"; + break; + case 57: + cout << "Gungnir"; + break; + case 58: + cout << "Finisher"; + break; + case 59: + cout << "Sonic Boom"; + break; + case 60: + cout << "Ice Lance"; + break; + case 61: + cout << "Bullet of Fire"; + break; + case 62: + cout << "Blazing Bullet"; + break; + case 63: + cout << "Lightning Blade"; + break; + case 64: + cout << "Storm Blade"; + break; + case 65: + cout << "Root of Tree"; + break; + case 66: + cout << "Fang of Tree"; + break; + case 67: + cout << "Scar of Battles"; + break; + case 68: + cout << "Memory of Battle"; + break; + case 69: + cout << "Snap"; + break; + case 70: + cout << "Ki Bullet"; + break; + case 71: + cout << "Hyper Ki Bullet"; + break; + case 72: + cout << "Ki Lance"; + break; + case 73: + cout << "Hyper Ki Lance"; + break; + case 74: + cout << "Ki Cannon"; + break; + case 75: + cout << "Scream of Evil"; + break; + case 76: + cout << "Lucifer's Arrow"; + break; + case 77: + cout << "Judge of Anubis"; + break; + case 78: + cout << "Greedy Spirit"; + break; + case 79: + cout << "Swarm of Moths"; + break; + case 80: + cout << "Arrow of Artemis"; + break; + case 81: + cout << "Fire of Gehenna"; + break; + case 82: + cout << "Venom Fang"; + break; + case 83: + cout << "Crawlers"; + break; + case 84: + cout << "Demon's Fire"; + break; + case 85: + cout << "Seal of Death"; + break; + case 86: + cout << "Vampire Bat"; + break; + case 87: + cout << "Hell's Fire"; + break; + case 88: + cout << "Lingering Flame"; + break; + case 89: + cout << "Agonies of Death"; + break; + case 90: + cout << "Frighten"; + break; + case 91: + cout << "Heat from Void"; + break; + case 92: + cout << "Meteor"; + break; + case 93: + cout << "Gravity Press"; + break; + case 94: + cout << "Massive Quake"; + break; + case 95: + cout << "Thor's Hammer"; + break; + case 96: + cout << "Remote Mine"; + break; + case 97: + cout << "Timer Mine"; + break; + case 98: + cout << "Rain of Stones"; + break; + case 99: + cout << "Rain of Rocks"; + break; + case 100: + cout << "Photon Shower"; + break; + case 101: + cout << "Killer Satellite"; + break; + case 102: + cout << "Lightning Bolt"; + break; + case 103: + cout << "Thunder Storm"; + break; + case 104: + cout << "Ice Storm"; + break; + case 105: + cout << "Fire Storm"; + break; + case 106: + cout << "Blazing Storm"; + break; + case 107: + cout << "Celestial Ship"; + break; + case 108: + cout << "Binding Needle"; + break; + case 109: + cout << "Photon Wave"; + break; + case 110: + cout << "Photon Burst"; + break; + case 111: + cout << "Twister"; + break; + case 112: + cout << "Whirlwind"; + break; + case 113: + cout << "Recollection"; + break; + case 114: + cout << "Copy"; + break; + case 115: + cout << "Crystal Wall"; + break; + case 116: + cout << "Wall"; + break; + case 117: + cout << "Psychic Wall"; + break; + case 118: + cout << "Laser Barrier"; + break; + case 119: + cout << "Flash Barrier"; + break; + case 120: + cout << "Paralyze Barrier"; + break; + case 121: + cout << "Eraser"; + break; + case 122: + cout << "Photon Barrier"; + break; + case 123: + cout << "Glacial Wall"; + break; + case 124: + cout << "Wall of Current"; + break; + case 125: + cout << "Wall of Fire"; + break; + case 126: + cout << "Cyclone"; + break; + case 127: + cout << "Shield of Ruin"; + break; + case 128: + cout << "Shield of Aegis"; + break; + case 129: + cout << "Psycho Shell"; + break; + case 130: + cout << "Laser Shell"; + break; + case 131: + cout << "Guard of Water"; + break; + case 132: + cout << "Fortress of Iron"; + break; + case 133: + cout << "Iron Skin"; + break; + case 134: + cout << "Mind's Eye"; + break; + case 135: + cout << "Protect Circle"; + break; + case 136: + cout << "Guardian Angel"; + break; + case 137: + cout << "About Face"; + break; + case 138: + cout << "Reverse"; + break; + case 139: + cout << "Reflect Barrier"; + break; + case 140: + cout << "Reflect Mirror"; + break; + case 141: + cout << "Vacuum Wall"; + break; + case 142: + cout << "Absorb Energy"; + break; + case 143: + cout << "Learning"; + break; + case 144: + cout << "Digestion"; + break; + case 145: + cout << "Flash Hole"; + break; + case 146: + cout << "Dark Hole"; + break; + case 147: + cout << "Bend"; + break; + case 148: + cout << "Change Course"; + break; + case 149: + cout << "Gust"; + break; + case 150: + cout << "Block"; + break; + case 151: + cout << "Protect"; + break; + case 152: + cout << "Guard"; + break; + case 153: + cout << "Devil's Arm"; + break; + case 154: + cout << "Angel's Wing"; + break; + case 155: + cout << "Interference"; + break; + case 156: + cout << "Restrain"; + break; + case 157: + cout << "Exhaust"; + break; + case 158: + cout << "Bloody Ritual"; + break; + case 159: + cout << "Disintegrate"; + break; + case 160: + cout << "Wind Pressure"; + break; + case 161: + cout << "Tiger Slayer"; + break; + case 162: + cout << "Dragon Slayer"; + break; + case 163: + cout << "Giant Slayer"; + break; + case 164: + cout << "Lack"; + break; + case 165: + cout << "Hungry Demon"; + break; + case 166: + cout << "Turbulence"; + break; + case 167: + cout << "Calamity"; + break; + case 168: + cout << "Fairy Ring"; + break; + case 169: + cout << "Shatter"; + break; + case 170: + cout << "Confusion Gas"; + break; + case 171: + cout << "Eliminate"; + break; + case 172: + cout << "Panic Gas"; + break; + case 173: + cout << "Evaporate"; + break; + case 174: + cout << "Abyss"; + break; + case 175: + cout << "Diabolical Trick"; + break; + case 176: + cout << "Violent Charge"; + break; + case 177: + cout << "Particle Convert"; + break; + case 178: + cout << "Starting Point"; + break; + case 179: + cout << "Judgement"; + break; + case 180: + cout << "Neutralization"; + break; + case 181: + cout << "Angel's Breath"; + break; + case 182: + cout << "Purify"; + break; + case 183: + cout << "Freeze Gas"; + break; + case 184: + cout << "Refresh"; + break; + case 185: + cout << "Angel Tears"; + break; + case 186: + cout << "Return to Nature"; + break; + case 187: + cout << "Desertification"; + break; + case 188: + cout << "Holy Ray"; + break; + case 189: + cout << "Lunar Force"; + break; + case 190: + cout << "Reduce Gravity"; + break; + case 191: + cout << "Abnormal Gravity"; + break; + case 192: + cout << "Dense Fog"; + break; + case 193: + cout << "Backdraft"; + break; + case 194: + cout << "Optimization"; + break; + case 195: + cout << "Nature Blessing"; + break; + case 196: + cout << "Berserk"; + break; + case 197: + cout << "Forest Sanctuary"; + break; + case 198: + cout << "Commandments"; + break; + case 199: + cout << "Fatigue"; + break; + case 200: + cout << "Soul Cage"; + break; + case 201: + cout << "Irregular Rhythm"; + break; + case 202: + cout << "Memory Lapse"; + break; + case 203: + cout << "Necronomicon"; + break; + case 204: + cout << "Spore Schism"; + break; + case 205: + cout << "Athena's Command"; + break; + case 206: + cout << "Pressure"; + break; + case 207: + cout << "Lift Up"; + break; + case 208: + cout << "Paralyze"; + break; + case 209: + cout << "Entangle"; + break; + case 210: + cout << "Pin Down"; + break; + case 211: + cout << "Triple Lasers"; + break; + case 212: + cout << "Optical Camo"; + break; + case 213: + cout << "Decoy"; + break; + case 214: + cout << "Meditation"; + break; + case 215: + cout << "Friendship"; + break; + case 216: + cout << "Doze"; + break; + case 217: + cout << "Curse of Earth"; + break; + case 218: + cout << "Heat"; + break; + case 219: + cout << "Stimulate"; + break; + case 220: + cout << "Tiger's Strength"; + break; + case 221: + cout << "Trance"; + break; + case 222: + cout << "Alleviate"; + break; + case 223: + cout << "Burden"; + break; + case 224: + cout << "Speed Up"; + break; + case 225: + cout << "Lightning Speed"; + break; + case 226: + cout << "Doppelganger"; + break; + case 227: + cout << "Magnetic Field"; + break; + case 228: + cout << "Acquisition"; + break; + case 229: + cout << "Skywalk"; + break; + case 230: + cout << "Demon's Wing"; + break; + case 231: + cout << "Frostbite"; + break; + case 232: + cout << "Brain Concussion"; + break; + case 233: + cout << "Gravity Mine"; + break; + case 234: + cout << "Reduce Entropy"; + break; + case 235: + cout << "Ki Palm"; + break; + case 236: + cout << "Mind Reading"; + break; + case 237: + cout << "Armaros"; + break; + case 238: + cout << "Void"; + break; + case 239: + cout << "Healing Water"; + break; + case 240: + cout << "Graceful Woods"; + break; + case 241: + cout << "Blessed Water"; + break; + case 242: + cout << "Regenerate"; + break; + case 243: + cout << "Fusion"; + break; + case 244: + cout << "Invulnerability"; + break; + case 245: + cout << "Scientism"; + break; + case 246: + cout << "Recall"; + break; + case 247: + cout << "Dazzle"; + break; + case 248: + cout << "Quiet Days"; + break; + case 249: + cout << "Call"; + break; + case 250: + cout << "Retreat"; + break; + case 251: + cout << "Change the World"; + break; + case 252: + cout << "Teleportation"; + break; + case 253: + cout << "Suprise Attack"; + break; + case 254: + cout << "Levitate"; + break; + case 255: + cout << "Return"; + break; + case 256: + cout << "Overheat"; + break; + case 257: + cout << "Jump"; + break; + case 258: + cout << "Bravery Decision"; + break; + case 259: + cout << "Mephisto's Pact"; + break; + case 260: + cout << "Bomb Shot"; + break; + case 261: + cout << "Providence"; + break; + case 262: + cout << "Amulet"; + break; + case 263: + cout << "Trigger"; + break; + case 264: + cout << "Annoying Gift"; + break; + case 265: + cout << "Meltdown"; + break; + case 266: + cout << "Relearn"; + break; + case 267: + cout << "Steal Power"; + break; + case 268: + cout << "Vicious Balance"; + break; + case 269: + cout << "Level Berserk"; + break; + case 270: + cout << "Level Amp"; + break; + case 271: + cout << "Level Boost"; + break; + case 272: + cout << "Sensor Mine"; + break; + case 273: + cout << "Power Shell"; + break; + case 274: + cout << "Power"; + break; + case 275: + cout << "Vanishing Light"; + break; + case 276: + cout << "Crush"; + break; + case 277: + cout << "Confused Gravity"; + break; + case 278: + cout << "Accelerate"; + break; + case 279: + cout << "Compressor"; + break; + case 280: + cout << "Quantum Decay"; + break; + case 281: + cout << "Octolaser"; + break; + case 282: + cout << "Orb"; + break; + case 283: + cout << "Crystallization"; + break; + case 284: + cout << "Piece of Fire"; + break; + case 285: + cout << "Piece of Ice"; + break; + case 286: + cout << "Piece of Thunder"; + break; + case 287: + cout << "Tremor"; + break; + case 288: + cout << "Chaos"; + break; + case 289: + cout << "Stagnant Air"; + break; + case 290: + cout << "Disrupt"; + break; + case 291: + cout << "Swift Blow"; + break; + case 292: + cout << "Swift Kick"; + break; + case 293: + cout << "Swift Punch"; + break; + case 294: + cout << "Dash"; + break; + case 295: + cout << "Spiritual World"; + break; + case 296: + cout << "Thieving Imp"; + break; + case 297: + cout << "Reincarnation"; + break; + case 298: + cout << "Sign of Saints"; + break; + case 299: + cout << "Demon's Venom"; + break; + case 300: + cout << "Rebirth"; + break; + case 301: + cout << "Delay Bomb"; + break; + case 302: + cout << "Mini-Meteor"; + break; + case 303: + cout << "Antigravity Trap"; + break; + case 304: + cout << "Charge"; + break; + case 305: + cout << "Aura Cannon"; + break; + case 306: + cout << "Throttle Blaster"; + break; + case 307: + cout << "Boost Mine"; + break; + case 308: + cout << "Quantum Amp"; + break; + case 309: + cout << "Piece of Wind"; + break; + case 310: + cout << "Throttle Fireball"; + break; + case 311: + cout << "Tornado"; + break; + case 312: + cout << "Earthquake"; + break; + case 313: + cout << "Vacuum Palm"; + break; + case 314: + cout << "Backdraft Bullet"; + break; + case 315: + cout << "Lost Dragon"; + break; + case 316: + cout << "Disremember"; + break; + case 317: + cout << "True Muramasa"; + break; + case 318: + cout << "Will-o'-the-Wisp"; + break; + case 319: + cout << "Jack Pot"; + break; + case 320: + cout << "Joke of Anubis"; + break; + case 321: + cout << "Excaliber"; + break; + case 322: + cout << "Knife Grind"; + break; + case 323: + cout << "Fast Bomb"; + break; + case 324: + cout << "Shield Breaker"; + break; + case 325: + cout << "Fast Wave"; + break; + case 326: + cout << "Twist Laser"; + break; + case 327: + cout << "Erase Shell"; + break; + case 328: + cout << "Level Baton"; + break; + case 329: + cout << "Arc of Fire"; + break; + case 330: + cout << "Chill Breeze"; + break; + case 331: + cout << "Blessed Rain"; + break; + case 332: + cout << "Unison"; + break; + case 333: + cout << "Crawling Bullet"; + break; + case 334: + cout << "Dragon Bullet"; + break; + case 335: + cout << "Ethos Inspiration"; + break; + case 336: + cout << "Vacuum Bullet"; + break; + case 337: + cout << "Dance of Moths"; + break; + case 338: + cout << "Illusion of Death"; + break; + case 339: + cout << "Judge of Ares"; + break; + case 340: + cout << "Armaros Watch"; + break; + case 341: + cout << "Still Moment"; + break; + case 342: + cout << "EL Bomb"; + break; + case 343: + cout << "Life-Giving Sword"; + break; + case 344: + cout << "Pursuit Stopper"; + break; + case 345: + cout << "Mobilize"; + break; + case 346: + cout << "Arms of the Curse"; + break; + case 347: + cout << "Freeze Shot"; + break; + case 348: + cout << "Teleportrap"; + break; + case 349: + cout << "Giga Ruin"; + break; + case 350: + cout << "Wings of Hope"; + break; + case 351: + cout << "Cooling"; + break; + case 352: + cout << "Protecting Air"; + break; + case 353: + cout << "Geyser Impact"; + break; + case 354: + cout << "Vast Mayhem"; + break; + case 355: + cout << "Particle Mortar"; + break; + case 356: + cout << "Place of Invisibility"; + break; + case 357: + cout << "Young White Dragon"; + break; + case 358: + cout << "Dragon Laser"; + break; + case 359: + cout << "Impact Burst"; + break; + case 360: + cout << "Play Dead"; + break; + case 361: + cout << "Downcast"; + break; + case 362: + cout << "Vapor Cloud"; + break; + case 363: + cout << "Heat Devil"; + break; + case 364: + cout << "Rafflesia Fang"; + break; + case 365: + cout << "Poison Blur"; + break; + case 366: + cout << "Failing Wall"; + break; + case 367: + cout << "Tiger Prevails"; + break; + case 368: + cout << "Martial Arts Scroll"; + break; + case 369: + cout << "Sword Slap"; + break; + case 370: + cout << "Withering Curse"; + break; + case 371: + cout << "Traveling Thought"; + break; + case 372: + cout << "Dark Protection"; + break; + case 373: + cout << "Venom Drip"; + break; + case 374: + cout << "Phantom Dust"; + break; + case 375: + cout << " "; + break; + case 376: + cout << " "; + break; + case 377: + cout << " "; + break; + case 378: + cout << " "; + break; + case 379: + cout << "Unused / Corrupted Skill"; + break; + case 380: + cout << "Unused / Corrupted Skill"; + break; + case 381: + cout << "Failing Wall"; + break; + case 382: + cout << "Tiger Prevails"; + break; + case 383: + cout << "Martial Arts Scroll"; + break; + case 384: + cout << "Sword Slap"; + break; + case 385: + cout << " "; + break; + case 386: + cout << "Withering Curse"; + break; + case 387: + cout << " "; + break; + case 388: + cout << "Traveling Thought"; + break; + case 389: + cout << "Dark Protection"; + break; + case 390: + cout << "Venom Drip"; + break; + case 391: + cout << "Phantom Dust"; + break; + case 392: + cout << "Unused / Corrupted Skill"; + break; + case 393: + cout << "Unused / Corrupted Skill"; + break; + case 394: + cout << "Psycho Wave"; + break; + case 395: + cout << "Psycho Wave"; + break; + case 396: + cout << "Psycho Wave"; + break; + case 397: + cout << "Psycho Wave"; + break; + case 398: + cout << "Psycho Wave"; + break; + case 399: + cout << "Psycho Wave"; + break; + case 400: + cout << "Psycho Wave"; + break; + case 401: + cout << "Psycho Wave"; + break; + case 402: + cout << "Psycho Wave"; + break; + case 403: + cout << "Psycho Wave"; + break; + case 404: + cout << "Psycho Wave"; + break; + case 405: + cout << "Psycho Wave"; + break; + case 406: + cout << "Psycho Wave"; + break; + case 407: + cout << "Psycho Wave"; + break; + case 408: + cout << "Psycho Wave"; + break; + case 409: + cout << "Psycho Wave"; + break; + case 410: + cout << "Psycho Wave"; + break; + case 411: + cout << "Psycho Wave"; + break; + case 412: + cout << "Psycho Wave"; + break; + case 413: + cout << "Psycho Wave"; + break; + case 414: + cout << "Psycho Wave"; + break; + case 415: + cout << "Psycho Wave"; + break; + case 416: + cout << "Psycho Wave"; + break; + case 417: + cout << "Psycho Wave"; + break; + case 418: + cout << "Psycho Wave"; + break; + case 419: + cout << "Psycho Wave"; + break; + case 420: + cout << "Psycho Wave"; + break; + case 421: + cout << "Psycho Wave"; + break; + case 422: + cout << "Psycho Wave"; + break; + case 423: + cout << "Psycho Wave"; + break; + case 424: + cout << "Psycho Wave"; + break; + case 425: + cout << "Psycho Wave"; + break; + case 426: + cout << "Psycho Wave"; + break; + case 427: + cout << "Psycho Wave"; + break; + case 428: + cout << "Psycho Wave"; + break; + case 429: + cout << "Psycho Wave"; + break; + case 430: + cout << "Psycho Wave"; + break; + case 431: + cout << "Psycho Wave"; + break; + case 432: + cout << "Psycho Wave"; + break; + case 433: + cout << "Psycho Wave"; + break; + case 434: + cout << "Psycho Wave"; + break; + case 435: + cout << "Psycho Wave"; + break; + case 436: + cout << "Psycho Wave"; + break; + case 437: + cout << "Psycho Wave"; + break; + case 438: + cout << "Psycho Wave"; + break; + case 439: + cout << "Psycho Wave"; + break; + case 440: + cout << "Psycho Wave"; + break; + case 441: + cout << "Psycho Wave"; + break; + case 442: + cout << "Psycho Wave"; + break; + case 443: + cout << "Psycho Wave"; + break; + case 444: + cout << "Psycho Wave"; + break; + case 445: + cout << "Psycho Wave"; + break; + case 446: + cout << "Psycho Wave"; + break; + case 447: + cout << "Psycho Wave"; + break; + case 448: + cout << "Psycho Wave"; + break; + case 449: + cout << "Psycho Wave"; + break; + case 450: + cout << "Psycho Wave"; + break; + case 451: + cout << "Psycho Wave"; + break; + case 452: + cout << "Psycho Wave"; + break; + case 453: + cout << "Psycho Wave"; + break; + case 454: + cout << "Psycho Wave"; + break; + case 455: + cout << "Psycho Wave"; + break; + case 456: + cout << "Psycho Wave"; + break; + case 457: + cout << "Psycho Wave"; + break; + case 458: + cout << "Psycho Wave"; + break; + case 459: + cout << "Psycho Wave"; + break; + case 460: + cout << "Psycho Wave"; + break; + case 461: + cout << "Psycho Wave"; + break; + case 462: + cout << "Psycho Wave"; + break; + case 463: + cout << "Psycho Wave"; + break; + case 464: + cout << "Psycho Wave"; + break; + case 465: + cout << "Psycho Wave"; + break; + case 466: + cout << "Psycho Wave"; + break; + case 467: + cout << "Psycho Wave"; + break; + case 468: + cout << "Psycho Wave"; + break; + case 469: + cout << "Psycho Wave"; + break; + case 470: + cout << "Psycho Wave"; + break; + case 471: + cout << "Psycho Wave"; + break; + case 472: + cout << "Psycho Wave"; + break; + case 473: + cout << "Psycho Wave"; + break; + case 474: + cout << "Psycho Wave"; + break; + case 475: + cout << "Psycho Wave"; + break; + case 476: + cout << "Psycho Wave"; + break; + case 477: + cout << "Psycho Wave"; + break; + case 478: + cout << "Psycho Wave"; + break; + case 479: + cout << "Psycho Wave"; + break; + case 480: + cout << "Psycho Wave"; + break; + case 481: + cout << "Psycho Wave"; + break; + case 482: + cout << "Psycho Wave"; + break; + case 483: + cout << "Psycho Wave"; + break; + case 484: + cout << "Psycho Wave"; + break; + case 485: + cout << "Psycho Wave"; + break; + case 486: + cout << "Psycho Wave"; + break; + case 487: + cout << "Psycho Wave"; + break; + case 488: + cout << "Psycho Wave"; + break; + case 489: + cout << "Psycho Wave"; + break; + case 490: + cout << "Psycho Wave"; + break; + case 491: + cout << "Psycho Wave"; + break; + case 492: + cout << "Psycho Wave"; + break; + case 493: + cout << "Psycho Wave"; + break; + case 494: + cout << "Psycho Wave"; + break; + case 495: + cout << "Psycho Wave"; + break; + case 496: + cout << "Psycho Wave"; + break; + case 497: + cout << "Psycho Wave"; + break; + case 498: + cout << "Psycho Wave"; + break; + default: + cout << "unk"; + break; + } + return; +} \ No newline at end of file diff --git a/EsperReader/readme.md b/EsperReader/readme.md new file mode 100644 index 0000000..0fd4c05 --- /dev/null +++ b/EsperReader/readme.md @@ -0,0 +1,12 @@ +# Esper Reader +This is a tool written in C++ to parse files from Phantom Dust. Right now, it only supports the most basic file format, deck files. I plan to support +parsing and maybe dumping of data from many other formats, such as ALR and SSB. Parsers will all be in separate source files, with the main function +simply figuring out which parser to use. Since there's only 1 parser right now (and deck files have no file extension or magic), it just goes straight +to deck parsing. Contributions are welcome. + +## Usage +Drag and drop any binary deck file onto EsperReader.exe. + +## Building +If you want debugging to work, you'll need to create a `decks` folder in the project directory, then copy in `DECK_PLAYER_0` from `Assets/Data/com/deck` +in your Phantom Dust dump. This is the file that it will parse by default. \ No newline at end of file