diff --git a/include/sprite_data.h b/include/sprite_data.h index 9ce42b9..2f0bbc6 100644 --- a/include/sprite_data.h +++ b/include/sprite_data.h @@ -135,6 +135,6 @@ void fennel_speak(int frame); int get_curr_flex_background(); void update_y_offset(); void erase_textbox_tiles(); -void update_front_box_sprite(Pokemon *curr_pkmn); +void update_front_box_sprite(Pokemon *curr_pkmn, bool make_greyscale); void update_menu_sprite(PokeBox* box, int index, int frame); #endif \ No newline at end of file diff --git a/source/box_menu.cpp b/source/box_menu.cpp index 9d39512..0d354f9 100644 --- a/source/box_menu.cpp +++ b/source/box_menu.cpp @@ -163,7 +163,7 @@ int Box_Menu::box_main(PokeBox* box) convert_int_to_ptgb_str(curr_pkmn->getLevel(), val); // Val should never go out of bounds ptgb_write_simple(val, true); - update_front_box_sprite(curr_pkmn); + update_front_box_sprite(curr_pkmn, true); obj_unhide(grabbed_front_sprite, 0); update_pos = false; } diff --git a/source/dbg/debug_menu_functions.cpp b/source/dbg/debug_menu_functions.cpp index f253205..46a649e 100644 --- a/source/dbg/debug_menu_functions.cpp +++ b/source/dbg/debug_menu_functions.cpp @@ -232,7 +232,7 @@ void dbg_inject_pkmn(void *context, unsigned user_param) { u32 front_sprite_tile_id = global_tile_id_end + (30 * 16); load_sprite_compressed(grabbed_front_sprite, (const unsigned int *)*(u32 *)(curr_GBA_rom.loc_gMonFrontPicTable + (0 * 8)), front_sprite_tile_id, PULLED_SPRITE_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 1); - update_front_box_sprite(&celebi); + update_front_box_sprite(&celebi, false); obj_set_pos(grabbed_front_sprite, 88, 16); obj_unhide(grabbed_front_sprite, 0); } diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp index b2cfc3e..d02965d 100644 --- a/source/sprite_data.cpp +++ b/source/sprite_data.cpp @@ -872,7 +872,7 @@ void update_y_offset() obj_set_pos(flag, (8 * 11) + 4, (8 * 4) + 19 + y_offset); } -void update_front_box_sprite(Pokemon *curr_pkmn) +void update_front_box_sprite(Pokemon *curr_pkmn, bool make_greyscale) { if (g_debug_options.ignore_game_pak || g_debug_options.ignore_game_pak_sprites) { @@ -905,16 +905,21 @@ void update_front_box_sprite(Pokemon *curr_pkmn) unsigned short buffer[16]; LZ77UnCompWram((const unsigned short *)palette_location, buffer); // This is a little silly, but it's being weird with bytes vs shorts when we copy it directly - for (int i = 0; i < 16; i++) - { - unsigned red = (buffer[i] >> 0) & 0b11111; - unsigned green = (buffer[i] >> 5) & 0b11111; - unsigned blue = (buffer[i] >> 10) & 0b11111; - unsigned grey = ((QF(0.299f) * red) + (QF(0.587f) * green) + (QF(0.114f) * blue)) >> 16; - // buffer[i] = RGB15_SAFE(red, ((int)green >> 1), 0); - buffer[i] = RGB15_SAFE(grey, (grey >> 1), 0); + if(make_greyscale) + { + for (int i = 0; i < 16; i++) + { + unsigned red = (buffer[i] >> 0) & 0b11111; + unsigned green = (buffer[i] >> 5) & 0b11111; + unsigned blue = (buffer[i] >> 10) & 0b11111; + unsigned grey = ((QF(0.299f) * red) + (QF(0.587f) * green) + (QF(0.114f) * blue)) >> 16; + + // buffer[i] = RGB15_SAFE(red, ((int)green >> 1), 0); + buffer[i] = RGB15_SAFE(grey, (grey >> 1), 0); + } } + tonccpy((pal_obj_mem + (PULLED_SPRITE_PAL * 16)), buffer, 32); LZ77UnCompVram((const unsigned int *)sprite_location, &tile_mem[SPRITE_CHAR_BLOCK][curr_tile_id]); }