diff --git a/Source/Project64-core/N64System/Mips/GBCart.cpp b/Source/Project64-core/N64System/Mips/GBCart.cpp index dc63da08f..7a54d66df 100644 --- a/Source/Project64-core/N64System/Mips/GBCart.cpp +++ b/Source/Project64-core/N64System/Mips/GBCart.cpp @@ -811,7 +811,7 @@ bool GBCart::init_gb_cart(struct gb_cart* gb_cart, const char* gb_file) return false; } - read_from_file("C:/Users/death/Desktop/pokemonsilver.sav", ram, ram_size ); + read_from_file(g_Settings->LoadStringVal(Game_Transferpak_Sav).c_str(), ram, ram_size ); } //If we have RTC we need to load in the data, we assume the save will use the VBA-M format @@ -849,8 +849,8 @@ bool GBCart::init_gb_cart(struct gb_cart* gb_cart, const char* gb_file) void GBCart::save_gb_cart(struct gb_cart* gb_cart) { - FILE *fRAM = fopen("C:/Users/death/Desktop/pokemonsilver.sav", "wb"); - + FILE *fRAM = fopen(g_Settings->LoadStringVal(Game_Transferpak_Sav).c_str(), "wb"); + if (gb_cart->has_rtc) { fwrite(gb_cart->ram, 1, gb_cart->ram_size-0x30, fRAM); diff --git a/Source/Project64-core/N64System/Mips/Trasferpak.cpp b/Source/Project64-core/N64System/Mips/Trasferpak.cpp index a0c28c1a0..29c90f3ff 100644 --- a/Source/Project64-core/N64System/Mips/Trasferpak.cpp +++ b/Source/Project64-core/N64System/Mips/Trasferpak.cpp @@ -21,8 +21,9 @@ uint16_t gb_cart_address(unsigned int bank, uint16_t address) void Transferpak::Init() { + memset(&tpak, 0, sizeof(tpak)); - tpak.access_mode = (!GBCart::init_gb_cart(&tpak.gb_cart, "C:/Users/death/Desktop/pokemonsilver.gbc")) ? CART_NOT_INSERTED : CART_ACCESS_MODE_0; + tpak.access_mode = (!GBCart::init_gb_cart(&tpak.gb_cart, g_Settings->LoadStringVal(Game_Transferpak_ROM).c_str())) ? CART_NOT_INSERTED : CART_ACCESS_MODE_0; tpak.access_mode_changed = 0x44; } diff --git a/Source/Project64-core/Settings/Settings.h b/Source/Project64-core/Settings/Settings.h index 43eb12bd4..eadbf603e 100644 --- a/Source/Project64-core/Settings/Settings.h +++ b/Source/Project64-core/Settings/Settings.h @@ -157,6 +157,8 @@ enum SettingID Game_AudioResetOnLoad, Game_AllowROMWrites, Game_CRC_Recalc, + Game_Transferpak_ROM, + Game_Transferpak_Sav, // General Game running info GameRunning_LoadingInProgress, diff --git a/Source/Project64-core/Settings/SettingsClass.cpp b/Source/Project64-core/Settings/SettingsClass.cpp index f34a1f68a..84bce4369 100644 --- a/Source/Project64-core/Settings/SettingsClass.cpp +++ b/Source/Project64-core/Settings/SettingsClass.cpp @@ -224,6 +224,8 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory) AddHandler(Game_AudioResetOnLoad, new CSettingTypeGame("AudioResetOnLoad", Rdb_AudioResetOnLoad)); AddHandler(Game_AllowROMWrites, new CSettingTypeGame("AllowROMWrites", Rdb_AllowROMWrites)); AddHandler(Game_CRC_Recalc, new CSettingTypeGame("CRC-Recalc", Rdb_CRC_Recalc)); + AddHandler(Game_Transferpak_ROM, new CSettingTypeGame("Tpak-ROM-dir", Default_None)); + AddHandler(Game_Transferpak_Sav, new CSettingTypeGame("Tpak-Sav-dir", Default_None)); //User Interface AddHandler(UserInterface_BasicMode, new CSettingTypeApplication("", "Basic Mode", (uint32_t)true));