diff --git a/include/pokemon_data.h b/include/pokemon_data.h index e7d7126..5ada250 100644 --- a/include/pokemon_data.h +++ b/include/pokemon_data.h @@ -21,6 +21,9 @@ extern const bool NUM_ABILITIES[251]; extern const byte MOVESETS[251][32]; extern const byte FIRST_MOVES[251]; extern const std::string_view NAMES[251]; +extern const byte gen_1_index_array[191]; +extern const byte gen_1_char_array[0x80]; +extern const byte gen_2_char_array[0x80]; u32 get_max_exp(int index_num); u8 get_gender_threshold(int index_num, bool is_gen_3); diff --git a/include/pokemon_party.h b/include/pokemon_party.h index f00ac3d..5c7663f 100644 --- a/include/pokemon_party.h +++ b/include/pokemon_party.h @@ -12,7 +12,7 @@ public: int get_last_error(); void load_pokemon(); void inject_pokemon(); - u8* get_full_pokemon_array(); + Pokemon* get_full_pokemon_array(); private: Pokemon party[6]; diff --git a/include/script.h b/include/script.h index 8a0839b..d6caf2c 100644 --- a/include/script.h +++ b/include/script.h @@ -13,6 +13,6 @@ #define EVENT_SCRIPT_DATA_OFFSET_FRLG 0x079C #define EVENT_SCRIPT_DATA_OFFSET_EMER 0x08A8 -void inject_mystery(); +void inject_mystery(Pokemon incoming_party_array[]); #endif \ No newline at end of file diff --git a/include/script_builder.h b/include/script_builder.h index af45b91..0c76440 100644 --- a/include/script_builder.h +++ b/include/script_builder.h @@ -116,7 +116,7 @@ class mystery_gift_script public: mystery_gift_script(); - void build_script(); + void build_script(Pokemon incoming_party_array[]); u8 get_script_value_at(int index); u16 calc_checksum(); diff --git a/source/pokemon.cpp b/source/pokemon.cpp index 2af7fab..8e8ce86 100644 --- a/source/pokemon.cpp +++ b/source/pokemon.cpp @@ -5,222 +5,6 @@ #define name_size 11 -byte gen_1_index_array[191]{ - 0x00, // Offset the list to remove "off by one" errors - 0x70, // Rhydon - 0x73, // Kangaskhan - 0x20, // Nidoran♂ - 0x23, // Clefairy - 0x15, // Spearow - 0x64, // Voltorb - 0x22, // Nidoking - 0x50, // Slowbro - 0x02, // Ivysaur - 0x67, // Exeggutor - 0x6C, // Lickitung - 0x66, // Exeggcute - 0x58, // Grimer - 0x5E, // Gengar - 0x1D, // Nidoran♀ - 0x1F, // Nidoqueen - 0x68, // Cubone - 0x6F, // Rhyhorn - 0x83, // Lapras - 0x3B, // Arcanine - 0x97, // Mew - 0x82, // Gyarados - 0x5A, // Shellder - 0x48, // Tentacool - 0x5C, // Gastly - 0x7B, // Scyther - 0x78, // Staryu - 0x09, // Blastoise - 0x7F, // Pinsir - 0x72, // Tangela - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x3A, // Growlithe - 0x5F, // Onix - 0x16, // Fearow - 0x10, // Pidgey - 0x4F, // Slowpoke - 0x40, // Kadabra - 0x4B, // Graveler - 0x71, // Chansey - 0x43, // Machoke - 0x7A, // Mr. Mime - 0x6A, // Hitmonlee - 0x6B, // Hitmonchan - 0x18, // Arbok - 0x2F, // Parasect - 0x36, // Psyduck - 0x60, // Drowzee - 0x4C, // Golem - 0xFF, // MissingNo. - 0x7E, // Magmar - 0xFF, // MissingNo. - 0x7D, // Electabuzz - 0x52, // Magneton - 0x6D, // Koffing - 0xFF, // MissingNo. - 0x38, // Mankey - 0x56, // Seel - 0x32, // Diglett - 0x80, // Tauros - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x53, // Farfetch'd - 0x30, // Venonat - 0x95, // Dragonite - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x54, // Doduo - 0x3C, // Poliwag - 0x7C, // Jynx - 0x92, // Moltres - 0x90, // Articuno - 0x91, // Zapdos - 0x84, // Ditto - 0x34, // Meowth - 0x62, // Krabby - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x25, // Vulpix - 0x26, // Ninetales - 0x19, // Pikachu - 0x1A, // Raichu - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x93, // Dratini - 0x94, // Dragonair - 0x8C, // Kabuto - 0x8D, // Kabutops - 0x74, // Horsea - 0x75, // Seadra - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x1B, // Sandshrew - 0x1C, // Sandslash - 0x8A, // Omanyte - 0x8B, // Omastar - 0x27, // Jigglypuff - 0x28, // Wigglytuff - 0x85, // Eevee - 0x88, // Flareon - 0x87, // Jolteon - 0x86, // Vaporeon - 0x42, // Machop - 0x29, // Zubat - 0x17, // Ekans - 0x2E, // Paras - 0x3D, // Poliwhirl - 0x3E, // Poliwrath - 0x0D, // Weedle - 0x0E, // Kakuna - 0x0F, // Beedrill - 0xFF, // MissingNo. - 0x55, // Dodrio - 0x39, // Primeape - 0x33, // Dugtrio - 0x31, // Venomoth - 0x57, // Dewgong - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x0A, // Caterpie - 0x0B, // Metapod - 0x0C, // Butterfree - 0x44, // Machamp - 0xFF, // MissingNo. - 0x37, // Golduck - 0x61, // Hypno - 0x2A, // Golbat - 0x96, // Mewtwo - 0x8F, // Snorlax - 0x81, // Magikarp - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x59, // Muk - 0xFF, // MissingNo. - 0x63, // Kingler - 0x5B, // Cloyster - 0xFF, // MissingNo. - 0x65, // Electrode - 0x24, // Clefable - 0x6E, // Weezing - 0x35, // Persian - 0x69, // Marowak - 0xFF, // MissingNo. - 0x5D, // Haunter - 0x3F, // Abra - 0x41, // Alakazam - 0x11, // Pidgeotto - 0x12, // Pidgeot - 0x79, // Starmie - 0x01, // Bulbasaur - 0x03, // Venusaur - 0x49, // Tentacruel - 0xFF, // MissingNo. - 0x76, // Goldeen - 0x77, // Seaking - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x4D, // Ponyta - 0x4E, // Rapidash - 0x13, // Rattata - 0x14, // Raticate - 0x21, // Nidorino - 0x1E, // Nidorina - 0x4A, // Geodude - 0x89, // Porygon - 0x8E, // Aerodactyl - 0xFF, // MissingNo. - 0x51, // Magnemite - 0xFF, // MissingNo. - 0xFF, // MissingNo. - 0x04, // Charmander - 0x07, // Squirtle - 0x05, // Charmeleon - 0x08, // Wartortle - 0x06, // Charizard - 0xFF, // MissingNo. - 0xFF, // Kabutops Fossil MissingNo. - 0xFF, // Aerodactyl Fossil MissingNo. - 0xFF, // Ghost MissingNo. - 0x2B, // Oddish - 0x2C, // Gloom - 0x2D, // Vileplume - 0x45, // Bellsprout - 0x46, // Weepinbell - 0x47, // Victreebel -}; - -byte gen_1_char_array[0x80]{// Stores the gen 3 character ID in the gen 1 spot - 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, - 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x5C, 0x5D, 0xF0, 0x36, 0x5C, 0x5D, - 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, - 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0x1B, 0xD8, 0xE0, 0xE7, 0xE8, 0xEA, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xB4, 0xCA, 0xC7, 0xAE, 0xE6, 0xE1, 0xAC, 0xAB, 0xAD, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x00, 0xB5, - 0xB7, 0xEC, 0xAD, 0xBA, 0xB8, 0xB6, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, -}; - -byte gen_2_char_array[0x80]{ // Stores the gen 3 character ID in the gen 2 spot - 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, - 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x5C, 0x5D, 0xF0, 0x36, 0x5C, 0x5D, - 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, - 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xD8, 0xE0, 0xE1, 0xE6, 0xE7, 0xE8, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, - 0xB4, 0xCA, 0xC7, 0xAE, 0x00, 0x00, 0xAC, 0xAB, 0xAD, 0x2D, 0x1B, 0x7C, 0x00, 0xEF, 0x00, 0xB5, - 0xB7, 0xEC, 0xAD, 0xBA, 0xB8, 0xB6, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, - }; - Pokemon::Pokemon(){}; void Pokemon::load_data(int index, byte *party_data) diff --git a/source/pokemon_data.cpp b/source/pokemon_data.cpp index dd5cfa5..80b94f9 100644 --- a/source/pokemon_data.cpp +++ b/source/pokemon_data.cpp @@ -38,6 +38,461 @@ byte get_earliest_move(int index_num) return FIRST_MOVES[index_num - 1]; } +const byte gen_1_index_array[191] = { + 0x00, // Offset the list to remove "off by one" errors + 0x70, // Rhydon + 0x73, // Kangaskhan + 0x20, // Nidoran♂ + 0x23, // Clefairy + 0x15, // Spearow + 0x64, // Voltorb + 0x22, // Nidoking + 0x50, // Slowbro + 0x02, // Ivysaur + 0x67, // Exeggutor + 0x6C, // Lickitung + 0x66, // Exeggcute + 0x58, // Grimer + 0x5E, // Gengar + 0x1D, // Nidoran♀ + 0x1F, // Nidoqueen + 0x68, // Cubone + 0x6F, // Rhyhorn + 0x83, // Lapras + 0x3B, // Arcanine + 0x97, // Mew + 0x82, // Gyarados + 0x5A, // Shellder + 0x48, // Tentacool + 0x5C, // Gastly + 0x7B, // Scyther + 0x78, // Staryu + 0x09, // Blastoise + 0x7F, // Pinsir + 0x72, // Tangela + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x3A, // Growlithe + 0x5F, // Onix + 0x16, // Fearow + 0x10, // Pidgey + 0x4F, // Slowpoke + 0x40, // Kadabra + 0x4B, // Graveler + 0x71, // Chansey + 0x43, // Machoke + 0x7A, // Mr. Mime + 0x6A, // Hitmonlee + 0x6B, // Hitmonchan + 0x18, // Arbok + 0x2F, // Parasect + 0x36, // Psyduck + 0x60, // Drowzee + 0x4C, // Golem + 0xFF, // MissingNo. + 0x7E, // Magmar + 0xFF, // MissingNo. + 0x7D, // Electabuzz + 0x52, // Magneton + 0x6D, // Koffing + 0xFF, // MissingNo. + 0x38, // Mankey + 0x56, // Seel + 0x32, // Diglett + 0x80, // Tauros + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x53, // Farfetch'd + 0x30, // Venonat + 0x95, // Dragonite + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x54, // Doduo + 0x3C, // Poliwag + 0x7C, // Jynx + 0x92, // Moltres + 0x90, // Articuno + 0x91, // Zapdos + 0x84, // Ditto + 0x34, // Meowth + 0x62, // Krabby + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x25, // Vulpix + 0x26, // Ninetales + 0x19, // Pikachu + 0x1A, // Raichu + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x93, // Dratini + 0x94, // Dragonair + 0x8C, // Kabuto + 0x8D, // Kabutops + 0x74, // Horsea + 0x75, // Seadra + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x1B, // Sandshrew + 0x1C, // Sandslash + 0x8A, // Omanyte + 0x8B, // Omastar + 0x27, // Jigglypuff + 0x28, // Wigglytuff + 0x85, // Eevee + 0x88, // Flareon + 0x87, // Jolteon + 0x86, // Vaporeon + 0x42, // Machop + 0x29, // Zubat + 0x17, // Ekans + 0x2E, // Paras + 0x3D, // Poliwhirl + 0x3E, // Poliwrath + 0x0D, // Weedle + 0x0E, // Kakuna + 0x0F, // Beedrill + 0xFF, // MissingNo. + 0x55, // Dodrio + 0x39, // Primeape + 0x33, // Dugtrio + 0x31, // Venomoth + 0x57, // Dewgong + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x0A, // Caterpie + 0x0B, // Metapod + 0x0C, // Butterfree + 0x44, // Machamp + 0xFF, // MissingNo. + 0x37, // Golduck + 0x61, // Hypno + 0x2A, // Golbat + 0x96, // Mewtwo + 0x8F, // Snorlax + 0x81, // Magikarp + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x59, // Muk + 0xFF, // MissingNo. + 0x63, // Kingler + 0x5B, // Cloyster + 0xFF, // MissingNo. + 0x65, // Electrode + 0x24, // Clefable + 0x6E, // Weezing + 0x35, // Persian + 0x69, // Marowak + 0xFF, // MissingNo. + 0x5D, // Haunter + 0x3F, // Abra + 0x41, // Alakazam + 0x11, // Pidgeotto + 0x12, // Pidgeot + 0x79, // Starmie + 0x01, // Bulbasaur + 0x03, // Venusaur + 0x49, // Tentacruel + 0xFF, // MissingNo. + 0x76, // Goldeen + 0x77, // Seaking + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x4D, // Ponyta + 0x4E, // Rapidash + 0x13, // Rattata + 0x14, // Raticate + 0x21, // Nidorino + 0x1E, // Nidorina + 0x4A, // Geodude + 0x89, // Porygon + 0x8E, // Aerodactyl + 0xFF, // MissingNo. + 0x51, // Magnemite + 0xFF, // MissingNo. + 0xFF, // MissingNo. + 0x04, // Charmander + 0x07, // Squirtle + 0x05, // Charmeleon + 0x08, // Wartortle + 0x06, // Charizard + 0xFF, // MissingNo. + 0xFF, // Kabutops Fossil MissingNo. + 0xFF, // Aerodactyl Fossil MissingNo. + 0xFF, // Ghost MissingNo. + 0x2B, // Oddish + 0x2C, // Gloom + 0x2D, // Vileplume + 0x45, // Bellsprout + 0x46, // Weepinbell + 0x47, // Victreebel +}; +const byte gen_1_char_array[0x80] = { + // Stores the gen 3 character ID in the gen 1 spot + 0xBB, + 0xBC, + 0xBD, + 0xBE, + 0xBF, + 0xC0, + 0xC1, + 0xC2, + 0xC3, + 0xC4, + 0xC5, + 0xC6, + 0xC7, + 0xC8, + 0xC9, + 0xCA, + 0xCB, + 0xCC, + 0xCD, + 0xCE, + 0xCF, + 0xD0, + 0xD1, + 0xD2, + 0xD3, + 0xD4, + 0x5C, + 0x5D, + 0xF0, + 0x36, + 0x5C, + 0x5D, + 0xD5, + 0xD6, + 0xD7, + 0xD8, + 0xD9, + 0xDA, + 0xDB, + 0xDC, + 0xDD, + 0xDE, + 0xDF, + 0xE0, + 0xE1, + 0xE2, + 0xE3, + 0xE4, + 0xE5, + 0xE6, + 0xE7, + 0xE8, + 0xE9, + 0xEA, + 0xEB, + 0xEC, + 0xED, + 0xEE, + 0x1B, + 0xD8, + 0xE0, + 0xE7, + 0xE8, + 0xEA, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xB4, + 0xCA, + 0xC7, + 0xAE, + 0xE6, + 0xE1, + 0xAC, + 0xAB, + 0xAD, + 0x00, + 0x00, + 0x00, + 0x00, + 0xEF, + 0x00, + 0xB5, + 0xB7, + 0xEC, + 0xAD, + 0xBA, + 0xB8, + 0xB6, + 0xA1, + 0xA2, + 0xA3, + 0xA4, + 0xA5, + 0xA6, + 0xA7, + 0xA8, + 0xA9, + 0xAA, +}; +const byte gen_2_char_array[0x80] = { + // Stores the gen 3 character ID in the gen 2 spot + 0xBB, + 0xBC, + 0xBD, + 0xBE, + 0xBF, + 0xC0, + 0xC1, + 0xC2, + 0xC3, + 0xC4, + 0xC5, + 0xC6, + 0xC7, + 0xC8, + 0xC9, + 0xCA, + 0xCB, + 0xCC, + 0xCD, + 0xCE, + 0xCF, + 0xD0, + 0xD1, + 0xD2, + 0xD3, + 0xD4, + 0x5C, + 0x5D, + 0xF0, + 0x36, + 0x5C, + 0x5D, + 0xD5, + 0xD6, + 0xD7, + 0xD8, + 0xD9, + 0xDA, + 0xDB, + 0xDC, + 0xDD, + 0xDE, + 0xDF, + 0xE0, + 0xE1, + 0xE2, + 0xE3, + 0xE4, + 0xE5, + 0xE6, + 0xE7, + 0xE8, + 0xE9, + 0xEA, + 0xEB, + 0xEC, + 0xED, + 0xEE, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xF1, + 0xF2, + 0xF3, + 0xF4, + 0xF5, + 0xF6, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xD8, + 0xE0, + 0xE1, + 0xE6, + 0xE7, + 0xE8, + 0xEA, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x7B, + 0xB4, + 0xCA, + 0xC7, + 0xAE, + 0x00, + 0x00, + 0xAC, + 0xAB, + 0xAD, + 0x2D, + 0x1B, + 0x7C, + 0x00, + 0xEF, + 0x00, + 0xB5, + 0xB7, + 0xEC, + 0xAD, + 0xBA, + 0xB8, + 0xB6, + 0xA1, + 0xA2, + 0xA3, + 0xA4, + 0xA5, + 0xA6, + 0xA7, + 0xA8, + 0xA9, + 0xAA, +}; const u8 EXP_MAX[251] = { 2, // Bulbasaur 2, // Ivysaur diff --git a/source/pokemon_party.cpp b/source/pokemon_party.cpp index d110e04..43fcc55 100644 --- a/source/pokemon_party.cpp +++ b/source/pokemon_party.cpp @@ -68,9 +68,9 @@ void Pokemon_Party::inject_pokemon() { //tte_write(std::to_string(party_size).c_str()); //insert_pokemon(party, party_size); - inject_mystery(); + //inject_mystery(); } -u8* Pokemon_Party::get_full_pokemon_array(){ - return party_data_array; +Pokemon* Pokemon_Party::get_full_pokemon_array(){ + return party; } \ No newline at end of file diff --git a/source/script.cpp b/source/script.cpp index b299cbe..14b2e78 100644 --- a/source/script.cpp +++ b/source/script.cpp @@ -11,7 +11,7 @@ static u32 script[0x3EC] = { 0xEA, 0xA6, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0xB8, 0x58, 0x02, 0x00, 0x08, 0x6A, 0x5A, 0x2B, 0x3A, 0x01, 0xBB, 0x01, 0xBC, 0x02, 0x00, 0x08, 0x2B, 0xAD, 0x01, 0xBB, 0x01, 0xBC, 0x02, 0x00, 0x08, 0x47, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x01, 0x00, 0xBB, 0x01, 0xBC, 0x02, 0x00, 0x08, 0xBD, 0xC5, 0x02, 0x00, 0x08, 0x66, 0x6D, 0x46, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x00, 0x00, 0xBB, 0x01, 0xB3, 0x02, 0x00, 0x08, 0x1A, 0x00, 0x80, 0x73, 0x01, 0x1A, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0xD5, 0x08, 0x29, 0x3A, 0x01, 0xBD, 0x22, 0x03, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xBD, 0xB3, 0x03, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xBD, 0x86, 0x03, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xCE, 0xDC, 0xD5, 0xE2, 0xDF, 0x00, 0xED, 0xE3, 0xE9, 0x00, 0xDA, 0xE3, 0xE6, 0x00, 0xE9, 0xE7, 0xDD, 0xE2, 0xDB, 0x00, 0xE8, 0xDC, 0xD9, 0x00, 0xC7, 0xD3, 0xCD, 0xCE, 0xBF, 0xCC, 0xD3, 0xFE, 0xC1, 0xC3, 0xC0, 0xCE, 0x00, 0xCD, 0xED, 0xE7, 0xE8, 0xD9, 0xE1, 0xAD, 0xFB, 0xD3, 0xE3, 0xE9, 0x00, 0xE1, 0xE9, 0xE7, 0xE8, 0x00, 0xD6, 0xD9, 0x00, 0xFD, 0x01, 0xAD, 0xFE, 0xCE, 0xDC, 0xD9, 0xE6, 0xD9, 0x00, 0xDD, 0xE7, 0x00, 0xD5, 0x00, 0xE8, 0xDD, 0xD7, 0xDF, 0xD9, 0xE8, 0x00, 0xDC, 0xD9, 0xE6, 0xD9, 0x00, 0xDA, 0xE3, 0xE6, 0x00, 0xED, 0xE3, 0xE9, 0xAD, 0xFF, 0xC3, 0xE8, 0x00, 0xD5, 0xE4, 0xE4, 0xD9, 0xD5, 0xE6, 0xE7, 0x00, 0xE8, 0xE3, 0x00, 0xD6, 0xD9, 0x00, 0xDA, 0xE3, 0xE6, 0x00, 0xE9, 0xE7, 0xD9, 0x00, 0xD5, 0xE8, 0x00, 0xE8, 0xDC, 0xD9, 0xFE, 0xC6, 0xC3, 0xC6, 0xD3, 0xBD, 0xC9, 0xD0, 0xBF, 0x00, 0xBD, 0xC3, 0xCE, 0xD3, 0x00, 0xE4, 0xE3, 0xE6, 0xE8, 0xAD, 0xFB, 0xD1, 0xDC, 0xED, 0x00, 0xE2, 0xE3, 0xE8, 0x00, 0xDB, 0xDD, 0xEA, 0xD9, 0x00, 0xDD, 0xE8, 0x00, 0xD5, 0x00, 0xE8, 0xE6, 0xED, 0x00, 0xD5, 0xE2, 0xD8, 0x00, 0xE7, 0xD9, 0xD9, 0x00, 0xEB, 0xDC, 0xD5, 0xE8, 0xFE, 0xDD, 0xE8, 0x00, 0xDD, 0xE7, 0x00, 0xD5, 0xD6, 0xE3, 0xE9, 0xE8, 0xAC, 0xFF, 0xCE, 0xDC, 0xD5, 0xE2, 0xDF, 0x00, 0xED, 0xE3, 0xE9, 0x00, 0xDA, 0xE3, 0xE6, 0x00, 0xE9, 0xE7, 0xDD, 0xE2, 0xDB, 0x00, 0xE8, 0xDC, 0xD9, 0x00, 0xC7, 0xD3, 0xCD, 0xCE, 0xBF, 0xCC, 0xD3, 0xFE, 0xC1, 0xC3, 0xC0, 0xCE, 0x00, 0xCD, 0xED, 0xE7, 0xE8, 0xD9, 0xE1, 0xAD, 0xFF, 0xC9, 0xDC, 0xB8, 0x00, 0xC3, 0xB4, 0xE1, 0x00, 0xE7, 0xE3, 0xE6, 0xE6, 0xED, 0xB8, 0x00, 0xFD, 0x01, 0xAD, 0xFE, 0xD3, 0xE3, 0xE9, 0xE6, 0x00, 0xBC, 0xBB, 0xC1, 0xB4, 0xE7, 0x00, 0xC5, 0xBF, 0xD3, 0x00, 0xC3, 0xCE, 0xBF, 0xC7, 0xCD, 0x00, 0xCA, 0xC9, 0xBD, 0xC5, 0xBF, 0xCE, 0x00, 0xDD, 0xE7, 0x00, 0xDA, 0xE9, 0xE0, 0xE0, 0xAD, 0xFB, 0xCA, 0xE0, 0xD9, 0xD5, 0xE7, 0xD9, 0x00, 0xE7, 0xE8, 0xE3, 0xE6, 0xD9, 0x00, 0xE7, 0xE3, 0xE1, 0xD9, 0xE8, 0xDC, 0xDD, 0xE2, 0xDB, 0x00, 0xE3, 0xE2, 0x00, 0xED, 0xE3, 0xE9, 0xE6, 0x00, 0xCA, 0xBD, 0xB8, 0xFE, 0xE8, 0xDC, 0xD9, 0xE2, 0x00, 0xD7, 0xE3, 0xE1, 0xD9, 0x00, 0xD6, 0xD5, 0xD7, 0xDF, 0x00, 0xDA, 0xE3, 0xE6, 0x00, 0xE8, 0xDC, 0xDD, 0xE7, 0xAD, 0xFF, 0xB8, 0x27, 0x04, 0x00, 0x08, 0x6A, 0x5A, 0x2B, 0x3A, 0x01, 0xBB, 0x01, 0x8B, 0x04, 0x00, 0x08, 0x2B, 0xAD, 0x01, 0xBB, 0x01, 0x8B, 0x04, 0x00, 0x08, 0x47, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x01, 0x00, 0xBB, 0x01, 0x8B, 0x04, 0x00, 0x08, 0xBD, 0x94, 0x04, 0x00, 0x08, 0x66, 0x6D, 0x46, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x00, 0x00, 0xBB, 0x01, 0x82, 0x04, 0x00, 0x08, 0x1A, 0x00, 0x80, 0x73, 0x01, 0x1A, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0xD5, 0x08, 0x29, 0x3A, 0x01, 0xBD, 0xED, 0x04, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xBD, 0x6B, 0x05, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xBD, 0x42, 0x05, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xC7, 0xD9, 0xE6, 0xD7, 0xDD, 0x00, 0xD8, 0xB4, 0xE9, 0xE8, 0xDD, 0xE0, 0xDD, 0xE7, 0xD9, 0xE6, 0x00, 0xE0, 0xD9, 0x00, 0xE7, 0xED, 0xE7, 0xE8, 0x1A, 0xE1, 0xD9, 0xFE, 0xBD, 0xBB, 0xBE, 0xBF, 0xBB, 0xCF, 0x00, 0xC7, 0xD3, 0xCD, 0xCE, 0xAD, 0xFB, 0xD0, 0xE3, 0xE9, 0xE7, 0x00, 0xD8, 0xD9, 0xEA, 0xD9, 0xEE, 0x00, 0x1C, 0xE8, 0xE6, 0xD9, 0x00, 0xFD, 0x01, 0xAD, 0xFE, 0xC3, 0xE0, 0x00, 0xED, 0x00, 0xD5, 0x00, 0xE9, 0xE2, 0x00, 0xE8, 0xDD, 0xD7, 0xDF, 0xD9, 0xE8, 0x00, 0xE4, 0xE3, 0xE9, 0xE6, 0x00, 0xEA, 0xE3, 0xE9, 0xE7, 0xAD, 0xFF, 0xC3, 0xE0, 0x00, 0xE4, 0xD9, 0xE9, 0xE8, 0x00, 0x1C, 0xE8, 0xE6, 0xD9, 0x00, 0xE9, 0xE8, 0xDD, 0xE0, 0xDD, 0xE7, 0x1B, 0x00, 0xD5, 0xE9, 0x00, 0xE4, 0xE3, 0xE6, 0xE8, 0x00, 0xD8, 0xD9, 0xFE, 0xC8, 0xBF, 0xC8, 0xCF, 0xBD, 0xCC, 0xC3, 0xCB, 0xCF, 0xBF, 0xAD, 0xFB, 0xBF, 0xE7, 0xE7, 0xD5, 0xED, 0xD9, 0xEE, 0xAE, 0xE0, 0xD9, 0x00, 0xE4, 0xE3, 0xE9, 0xE6, 0x00, 0xEA, 0xE3, 0xDD, 0xE6, 0x00, 0xD8, 0xD9, 0x00, 0xE5, 0xE9, 0xE3, 0xDD, 0x00, 0xFE, 0xDD, 0xE0, 0x00, 0xE7, 0xB4, 0xD5, 0xDB, 0xDD, 0xE8, 0xAD, 0xFF, 0xC7, 0xD9, 0xE6, 0xD7, 0xDD, 0x00, 0xD8, 0xB4, 0xE9, 0xE8, 0xDD, 0xE0, 0xDD, 0xE7, 0xD9, 0xE6, 0x00, 0xE0, 0xD9, 0x00, 0xE7, 0xED, 0xE7, 0xE8, 0x1A, 0xE1, 0xD9, 0xFE, 0xBD, 0xBB, 0xBE, 0xBF, 0xBB, 0xCF, 0x00, 0xC7, 0xD3, 0xCD, 0xCE, 0xAD, 0xFF, 0xC9, 0xDC, 0xB8, 0x00, 0xDE, 0xD9, 0x00, 0xE6, 0xD9, 0xDB, 0xE6, 0xD9, 0xE8, 0xE8, 0xD9, 0x00, 0xFD, 0x01, 0xAD, 0x00, 0xC6, 0xD5, 0x00, 0xCA, 0xC9, 0xBD, 0xC2, 0xBF, 0xFE, 0xC9, 0xBC, 0xC4, 0xAD, 0x00, 0xCC, 0xBB, 0xCC, 0xBF, 0xCD, 0x00, 0xD8, 0xE9, 0x00, 0xCD, 0xBB, 0xBD, 0x00, 0xD9, 0xE7, 0xE8, 0x00, 0xE4, 0xE0, 0xD9, 0xDD, 0xE2, 0xD9, 0xAD, 0xFB, 0xC0, 0xD5, 0xDD, 0xE8, 0xD9, 0xE7, 0x00, 0xE0, 0xD9, 0x00, 0xE8, 0xE6, 0xDD, 0x00, 0xD8, 0xD5, 0xE2, 0xE7, 0x00, 0xEA, 0xE3, 0xE8, 0xE6, 0xD9, 0x00, 0xCD, 0xBB, 0xBD, 0x00, 0xD9, 0xE8, 0xFE, 0xE6, 0xD9, 0xEA, 0xD9, 0xE2, 0xD9, 0xEE, 0x00, 0xE4, 0xE0, 0xE9, 0xE7, 0x00, 0xE8, 0xD5, 0xE6, 0xD8, 0xAD, 0xFF, 0xB8, 0xD9, 0x05, 0x00, 0x08, 0x6A, 0x5A, 0x2B, 0x3A, 0x01, 0xBB, 0x01, 0x3D, 0x06, 0x00, 0x08, 0x2B, 0xAD, 0x01, 0xBB, 0x01, 0x3D, 0x06, 0x00, 0x08, 0x47, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x01, 0x00, 0xBB, 0x01, 0x3D, 0x06, 0x00, 0x08, 0xBD, 0x46, 0x06, 0x00, 0x08, 0x66, 0x6D, 0x46, 0x73, 0x01, 0x01, 0x00, 0x21, 0x0D, 0x80, 0x00, 0x00, 0xBB, 0x01, 0x34, 0x06, 0x00, 0x08, 0x1A, 0x00, 0x80, 0x73, 0x01, 0x1A, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0xD5, 0x08, 0x29, 0x3A, 0x01, 0xBD, 0xA9, 0x06, 0x00, 0x08, 0x66, 0x6D, 0x6C, 0x02, 0xBD, 0x3A, 0x07, 0x00, 0x08, 0x66, 0x6D, 0x00}; */ // CRC16 checksum -void inject_mystery() +void inject_mystery(Pokemon incoming_party_aray[]) { flash_read(memory_section_array[4], &global_memory_buffer[0], 0x1000); for (int i = 0; i < 0x14E; i++) @@ -20,8 +20,8 @@ void inject_mystery() } mystery_gift_script script; - script.build_script(); - u16 checksum = 0; //script.calc_checksum(); + script.build_script(incoming_party_aray); + u16 checksum = script.calc_checksum(); // Set checksum and padding global_memory_buffer[EVENT_SCRIPT_DATA_OFFSET_EMER] = checksum >> 0; @@ -32,7 +32,7 @@ void inject_mystery() // Add in Mystery Script data for (int i = 0; i < MG_SCRIPT_SIZE; i++) { - //global_memory_buffer[EVENT_SCRIPT_DATA_OFFSET_EMER + 4 + i] = script.get_script_value_at(i); + global_memory_buffer[EVENT_SCRIPT_DATA_OFFSET_EMER + 4 + i] = script.get_script_value_at(i); } update_memory_buffer_checksum(); flash_write(memory_section_array[4], &global_memory_buffer[0], 0x1000); diff --git a/source/script_array.cpp b/source/script_array.cpp index f2ced03..d25e9d1 100644 --- a/source/script_array.cpp +++ b/source/script_array.cpp @@ -61,7 +61,8 @@ bool run_conditional(int index) case IMPORT_POKEMON: party_data.load_pokemon(); - party_data.inject_pokemon(); + //party_data.inject_pokemon(); + inject_mystery(party_data.get_full_pokemon_array()); return true; case BACK_TO_MENU: diff --git a/source/script_builder.cpp b/source/script_builder.cpp index 0c22601..747b180 100644 --- a/source/script_builder.cpp +++ b/source/script_builder.cpp @@ -7,7 +7,7 @@ mystery_gift_script::mystery_gift_script() curr_index = NPC_LOCATION_OFFSET; } -void mystery_gift_script::build_script() +void mystery_gift_script::build_script(Pokemon incoming_party_array[]) { // Located at 0x?8A8 in the .sav init_npc_location(0xFF, 0xFF, 0xFF); @@ -84,17 +84,16 @@ void mystery_gift_script::build_script() add_word(0x020375E8); set_asm_offset_destination(ASM_OFFSET_PKMN_STRUCT); - /* for (int i = 0; i < 6; i++) { - Pokemon curr_pkmn = party_data.get_pokemon(i); - for (int byte = 0; byte > POKEMON_SIZE; byte++) + Pokemon curr_pkmn = incoming_party_array[i]; + for (int curr_byte = 0; curr_byte < POKEMON_SIZE; curr_byte++) { - mg_script[curr_index] = curr_pkmn.get_gen_3_data(byte); + mg_script[curr_index] = curr_pkmn.get_gen_3_data(curr_byte); curr_index++; } } - */ + fill_jumppoint_pointers(); fill_textbox_pointers();