From 868b23ba4511e65681117fdaf0b9b1d1b7ff0f91 Mon Sep 17 00:00:00 2001 From: The Gears of Progress Date: Wed, 21 May 2025 11:43:16 -0400 Subject: [PATCH 1/2] Disabling new conversion --- include/pokemon.h | 1 + include/random.h | 2 + loader/data/multiboot_rom.bin | Bin 187732 -> 187580 bytes source/gen_converter.cpp | 130 ---------------------------------- source/main.cpp | 3 +- source/pokemon.cpp | 101 +++++++++++++++++++------- source/random.cpp | 31 +++++--- source/text_engine.cpp | 3 +- 8 files changed, 104 insertions(+), 167 deletions(-) delete mode 100644 source/gen_converter.cpp diff --git a/include/pokemon.h b/include/pokemon.h index 379ac2a..3fc51d6 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -54,6 +54,7 @@ public: byte *convert_text(byte *text_array, int size, int gen, int lang); u32 generate_pid_save_iv(byte pid_species_index, byte nature, byte *pid_dvs); u32 generate_pid_iv_match(byte pid_species_index, byte nature, byte *pid_dvs); + u32 generate_pid_iv_legendary(byte pid_species_index, byte *pid_dvs, byte *out_ivs); byte rand_reverse_mod(byte modulo_divisor, byte target_mod); byte get_rand_gender_byte(byte index_num, byte attack_DVs); byte get_dex_number(); diff --git a/include/random.h b/include/random.h index a717d62..70e5ecd 100644 --- a/include/random.h +++ b/include/random.h @@ -8,6 +8,8 @@ unsigned int rand_get_seed(); void rand_next_frame(); u32 get_rand_u32(); u16 get_rand_u16(); +u32 get_rev_rand_u32(u32 input); +u16 get_rev_rand_u16(u32 input); void enable_auto_random(); void disable_auto_random(); diff --git a/loader/data/multiboot_rom.bin b/loader/data/multiboot_rom.bin index be212a555e4f24f4306147fdc102a7b39715ee9e..95b629f45fcae35984dd65c2b68e7cc41be14807 100644 GIT binary patch delta 17753 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%0DHje;8pMvSOuN}kAj6@F3>-KpDADr zC&<;+5_dyHT4|aiV zU?W%!44@V)0rSBF;66Qm#)1)GD98dSKm(K@49EciCVWEs1zZD{!Pnpm@DVr)-UW@| z4X_!k2dlwKupBG~4}qEBelQ;BOYu_(27yeF1k@k~^aM4F(6WWNxfU??RTb9SfL7vq zKZJCkX+FjTuwfn^$+?WZ2x`FQIe1EDqjy0p_misc; - u8 trainer_game_version = id_to_version(&trainer_data->game_identifier); - u8 trainer_gender = trainer_data->trainer_gender; - - // Normalize nature - wanted_nature = get_nature(wanted_nature); - - // Handle eggs separately - u32 ot_id = dst->ot_id; - if(is_egg) - ot_id = trainer_data->trainer_id; - - // Prepare the TSV - u16 tsv = (ot_id & 0xFFFF) ^ (ot_id >> 16); - - u8 chosen_version = get_default_conversion_game(); - if(!no_restrictions) { - chosen_version = trainer_game_version; - ot_gender = trainer_gender; - } - - u8 encounter_type = get_encounter_type_gen3(species); - u8 is_shiny = is_shiny_gen2_unfiltered(wanted_ivs); - // To debug shiny Unown stuff more than normally possible - //is_shiny = 1; - u32 ivs = 0; - u8 ability = 0; - u8 is_ability_set = 0; - u32 valid_balls = 0; - const u8* searchable_table = egg_locations_bin; - u8 find_in_table = 0; - - // Get PID and IVs - switch(encounter_type) { - case STATIC_ENCOUNTER: - valid_balls = VALID_POKEBALL_NO_EGG; - if(get_event_info_replacement() && (species == CELEBI_SPECIES)) { - valid_balls = VALID_POKEBALL_CELEBI; - chosen_version = R_VERSION_ID; - generate_generic_genderless_shadow_info_xd(wanted_nature, 0, wanted_ivs, tsv, &dst->pid, &ivs, &ability); - is_ability_set = 1; - ot_gender = 1; - } - else if(!is_shiny) { - // Prefer Colosseum/XD encounter, if possible - if(get_conversion_colo_xd() && is_static_in_xd(species) && are_colo_valid_tid_sid(ot_id & 0xFFFF, ot_id >> 0x10) && ((ot_gender == 0) || (!get_prioritize_ot_gender()))) { - chosen_version = COLOSSEUM_CODE; - generate_generic_genderless_shadow_info_xd(wanted_nature, has_prev_check_tsv_in_xd(species), wanted_ivs, tsv, &dst->pid, &ivs, &ability); - misc->ribbons |= COLO_RIBBON_VALUE; - is_ability_set = 1; - ot_gender = 0; - data_dst->learnable_moves = (const struct learnset_data_mon_moves*)get_learnset_for_species((const u16*)learnset_static_xd_bin, species); - } - else - generate_static_info(wanted_nature, wanted_ivs, tsv, &dst->pid, &ivs); - } - else - generate_static_shiny_info(wanted_nature, tsv, &dst->pid, &ivs); - searchable_table = encounters_static_bin; - find_in_table = 1; - break; - case ROAMER_ENCOUNTER: - valid_balls = VALID_POKEBALL_NO_EGG; - // Prefer Colosseum/XD encounter, if possible - if(get_conversion_colo_xd() && are_colo_valid_tid_sid(ot_id & 0xFFFF, ot_id >> 0x10) && ((ot_gender == 0) || (!get_prioritize_ot_gender()))) { - chosen_version = COLOSSEUM_CODE; - if(!is_shiny) - generate_generic_genderless_shadow_info_colo(wanted_nature, wanted_ivs, tsv, &dst->pid, &ivs, &ability); - else - generate_generic_genderless_shadow_shiny_info_colo(wanted_nature, tsv, &dst->pid, &ivs, &ability); - misc->ribbons |= COLO_RIBBON_VALUE; - is_ability_set = 1; - ot_gender = 0; - } - else { - if(!is_shiny) - generate_static_info(wanted_nature, wanted_ivs, tsv, &dst->pid, &ivs); - else - generate_static_shiny_info(wanted_nature, tsv, &dst->pid, &ivs); - // Roamers only get the first byte of their IVs - ivs &= 0xFF; - } - searchable_table = encounters_roamers_bin; - find_in_table = 1; - break; - case UNOWN_ENCOUNTER: - valid_balls = VALID_POKEBALL_NO_EGG; - if(!is_shiny) - generate_unown_info(wanted_nature, wanted_ivs, tsv, &dst->pid, &ivs); - else - generate_unown_shiny_info(wanted_nature, wanted_ivs, tsv, &dst->pid, &ivs); - searchable_table = encounters_unown_bin; - find_in_table = 1; - break; - default: - valid_balls = VALID_POKEBALL_EGG; - if(!is_shiny) - generate_egg_info(species, wanted_nature, wanted_ivs, tsv, 2, &dst->pid, &ivs); - else - generate_egg_shiny_info(species, wanted_nature, wanted_ivs, tsv, 2, &dst->pid, &ivs); - break; - } - - // Set met location and origins info - u8 met_location = egg_locations_bin[chosen_version]; - if(!is_egg) - met_location = get_egg_met_location(); - u8 met_level = 0; - u8 obedience = 0; - - if(find_in_table) { - u16 mon_index = get_mon_index(species, dst->pid, 0, 0); - const struct mon_general_met_data_gen3* possible_met_data = (const struct mon_general_met_data_gen3*)search_table_for_index(searchable_table, mon_index); - if(possible_met_data != NULL) { - u8 num_elems = possible_met_data->num_entries; - u8 chosen_entry = 0; - for(int i = 0; i < num_elems; i++) - if((possible_met_data->met_data_entries[i].origin_game) == chosen_version) - chosen_entry = i; - chosen_version = possible_met_data->met_data_entries[chosen_entry].origin_game; - obedience = possible_met_data->met_data_entries[chosen_entry].obedience; - met_location = possible_met_data->met_data_entries[chosen_entry].location; - met_level = possible_met_data->met_data_entries[chosen_entry].level; - } - } - -*/ \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 0ec6630..cdaff45 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -101,7 +101,8 @@ void load_graphics() tte_erase_rect(0, 0, H_MAX, V_MAX); // Load opening background first so it hides everything else load_flex_background(BG_OPENING, 1); - load_background(); load_textbox_background(); + load_background(); + load_textbox_background(); load_eternal_sprites(); // Set up global yes no button diff --git a/source/pokemon.cpp b/source/pokemon.cpp index 0415c5b..767d177 100644 --- a/source/pokemon.cpp +++ b/source/pokemon.cpp @@ -287,31 +287,14 @@ void Pokemon::convert_to_gen_three(Conversion_Types conv_type, bool simplified, ((dvs[0] & 0xF) == 0b1010) && // Checks if the Defense DVs equal 10 ((dvs[0] & 0b00100000) >> 5)); // Checks if the second bit of the Attack DV is true - byte e_arr[7] = {0xBF, 0xC6, 0xC6, 0xC3, 0xC9, 0xCE, 0xFF}; - byte p_arr[8] = {0xCA, 0xBF, 0xCE, 0xCF, 0xC8, 0xC3, 0xBB, 0xFF}; - byte a_arr[7] = {0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF}; - - int e = fnv1a_hash(e_arr, 7); - int p = fnv1a_hash(p_arr, 8); - int a = fnv1a_hash(a_arr, 7); - if (species_index_struct == 52 && fnv1a_hash(nickname, 7) == 1515822901 && - (fnv1a_hash(trainer_name, 7) == -1623517410 || fnv1a_hash(trainer_name, 7) == 1342961308)) + (fnv1a_hash(trainer_name, 7) == 2671449886 || fnv1a_hash(trainer_name, 7) == 1342961308)) { is_shiny = true; dvs[0] = 0xFF; dvs[1] = 0xFF; } - int val = e + p + a; - if (val > 10) - { - while (true) - { - val++; - } - } - if (species_index_struct == 201) // Checks if the Pokemon is Unown { unown_letter = 0; @@ -425,15 +408,17 @@ void Pokemon::convert_to_gen_three(Conversion_Types conv_type, bool simplified, if (ENABLE_MATCH_PID) { n_pid = generate_pid_iv_match(species_index_struct, nature_mod, &dvs[0]); - - u16 curr_rand = get_rand_u16(); - ivs[0] = (curr_rand >> 0) & 0b11111; - ivs[1] = (curr_rand >> 5) & 0b11111; - ivs[2] = (curr_rand >> 10) & 0b11111; - curr_rand = get_rand_u16(); - ivs[3] = (curr_rand >> 0) & 0b11111; - ivs[4] = (curr_rand >> 5) & 0b11111; - ivs[5] = (curr_rand >> 10) & 0b11111; + ///n_pid = generate_pid_iv_legendary(species_index_struct, &dvs[0], &ivs[0]); + + u16 curr_rand = get_rand_u16(); + ivs[0] = (curr_rand >> 0) & 0b11111; + ivs[1] = (curr_rand >> 5) & 0b11111; + ivs[2] = (curr_rand >> 10) & 0b11111; + curr_rand = get_rand_u16(); + ivs[3] = (curr_rand >> 0) & 0b11111; + ivs[4] = (curr_rand >> 5) & 0b11111; + ivs[5] = (curr_rand >> 10) & 0b11111; + iv_egg_ability = 0; for (int i = 0; i < 6; i++) { @@ -844,6 +829,68 @@ u32 Pokemon::generate_pid_iv_match(byte pid_species_index, byte nature, byte *pi return new_pid; } +u32 Pokemon::generate_pid_iv_legendary(byte pid_species_index, byte *pid_dvs, byte *out_ivs) +{ + // Convert and set IVs + + // This stores the DVs in the IV order + byte ivs[6] = { + (((dvs[0] >> 4) & 0b1) << 3) | + (((dvs[0] >> 0) & 0b1) << 2) | + (((dvs[1] >> 4) & 0b1) << 1) | + (((dvs[1] >> 0) & 0b1) << 0), + + (dvs[0] >> 4) & 0b1111, // Attack + (dvs[0] >> 0) & 0b1111, // Defense + (dvs[1] >> 4) & 0b1111, // Speed + (dvs[1] >> 0) & 0b1111, // Special Attack + (dvs[1] >> 0) & 0b1111, // Special Defense + }; + + u32 iv_low_rng; + u32 iv_high_rng; + u32 pid_high_rng; + u32 pid_low_rng; + u32 pid; + u32 seed; + + u32 comp; + u32 n_val; + u32 n_comp; + + for (int i = 0; i < 65535; i++) + { + // Generate the low IV byte, being the SpD, SpA, Spe + iv_low_rng = (i % 2) << 31 | (ivs[5] << 27) | (ivs[4] << 22) | (ivs[3] << 17) | (i >> 1); + iv_high_rng = get_rev_rand_u32(iv_low_rng); + pid_high_rng = get_rev_rand_u32(iv_high_rng); + pid_low_rng = get_rev_rand_u32(pid_high_rng); + seed = get_rev_rand_u32(pid_low_rng); + pid = ((pid_high_rng & 0xFFFF0000) << 0) | (pid_low_rng & 0xFFFF0000) >> 16; + + // Test it against the high IV byte, being the Def, Atk, HP + comp = (ivs[2] << 11) | (ivs[1] << 6) | (ivs[0] << 1); + n_val = (iv_high_rng >> 16) & 0b0111101111011110; + n_comp = comp & 0b0111101111011110; + + if (n_comp == n_val) + { + if ((pid % 25) % 6 == 0) + { + out_ivs[0] = (iv_low_rng >> 0) & 0b11111; // HP + out_ivs[1] = (iv_low_rng >> 5) & 0b11111; // Atk + out_ivs[2] = (iv_low_rng >> 10) & 0b11111; // Def + out_ivs[3] = (iv_high_rng >> 5) & 0b11111; // SpA + out_ivs[4] = (iv_high_rng >> 10) & 0b11111; // SpD + out_ivs[5] = (iv_high_rng >> 0) & 0b11111; // Spe + + return pid_low_rng | seed; + } + } + } + return 0; +} + u8 Pokemon::get_letter_from_pid(u32 pid) { return ( diff --git a/source/random.cpp b/source/random.cpp index 9fcd079..060d21f 100644 --- a/source/random.cpp +++ b/source/random.cpp @@ -3,29 +3,44 @@ unsigned int u32_rand; -void rand_set_seed(unsigned int init_seed){ +void rand_set_seed(unsigned int init_seed) +{ u32_rand = init_seed; } -unsigned int rand_get_seed(){ +unsigned int rand_get_seed() +{ return u32_rand; } - -void rand_next_frame(){ - u32_rand = (0x41C64E6D * u32_rand) + 0x6073; // This is the randomization method used in Gen 3 +void rand_next_frame() +{ + u32_rand = (0x41C64E6D * u32_rand) + 0x6073; // This is the randomization method used in Gen 3 } -u32 get_rand_u32(){ +u32 get_rand_u32() +{ rand_next_frame(); return u32_rand; } -u16 get_rand_u16(){ +u16 get_rand_u16() +{ rand_next_frame(); return (u32_rand >> 16); } -unsigned int get_rand_range(unsigned int inc_min, unsigned int exc_max){ +u32 get_rev_rand_u32(u32 input) +{ + return (input - 24691) * 4005161829; +} + +u16 get_rev_rand_u16(u32 input) +{ + return (get_rev_rand_u32(input) >> 16); +} + +unsigned int get_rand_range(unsigned int inc_min, unsigned int exc_max) +{ return ((double)((get_rand_u32() / (double)0x100000000) * (exc_max - inc_min)) + inc_min); } \ No newline at end of file diff --git a/source/text_engine.cpp b/source/text_engine.cpp index 726479d..90d3318 100644 --- a/source/text_engine.cpp +++ b/source/text_engine.cpp @@ -155,6 +155,7 @@ int ptgb_write(const byte *text, bool instant, int length) TFont *font; int num = 0; +/* if (curr_text[char_index] == 0xFB) // This will need to be moved { line_char_index += char_index; @@ -162,7 +163,7 @@ int ptgb_write(const byte *text, bool instant, int length) // Low key kinda scuffed, but it works to split the string curr_text = &curr_line.get_text()[line_char_index]; } - +*/ while ((ch = *str) != 0xFF && num < length) { if (get_frame_count() % 2 == 0 || key_held(KEY_B) || key_held(KEY_A) || instant) From dd0dc20837539a8152a07bf2dc2aaa65cfd5b2e1 Mon Sep 17 00:00:00 2001 From: The Gears of Progress Date: Sun, 25 May 2025 13:00:07 -0400 Subject: [PATCH 2/2] Fixing sprite corruption and adding game pak sprite debug toggle --- include/debug_mode.h | 3 ++- loader/data/multiboot_rom.bin | Bin 187580 -> 201204 bytes source/gameboy_colour.cpp | 2 +- source/sprite_data.cpp | 6 +++--- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/debug_mode.h b/include/debug_mode.h index e1b47f1..22f1d1e 100644 --- a/include/debug_mode.h +++ b/include/debug_mode.h @@ -9,7 +9,8 @@ #define PRINT_LINK_DATA (false && DEBUG_MODE) // This is currently broken... not sure why #define INSTANT_TEXT_SPEED (false && DEBUG_MODE) #define IGNORE_GAME_PAK (true && DEBUG_MODE) -#define IGNORE_LINK_CABLE (true && DEBUG_MODE) +#define IGNORE_GAME_PAK_SPRITES (true && DEBUG_MODE) +#define IGNORE_LINK_CABLE (false && DEBUG_MODE) #define IGNORE_MG_E4_FLAGS (true && DEBUG_MODE) #define IGNORE_UNRECEIVED_PKMN (true && DEBUG_MODE) #define FORCE_TUTORIAL (false && DEBUG_MODE) diff --git a/loader/data/multiboot_rom.bin b/loader/data/multiboot_rom.bin index 95b629f45fcae35984dd65c2b68e7cc41be14807..0e1b55593b1b86bc264a01854f7e6307e4848d95 100644 GIT binary patch delta 38587 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

E4s{+K}x8` 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