ref: cbdeb8387a30444a50f0f8561e0249cd0dc9b3cb
parent: 01aa306241cded28cf14e20744138a7551a9ff4d
author: Jacob Moody <moody@posixcafe.org>
date: Mon May 15 23:21:42 EDT 2023
view: fix species translation and some more data fields
--- a/dex.c
+++ b/dex.c
@@ -153,6 +153,7 @@
[148] "dragonite",
[149] "mewtwo",
[150] "mew",
+
[151] "chikorita",
[152] "bayleef",
[153] "meganium",
@@ -253,6 +254,7 @@
[248] "lugia",
[249] "ho-oh",
[250] "celebi",
+
[251] "treecko",
[252] "grovyle",
[253] "sceptile",
@@ -892,4 +894,1065 @@
[887] "zacian",
[888] "zamazenta",
[889] "eternatus",
+};
+
+char *movenametab[] = {
+ [0] nil,
+ [1] "Pound",
+ [2] "Karate Chop",
+ [3] "Double Slap",
+ [4] "Comet Punch",
+ [5] "Mega Punch",
+ [6] "Pay Day",
+ [7] "Fire Punch",
+ [8] "Ice Punch",
+ [9] "Thunder Punch",
+ [10] "Scratch",
+ [11] "Vise Grip",
+ [12] "Guillotine",
+ [13] "Razor Wind",
+ [14] "Swords Dance",
+ [15] "Cut",
+ [16] "Gust",
+ [17] "Wing Attack",
+ [18] "Whirlwind",
+ [19] "Fly",
+ [20] "Bind",
+ [21] "Slam",
+ [22] "Vine Whip",
+ [23] "Stomp",
+ [24] "Double Kick",
+ [25] "Mega Kick",
+ [26] "Jump Kick",
+ [27] "Rolling Kick",
+ [28] "Sand Attack",
+ [29] "Headbutt",
+ [30] "Horn Attack",
+ [31] "Fury Attack",
+ [32] "Horn Drill",
+ [33] "Tackle",
+ [34] "Body Slam",
+ [35] "Wrap",
+ [36] "Take Down",
+ [37] "Thrash",
+ [38] "Double-Edge",
+ [39] "Tail Whip",
+ [40] "Poison Sting",
+ [41] "Twineedle",
+ [42] "Pin Missile",
+ [43] "Leer",
+ [44] "Bite",
+ [45] "Growl",
+ [46] "Roar",
+ [47] "Sing",
+ [48] "Supersonic",
+ [49] "Sonic Boom",
+ [50] "Disable",
+ [51] "Acid",
+ [52] "Ember",
+ [53] "Flamethrower",
+ [54] "Mist",
+ [55] "Water Gun",
+ [56] "Hydro Pump",
+ [57] "Surf",
+ [58] "Ice Beam",
+ [59] "Blizzard",
+ [60] "Psybeam",
+ [61] "Bubble Beam",
+ [62] "Aurora Beam",
+ [63] "Hyper Beam",
+ [64] "Peck",
+ [65] "Drill Peck",
+ [66] "Submission",
+ [67] "Low Kick",
+ [68] "Counter",
+ [69] "Seismic Toss",
+ [70] "Strength",
+ [71] "Absorb",
+ [72] "Mega Drain",
+ [73] "Leech Seed",
+ [74] "Growth",
+ [75] "Razor Leaf",
+ [76] "Solar Beam",
+ [77] "Poison Powder",
+ [78] "Stun Spore",
+ [79] "Sleep Powder",
+ [80] "Petal Dance",
+ [81] "String Shot",
+ [82] "Dragon Rage",
+ [83] "Fire Spin",
+ [84] "Thunder Shock",
+ [85] "Thunderbolt",
+ [86] "Thunder Wave",
+ [87] "Thunder",
+ [88] "Rock Throw",
+ [89] "Earthquake",
+ [90] "Fissure",
+ [91] "Dig",
+ [92] "Toxic",
+ [93] "Confusion",
+ [94] "Psychic",
+ [95] "Hypnosis",
+ [96] "Meditate",
+ [97] "Agility",
+ [98] "Quick Attack",
+ [99] "Rage",
+ [100] "Teleport",
+ [101] "Night Shade",
+ [102] "Mimic",
+ [103] "Screech",
+ [104] "Double Team",
+ [105] "Recover",
+ [106] "Harden",
+ [107] "Minimize",
+ [108] "Smokescreen",
+ [109] "Confuse Ray",
+ [110] "Withdraw",
+ [111] "Defense Curl",
+ [112] "Barrier",
+ [113] "Light Screen",
+ [114] "Haze",
+ [115] "Reflect",
+ [116] "Focus Energy",
+ [117] "Bide",
+ [118] "Metronome",
+ [119] "Mirror Move",
+ [120] "Self-Destruct",
+ [121] "Egg Bomb",
+ [122] "Lick",
+ [123] "Smog",
+ [124] "Sludge",
+ [125] "Bone Club",
+ [126] "Fire Blast",
+ [127] "Waterfall",
+ [128] "Clamp",
+ [129] "Swift",
+ [130] "Skull Bash",
+ [131] "Spike Cannon",
+ [132] "Constrict",
+ [133] "Amnesia",
+ [134] "Kinesis",
+ [135] "Soft-Boiled",
+ [136] "High Jump Kick",
+ [137] "Glare",
+ [138] "Dream Eater",
+ [139] "Poison Gas",
+ [140] "Barrage",
+ [141] "Leech Life",
+ [142] "Lovely Kiss",
+ [143] "Sky Attack",
+ [144] "Transform",
+ [145] "Bubble",
+ [146] "Dizzy Punch",
+ [147] "Spore",
+ [148] "Flash",
+ [149] "Psywave",
+ [150] "Splash",
+ [151] "Acid Armor",
+ [152] "Crabhammer",
+ [153] "Explosion",
+ [154] "Fury Swipes",
+ [155] "Bonemerang",
+ [156] "Rest",
+ [157] "Rock Slide",
+ [158] "Hyper Fang",
+ [159] "Sharpen",
+ [160] "Conversion",
+ [161] "Tri Attack",
+ [162] "Super Fang",
+ [163] "Slash",
+ [164] "Substitute",
+ [165] "Struggle",
+ [166] "Sketch",
+ [167] "Triple Kick",
+ [168] "Thief",
+ [169] "Spider Web",
+ [170] "Mind Reader",
+ [171] "Nightmare",
+ [172] "Flame Wheel",
+ [173] "Snore",
+ [174] "Curse",
+ [175] "Flail",
+ [176] "Conversion",
+ [177] "Aeroblast",
+ [178] "Cotton Spore",
+ [179] "Reversal",
+ [180] "Spite",
+ [181] "Powder Snow",
+ [182] "Protect",
+ [183] "Mach Punch",
+ [184] "Scary Face",
+ [185] "Feint Attack",
+ [186] "Sweet Kiss",
+ [187] "Belly Drum",
+ [188] "Sludge Bomb",
+ [189] "Mud-Slap",
+ [190] "Octazooka",
+ [191] "Spikes",
+ [192] "Zap Cannon",
+ [193] "Foresight",
+ [194] "Destiny Bond",
+ [195] "Perish Song",
+ [196] "Icy Wind",
+ [197] "Detect",
+ [198] "Bone Rush",
+ [199] "Lock-On",
+ [200] "Outrage",
+ [201] "Sandstorm",
+ [202] "Giga Drain",
+ [203] "Endure",
+ [204] "Charm",
+ [205] "Rollout",
+ [206] "False Swipe",
+ [207] "Swagger",
+ [208] "Milk Drink",
+ [209] "Spark",
+ [210] "Fury Cutter",
+ [211] "Steel Wing",
+ [212] "Mean Look",
+ [213] "Attract",
+ [214] "Sleep Talk",
+ [215] "Heal Bell",
+ [216] "Return",
+ [217] "Present",
+ [218] "Frustration",
+ [219] "Safeguard",
+ [220] "Pain Split",
+ [221] "Sacred Fire",
+ [222] "Magnitude",
+ [223] "Dynamic Punch",
+ [224] "Megahorn",
+ [225] "Dragon Breath",
+ [226] "Baton Pass",
+ [227] "Encore",
+ [228] "Pursuit",
+ [229] "Rapid Spin",
+ [230] "Sweet Scent",
+ [231] "Iron Tail",
+ [232] "Metal Claw",
+ [233] "Vital Throw",
+ [234] "Morning Sun",
+ [235] "Synthesis",
+ [236] "Moonlight",
+ [237] "Hidden Power",
+ [238] "Cross Chop",
+ [239] "Twister",
+ [240] "Rain Dance",
+ [241] "Sunny Day",
+ [242] "Crunch",
+ [243] "Mirror Coat",
+ [244] "Psych Up",
+ [245] "Extreme Speed",
+ [246] "Ancient Power",
+ [247] "Shadow Ball",
+ [248] "Future Sight",
+ [249] "Rock Smash",
+ [250] "Whirlpool",
+ [251] "Beat Up",
+ [252] "Fake Out",
+ [253] "Uproar",
+ [254] "Stockpile",
+ [255] "Spit Up",
+ [256] "Swallow",
+ [257] "Heat Wave",
+ [258] "Hail",
+ [259] "Torment",
+ [260] "Flatter",
+ [261] "Will-O-Wisp",
+ [262] "Memento",
+ [263] "Facade",
+ [264] "Focus Punch",
+ [265] "Smelling Salts",
+ [266] "Follow Me",
+ [267] "Nature Power",
+ [268] "Charge",
+ [269] "Taunt",
+ [270] "Helping Hand",
+ [271] "Trick",
+ [272] "Role Play",
+ [273] "Wish",
+ [274] "Assist",
+ [275] "Ingrain",
+ [276] "Superpower",
+ [277] "Magic Coat",
+ [278] "Recycle",
+ [279] "Revenge",
+ [280] "Brick Break",
+ [281] "Yawn",
+ [282] "Knock Off",
+ [283] "Endeavor",
+ [284] "Eruption",
+ [285] "Skill Swap",
+ [286] "Imprison",
+ [287] "Refresh",
+ [288] "Grudge",
+ [289] "Snatch",
+ [290] "Secret Power",
+ [291] "Dive",
+ [292] "Arm Thrust",
+ [293] "Camouflage",
+ [294] "Tail Glow",
+ [295] "Luster Purge",
+ [296] "Mist Ball",
+ [297] "Feather Dance",
+ [298] "Teeter Dance",
+ [299] "Blaze Kick",
+ [300] "Mud Sport",
+ [301] "Ice Ball",
+ [302] "Needle Arm",
+ [303] "Slack Off",
+ [304] "Hyper Voice",
+ [305] "Poison Fang",
+ [306] "Crush Claw",
+ [307] "Blast Burn",
+ [308] "Hydro Cannon",
+ [309] "Meteor Mash",
+ [310] "Astonish",
+ [311] "Weather Ball",
+ [312] "Aromatherapy",
+ [313] "Fake Tears",
+ [314] "Air Cutter",
+ [315] "Overheat",
+ [316] "Odor Sleuth",
+ [317] "Rock Tomb",
+ [318] "Silver Wind",
+ [319] "Metal Sound",
+ [320] "Grass Whistle",
+ [321] "Tickle",
+ [322] "Cosmic Power",
+ [323] "Water Spout",
+ [324] "Signal Beam",
+ [325] "Shadow Punch",
+ [326] "Extrasensory",
+ [327] "Sky Uppercut",
+ [328] "Sand Tomb",
+ [329] "Sheer Cold",
+ [330] "Muddy Water",
+ [331] "Bullet Seed",
+ [332] "Aerial Ace",
+ [333] "Icicle Spear",
+ [334] "Iron Defense",
+ [335] "Block",
+ [336] "Howl",
+ [337] "Dragon Claw",
+ [338] "Frenzy Plant",
+ [339] "Bulk Up",
+ [340] "Bounce",
+ [341] "Mud Shot",
+ [342] "Poison Tail",
+ [343] "Covet",
+ [344] "Volt Tackle",
+ [345] "Magical Leaf",
+ [346] "Water Sport",
+ [347] "Calm Mind",
+ [348] "Leaf Blade",
+ [349] "Dragon Dance",
+ [350] "Rock Blast",
+ [351] "Shock Wave",
+ [352] "Water Pulse",
+ [353] "Doom Desire",
+ [354] "Psycho Boost",
+ [355] "Roost",
+ [356] "Gravity",
+ [357] "Miracle Eye",
+ [358] "Wake-Up Slap",
+ [359] "Hammer Arm",
+ [360] "Gyro Ball",
+ [361] "Healing Wish",
+ [362] "Brine",
+ [363] "Natural Gift",
+ [364] "Feint",
+ [365] "Pluck",
+ [366] "Tailwind",
+ [367] "Acupressure",
+ [368] "Metal Burst",
+ [369] "U-turn",
+ [370] "Close Combat",
+ [371] "Payback",
+ [372] "Assurance",
+ [373] "Embargo",
+ [374] "Fling",
+ [375] "Psycho Shift",
+ [376] "Trump Card",
+ [377] "Heal Block",
+ [378] "Wring Out",
+ [379] "Power Trick",
+ [380] "Gastro Acid",
+ [381] "Lucky Chant",
+ [382] "Me First",
+ [383] "Copycat",
+ [384] "Power Swap",
+ [385] "Guard Swap",
+ [386] "Punishment",
+ [387] "Last Resort",
+ [388] "Worry Seed",
+ [389] "Sucker Punch",
+ [390] "Toxic Spikes",
+ [391] "Heart Swap",
+ [392] "Aqua Ring",
+ [393] "Magnet Rise",
+ [394] "Flare Blitz",
+ [395] "Force Palm",
+ [396] "Aura Sphere",
+ [397] "Rock Polish",
+ [398] "Poison Jab",
+ [399] "Dark Pulse",
+ [400] "Night Slash",
+ [401] "Aqua Tail",
+ [402] "Seed Bomb",
+ [403] "Air Slash",
+ [404] "X-Scissor",
+ [405] "Bug Buzz",
+ [406] "Dragon Pulse",
+ [407] "Dragon Rush",
+ [408] "Power Gem",
+ [409] "Drain Punch",
+ [410] "Vacuum Wave",
+ [411] "Focus Blast",
+ [412] "Energy Ball",
+ [413] "Brave Bird",
+ [414] "Earth Power",
+ [415] "Switcheroo",
+ [416] "Giga Impact",
+ [417] "Nasty Plot",
+ [418] "Bullet Punch",
+ [419] "Avalanche",
+ [420] "Ice Shard",
+ [421] "Shadow Claw",
+ [422] "Thunder Fang",
+ [423] "Ice Fang",
+ [424] "Fire Fang",
+ [425] "Shadow Sneak",
+ [426] "Mud Bomb",
+ [427] "Psycho Cut",
+ [428] "Zen Headbutt",
+ [429] "Mirror Shot",
+ [430] "Flash Cannon",
+ [431] "Rock Climb",
+ [432] "Defog",
+ [433] "Trick Room",
+ [434] "Draco Meteor",
+ [435] "Discharge",
+ [436] "Lava Plume",
+ [437] "Leaf Storm",
+ [438] "Power Whip",
+ [439] "Rock Wrecker",
+ [440] "Cross Poison",
+ [441] "Gunk Shot",
+ [442] "Iron Head",
+ [443] "Magnet Bomb",
+ [444] "Stone Edge",
+ [445] "Captivate",
+ [446] "Stealth Rock",
+ [447] "Grass Knot",
+ [448] "Chatter",
+ [449] "Judgment",
+ [450] "Bug Bite",
+ [451] "Charge Beam",
+ [452] "Wood Hammer",
+ [453] "Aqua Jet",
+ [454] "Attack Order",
+ [455] "Defend Order",
+ [456] "Heal Order",
+ [457] "Head Smash",
+ [458] "Double Hit",
+ [459] "Roar of Time",
+ [460] "Spacial Rend",
+ [461] "Lunar Dance",
+ [462] "Crush Grip",
+ [463] "Magma Storm",
+ [464] "Dark Void",
+ [465] "Seed Flare",
+ [466] "Ominous Wind",
+ [467] "Shadow Force",
+ [468] "Hone Claws",
+ [469] "Wide Guard",
+ [470] "Guard Split",
+ [471] "Power Split",
+ [472] "Wonder Room",
+ [473] "Psyshock",
+ [474] "Venoshock",
+ [475] "Autotomize",
+ [476] "Rage Powder",
+ [477] "Telekinesis",
+ [478] "Magic Room",
+ [479] "Smack Down",
+ [480] "Storm Throw",
+ [481] "Flame Burst",
+ [482] "Sludge Wave",
+ [483] "Quiver Dance",
+ [484] "Heavy Slam",
+ [485] "Synchronoise",
+ [486] "Electro Ball",
+ [487] "Soak",
+ [488] "Flame Charge",
+ [489] "Coil",
+ [490] "Low Sweep",
+ [491] "Acid Spray",
+ [492] "Foul Play",
+ [493] "Simple Beam",
+ [494] "Entrainment",
+ [495] "After You",
+ [496] "Round",
+ [497] "Echoed Voice",
+ [498] "Chip Away",
+ [499] "Clear Smog",
+ [500] "Stored Power",
+ [501] "Quick Guard",
+ [502] "Ally Switch",
+ [503] "Scald",
+ [504] "Shell Smash",
+ [505] "Heal Pulse",
+ [506] "Hex",
+ [507] "Sky Drop",
+ [508] "Shift Gear",
+ [509] "Circle Throw",
+ [510] "Incinerate",
+ [511] "Quash",
+ [512] "Acrobatics",
+ [513] "Reflect Type",
+ [514] "Retaliate",
+ [515] "Final Gambit",
+ [516] "Bestow",
+ [517] "Inferno",
+ [518] "Water Pledge",
+ [519] "Fire Pledge",
+ [520] "Grass Pledge",
+ [521] "Volt Switch",
+ [522] "Struggle Bug",
+ [523] "Bulldoze",
+ [524] "Frost Breath",
+ [525] "Dragon Tail",
+ [526] "Work Up",
+ [527] "Electroweb",
+ [528] "Wild Charge",
+ [529] "Drill Run",
+ [530] "Dual Chop",
+ [531] "Heart Stamp",
+ [532] "Horn Leech",
+ [533] "Sacred Sword",
+ [534] "Razor Shell",
+ [535] "Heat Crash",
+ [536] "Leaf Tornado",
+ [537] "Steamroller",
+ [538] "Cotton Guard",
+ [539] "Night Daze",
+ [540] "Psystrike",
+ [541] "Tail Slap",
+ [542] "Hurricane",
+ [543] "Head Charge",
+ [544] "Gear Grind",
+ [545] "Searing Shot",
+ [546] "Techno Blast",
+ [547] "Relic Song",
+ [548] "Secret Sword",
+ [549] "Glaciate",
+ [550] "Bolt Strike",
+ [551] "Blue Flare",
+ [552] "Fiery Dance",
+ [553] "Freeze Shock",
+ [554] "Ice Burn",
+ [555] "Snarl",
+ [556] "Icicle Crash",
+ [557] "V-create",
+ [558] "Fusion Flare",
+ [559] "Fusion Bolt",
+ [560] "Flying Press",
+ [561] "Mat Block",
+ [562] "Belch",
+ [563] "Rototiller",
+ [564] "Sticky Web",
+ [565] "Fell Stinger",
+ [566] "Phantom Force",
+ [567] "Trick-or-Treat",
+ [568] "Noble Roar",
+ [569] "Ion Deluge",
+ [570] "Parabolic Charge",
+ [571] "Forest's Curse",
+ [572] "Petal Blizzard",
+ [573] "Freeze-Dry",
+ [574] "Disarming Voice",
+ [575] "Parting Shot",
+ [576] "Topsy-Turvy",
+ [577] "Draining Kiss",
+ [578] "Crafty Shield",
+ [579] "Flower Shield",
+ [580] "Grassy Terrain",
+ [581] "Misty Terrain",
+ [582] "Electrify",
+ [583] "Play Rough",
+ [584] "Fairy Wind",
+ [585] "Moonblast",
+ [586] "Boomburst",
+ [587] "Fairy Lock",
+ [588] "King's Shield",
+ [589] "Play Nice",
+ [590] "Confide",
+ [591] "Diamond Storm",
+ [592] "Steam Eruption",
+ [593] "Hyperspace Hole",
+ [594] "Water Shuriken",
+ [595] "Mystical Fire",
+ [596] "Spiky Shield",
+ [597] "Aromatic Mist",
+ [598] "Eerie Impulse",
+ [599] "Venom Drench",
+ [600] "Powder",
+ [601] "Geomancy",
+ [602] "Magnetic Flux",
+ [603] "Happy Hour",
+ [604] "Electric Terrain",
+ [605] "Dazzling Gleam",
+ [606] "Celebrate",
+ [607] "Hold Hands",
+ [608] "Baby-Doll Eyes",
+ [609] "Nuzzle",
+ [610] "Hold Back",
+ [611] "Infestation",
+ [612] "Power-Up Punch",
+ [613] "Oblivion Wing",
+ [614] "Thousand Arrows",
+ [615] "Thousand Waves",
+ [616] "Land's Wrath",
+ [617] "Light of Ruin",
+ [618] "Origin Pulse",
+ [619] "Precipice Blades",
+ [620] "Dragon Ascent",
+ [621] "Hyperspace Fury",
+ [622] "Breakneck Blitz",
+ [623] "Breakneck Blitz",
+ [624] "All-Out Pummeling",
+ [625] "All-Out Pummeling",
+ [626] "Supersonic Skystrike",
+ [627] "Supersonic Skystrike",
+ [628] "Acid Downpour",
+ [629] "Acid Downpour",
+ [630] "Tectonic Rage",
+ [631] "Tectonic Rage",
+ [632] "Continental Crush",
+ [633] "Continental Crush",
+ [634] "Savage Spin-Out",
+ [635] "Savage Spin-Out",
+ [636] "Never-Ending Nightmare",
+ [637] "Never-Ending Nightmare",
+ [638] "Corkscrew Crash",
+ [639] "Corkscrew Crash",
+};
+
+
+int gen3speciestab[] = {
+ [0] 0,
+ [1] 1,
+ [2] 2,
+ [3] 3,
+ [4] 4,
+ [5] 5,
+ [6] 6,
+ [7] 7,
+ [8] 8,
+ [9] 9,
+ [10] 10,
+ [11] 11,
+ [12] 12,
+ [13] 13,
+ [14] 14,
+ [15] 15,
+ [16] 16,
+ [17] 17,
+ [18] 18,
+ [19] 19,
+ [20] 20,
+ [21] 21,
+ [22] 22,
+ [23] 23,
+ [24] 24,
+ [25] 25,
+ [26] 26,
+ [27] 27,
+ [28] 28,
+ [29] 29,
+ [30] 30,
+ [31] 31,
+ [32] 32,
+ [33] 33,
+ [34] 34,
+ [35] 35,
+ [36] 36,
+ [37] 37,
+ [38] 38,
+ [39] 39,
+ [40] 40,
+ [41] 41,
+ [42] 42,
+ [43] 43,
+ [44] 44,
+ [45] 45,
+ [46] 46,
+ [47] 47,
+ [48] 48,
+ [49] 49,
+ [50] 50,
+ [51] 51,
+ [52] 52,
+ [53] 53,
+ [54] 54,
+ [55] 55,
+ [56] 56,
+ [57] 57,
+ [58] 58,
+ [59] 59,
+ [60] 60,
+ [61] 61,
+ [62] 62,
+ [63] 63,
+ [64] 64,
+ [65] 65,
+ [66] 66,
+ [67] 67,
+ [68] 68,
+ [69] 69,
+ [70] 70,
+ [71] 71,
+ [72] 72,
+ [73] 73,
+ [74] 74,
+ [75] 75,
+ [76] 76,
+ [77] 77,
+ [78] 78,
+ [79] 79,
+ [80] 80,
+ [81] 81,
+ [82] 82,
+ [83] 83,
+ [84] 84,
+ [85] 85,
+ [86] 86,
+ [87] 87,
+ [88] 88,
+ [89] 89,
+ [90] 90,
+ [91] 91,
+ [92] 92,
+ [93] 93,
+ [94] 94,
+ [95] 95,
+ [96] 96,
+ [97] 97,
+ [98] 98,
+ [99] 99,
+ [100] 100,
+ [101] 101,
+ [102] 102,
+ [103] 103,
+ [104] 104,
+ [105] 105,
+ [106] 106,
+ [107] 107,
+ [108] 108,
+ [109] 109,
+ [110] 110,
+ [111] 111,
+ [112] 112,
+ [113] 113,
+ [114] 114,
+ [115] 115,
+ [116] 116,
+ [117] 117,
+ [118] 118,
+ [119] 119,
+ [120] 120,
+ [121] 121,
+ [122] 122,
+ [123] 123,
+ [124] 124,
+ [125] 125,
+ [126] 126,
+ [127] 127,
+ [128] 128,
+ [129] 129,
+ [130] 130,
+ [131] 131,
+ [132] 132,
+ [133] 133,
+ [134] 134,
+ [135] 135,
+ [136] 136,
+ [137] 137,
+ [138] 138,
+ [139] 139,
+ [140] 140,
+ [141] 141,
+ [142] 142,
+ [143] 143,
+ [144] 144,
+ [145] 145,
+ [146] 146,
+ [147] 147,
+ [148] 148,
+ [149] 149,
+ [150] 150,
+ [151] 151,
+ [152] 152,
+ [153] 153,
+ [154] 154,
+ [155] 155,
+ [156] 156,
+ [157] 157,
+ [158] 158,
+ [159] 159,
+ [160] 160,
+ [161] 161,
+ [162] 162,
+ [163] 163,
+ [164] 164,
+ [165] 165,
+ [166] 166,
+ [167] 167,
+ [168] 168,
+ [169] 169,
+ [170] 170,
+ [171] 171,
+ [172] 172,
+ [173] 173,
+ [174] 174,
+ [175] 175,
+ [176] 176,
+ [177] 177,
+ [178] 178,
+ [179] 179,
+ [180] 180,
+ [181] 181,
+ [182] 182,
+ [183] 183,
+ [184] 184,
+ [185] 185,
+ [186] 186,
+ [187] 187,
+ [188] 188,
+ [189] 189,
+ [190] 190,
+ [191] 191,
+ [192] 192,
+ [193] 193,
+ [194] 194,
+ [195] 195,
+ [196] 196,
+ [197] 197,
+ [198] 198,
+ [199] 199,
+ [200] 200,
+ [201] 201,
+ [202] 202,
+ [203] 203,
+ [204] 204,
+ [205] 205,
+ [206] 206,
+ [207] 207,
+ [208] 208,
+ [209] 209,
+ [210] 210,
+ [211] 211,
+ [212] 212,
+ [213] 213,
+ [214] 214,
+ [215] 215,
+ [216] 216,
+ [217] 217,
+ [218] 218,
+ [219] 219,
+ [220] 220,
+ [221] 221,
+ [222] 222,
+ [223] 223,
+ [224] 224,
+ [225] 225,
+ [226] 226,
+ [227] 227,
+ [228] 228,
+ [229] 229,
+ [230] 230,
+ [231] 231,
+ [232] 232,
+ [233] 233,
+ [234] 234,
+ [235] 235,
+ [236] 236,
+ [237] 237,
+ [238] 238,
+ [239] 239,
+ [240] 240,
+ [241] 241,
+ [242] 242,
+ [243] 243,
+ [244] 244,
+ [245] 245,
+ [246] 246,
+ [247] 247,
+ [248] 248,
+ [249] 249,
+ [250] 250,
+ [251] 251,
+
+ [252] -1,
+ [253] -1,
+ [254] -1,
+ [255] -1,
+ [256] -1,
+ [257] -1,
+ [258] -1,
+ [259] -1,
+ [260] -1,
+ [261] -1,
+ [262] -1,
+ [263] -1,
+ [264] -1,
+ [265] -1,
+ [266] -1,
+ [267] -1,
+ [268] -1,
+ [269] -1,
+ [270] -1,
+ [271] -1,
+ [272] -1,
+ [273] -1,
+ [274] -1,
+ [275] -1,
+ [276] -1,
+
+ [277] 277-25,
+ [278] 278-25,
+ [279] 279-25,
+ [280] 280-25,
+ [281] 281-25,
+ [282] 282-25,
+ [283] 283-25,
+ [284] 284-25,
+ [285] 285-25,
+ [286] 286-25,
+ [287] 287-25,
+ [288] 288-25,
+ [289] 289-25,
+ [290] 290-25,
+ [291] 291-25,
+ [292] 292-25,
+ [293] 293-25,
+ [294] 294-25,
+ [295] 295-25,
+ [296] 296-25,
+ [297] 297-25,
+ [298] 298-25,
+ [299] 299-25,
+ [300] 300-25,
+ [301] 290,
+ [302] 291,
+ [303] 292,
+ [304] 276,
+ [305] 277,
+ [306] 285,
+ [307] 286,
+ [308] 327,
+ [309] 278,
+ [310] 279,
+ [311] 283,
+ [312] 284,
+ [313] 320,
+ [314] 321,
+ [315] 300,
+ [316] 301,
+ [317] 352,
+ [318] 343,
+ [319] 344,
+ [320] 299,
+ [321] 324,
+ [322] 302,
+ [323] 339,
+ [324] 340,
+ [325] 370,
+ [326] 341,
+ [327] 342,
+ [328] 349,
+ [329] 350,
+ [330] 318,
+ [331] 319,
+ [332] 328,
+ [333] 329,
+ [334] 330,
+ [335] 296,
+ [336] 297,
+ [337] 309,
+ [338] 310,
+ [339] 322,
+ [340] 323,
+ [341] 363,
+ [342] 364,
+ [343] 365,
+ [344] 331,
+ [345] 332,
+ [346] 361,
+ [347] 362,
+ [348] 337,
+ [349] 338,
+ [350] 298,
+ [351] 325,
+ [352] 326,
+ [353] 311,
+ [354] 312,
+ [355] 303,
+ [356] 307,
+ [357] 308,
+ [358] 333,
+ [359] 334,
+ [360] 360,
+ [361] 355,
+ [362] 356,
+ [363] 315,
+ [364] 287,
+ [365] 288,
+ [366] 289,
+ [367] 316,
+ [368] 317,
+ [369] 357,
+ [370] 293,
+ [371] 294,
+ [372] 295,
+ [373] 366,
+ [374] 367,
+ [375] 368,
+ [376] 359,
+ [377] 353,
+ [378] 354,
+ [379] 336,
+ [380] 335,
+ [381] 369,
+ [382] 304,
+ [383] 305,
+ [384] 306,
+ [385] 351,
+ [386] 313,
+ [387] 314,
+ [388] 345,
+ [389] 346,
+ [390] 347,
+ [391] 348,
+ [392] 280,
+ [393] 281,
+ [394] 282,
+ [395] 371,
+ [396] 372,
+ [397] 373,
+ [398] 374,
+ [399] 375,
+ [400] 376,
+ [401] 377,
+ [402] 378,
+ [403] 379,
+ [404] 382,
+ [405] 383,
+ [406] 384,
+ [407] 380,
+ [408] 381,
+ [409] 385,
+ [410] 386,
+ [411] 358,
};
--- a/gen3.c
+++ b/gen3.c
@@ -75,6 +75,27 @@
}
void
+getgen3iv(Gen3iv *dst, u32int src)
+{
+ dst->hp = (src & 0x1f);
+ src >>= 5;
+ dst->atk = (src & 0x1f);
+ src >>= 5;
+ dst->def = (src & 0x1f);
+ src >>= 5;
+ dst->spe = (src & 0x1f);
+ src >>= 5;
+ dst->spatk = (src & 0x1f);
+ src >>= 5;
+ dst->spdef = (src & 0x1f);
+ src >>= 5;
+
+ dst->egg = (src & 0x1);
+ src >>= 1;
+ dst->ability = (src & 0x1);
+}
+
+void
getgen3(int fd, Gen3 *save)
{
int i, j;
@@ -115,4 +136,13 @@
}
getpc(&save->pc, save->pcbuf);
+}
+
+extern int gen3speciestab[];
+
+int
+getgen3dex(u16int species)
+{
+
+ return gen3speciestab[species]-1;
}
--- a/gen3.h
+++ b/gen3.h
@@ -40,6 +40,20 @@
uchar pcbuf[3968*8 + 2000];
};
+typedef struct Gen3iv Gen3iv;
+struct Gen3iv {
+ uchar hp;
+ uchar atk;
+ uchar def;
+ uchar spe;
+ uchar spatk;
+ uchar spdef;
+ uchar egg;
+ uchar ability;
+};
+
void gen3pkstr(uchar *d, uchar *s, int n);
void getgen3(int fd, Gen3 *save);
void decryptpokemon(Pokedat *dst, Pokemon *src);
+void getgen3iv(Gen3iv *dst, u32int src);
+int getgen3dex(u16int species);
--- a/view.c
+++ b/view.c
@@ -28,7 +28,10 @@
Point spwd;
Image *background, *light;
+Image *spritecache[1024];
+
extern char *dexfiletab[];
+extern char *movenametab[];
static void
chbox(int x)
@@ -48,6 +51,7 @@
Image *image;
Rectangle r, r2;
Pokedat pd;
+ Gen3iv iv;
int i;
int fd;
@@ -74,10 +78,8 @@
if(gen3.pc.box[currentbox*30 + i].otid == 0)
continue;
decryptpokemon(&pd, gen3.pc.box + currentbox*30 + i);
- if(pd.g.species > 251)
- pd.g.species -= 0x19;
//fprint(2, "%d %s\n", pd.g.species, dexfiletab[pd.g.species]);
- snprint(path, sizeof path, "/sys/games/lib/pokesprite/regular/%s.png", dexfiletab[pd.g.species-1]);
+ snprint(path, sizeof path, "/sys/games/lib/pokesprite/regular/%s.png", dexfiletab[getgen3dex(pd.g.species)]);
r2.min.x = r.min.x + (i%6) * spwd.x;
r2.min.y = r.min.y + (i/6) * spwd.y;
r2.max.x = r2.min.x + spwd.x;
@@ -86,18 +88,20 @@
if(gen3.pc.box + currentbox*30 + i == currentpk)
draw(screen, r2, light, nil, ZP);
- //fprint(2, "opening %s\n", path);
- fd = open(path, OREAD);
- if(fd < 0){
- fprint(2, "could not open %s\n", path);
- continue;
+ image = spritecache[pd.g.species-1];
+ if(image == nil){
+ fd = open(path, OREAD);
+ if(fd < 0){
+ fprint(2, "could not open %s\n", path);
+ continue;
+ }
+ image = readimage(display, fd, 0);
+ close(fd);
+ if(image == nil)
+ continue;
}
- image = readimage(display, fd, 0);
- close(fd);
- if(image == nil)
- continue;
draw(screen, r2, image, nil, ZP);
- freeimage(image);
+ spritecache[pd.g.species-1] = image;
}
decryptpokemon(&pd, currentpk);
@@ -110,11 +114,20 @@
snprint(path, sizeof path, "Exp: %d", pd.g.exp);
string(screen, r.min, display->black, ZP, display->defaultfont, path);
r.min.y += display->defaultfont->height;
- snprint(path, sizeof path, "Move 1: %d Move 2: %d Move 3: %d Move 4: %d", pd.a.move1, pd.a.move2, pd.a.move3, pd.a.move4);
+ snprint(path, sizeof path, "Move 1: %s Move 2: %s", movenametab[pd.a.move1], movenametab[pd.a.move2]);
string(screen, r.min, display->black, ZP, display->defaultfont, path);
r.min.y += display->defaultfont->height;
- snprint(path, sizeof path, "HP: %d Atk: %d Def: %d SpA: %d SpD: %d Spe: %d", pd.e.hp, pd.e.atk, pd.e.def, pd.e.spatk, pd.e.spdef, pd.e.spd);
+ snprint(path, sizeof path, "Move 3: %s Move 4: %s", movenametab[pd.a.move3], movenametab[pd.a.move4]);
+ string(screen, r.min, display->black, ZP, display->defaultfont, path);
+ r.min.y += display->defaultfont->height;
+
+ snprint(path, sizeof path, "[EV] HP: %d Atk: %d Def: %d SpA: %d SpD: %d Spe: %d", pd.e.hp, pd.e.atk, pd.e.def, pd.e.spatk, pd.e.spdef, pd.e.spd);
+ string(screen, r.min, display->black, ZP, display->defaultfont, path);
+ r.min.y += display->defaultfont->height;
+
+ getgen3iv(&iv, pd.m.iv);
+ snprint(path, sizeof path, "[IV] HP: %d Atk: %d Def: %d SpA: %d SpD: %d Spe: %d", iv.hp, iv.atk, iv.def, iv.spatk, iv.spdef, iv.spe);
string(screen, r.min, display->black, ZP, display->defaultfont, path);
r.min.y += display->defaultfont->height;