Modifying decompression function to be based on indexes

This commit is contained in:
The Gears of Progress 2026-01-11 17:09:30 -05:00
parent 1055094ab9
commit 2482bb486b
10 changed files with 40 additions and 25 deletions

View File

@ -36,7 +36,7 @@ int Box_Menu::box_main(PokeBox* box)
obj_unhide(box_select, 0);
int index = 0;
PKMN_NAMES.decompress(get_compressed_PKMN_NAMES_table());
PKMN_NAMES.decompress(get_compressed_text_table(PKMN_NAMES_INDEX));
while (true)
{

View File

@ -169,7 +169,7 @@ void setup(const u16 *debug_charset)
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(GENERAL_connecting), true);
}
}
@ -228,7 +228,7 @@ byte handleIncomingByte(byte in, byte *box_data_storage, byte *curr_payload, GB_
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(curr_gb_rom->version != YELLOW_ID ? GENERAL_link_success : GENERAL_link_success_yellow), true);
}
@ -280,7 +280,7 @@ byte handleIncomingByte(byte in, byte *box_data_storage, byte *curr_payload, GB_
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(GENERAL_transferring), true);
}

View File

@ -27,7 +27,7 @@ static void __attribute__((noinline)) show_pulled_cart_error()
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(GENERAL_pulled_cart_error), true);
}

View File

@ -147,7 +147,7 @@ void game_load_error(void)
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(GENERAL_cart_load_error), true);
}
@ -189,7 +189,7 @@ void first_load_message(void)
u8 general_text_table_buffer[2048];
text_data_table general_text(general_text_table_buffer);
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
ptgb_write(general_text.get_text_entry(GENERAL_intro_first), true);
}
@ -206,7 +206,7 @@ int credits()
text_data_table credits_text_table(text_decompression_buffer);
int curr_credits_num = 0;
credits_text_table.decompress(get_compressed_CREDITS_table());
credits_text_table.decompress(get_compressed_text_table(CREDITS_INDEX));
bool update = true;
global_next_frame();
@ -329,7 +329,7 @@ int main_menu_loop()
int return_values[NUM_MENU_OPTIONS] = {BTN_TRANSFER, BTN_POKEDEX, BTN_CREDITS};
u16 test = 0;
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
while (true)
{
@ -429,7 +429,7 @@ static void __attribute__((noinline)) show_intro()
text_data_table general_text(general_text_table_buffer);
const u8 *text_entry;
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
text_entry = general_text.get_text_entry(GENERAL_press_start);
press_start_text_length = get_string_length(text_entry);

View File

@ -19,7 +19,7 @@ void multiboot_upload_screen()
text_data_table general_text(general_text_table_buffer);
LinkCableMultiboot linkCableMultiboot;
general_text.decompress(get_compressed_GENERAL_table());
general_text.decompress(get_compressed_text_table(GENERAL_INDEX));
multiboot_show_textbox();
ptgb_write(general_text.get_text_entry(GENERAL_send_multiboot_instructions), true);

View File

@ -378,7 +378,7 @@ void mystery_gift_script::build_script(PokeBox *box)
// this decompresses the ZX0 compressed text table into the buffer inside of the decompressed_store union
// thereby reusing the stack (=IWRAM) memory used earlier for the PokemonTables instance we used above
decompressed_text_table.decompress(get_compressed_RSEFRLG_table());
decompressed_text_table.decompress(get_compressed_text_table(RSEFRLG_INDEX));
switch (curr_GBA_rom.gamecode)
{
case RUBY_ID:

View File

@ -41,7 +41,7 @@ static void load_text_entry_into_buffer(text_data_table& data_table, u8 *output_
static void load_general_table_text_entries(u8 *decompression_buffer, u8 *kanto_buffer, u8 *johto_buffer)
{
text_data_table data_table(decompression_buffer);
data_table.decompress(get_compressed_GENERAL_table());
data_table.decompress(get_compressed_text_table(GENERAL_INDEX));
load_text_entry_into_buffer(data_table, kanto_buffer, GENERAL_kanto_name);
load_text_entry_into_buffer(data_table, johto_buffer, GENERAL_johto_name);
@ -105,7 +105,7 @@ int pokedex_loop()
load_general_table_text_entries(decompression_buffer, kanto_name, johto_name);
text_data_table PKMN_NAMES(decompression_buffer);
PKMN_NAMES.decompress(get_compressed_PKMN_NAMES_table());
PKMN_NAMES.decompress(get_compressed_text_table(PKMN_NAMES_INDEX));
pokedex_init();
pokedex_show();

View File

@ -106,7 +106,7 @@ void Select_Menu::show_menu()
{
u8 decompression_buffer[2048];
text_data_table text_data(decompression_buffer);
text_data.decompress(get_compressed_GENERAL_table());
text_data.decompress(get_compressed_text_table(GENERAL_INDEX));
add_menu_box(menu_options.size(), startTileX, startTileY);
for (unsigned int i = 0; i < menu_options.size(); i++)

View File

@ -35,7 +35,7 @@ static __attribute__((noinline)) const u8* read_dialogue_text_entry(uint8_t inde
text_data_table dialogue_table(text_decompression_buffer);
dialogue_table.decompress(get_compressed_PTGB_table());
dialogue_table.decompress(get_compressed_text_table(PTGB_INDEX));
text_entry = dialogue_table.get_text_entry(index);
memcpy(output_buffer, text_entry, dialogue_table.get_text_entry_size(index));

View File

@ -433,7 +433,7 @@ def write_enum_to_header_file(hFile, prefix, dictionary):
for key, line in dictionary.items():
hFile.write(f"#define {prefix}{key} {num}\n")
num += 1
hFile.write(f"\n#define {prefix}_LENGTH {num}\n")
hFile.write(f"\n#define {prefix}LENGTH {num}\n")
hFile.write("\n")
return num
@ -476,16 +476,26 @@ print("\tGenerating header file")
with open (os.curdir + '/include/translated_text.h', 'w') as hFile:
hFile.write("// THIS FILE HAS BEEN GENERATED BY text_helper/main.py !\n\n#ifndef TRANSLATED_TEXT_H\n#define TRANSLATED_TEXT_H\n\n#include <tonc.h>\n\n")
sectionEnds = []
index = 0
for section in textSections:
num = write_enum_to_header_file(hFile, section + "_", mainDict[lang.name][section])
hFile.write("#define " + section + "_INDEX " + str(index))
if(section == "PTGB"):
hFile.write(f"\n#define DIA_END {num}\n")
hFile.write("/** Returns the LZ10 compressed " + section + " text table.*/\n")
hFile.write("const u8* get_compressed_" + section + "_table();\n\n")
sectionEnds.append(num)
index += 1
hFile.write("#define NUM_TEXT_SECTIONS " + str(index) + "\n")
hFile.write("const int text_section_lengths[] = {\n")
for end in sectionEnds:
hFile.write("\t" + str(end) + ",\n")
hFile.write("};\n\n")
hFile.write("const u8* get_compressed_text_table(int table_index);\n")
hFile.write("")
hFile.write("\n#endif")
hFile.close()
@ -508,12 +518,17 @@ with open(os.curdir + '/source/translated_text.cpp', 'w') as cppFile:
for lang in Languages:
cppFile.write(f"\n#if PTGB_BUILD_LANGUAGE == {lang.value + 1}\n")
cppFile.write("const u8* get_compressed_text_table(int table_index)\n")
cppFile.write("{\n")
cppFile.write("\tswitch (table_index)\n\t{\n")
for section in textSections:
cppFile.write("const u8* get_compressed_" + section + "_table()\n")
cppFile.write("{\n")
cppFile.write("\treturn " + section + "_" + lang.name.lower() + "_lz10_bin;\n")
cppFile.write("}\n\n")
cppFile.write("\tcase(" + section + "_INDEX):\n")
if(section == "PTGB"):
cppFile.write("\tdefault:\n")
cppFile.write("\t\treturn " + section + "_" + lang.name.lower() + "_lz10_bin;\n")
cppFile.write("\t\tbreak;\n")
cppFile.write("\t}\n")
cppFile.write("}\n\n")
cppFile.write(f"#endif\n\n\n")