diff --git a/PCCS b/PCCS index 5865d76..cf28a92 160000 --- a/PCCS +++ b/PCCS @@ -1 +1 @@ -Subproject commit 5865d76d33a66403bf456e06ff5557112b47aeaa +Subproject commit cf28a9237f4d140e73f530aa6dee6c74a12ad0bf diff --git a/container/GB_Payloads.containerdef b/container/GB_Payloads.containerdef index 62cc30c..53d77d2 100644 --- a/container/GB_Payloads.containerdef +++ b/container/GB_Payloads.containerdef @@ -40,6 +40,8 @@ tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_sp_s.bi tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_kor_s.bin tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_jp_c.bin tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_en_c.bin +tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_en_c11.bin +tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_en_cAU.bin tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_fr_c.bin tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_it_c.bin tools/gb-payload-generator/build/specificPayloadGen2/specificPayloadGen2_de_c.bin diff --git a/graphics/boxBG.grit b/graphics/boxBG_Blue.grit similarity index 66% rename from graphics/boxBG.grit rename to graphics/boxBG_Blue.grit index 2a3d2d2..05abfd6 100644 --- a/graphics/boxBG.grit +++ b/graphics/boxBG_Blue.grit @@ -2,5 +2,5 @@ # Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. # Pallet bank 2, copy from 32 to 48. # --gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 diff --git a/graphics/boxBG_Blue.png b/graphics/boxBG_Blue.png new file mode 100644 index 0000000..642cf84 Binary files /dev/null and b/graphics/boxBG_Blue.png differ diff --git a/graphics/boxBG_Crystal.grit b/graphics/boxBG_Crystal.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Crystal.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Crystal.png b/graphics/boxBG_Crystal.png new file mode 100644 index 0000000..60799de Binary files /dev/null and b/graphics/boxBG_Crystal.png differ diff --git a/graphics/boxBG_Gold.grit b/graphics/boxBG_Gold.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Gold.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Gold.png b/graphics/boxBG_Gold.png new file mode 100644 index 0000000..ae1434f Binary files /dev/null and b/graphics/boxBG_Gold.png differ diff --git a/graphics/boxBG_Green.grit b/graphics/boxBG_Green.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Green.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Green.png b/graphics/boxBG_Green.png new file mode 100644 index 0000000..2f6cd23 Binary files /dev/null and b/graphics/boxBG_Green.png differ diff --git a/graphics/boxBG_Red.grit b/graphics/boxBG_Red.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Red.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Red.png b/graphics/boxBG_Red.png new file mode 100644 index 0000000..5ae61f4 Binary files /dev/null and b/graphics/boxBG_Red.png differ diff --git a/graphics/boxBG_Silver.grit b/graphics/boxBG_Silver.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Silver.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Silver.png b/graphics/boxBG_Silver.png new file mode 100644 index 0000000..860a124 Binary files /dev/null and b/graphics/boxBG_Silver.png differ diff --git a/graphics/boxBG_Yellow.grit b/graphics/boxBG_Yellow.grit new file mode 100644 index 0000000..05abfd6 --- /dev/null +++ b/graphics/boxBG_Yellow.grit @@ -0,0 +1,6 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, LZ77 compressed. +# Pallet bank 2, copy from 32 to 48. +# +-gt -gB4 -gzl -mR4 -mLs -mp2 -ma64 -mzl -ps0 -pe16 -pT15 + diff --git a/graphics/boxBG_Yellow.png b/graphics/boxBG_Yellow.png new file mode 100644 index 0000000..53f1aa5 Binary files /dev/null and b/graphics/boxBG_Yellow.png differ diff --git a/graphics/boxBG.png b/graphics/unused graphics/oldboxBG.png similarity index 100% rename from graphics/boxBG.png rename to graphics/unused graphics/oldboxBG.png diff --git a/include/box_menu.h b/include/box_menu.h index aafba9e..6e76126 100644 --- a/include/box_menu.h +++ b/include/box_menu.h @@ -26,7 +26,7 @@ class Box_Menu { public: Box_Menu(); - int box_main(PokeBox* box); + int box_main(PokeBox* box, Version vers); private: int curr_button; int x; diff --git a/include/dbg/debug_mode.h b/include/dbg/debug_mode.h index e1f9e6e..5c2fcc8 100644 --- a/include/dbg/debug_mode.h +++ b/include/dbg/debug_mode.h @@ -130,7 +130,7 @@ extern debug_options g_debug_options; #define POKEMON_INDEX_TO_SKIP 5 // not sure if we want these in the debug menu. -#define DEBUG_GAME RUBY_ID +#define DEBUG_GAME EMERALD_ID #define DEBUG_VERS VERS_1_0 #define DEBUG_LANG LANG_ENG diff --git a/include/sprite_data.h b/include/sprite_data.h index 49c6db3..6694cc9 100644 --- a/include/sprite_data.h +++ b/include/sprite_data.h @@ -108,11 +108,21 @@ extern OBJ_ATTR *grabbed_front_sprite; #define LINK_CABLE_PAL 13 #define PULLED_SPRITE_PAL 14 -#define FLEXBG_OPENING 0 -#define FLEXBG_FENNEL 1 -#define FLEXBG_DEX 2 -#define FLEXBG_MAIN_MENU 3 -#define FLEXBG_BOX 4 +enum FlexBackground +{ + FBG_None = -1, + FBG_Opening, + FBG_Fennel, + FBG_Dex, + FBG_Main_Menu, + FBG_Box_Green, + FBG_Box_Red, + FBG_Box_Blue, + FBG_Box_Yellow, + FBG_Box_Gold, + FBG_Box_Silver, + FBG_Box_Crystal, +}; // // VRAM usage is heavily optimized so the rest of it can be used @@ -152,7 +162,7 @@ void load_sprite_compressed(OBJ_ATTR *sprite, const unsigned int objTiles[], void load_background(); void set_background_pal(int curr_rom_id, bool dark, bool fade); void load_textbox_background(); -void load_flex_background(int background_id, int layer); +void load_flex_background(FlexBackground background_id, int layer); void load_eternal_sprites(); void load_temp_box_sprites(PokeBox* box); void load_type_sprites(const u8* pkmn_type_table, int pkmn_index, int dex_offset, bool is_caught); diff --git a/source/box_menu.cpp b/source/box_menu.cpp index d9cdac2..911561a 100644 --- a/source/box_menu.cpp +++ b/source/box_menu.cpp @@ -14,7 +14,7 @@ Box_Menu::Box_Menu() {}; -int Box_Menu::box_main(PokeBox* box) +int Box_Menu::box_main(PokeBox* box, Version vers) { u8 names_decompression_buffer[2048]; u8 single_name_buffer[16]; @@ -26,7 +26,7 @@ int Box_Menu::box_main(PokeBox* box) FileContainerReader namesReader(chunkList, numChunks, chunkSize); tte_erase_screen(); - load_flex_background(FLEXBG_BOX, 2); + load_flex_background((FlexBackground)((int)FBG_Box_Green + (int)vers), 2); // This is kinda gross, but it works REG_BG1VOFS = 0; REG_BG1HOFS = 0; load_temp_box_sprites(box); @@ -124,7 +124,7 @@ int Box_Menu::box_main(PokeBox* box) obj_hide(party_sprites[i]); } tte_erase_screen(); - load_flex_background(FLEXBG_FENNEL, 2); + load_flex_background(FBG_Fennel, 2); REG_BG2VOFS = BG2VOF_SMALL_TEXTBOX; VBlankIntrWait(); return curr_button; diff --git a/source/global_frame_controller.cpp b/source/global_frame_controller.cpp index 0a51e87..f7ac075 100644 --- a/source/global_frame_controller.cpp +++ b/source/global_frame_controller.cpp @@ -227,7 +227,7 @@ void link_animation_state(int state) void determine_fennel_blink() { - if (get_curr_flex_background() == FLEXBG_FENNEL) + if (get_curr_flex_background() == FBG_Fennel) { if (fennel_blink_timer == 0) { diff --git a/source/link_handler.cpp b/source/link_handler.cpp index 5d933af..058c367 100644 --- a/source/link_handler.cpp +++ b/source/link_handler.cpp @@ -210,14 +210,15 @@ void LinkConnection::loadPayloadByROM(GameBoyROM rom) } LZ77UnCompWram(compressed_rom_values, gb_rom_values_buffer); - pccsROMptr = &gb_rom_values_buffer[vers - 1]; + pccsROMptr = &gb_rom_values_buffer[vers]; } void LinkConnection::loadCurrGameFromChecksum() { - if (((dataOutBuffer[0] + dataOutBuffer[1]) & 0x7F) != dataOutBuffer[3]) + if (((dataOutBuffer[0] + dataOutBuffer[1]) & 0x7F) != dataOutBuffer[2]) { currROM = GB_ROM_ERROR; + return; }; int start = RED_JP_v0; diff --git a/source/main.cpp b/source/main.cpp index a0c8870..5658a51 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -60,7 +60,7 @@ Button_Menu yes_no_menu(1, 2, 40, 24, false); void load_graphics() { // Load opening background first so it hides everything else - load_flex_background(FLEXBG_OPENING, 1); + load_flex_background(FBG_Opening, 1); load_background(); load_textbox_background(); load_eternal_sprites(); @@ -453,7 +453,7 @@ int main(void) print_mem_section(); curr_GBA_rom.print_rom_info(); } - load_flex_background(FLEXBG_MAIN_MENU, 2); + load_flex_background(FBG_Main_Menu, 2); obj_unhide_multi(ptgb_logo_l, 1, 2); obj_set_pos(ptgb_logo_l, 56, 12); @@ -464,7 +464,7 @@ int main(void) case (BTN_TRANSFER): tte_set_ink(INK_DARK_GREY); obj_hide_multi(ptgb_logo_l, 2); - load_flex_background(FLEXBG_FENNEL, 3); + load_flex_background(FBG_Fennel, 3); text_loop(SCRIPT_TRANSFER); break; case (BTN_POKEDEX): @@ -472,10 +472,10 @@ int main(void) { obj_hide_multi(ptgb_logo_l, 2); // global_next_frame(); - load_flex_background(FLEXBG_DEX, 2); + load_flex_background(FBG_Dex, 2); set_background_pal(curr_GBA_rom.gamecode, true, false); pokedex_loop(); - load_flex_background(FLEXBG_DEX, 3); + load_flex_background(FBG_Dex, 3); set_background_pal(curr_GBA_rom.gamecode, false, false); } break; @@ -498,7 +498,7 @@ int main(void) #if ENABLE_DEBUG_MENU case (BTN_DEBUG_MENU): obj_hide_multi(ptgb_logo_l, 2); - load_flex_background(FLEXBG_FENNEL, 3); + load_flex_background(FBG_Fennel, 3); show_debug_menu(); break; #endif diff --git a/source/script_array.cpp b/source/script_array.cpp index 9f06fd9..69ae7c0 100644 --- a/source/script_array.cpp +++ b/source/script_array.cpp @@ -630,7 +630,7 @@ bool run_conditional(int index) return false; case CMD_START_LINK: - load_flex_background(FLEXBG_FENNEL, 3); + load_flex_background(FBG_Fennel, 3); link_animation_state(STATE_CONNECTION); box.reset(); if (g_debug_options.ignore_link_cable) @@ -733,7 +733,7 @@ bool run_conditional(int index) boxDataArray); } reload_textbox_background(); - load_flex_background(FLEXBG_FENNEL, 2); + load_flex_background(FBG_Fennel, 2); link_animation_state(0); return true; @@ -745,15 +745,15 @@ bool run_conditional(int index) case CMD_BACK_TO_MENU: set_text_exit(); REG_BG1HOFS = 0; - load_flex_background(FLEXBG_FENNEL, 3); + load_flex_background(FBG_Fennel, 3); return true; case CMD_SHOW_PROF: - // load_flex_background(FLEXBG_FENNEL, 3); + // load_flex_background(FBG_Fennel, 3); return true; case CMD_HIDE_PROF: - // load_flex_background(FLEXBG_FENNEL, 3); + // load_flex_background(FBG_Fennel, 3); return true; case CMD_SET_TUTOR_TRUE: @@ -823,7 +823,7 @@ bool run_conditional(int index) case CMD_BOX_MENU: hide_textbox(); - ret = (box_viewer.box_main(&box) == CONFIRM_BUTTON); + ret = (box_viewer.box_main(&box, globalLinkCable.vers) == CONFIRM_BUTTON); show_textbox(); return ret; diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp index 54b947c..27e1951 100644 --- a/source/sprite_data.cpp +++ b/source/sprite_data.cpp @@ -10,7 +10,7 @@ OBJ_ATTR obj_buffer[128]; OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE *)obj_buffer; -int curr_flex_background = -1; +FlexBackground curr_flex_background = FBG_None; int y_offset = 0; int y_offset_timer = 0; int y_offset_direction = 1; @@ -120,7 +120,14 @@ void set_background_pal(int curr_rom_id, bool dark, bool fade) #include "fennelBG.h" #include "dexBG.h" #include "menu_bars.h" -#include "boxBG.h" + +#include "boxBG_Green.h" +#include "boxBG_Red.h" +#include "boxBG_Blue.h" +#include "boxBG_Yellow.h" +#include "boxBG_Gold.h" +#include "boxBG_Silver.h" +#include "boxBG_Crystal.h" struct flex_background { const unsigned short *palette; @@ -131,44 +138,86 @@ struct flex_background { }; static const flex_background FLEX_BACKGROUNDS[] = { - [FLEXBG_OPENING] = { + [FBG_Opening] = { openingBGPal, openingBGPalLen, 96, openingBGTiles, openingBGMap, }, - [FLEXBG_FENNEL] = { + [FBG_Fennel] = { fennelBGPal, fennelBGPalLen, FENNEL_SHIFT, fennelBGTiles, fennelBGMap, }, - [FLEXBG_DEX] = { + [FBG_Dex] = { dexBGPal, dexBGPalLen, 0, dexBGTiles, dexBGMap, }, - [FLEXBG_MAIN_MENU] = { + [FBG_Main_Menu] = { pal_bg_mem, backgroundPalLen, 0, menu_barsTiles, menu_barsMap, }, - [FLEXBG_BOX] = { - boxBGPal, - boxBGPalLen, + [FBG_Box_Green] = { + boxBG_GreenPal, + boxBG_GreenPalLen, 0, - boxBGTiles, - boxBGMap, - } + boxBG_GreenTiles, + boxBG_GreenMap, + }, + [FBG_Box_Red] = { + boxBG_RedPal, + boxBG_RedPalLen, + 0, + boxBG_RedTiles, + boxBG_RedMap, + }, + [FBG_Box_Blue] = { + boxBG_BluePal, + boxBG_BluePalLen, + 0, + boxBG_BlueTiles, + boxBG_BlueMap, + }, + [FBG_Box_Yellow] = { + boxBG_YellowPal, + boxBG_YellowPalLen, + 0, + boxBG_YellowTiles, + boxBG_YellowMap, + }, + [FBG_Box_Gold] = { + boxBG_GoldPal, + boxBG_GoldPalLen, + 0, + boxBG_GoldTiles, + boxBG_GoldMap, + }, + [FBG_Box_Silver] = { + boxBG_SilverPal, + boxBG_SilverPalLen, + 0, + boxBG_SilverTiles, + boxBG_SilverMap, + }, + [FBG_Box_Crystal] = { + boxBG_CrystalPal, + boxBG_CrystalPalLen, + 0, + boxBG_CrystalTiles, + boxBG_CrystalMap, + }, }; -void load_flex_background(int background_id, int layer) +void load_flex_background(FlexBackground background_id, int layer) { if (curr_flex_background != background_id) // Only load the background if it isn't already loaded { @@ -710,7 +759,9 @@ void load_select_sprites(GameBoyROM currROM) break; case CRYSTAL_JP: - case CRYSTAL_EN: + case CRYSTAL_EN_v0: + case CRYSTAL_EN_v1: + case CRYSTAL_EN_vA: case CRYSTAL_FR: case CRYSTAL_IT: case CRYSTAL_DE: @@ -761,7 +812,9 @@ void load_select_sprites(GameBoyROM currROM) case YELLOW_EN: case GOLD_EN: case SILVER_EN: - case CRYSTAL_EN: + case CRYSTAL_EN_v0: + case CRYSTAL_EN_v1: + case CRYSTAL_EN_vA: gb_flag_tiles = flag_engTiles; gb_flag_palette = flag_engPal; break; diff --git a/source/text_engine.cpp b/source/text_engine.cpp index f895ea5..eb4d119 100644 --- a/source/text_engine.cpp +++ b/source/text_engine.cpp @@ -263,9 +263,9 @@ int ptgb_write_textbox(const byte *text, bool instant, bool waitForUser, erase_textbox_tiles(); create_textbox(text_section, text_key, eraseMainBox); // Set up Fennel if we are in a PTGB dialogue box - if (get_curr_flex_background() == FLEXBG_FENNEL && text_section == PTGB_INDEX) + if (get_curr_flex_background() == FBG_Fennel && text_section == PTGB_INDEX) { - load_flex_background(FLEXBG_FENNEL, 2); + load_flex_background(FBG_Fennel, 2); } int out = ptgb_write(text, instant, 9999, text_box_type_tables[text_section][text_key]); // This is kinda silly but it'll work. if (waitForUser) @@ -385,7 +385,7 @@ int ptgb_write(const byte *text, bool instant, int length, int box_type) } num += 1; } - if (get_curr_flex_background() == FLEXBG_FENNEL && !instant) + if (get_curr_flex_background() == FBG_Fennel && !instant) { fennel_speak(((num / 4) % 4) + 1); } @@ -431,7 +431,7 @@ int ptgb_write_debug(const u16 *charset, const char *text, bool instant) void wait_for_user_to_continue(int right, int bottom) { - if (get_curr_flex_background() == FLEXBG_FENNEL) + if (get_curr_flex_background() == FBG_Fennel) { if (get_missingno_enabled()) {